]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
GUITHARE DIAGRAMS: LignApp application with two light modules.
authorsln <sln@opencascade.com>
Fri, 2 Apr 2010 08:55:41 +0000 (08:55 +0000)
committersln <sln@opencascade.com>
Fri, 2 Apr 2010 08:55:41 +0000 (08:55 +0000)
Problem: Object browser is empty after opening existing document
Decision:
1) --autoload  parameter is added. If it is specified myAutoLoad of CAM_Application is equal to TRUE and all modules are loaded when application is created.
2) LightApp_Application::onStudyOpened() method is modified. aModule->connectToStudy() is called for each module if myAutoLoad is true. This allow updating object browser by each module

src/CAM/CAM_Application.cxx
src/CAM/CAM_Application.h
src/LightApp/LightApp_Application.cxx

index 7eef172f8cff08102e1f368f9fff78d44ce5f657..72bcad18a89c4cd2ed589d7610b4b483b3251fc0 100755 (executable)
@@ -512,8 +512,9 @@ QString CAM_Application::moduleLibrary( const QString& title, const bool full )
   QString res;
   for ( ModuleInfoList::const_iterator it = myInfoList.begin(); it != myInfoList.end() && res.isEmpty(); ++it )
   {
-    if ( (*it).title == title )
-      res = (*it).internal;
+    ModuleInfo anInfo = *it;
+    if ( anInfo.title == title )
+      res = anInfo.internal;
   }
   if ( !res.isEmpty() && full )
     res = SUIT_Tools::library( res );
@@ -576,6 +577,9 @@ void CAM_Application::readModuleList()
       break;
     }
 
+    if ( args.indexOf( "--autoload" ) != -1 )
+      myAutoLoad = true;
+
     modList.clear();
     QStringList mods = modules.split( QRegExp( "[:|,\\s]" ), QString::SkipEmptyParts );
     for ( int i = 0; i < mods.count(); i++ ) {
@@ -675,3 +679,11 @@ void CAM_Application::createEmptyStudy()
   /*SUIT_Study* study = */activeStudy();
   STD_Application::createEmptyStudy();
 }
+
+/*!
+  \brief Gets value of myAutoLoad flag
+*/
+bool CAM_Application::autoLoad() const
+{
+  return myAutoLoad;
+}
index b79be8c38fb5ff6dff70c0d476959824f87e4a60..53aa04ccc2dbacdc3d6b30befdb600971fedc5e3 100755 (executable)
@@ -78,6 +78,8 @@ protected:
 
   QString             moduleLibrary( const QString&, const bool = true ) const;
 
+  bool                autoLoad() const;
+
 private:
   void                readModuleList();
 
index bbeb0406355b021979144ec7ab8b8a9aa500c96a..757449bc3e508bb67ef12f75686aad49f78dd749 100644 (file)
@@ -1419,7 +1419,22 @@ void LightApp_Application::onStudyOpened( SUIT_Study* theStudy )
   if ( objectBrowser() )
     objectBrowser()->setRoot( aRoot );
 
-  activateModule( defaultModule() );
+  QString aDefModule = defaultModule();
+
+  if ( autoLoad() )
+  {
+    LightApp_Application* anApp = this;
+    CAM_Application::ModuleList aModules = anApp->modules();
+    CAM_Application::ModuleList::iterator anIter;
+    for ( anIter = aModules.begin(); anIter != aModules.end(); ++anIter )
+    {
+      CAM_Module* aModule = *anIter;
+      if ( aModule && aModule->name() != aDefModule )
+        aModule->connectToStudy( (LightApp_Study*)theStudy );
+    }
+  }
+
+  activateModule( aDefModule );
 
   if ( objectBrowser() )
     objectBrowser()->openLevels();