]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
GUITHARE #21125: allow GUITHARE to open an input deck from command line GUITHARE
authorFrederic Pons <frederic.pons@opencascade.com>
Wed, 17 Apr 2024 11:41:46 +0000 (13:41 +0200)
committerFrederic Pons <frederic.pons@opencascade.com>
Wed, 17 Apr 2024 11:41:46 +0000 (13:41 +0200)
src/LightApp/LightApp_Study.cxx
src/LightApp/LightApp_Study.h
src/SUIT/SUIT_Application.cxx
src/SUIT/SUIT_Application.h
src/SUIT/SUIT_Session.cxx
src/SUIT/SUIT_Study.cxx
src/SUIT/SUIT_Study.h

index a42d7bfd083878dc8c231d52f85f055aefed1b77..f9a12fd9e9226d47e5f1da6e6834fd7ff5152237 100644 (file)
@@ -113,6 +113,25 @@ bool LightApp_Study::openDocument( const QString& theFileName )
   return res;
 }
 
+bool LightApp_Study::openEmptyDocument( )
+{
+  setRoot( new LightApp_RootObject( this ) ); // create myRoot
+
+  // update loaded data models: call open() and update() on them.
+  ModelList dm_s;
+  dataModels( dm_s );
+  QListIterator<CAM_DataModel*> it( dm_s );
+  while ( it.hasNext() )
+    openDataModel( studyName(), it.next() );
+  // this will build a SUIT_DataObject-s tree under myRoot member field
+  // passing "false" in order NOT to rebuild existing data models' trees - it was done in previous step
+  // but tree that corresponds to not-loaded data models will be updated any way. 
+  ((LightApp_Application*)application())->updateObjectBrowser( false ); 
+
+  emit opened( this );
+  return true;
+}
+
 /*!
   Loads document
 */
index 142bdbcc6e1a0049e5ea248dc4c46cf71a4174c7..bd3eeb08d84d09d05031b6c31e4ffbfc4dcc8664 100644 (file)
@@ -46,6 +46,7 @@ public:
 
   virtual bool        createDocument( const QString& );
   virtual bool        openDocument( const QString& );
+  virtual bool        openEmptyDocument();
   virtual bool        loadDocument( const QString& ); 
 
   virtual bool        saveDocument();
index e4bf4f8826350abbd5ae5aa00a2a1d3d95b7e528..5235837e467577ac2b970e5b3a1c06c633bf85ef 100755 (executable)
@@ -145,6 +145,15 @@ bool SUIT_Application::useFile( const QString& theFileName )
   return status;
 }
 
+bool SUIT_Application::useDatFile()
+{
+  createEmptyStudy();
+  SUIT_Study* study = activeStudy();
+
+  return study->openEmptyDocument();
+}
+
+
 /*!
   Creates new empty Study if active Study = 0
 */
index 4d81b4f42f226469d99f1bdd55273edd036dfec9..ad8a3ea1dc6f36d3be1b66217b52ff3107aee1b3 100755 (executable)
@@ -83,6 +83,7 @@ public:
 
   //! Opens document <theFileName> into active Study. If Study is empty - creates it.
   virtual bool          useFile( const QString& theFileName);
+  virtual bool          useDatFile( );
 
   //! Creates new empty Study if active Study = 0
   virtual void          createEmptyStudy();
index 3dff0ed3a88167c9bc9afabde7fdb52740fefcca..b1aa20ecb8e0700b09772775a7f0826b139b23a8 100755 (executable)
@@ -144,10 +144,12 @@ SUIT_Application* SUIT_Session::startApplication( const QString& name, int /*arg
   }
 
   // Prepare Resource Manager for the new application if it doesn't exist yet
+  bool firstRun = false;
   if ( !myResMgr )
   {
     myResMgr = createResourceMgr( appName );
     myResMgr->loadLanguage();
+    firstRun = true;
   }
 
   //jfa 22.06.2005:SUIT_Application* app = crtInst( args, argv );
@@ -182,17 +184,25 @@ SUIT_Application* SUIT_Session::startApplication( const QString& name, int /*arg
 
   if ( !myBTimer )
   {
-    QString anHDFName;
-    QStringList anArgs = QCoreApplication::arguments();
-    QStringList::const_iterator anArgsIt = anArgs.constBegin();
-    for ( ; anArgsIt != anArgs.constEnd(); anArgsIt++ )
+    QString anHDFName, aDatName;
+    if (firstRun)
     {
-      QString anArg = *anArgsIt;
-      QFileInfo aFileInfo( anArg );
-      if ( aFileInfo.exists() && aFileInfo.suffix().toLower() == "hdf" )
+      QStringList anArgs = QCoreApplication::arguments();
+      QStringList::const_iterator anArgsIt = anArgs.constBegin();
+      for ( ; anArgsIt != anArgs.constEnd(); anArgsIt++ )
       {
-        anHDFName = anArg;
-        break;
+        QString anArg = *anArgsIt;
+        QFileInfo aFileInfo( anArg );
+        if ( aFileInfo.exists() && aFileInfo.suffix().toLower() == "hdf" )
+        {
+          anHDFName = anArg;
+          break;
+        }
+        else if ( aFileInfo.exists() && aFileInfo.suffix().toLower() == "dat" )
+        {
+          aDatName = anArg;
+          break;
+        }
       }
     }
 
@@ -209,6 +219,10 @@ SUIT_Application* SUIT_Session::startApplication( const QString& name, int /*arg
       for ( ; aFoldersIt != aFolders.constEnd(); ++aFoldersIt )
         Qtx::rmDir( (*aFoldersIt).absoluteFilePath() );
     }
+    else if ( !aDatName.isEmpty() && app )
+    {
+        app->useDatFile();
+    }
     else
     {
       //Try to restore backup
index 91ec41e408b53d4f43210ae56864da3a056aac4c..5929bc93798c4b3cc01fa02d23c3d9b79e6142aa 100755 (executable)
@@ -135,6 +135,15 @@ bool SUIT_Study::openDocument( const QString& fileName )
   return true;
 }
 
+bool SUIT_Study::openEmptyDocument( )
+{
+  myName = "";
+  myIsSaved = true;
+  myIsModified = false;
+
+  return true;
+}
+
 /*!
  * Save document as \a fileName. Set file name.
  */
index fafba19ee295bf31e816ac872cefe321a6e58c77..87875239c680abb47ece6216506439d6a8670ac1 100755 (executable)
@@ -53,6 +53,7 @@ public:
 
   virtual void      closeDocument( bool = true );
   virtual bool      openDocument( const QString& );
+  virtual bool      openEmptyDocument( );
   virtual bool      createDocument( const QString& );
 
   bool              saveDocument();