From 14e3c25fb6299f101b8ac06ff527de397d054b19 Mon Sep 17 00:00:00 2001 From: "Sandro S. Andrade" Date: Thu, 28 Nov 2013 00:47:44 -0300 Subject: Add opening/saving of scripts Change-Id: Id392f858f32c1bcaac6836542ca2879d3fe7b1cd Reviewed-by: Sandro S. Andrade --- .../designspaceexplorerplugin.cpp | 13 ++- .../plugins/javascriptconsole/javascriptconsole.ui | 123 +++++++++++++++++++-- .../javascriptconsole/javascriptconsoleplugin.cpp | 48 +++++++- .../javascriptconsole/javascriptconsoleplugin.h | 6 +- 4 files changed, 173 insertions(+), 17 deletions(-) diff --git a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp index 52330511..e631a202 100644 --- a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp @@ -224,12 +224,19 @@ void DesignSpaceExplorerPlugin::destroyEngine() void DesignSpaceExplorerPlugin::resetDesignSpaceExplorer() { + qDeleteAll(_duseInstance); + _duseInstance.clear(); + qDeleteAll(_currentDesignSpaceLocationMofModel); + _currentDesignSpaceLocationMofModel.clear(); + _designSpaceExplorer->setRowCount(0); _designSpaceExplorer->clearContents(); } void DesignSpaceExplorerPlugin::newDuseDesign() { + DuSE::ICore::self()->projectController()->closeModel(); + resetDesignSpaceExplorer(); do { if (_newDuseDesignDialog->exec() == QDialog::Accepted) { if (_newDuseDesignDialog->_inputModelFileName.isEmpty() || _newDuseDesignDialog->_duseInstanceModelFileName.isEmpty()) { @@ -247,8 +254,6 @@ void DesignSpaceExplorerPlugin::newDuseDesign() QMessageBox::critical(0, tr("Create new DuSE design"), QStringLiteral("%1 is not a valid DuSE instance !").arg(QFileInfo(file).fileName())); return; } - - DuSE::ICore::self()->projectController()->closeModel(); if (!DuSE::ICore::self()->projectController()->openModel(_newDuseDesignDialog->_inputModelFileName)) { QMessageBox::critical(0, tr("Create new DuSE design"), QStringLiteral("Error loading input file %1 !").arg(_newDuseDesignDialog->_inputModelFileName)); return; @@ -335,6 +340,10 @@ void DesignSpaceExplorerPlugin::currentDesignSpaceLocationChanged() _currentDesignSpaceLocationMofModel.clear(); _currentDesignSpaceLocation.clear(); + + if (_duseInstance.size() == 0) + return; + QModelingObject *designSpaceObject = _duseInstance.first()->asQModelingObject(); int rowCount = _designSpaceExplorer->rowCount(); for (int i = 0; i < rowCount; ++i) diff --git a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsole.ui b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsole.ui index 6a1de49c..41e4a667 100644 --- a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsole.ui +++ b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsole.ui @@ -14,25 +14,117 @@ Form + + 6 + + + 6 + + + 6 + + + 6 + JavaScript Editor + + 6 + + + 6 + + + 6 + + + 6 + - - - - - + + false - - &Evaluate - + + + + + + false + + + Run (CTRL-R) + + + ... + + + + + + + + Ctrl+R + + + + + + + false + + + Save script as + + + ... + + + + + + + + + + + + false + + + Open script + + + ... + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + @@ -42,11 +134,26 @@ JavaScript Output + + 6 + + + 6 + + + 6 + + + 6 + true + + false + diff --git a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp index 5c5b239e..daf65928 100644 --- a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp @@ -52,8 +52,11 @@ #include #include +#include +#include #include +#include #include template @@ -120,8 +123,11 @@ bool JavaScriptConsolePlugin::initialize() _codeCompletionView->setParent(_javaScriptConsole->txeJavaScript); _codeCompletionView->hide(); - connect(_javaScriptConsole->psbJSEvaluate, &QPushButton::clicked, this, &JavaScriptConsolePlugin::evaluate); - connect(_javaScriptConsole->psbJSEvaluate, SIGNAL(clicked()), DuSE::ICore::self()->uiController(), SIGNAL(updateCurrentModelingObject())); + connect(_javaScriptConsole->tbtJSEvaluate, &QToolButton::clicked, this, &JavaScriptConsolePlugin::evaluate); + connect(_javaScriptConsole->tbtJSEvaluate, SIGNAL(clicked()), DuSE::ICore::self()->uiController(), SIGNAL(updateCurrentModelingObject())); + + connect(_javaScriptConsole->tbtSaveScript, &QToolButton::clicked, this, &JavaScriptConsolePlugin::saveScript); + connect(_javaScriptConsole->tbtOpenScript, &QToolButton::clicked, this, &JavaScriptConsolePlugin::openScript); connect(DuSE::ICore::self()->uiController(), &DuSE::IUiController::currentModelingObjectChanged, this, &JavaScriptConsolePlugin::setSelfProperty); connect(DuSE::ICore::self()->projectController(), SIGNAL(modelOpened(QList)), this, SLOT(initializeEngine(QList))); @@ -153,7 +159,9 @@ void JavaScriptConsolePlugin::initializeEngine(QList modeling _engine->globalObject().setProperty("input", array); _javaScriptConsole->txeJavaScript->setText("self"); - _javaScriptConsole->psbJSEvaluate->setEnabled(true); + _javaScriptConsole->tbtJSEvaluate->setEnabled(true); + _javaScriptConsole->tbtSaveScript->setEnabled(true); + _javaScriptConsole->tbtOpenScript->setEnabled(true); QTimer::singleShot(0, this, SLOT(evaluate())); } @@ -163,7 +171,9 @@ void JavaScriptConsolePlugin::destroyEngine() _engine = 0; _javaScriptConsole->txeJavaScript->clear(); _javaScriptConsole->txeJavaScriptEvaluation->clear(); - _javaScriptConsole->psbJSEvaluate->setEnabled(false); + _javaScriptConsole->tbtJSEvaluate->setEnabled(false); + _javaScriptConsole->tbtSaveScript->setEnabled(false); + _javaScriptConsole->tbtOpenScript->setEnabled(false); } bool JavaScriptConsolePlugin::eventFilter(QObject *obj, QEvent *event) @@ -212,3 +222,33 @@ void JavaScriptConsolePlugin::evaluate() { _javaScriptConsole->txeJavaScriptEvaluation->setText(_engine->evaluate(_javaScriptConsole->txeJavaScript->toPlainText()).toString()); } + +void JavaScriptConsolePlugin::saveScript() +{ + QString fileName = QFileDialog::getSaveFileName(0, tr("Save script"), QDir::currentPath(), "*.js"); + if (!fileName.isEmpty()) { + QFile file(fileName); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QMessageBox::critical(0, tr("Save script"), tr("Error when saving script as %1").arg(fileName)); + return; + } + QTextStream out(&file); + out << _javaScriptConsole->txeJavaScript->toPlainText(); + file.close(); + } +} + +void JavaScriptConsolePlugin::openScript() +{ + QString fileName = QFileDialog::getOpenFileName(0, tr("Open script"), QDir::currentPath(), "*.js"); + if (!fileName.isEmpty()) { + QFile file(fileName); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + QMessageBox::critical(0, tr("Open script"), tr("Error when opening script %1").arg(fileName)); + return; + } + QTextStream in(&file); + _javaScriptConsole->txeJavaScript->setPlainText(in.readAll()); + file.close(); + } +} diff --git a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h index 36742f15..c038ec93 100644 --- a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h +++ b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h @@ -72,13 +72,13 @@ public: protected: bool eventFilter(QObject *obj, QEvent *event); -public Q_SLOTS: +private Q_SLOTS: void setSelfProperty(QModelingObject *modelingObject); void initializeEngine(QList modelingObjects); void destroyEngine(); - -private Q_SLOTS: void evaluate(); + void saveScript(); + void openScript(); private: Ui::JavaScriptConsole *_javaScriptConsole; -- cgit v1.2.3