]> SALOME platform Git repositories - modules/yacs.git/commitdiff
Salome HOME
py2yacsgui now produces an xml file on exit.
authorOvidiu Mircescu <ovidiu.mircescu@edf.fr>
Fri, 9 Jun 2017 11:53:42 +0000 (13:53 +0200)
committerOvidiu Mircescu <ovidiu.mircescu@edf.fr>
Fri, 9 Jun 2017 11:53:42 +0000 (13:53 +0200)
src/py2yacs/py2yacs.cxx
src/py2yacsgui/Py2YacsDialog.cxx
src/py2yacsgui/Py2YacsDialog.hxx
src/py2yacsgui/Py2YacsModel.cxx
src/py2yacsgui/Py2YacsModel.hxx
src/ydfx_gui/ydfxgui.cxx

index 2ad047d4e31f0898a8c63e7313eb37ce57184f9f..0f4a6e1f258c0886b458e050a0c4cd40f9f9ce7b 100644 (file)
@@ -23,6 +23,7 @@
 #include "Proc.hxx"
 #include "InlineNode.hxx"
 #include "AutoGIL.hxx"
+#include "InputPort.hxx"
 
 Py2yacsException::Py2yacsException(const std::string& what)
 : std::exception(),
@@ -368,12 +369,16 @@ YACS::ENGINE::Proc* Py2yacs::createProc(const std::string& python_function)const
   for(it = fn_prop->_input_ports.begin();
       it != fn_prop->_input_ports.end();
       it++)
-    node->edAddInputPort(*it, tc_double);
+  {
+    YACS::ENGINE::InputPort *newport = node->edAddInputPort(*it, tc_double);
+    newport->edInit(0.0);
+  }
   
   for(it = fn_prop->_output_ports.begin();
       it != fn_prop->_output_ports.end();
       it++)
     node->edAddOutputPort(*it, tc_double);
-  
+
+  node->setExecutionMode(YACS::ENGINE::InlineNode::REMOTE_STR);
   return schema;
 }
\ No newline at end of file
index f41917a8fdbc01d473c8b69b6d7433b0d9f7c0a0..df01c18fc4d7c7ade84ad9e18faebdde54aec639 100644 (file)
@@ -50,10 +50,9 @@ Py2YacsDialog::Py2YacsDialog( QWidget* parent)
   _exportButton = new QPushButton(tr("E&xport to YACS schema..."));
   exportLayout->addWidget(new QLabel(tr("Function to run:")));
   exportLayout->addWidget(_functionChosen);
-  exportLayout->addWidget(_exportButton);
 
   QHBoxLayout *validationLayout = new QHBoxLayout;
-  _okButton = new QPushButton(tr("O&k"));
+  _okButton = new QPushButton(tr("Save YACS schema and &quit"));
   QPushButton * cancelButton = new QPushButton(tr("&Cancel"));
   validationLayout->addWidget(_okButton);
   validationLayout->addWidget(cancelButton);
@@ -63,6 +62,7 @@ Py2YacsDialog::Py2YacsDialog( QWidget* parent)
   editLayout->addLayout(fileLayout);
   editLayout->addWidget(_pyEditor);
   editLayout->addWidget(applyButton);
+  editLayout->addLayout(exportLayout);
   editWidget->setLayout(editLayout);
   
   QGroupBox *messageWidget = new QGroupBox(tr("Messages:"));
@@ -76,7 +76,6 @@ Py2YacsDialog::Py2YacsDialog( QWidget* parent)
 
   QVBoxLayout *mainLayout = new QVBoxLayout;
   mainLayout->addWidget(splitterW);
-  mainLayout->addLayout(exportLayout);
   mainLayout->addLayout(validationLayout);
   setLayout(mainLayout);
   setWindowTitle(tr("Python to YACS schema editor"));
@@ -86,20 +85,20 @@ Py2YacsDialog::Py2YacsDialog( QWidget* parent)
   connect(_pyEditor, SIGNAL(textChanged()), this, SLOT(invalidModel()));
   connect(applyButton,SIGNAL(clicked()),this, SLOT(onApply()));
   
-  connect(&model, SIGNAL(scriptChanged(const QString&)),
+  connect(&_model, SIGNAL(scriptChanged(const QString&)),
           _pyEditor, SLOT(setText(const QString&)));
-  connect(&model, SIGNAL(errorChanged(const QString&)),
+  connect(&_model, SIGNAL(errorChanged(const QString&)),
           errorMessages, SLOT(setText(const QString&)));
-  connect(&model, SIGNAL(functionsChanged(std::list<std::string>)),
+  connect(&_model, SIGNAL(functionsChanged(std::list<std::string>)),
           this, SLOT(onFunctionNamesChange(std::list<std::string>)));
   connect(_functionChosen,SIGNAL(currentIndexChanged(const QString &)),
-          &model, SLOT(setFunctionName(const QString&)));
+          &_model, SLOT(setFunctionName(const QString&)));
   connect(loadButton,SIGNAL(clicked()),this, SLOT(onLoad()));
   connect(_saveButton,SIGNAL(clicked()),this, SLOT(onSave()));
   connect(saveAsButton,SIGNAL(clicked()),this, SLOT(onSaveAs()));
   connect(_exportButton,SIGNAL(clicked()),this, SLOT(onExport()));
   connect(cancelButton,SIGNAL(clicked()),this, SLOT(reject()));
-  connect(_okButton,SIGNAL(clicked()),this, SLOT(accept()));
+  connect(_okButton,SIGNAL(clicked()),this, SLOT(onExport()));
 }
 
 void Py2YacsDialog::onFunctionNamesChange(std::list<std::string> validFunctionNames)
@@ -134,8 +133,8 @@ void Py2YacsDialog::onLoad()
     QFile file(fileName);
     settings.setValue("currentDir", QFileInfo(fileName).absolutePath());
     
-    model.loadFile(fileName.toStdString());
-    _saveButton->setEnabled(model.savePossible());
+    _model.loadFile(fileName.toStdString());
+    _saveButton->setEnabled(_model.savePossible());
     checkModel();
   }
 }
@@ -157,13 +156,17 @@ void Py2YacsDialog::onExport()
     QFile file(fileName);
     settings.setValue("currentDir", QFileInfo(fileName).absolutePath());
     
-    model.exportToXml(fileName.toStdString());
+    if(_model.exportToXml(fileName.toStdString()))
+    {
+      _yacsFile = fileName;
+      accept();
+    }
   }
 }
 
 void Py2YacsDialog::onApply()
 {
-  model.setScript(_pyEditor->toPlainText().toStdString());
+  _model.setScript(_pyEditor->toPlainText().toStdString());
   checkModel();
 }
 
@@ -176,7 +179,7 @@ void Py2YacsDialog::invalidModel()
 
 void Py2YacsDialog::checkModel()
 {
-  bool modelState = model.schemaAvailable();
+  bool modelState = _model.schemaAvailable();
   _okButton->setEnabled(modelState);
   _exportButton->setEnabled(modelState);
   _functionChosen->setEnabled(modelState);
@@ -184,8 +187,8 @@ void Py2YacsDialog::checkModel()
 
 void Py2YacsDialog::onSave()
 {
-  model.setScript(_pyEditor->toPlainText().toStdString());
-  model.save();
+  _model.setScript(_pyEditor->toPlainText().toStdString());
+  _model.save();
   checkModel();
 }
 
@@ -206,14 +209,19 @@ void Py2YacsDialog::onSaveAs()
     QFile file(fileName);
     settings.setValue("currentDir", QFileInfo(fileName).absolutePath());
     
-    model.setScript(_pyEditor->toPlainText().toStdString());
-    model.saveAs(fileName.toStdString());
-    _saveButton->setEnabled(model.savePossible());
+    _model.setScript(_pyEditor->toPlainText().toStdString());
+    _model.saveAs(fileName.toStdString());
+    _saveButton->setEnabled(_model.savePossible());
     checkModel();
   }
 }
 
 YACS::ENGINE::Proc* Py2YacsDialog::getYacsSchema()
 {
-  return model.getProc();
+  return _model.getProc();
+}
+
+QString Py2YacsDialog::getYacsFile()
+{
+  return _yacsFile;
 }
\ No newline at end of file
index 92653291c7355fcf5d81e1327d3f666fc50cdefd..ccb2c8d6704d4e270a0c9a8b39501acc0febe25a 100644 (file)
@@ -37,6 +37,7 @@ class PY2YACSGUILIB_EXPORT Py2YacsDialog : public QDialog
   public:
     Py2YacsDialog( QWidget* parent=0);
     YACS::ENGINE::Proc* getYacsSchema();
+    QString getYacsFile();
     
   public slots:
     virtual void onFunctionNamesChange(std::list<std::string> validFunctionNames);
@@ -48,7 +49,8 @@ class PY2YACSGUILIB_EXPORT Py2YacsDialog : public QDialog
     virtual void onSave();
     virtual void onSaveAs();
   private:
-    Py2YacsModel model;
+    Py2YacsModel _model;
+    QString _yacsFile;
 #ifdef HAS_PYEDITOR
     PyEditor_Editor *_pyEditor;
 #else
index d628edccc8c778aee0d062775357c8bf64e6530d..9a0c7f27e90f8a645d504bf5edd2ad0fb7bc46e9 100644 (file)
@@ -139,8 +139,9 @@ const std::string& Py2YacsModel::getLastError()
   return _lastError;
 }
 
-void Py2YacsModel::exportToXml(const std::string& path)
+bool Py2YacsModel::exportToXml(const std::string& path)
 {
+  bool ok = true;
   if(schemaAvailable())
   {
     try
@@ -151,9 +152,11 @@ void Py2YacsModel::exportToXml(const std::string& path)
     {
       _lastError = e.what();
       _lastError += "\n";
+      ok = false;
     }
   }
   emit errorChanged(_lastError.c_str());
+  return ok;
 }
 
 void Py2YacsModel::setFunctionName(const QString& functionName)
index a9ef8ef97a0a96e20b2cc7caf9b49356be22876b..f3ee596da44ebd85bf4b6916418de6340a33fc78 100644 (file)
@@ -45,7 +45,7 @@ class PY2YACSGUILIB_EXPORT Py2YacsModel : public QObject
   void setScript(const std::string& texte);
   const std::string& getScript();
   const std::string& getLastError();
-  void exportToXml(const std::string& path);
+  bool exportToXml(const std::string& path);
   std::list<std::string> getValidFunctionNames();
   void setFunctionName(const std::string& functionName);
   bool savePossible();
index 65c9241de6bc04e67fed86c12d78acbb6413ff61..92fe5f2bdf6fb4bfcf5bbc14b75dae0253a5605f 100644 (file)
@@ -21,6 +21,7 @@
 #include "YACSEvalSession.hxx"
 
 #include "YDFXGUIMain.hxx"
+#include <Python.h>
 
 #include <QApplication>
 
@@ -28,6 +29,7 @@ int main(int argc, char *argv[])
 {
   QApplication app(argc,argv);
   //
+  Py_Initialize();
   YACSEvalSession session;
   session.launch();
   YDFXGUI mygui(&session);