Salome HOME
bos #29458 Salome on demand
[modules/gui.git] / src / STD / STD_Application.h
old mode 100755 (executable)
new mode 100644 (file)
index d5236f7..4a3631c
@@ -1,3 +1,25 @@
+// 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 )
@@ -28,13 +55,21 @@ class STD_EXPORT STD_Application : public SUIT_Application
 {
   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();
@@ -54,15 +89,27 @@ public:
   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*/
@@ -71,18 +118,20 @@ signals:
   void                  viewManagerRemoved( SUIT_ViewManager* );
   /*!emit that view manager activated*/
   void                  viewManagerActivated( SUIT_ViewManager* );
+  void                  appClosed();
 
 public slots:
   virtual void          onNewDoc();
+  virtual bool          onNewDoc( const QString& );
+
   virtual void          onCloseDoc( bool ask = true );
-  virtual void          onSaveDoc();
+  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();
 
@@ -100,17 +149,19 @@ private slots:
   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* );
@@ -120,13 +171,27 @@ protected:
 
   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