]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Contribution from KALLISTO:
authorsan <san@opencascade.com>
Mon, 25 Oct 2010 08:26:23 +0000 (08:26 +0000)
committersan <san@opencascade.com>
Mon, 25 Oct 2010 08:26:23 +0000 (08:26 +0000)
Virtual initialize() method added to application classes in order to enable customization of base app behavior in derived classes.
Example: access from modules auto-loaded by CAM_Application to standard GUI actions created by STD_Application.
It is no longer necessary to redefine start() method, redefining initialize() is a prefereed way to customize application start-up.

src/CAM/CAM_Application.cxx
src/CAM/CAM_Application.h
src/STD/STD_Application.cxx
src/STD/STD_Application.h
src/SUIT/SUIT_Application.cxx
src/SUIT/SUIT_Application.h

index 555cdd9f8f7eb77ab9cad29c87c603fbe29ee901..2a150abccfe997e64ebad972702a703832e7ee32 100755 (executable)
@@ -91,18 +91,18 @@ CAM_Application::~CAM_Application()
 }
 
 /*! 
-  \brief Start an application.
+  \brief Initializes an application.
 
   Load all modules, if "auto loading" flag has been set to \c true.
 
   \sa CAM_Application()
 */
-void CAM_Application::start()
+void CAM_Application::initialize()
 {
+  STD_Application::initialize();
+
   if ( myAutoLoad )
     loadModules();
-
-  STD_Application::start();
 }
 
 /*!
index e04876078828f40beca4e04cd631d960e0f7a3ea..3313c5a4d921282e8963bd8abb1b698b0f694ebf 100755 (executable)
@@ -45,8 +45,6 @@ public:
   CAM_Application( const bool = true );
   virtual ~CAM_Application();
 
-  virtual void        start();
-
   CAM_Module*         activeModule() const;
   CAM_Module*         module( const QString& ) const;
 
@@ -70,6 +68,7 @@ public:
   virtual void        createEmptyStudy();
 
 protected:
+  virtual void        initialize();  
   virtual SUIT_Study* createNewStudy();
   virtual void        updateCommandsStatus();
 
index 645206233ccd2389f0f4800c81f2e3bd7ea84e4e..1b32120880d02005b1acada3302c8f89e3d5cd53 100755 (executable)
@@ -78,9 +78,11 @@ QString STD_Application::applicationName() const
   return QString( "StdApplication" );
 }
 
-/*!Start STD_Application*/
-void STD_Application::start()
+/*!Prepare STD_Application*/
+void STD_Application::initialize()
 {
+  SUIT_Application::initialize();
+  
   createActions();
 
   updateDesktopTitle();
@@ -88,7 +90,15 @@ void STD_Application::start()
   setEditEnabled( myEditEnabled );
 
   loadPreferences();
+}
 
+/*!Start STD_Application*/
+void STD_Application::start()
+{
+  // san: Need this simple implementation, as some applications
+  // call STD_Application::start() explicitly
+  // so we need to provide at least some implementation at this level
+  // to avoid link errors
   SUIT_Application::start();
 }
 
index 5c12b4b65a4a38c569e495d7faec744113c52b58..3db33af3f2fe78dd9b967573ba0bc9b32fa4df09 100755 (executable)
@@ -141,6 +141,7 @@ protected:
   enum { CloseCancel, CloseSave, CloseDiscard };
 
 protected:
+  virtual void          initialize();  
   virtual void          createActions();
   virtual void          updateCommandsStatus();
 
index ead59e4c4205280b7d1aacc51b1b6ac3be421fab..c9d410ac1f63d32c4dbc1ee80fdaa77a62d028dd 100755 (executable)
@@ -117,10 +117,19 @@ QString SUIT_Application::applicationVersion() const
 */
 void SUIT_Application::start()
 {
+  initialize();
+  
   if ( desktop() )
     desktop()->show();
 }
 
+/*!
+  Prepares the contents of the application's main widget, does nothing by default.
+*/
+void SUIT_Application::initialize()
+{
+}
+
 /*!
   Opens document into active Study. If Study is empty - creates it.
   \param theFileName - name of document file
index f20dc56330d901e26552e2e12a4dd84c2e3df7f6..6fb1b891774b922ab9f94c1d48086799099643d2 100755 (executable)
@@ -124,6 +124,9 @@ protected:
   //! Creates a new Study instance. Must be redefined in new application according to its Study type.
   virtual SUIT_Study*   createNewStudy();
   virtual void          setActiveStudy( SUIT_Study* );
+
+  //! Prepares the contents of the application's main widget, does nothing by default.
+  virtual void          initialize();  
   
   /** @name Create tool functions*/ //@{
   int                   createTool( const QString& );