]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Imp PAL13554 : -file option of runSalome
authorvsr <vsr@opencascade.com>
Wed, 18 Oct 2006 11:23:18 +0000 (11:23 +0000)
committervsr <vsr@opencascade.com>
Wed, 18 Oct 2006 11:23:18 +0000 (11:23 +0000)
src/PythonConsole/PythonConsole_PyEditor.cxx
src/PythonConsole/PythonConsole_PyEditor.h
src/SalomeApp/SalomeApp_Application.cxx

index 04d13646360592688ec6ca42424b1dd9b9387e1f..e32bf03ee9dc594f0e3a0c2eb8f347f7a425071b 100755 (executable)
@@ -148,8 +148,10 @@ void PythonConsole_PyEditor::setText(QString s)
 void PythonConsole_PyEditor::exec( const QString& command )
 {
   // Some interactive command is being executed in this editor -> do nothing
-  if ( isReadOnly() )
+  if ( isReadOnly() ) {
+    myQueue.push_back( command );
     return;
+  }
   int para=paragraphs()-1;
   removeParagraph( para );
   _currentPrompt = READY_PROMPT;
@@ -680,6 +682,12 @@ void PythonConsole_PyEditor::customEvent(QCustomEvent* e)
 
   setReadOnly( false );
   _isInHistory = false;
+
+  if ( e->type() == PyInterp_Event::OK && myQueue.count() > 0 ) {
+    QString nextcmd = myQueue[0];
+    myQueue.pop_front();
+    exec( nextcmd );
+  }
 }
 
 /*!
index 004b40021a5e7874b92cd8d0f15eb1bc9764296a..d362b1f8cbab8855a60d2f0ebe6fad3fc82f46ff 100755 (executable)
@@ -69,9 +69,10 @@ private:
 
   PyInterp_base* myInterp;
 
-  QString myBanner;
-  QString myOutput;
-  QString myError;
+  QString        myBanner;
+  QString        myOutput;
+  QString        myError;
+  QStringList    myQueue;
 };
 
 #endif
index d8b2ffc7c2ccf86858548f9f34e61a21715d6817..d0912a6eb243308e47955f3990f458a3260240ba 100644 (file)
@@ -151,6 +151,46 @@ void SalomeApp_Application::start()
   LightApp_Application::start();
 
   SalomeApp_EventFilter::Init();
+
+  static bool isFirst = true;
+  if ( isFirst ) {
+    isFirst = false;
+    QString hdffile;
+    QStringList pyfiles;
+    for (int i = 1; i < qApp->argc(); i++) {
+      QRegExp rx("--test=(.+)");
+      if ( rx.search( QString(qApp->argv()[i]) ) >= 0 && rx.capturedTexts().count() > 0 ) {
+       QStringList files = QStringList::split(",",rx.capturedTexts()[1],false);
+       for (uint j = 0; j < files.count(); j++ ) {
+         QFileInfo fi( files[j] );
+         QString extension = fi.extension( false ).lower();
+         if ( extension == "hdf" && fi.exists() )
+           hdffile = fi.absFilePath();
+         else if ( extension == "py" || extension == "" )
+           pyfiles.append( fi.baseName( true ) );
+       }
+      }
+    }
+    if ( !hdffile.isEmpty() )       // open hdf file given as parameter
+      onOpenDoc( hdffile );
+    else if ( pyfiles.count() > 0 ) // create new study
+      onNewDoc();
+    // import python scripts
+    if ( pyfiles.count() > 0 && activeStudy() ) {
+      SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( activeStudy() );
+      if ( appStudy ) {
+       _PTR(Study) aStudy = appStudy->studyDS();
+       if ( !aStudy->GetProperties()->IsLocked() ) {
+         for ( uint i = 0; i < pyfiles.count(); i++ ) {
+           QString command = QString( "import %1" ).arg( pyfiles[i] );
+           PythonConsole* pyConsole = pythonConsole();
+           if ( pyConsole )
+             pyConsole->exec( command );
+         }
+       }
+      }
+    }
+  }
 }
 
 /*!Create actions:*/