diff options
author | Sandro S. Andrade <sandroandrade@kde.org> | 2013-11-28 00:47:44 -0300 |
---|---|---|
committer | Sandro S. Andrade <sandroandrade@kde.org> | 2013-11-28 13:48:32 +0100 |
commit | 14e3c25fb6299f101b8ac06ff527de397d054b19 (patch) | |
tree | d577a0a71451cc7e7c9a0da74de85d4ae4efa606 | |
parent | b6be3e89f6511aa44e9dc5124e7db7a0ec145654 (diff) |
Add opening/saving of scripts
Change-Id: Id392f858f32c1bcaac6836542ca2879d3fe7b1cd
Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
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 @@ <string>Form</string> </property> <layout class="QGridLayout" name="gridLayout_3"> + <property name="leftMargin"> + <number>6</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>6</number> + </property> + <property name="bottomMargin"> + <number>6</number> + </property> <item row="0" column="0"> <widget class="QGroupBox" name="groupBox"> <property name="title"> <string>JavaScript Editor</string> </property> <layout class="QGridLayout" name="gridLayout"> + <property name="leftMargin"> + <number>6</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>6</number> + </property> + <property name="bottomMargin"> + <number>6</number> + </property> <item row="0" column="0"> - <widget class="QTextEdit" name="txeJavaScript"/> - </item> - <item row="1" column="0"> - <widget class="QPushButton" name="psbJSEvaluate"> - <property name="enabled"> + <widget class="QTextEdit" name="txeJavaScript"> + <property name="acceptRichText"> <bool>false</bool> </property> - <property name="text"> - <string>&Evaluate</string> - </property> </widget> </item> + <item row="0" column="1"> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QToolButton" name="tbtJSEvaluate"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="toolTip"> + <string>Run (CTRL-R)</string> + </property> + <property name="text"> + <string>...</string> + </property> + <property name="icon"> + <iconset theme="system-run"> + <normaloff/> + </iconset> + </property> + <property name="shortcut"> + <string>Ctrl+R</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tbtSaveScript"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="toolTip"> + <string>Save script as</string> + </property> + <property name="text"> + <string>...</string> + </property> + <property name="icon"> + <iconset theme="document-save"> + <normaloff/> + </iconset> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tbtOpenScript"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="toolTip"> + <string>Open script</string> + </property> + <property name="text"> + <string>...</string> + </property> + <property name="icon"> + <iconset theme="document-open"> + <normaloff/> + </iconset> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> </layout> </widget> </item> @@ -42,11 +134,26 @@ <string>JavaScript Output</string> </property> <layout class="QGridLayout" name="gridLayout_2"> + <property name="leftMargin"> + <number>6</number> + </property> + <property name="topMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>6</number> + </property> + <property name="bottomMargin"> + <number>6</number> + </property> <item row="0" column="0"> <widget class="QTextEdit" name="txeJavaScriptEvaluation"> <property name="readOnly"> <bool>true</bool> </property> + <property name="acceptRichText"> + <bool>false</bool> + </property> </widget> </item> </layout> 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 <QtGui/QKeyEvent> #include <QtWidgets/QListView> +#include <QtWidgets/QMessageBox> +#include <QtWidgets/QFileDialog> #include <QtCore/QTimer> +#include <QtCore/QTextStream> #include <QtCore/QStringListModel> template <class T> @@ -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<QModelingObject*>)), this, SLOT(initializeEngine(QList<QModelingObject*>))); @@ -153,7 +159,9 @@ void JavaScriptConsolePlugin::initializeEngine(QList<QModelingObject *> 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<QModelingObject *> modelingObjects); void destroyEngine(); - -private Q_SLOTS: void evaluate(); + void saveScript(); + void openScript(); private: Ui::JavaScriptConsole *_javaScriptConsole; |