summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSandro S. Andrade <sandroandrade@kde.org>2013-11-28 00:47:44 -0300
committerSandro S. Andrade <sandroandrade@kde.org>2013-11-28 13:48:32 +0100
commit14e3c25fb6299f101b8ac06ff527de397d054b19 (patch)
treed577a0a71451cc7e7c9a0da74de85d4ae4efa606
parentb6be3e89f6511aa44e9dc5124e7db7a0ec145654 (diff)
Add opening/saving of scripts
Change-Id: Id392f858f32c1bcaac6836542ca2879d3fe7b1cd Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
-rw-r--r--examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp13
-rw-r--r--examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsole.ui123
-rw-r--r--examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp48
-rw-r--r--examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h6
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>&amp;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;