From: Ovidiu Mircescu Date: Fri, 9 Jun 2017 11:53:42 +0000 (+0200) Subject: py2yacsgui now produces an xml file on exit. X-Git-Tag: V8_4_0a1~4^2~1 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=ad55c749404fbddd36d1f7ad15722e6807e95860;p=modules%2Fyacs.git py2yacsgui now produces an xml file on exit. --- diff --git a/src/py2yacs/py2yacs.cxx b/src/py2yacs/py2yacs.cxx index 2ad047d4e..0f4a6e1f2 100644 --- a/src/py2yacs/py2yacs.cxx +++ b/src/py2yacs/py2yacs.cxx @@ -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 diff --git a/src/py2yacsgui/Py2YacsDialog.cxx b/src/py2yacsgui/Py2YacsDialog.cxx index f41917a8f..df01c18fc 100644 --- a/src/py2yacsgui/Py2YacsDialog.cxx +++ b/src/py2yacsgui/Py2YacsDialog.cxx @@ -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)), + connect(&_model, SIGNAL(functionsChanged(std::list)), this, SLOT(onFunctionNamesChange(std::list))); 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 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 diff --git a/src/py2yacsgui/Py2YacsDialog.hxx b/src/py2yacsgui/Py2YacsDialog.hxx index 92653291c..ccb2c8d67 100644 --- a/src/py2yacsgui/Py2YacsDialog.hxx +++ b/src/py2yacsgui/Py2YacsDialog.hxx @@ -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 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 diff --git a/src/py2yacsgui/Py2YacsModel.cxx b/src/py2yacsgui/Py2YacsModel.cxx index d628edccc..9a0c7f27e 100644 --- a/src/py2yacsgui/Py2YacsModel.cxx +++ b/src/py2yacsgui/Py2YacsModel.cxx @@ -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) diff --git a/src/py2yacsgui/Py2YacsModel.hxx b/src/py2yacsgui/Py2YacsModel.hxx index a9ef8ef97..f3ee596da 100644 --- a/src/py2yacsgui/Py2YacsModel.hxx +++ b/src/py2yacsgui/Py2YacsModel.hxx @@ -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 getValidFunctionNames(); void setFunctionName(const std::string& functionName); bool savePossible(); diff --git a/src/ydfx_gui/ydfxgui.cxx b/src/ydfx_gui/ydfxgui.cxx index 65c9241de..92fe5f2bd 100644 --- a/src/ydfx_gui/ydfxgui.cxx +++ b/src/ydfx_gui/ydfxgui.cxx @@ -21,6 +21,7 @@ #include "YACSEvalSession.hxx" #include "YDFXGUIMain.hxx" +#include #include @@ -28,6 +29,7 @@ int main(int argc, char *argv[]) { QApplication app(argc,argv); // + Py_Initialize(); YACSEvalSession session; session.launch(); YDFXGUI mygui(&session);