Salome HOME
bos #29458 Salome on demand
[modules/gui.git] / src / STD / STD_Application.h
old mode 100755 (executable)
new mode 100644 (file)
index 1e2427e..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,14 +55,22 @@ 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 void          useFile( const QString& );
+  virtual bool          isPossibleToClose( bool& );
+  virtual bool          useFile( const QString& );
 
   virtual void          createEmptyStudy();
 
@@ -54,30 +89,59 @@ 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       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* ) {}
+  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                  viewManagerAdded( SUIT_ViewManager* );
+  /*!emit that view manager removed*/
   void                  viewManagerRemoved( SUIT_ViewManager* );
+  /*!emit that view manager activated*/
   void                  viewManagerActivated( SUIT_ViewManager* );
+  void                  appClosed();
 
 public slots:
   virtual void          onNewDoc();
-  virtual void          onOpenDoc();
-  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 bool          onReopenDoc();
+
   virtual void          onExit();
-  virtual void          onCut();
+
   virtual void          onCopy();
   virtual void          onPaste();
+
   virtual void          onViewStatusBar( bool );
+
   virtual void          onHelpAbout();
+
   virtual void          onDesktopClosing( SUIT_Desktop*, QCloseEvent* );
   virtual void          onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* );
 
@@ -85,25 +149,48 @@ private slots:
   virtual void          onViewManagerActivated( SUIT_ViewManager* );
 
 protected:
-  enum {  FileNewId, FileOpenId, FileCloseId, FileSaveId, FileSaveAsId,
-          FileExitId, EditCutId, EditCopyId, EditPasteId, ViewStatusBarId,
-          NewWindowId, HelpAboutId, ViewWindowsId, 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;
 };