+// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
#ifndef STD_APPLICATION_H
#define STD_APPLICATION_H
#include <SUIT_Application.h>
-#include <SUIT_Desktop.h>
-#include <SUIT_ViewManager.h>
+#include <QtxNotify.h>
+
+#include <QList>
+#include <QPointer>
-#include <qmap.h>
-#include <qptrlist.h>
+class QMenu;
+class QCloseEvent;
+class QContextMenuEvent;
class QToolBar;
class QtxAction;
-class QPopupMenu;
class SUIT_Operation;
class SUIT_ViewWindow;
class SUIT_ToolWindow;
+class SUIT_Desktop;
+class SUIT_ViewManager;
+class SUIT_PopupClient;
-typedef QPtrList<SUIT_ViewManager> ViewManagerList;
+typedef QList<SUIT_ViewManager*> ViewManagerList;
#if defined WIN32
#pragma warning( disable: 4251 )
{
Q_OBJECT
+public:
+ enum { MenuFileId, FileNewId, FileOpenId, FileReopenId, FileCloseId, FileSaveId, FileSaveAsId, FileExitId,
+ MenuViewId, ViewWindowsId, ViewToolBarsId, ViewStatusBarId, NewWindowId,
+ MenuEditId, EditCutId, EditCopyId, EditPasteId,
+ MenuHelpId, HelpAboutId,
+ UserID
+ };
+
public:
STD_Application();
virtual ~STD_Application();
virtual QString applicationName() const;
- virtual bool isPossibleToClose();
+ virtual bool isPossibleToClose( bool& );
virtual bool useFile( const QString& );
virtual void createEmptyStudy();
ViewManagerList viewManagers() const;
void viewManagers( ViewManagerList& ) const;
void viewManagers( const QString&, ViewManagerList& ) const;
+ virtual int viewManagerId (const SUIT_ViewManager* ) const;
- virtual QString getFileFilter() const { return QString::null; }
- virtual QString getFileName( bool open, const QString& initial, const QString& filters,
+ virtual QString getFileFilter( bool open ) const;
+ virtual QString getFileName( bool open, const QString& initial, const QString& filters,
const QString& caption, QWidget* parent );
QString getDirectory( const QString& initial, const QString& caption, QWidget* parent );
virtual void start();
- virtual void contextMenuPopup( const QString&, QPopupMenu*, QString& ) {}
+ virtual void closeApplication();
+
+ virtual void contextMenuPopup( const QString&, QMenu*, QString& ) {}
+
+ bool exitConfirmation() const;
+ void setExitConfirmation( const bool );
+
+ virtual void updateDesktopTitle();
+
+ int showNotification(const QString& message, const QString& title, int timeout = -1);
+ void hideNotification(const QString& message);
+ void hideNotification(int id);
signals:
/*!emit that view manager added*/
void viewManagerRemoved( SUIT_ViewManager* );
/*!emit that view manager activated*/
void viewManagerActivated( SUIT_ViewManager* );
+ void appClosed();
public slots:
virtual void onNewDoc();
- virtual void onCloseDoc();
- virtual void onSaveDoc();
+ virtual bool onNewDoc( const QString& );
+
+ virtual void onCloseDoc( bool ask = true );
+ virtual bool onSaveDoc();
virtual bool onSaveAsDoc();
virtual void onOpenDoc();
virtual bool onOpenDoc( const QString& );
- virtual void onLoadDoc();
- virtual bool onLoadDoc( const QString& );
+ virtual bool onReopenDoc();
virtual void onExit();
virtual void onViewManagerActivated( SUIT_ViewManager* );
protected:
- enum { FileNewId, FileOpenId, FileCloseId, FileSaveId, FileSaveAsId,
- FileExitId, EditCutId, EditCopyId, EditPasteId, ViewStatusBarId,
- NewWindowId, HelpAboutId, ViewWindowsId, FileLoadId, UserID };
-
+ enum { OpenCancel, OpenNew, OpenExist };
+ enum { CloseCancel, CloseSave, CloseDiscard };
+
protected:
virtual void createActions();
- virtual void updateDesktopTitle();
+ virtual void customize();
virtual void updateCommandsStatus();
+ virtual void setDesktop( SUIT_Desktop* );
+
+ virtual void loadPreferences();
+ virtual void savePreferences();
+
+ virtual void studySaved( SUIT_Study* );
+ virtual void studyOpened( SUIT_Study* );
+ virtual void studyCreated( SUIT_Study* );
+
virtual void beforeCloseDoc( SUIT_Study* theDoc );
virtual void afterCloseDoc();
virtual void setActiveViewManager( SUIT_ViewManager* );
+ virtual int openChoice( const QString& );
+ virtual bool openAction( const int, const QString& );
+
+ virtual int closeChoice( const QString& );
+ virtual bool closeAction( const int, bool& );
+ virtual bool closeDoc( bool ask = true );
+ virtual bool closeActiveDoc( bool permanently = true );
+
+ virtual bool abortAllOperations();
+
+ private:
+ QtxNotify* notifyMgr();
+
private:
ViewManagerList myViewMgrs;
SUIT_ViewManager* myActiveViewMgr;
private:
+ QPointer<QtxNotify> myNotify;
+ bool myExitConfirm;
bool myEditEnabled;
- bool myClosePermanently;
};
#if defined WIN32