Showing the changes to interface/src/ui/ScriptEditorWindow.cpp (1 of 6 files). Show all
Unified · Split
| @@ -29,19 +29,19 @@ · 28 unmodified lines | |||
| 29 | #include "FlowLayout.h" | 29 | #include "FlowLayout.h" |
| 30 | 30 | ||
| 31 | ScriptEditorWindow::ScriptEditorWindow() : | 31 | ScriptEditorWindow::ScriptEditorWindow() : |
| 32 | ui(new Ui::ScriptEditorWindow) | 32 | _ScriptEditorWindowUI(new Ui::ScriptEditorWindow), |
| 33 | _loadMenu(new QMenu), | ||
| 34 | _saveMenu(new QMenu) | ||
| 33 | { | 35 | { |
| 34 | ui->setupUi(this); | 36 | _ScriptEditorWindowUI->setupUi(this); |
| 35 | show(); | 37 | show(); |
| 36 | addScriptEditorWidget("New script"); | 38 | addScriptEditorWidget("New script"); |
| 37 | loadMenu = new QMenu(); | 39 | connect(_loadMenu, SIGNAL(aboutToShow()), this, SLOT(loadMenuAboutToShow())); |
| 38 | connect(loadMenu, SIGNAL(aboutToShow()), this, SLOT(loadMenuAboutToShow())); | 40 | _ScriptEditorWindowUI->loadButton->setMenu(_loadMenu); |
| 39 | ui->loadButton->setMenu(loadMenu); | ||
| 40 | 41 | ||
| 41 | saveMenu = new QMenu(); | 42 | _saveMenu->addAction("Save as..", this, SLOT(saveScriptAsClicked()), Qt::CTRL | Qt::SHIFT | Qt::Key_S); |
| 42 | saveMenu->addAction("Save as..", this, SLOT(saveScriptAsClicked()), Qt::CTRL|Qt::SHIFT|Qt::Key_S); | ||
| 43 | 43 | ||
| 44 | ui->saveButton->setMenu(saveMenu); | 44 | _ScriptEditorWindowUI->saveButton->setMenu(_saveMenu); |
| 45 | 45 | ||
| 46 | connect(new QShortcut(QKeySequence("Ctrl+N"), this), SIGNAL(activated()), this, SLOT(newScriptClicked())); | 46 | connect(new QShortcut(QKeySequence("Ctrl+N"), this), SIGNAL(activated()), this, SLOT(newScriptClicked())); |
| 47 | connect(new QShortcut(QKeySequence("Ctrl+S"), this), SIGNAL(activated()), this, SLOT(saveScriptClicked())); | 47 | connect(new QShortcut(QKeySequence("Ctrl+S"), this), SIGNAL(activated()), this, SLOT(saveScriptClicked())); |
| @@ -50,19 +50,21 @@ ScriptEditorWindow::ScriptEditorWindow() : · 2 unmodified lines | |||
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | ScriptEditorWindow::~ScriptEditorWindow() { | 52 | ScriptEditorWindow::~ScriptEditorWindow() { |
| 53 | delete ui; | 53 | delete _ScriptEditorWindowUI; |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | void ScriptEditorWindow::setRunningState(bool run) { | 56 | void ScriptEditorWindow::setRunningState(bool run) { |
| 57 | if (ui->tabWidget->currentIndex() != -1) { | 57 | if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) { |
| 58 | ((ScriptEditorWidget*)ui->tabWidget->currentWidget())->setRunning(run); | 58 | static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget->currentWidget())->setRunning(run); |
| 59 | } | 59 | } |
| 60 | this->updateButtons(); | 60 | this->updateButtons(); |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | void ScriptEditorWindow::updateButtons() { | 63 | void ScriptEditorWindow::updateButtons() { |
| 64 | ui->toggleRunButton->setEnabled(ui->tabWidget->currentIndex() != -1); | 64 | _ScriptEditorWindowUI->toggleRunButton->setEnabled(_ScriptEditorWindowUI->tabWidget->currentIndex() != -1); |
| 65 | ui->toggleRunButton->setIcon(ui->tabWidget->currentIndex() != -1 && ((ScriptEditorWidget*)ui->tabWidget->currentWidget())->isRunning() ? QIcon("../resources/icons/stop-script.svg"):QIcon("../resources/icons/start-script.svg")); | 65 | _ScriptEditorWindowUI->toggleRunButton->setIcon(_ScriptEditorWindowUI->tabWidget->currentIndex() != -1 && |
| 66 | static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget->currentWidget())->isRunning() ? | ||
| 67 | QIcon("../resources/icons/stop-script.svg") : QIcon("../resources/icons/start-script.svg")); | ||
| 66 | } | 68 | } |
| 67 | 69 | ||
| 68 | void ScriptEditorWindow::loadScriptMenu(const QString& scriptName) { | 70 | void ScriptEditorWindow::loadScriptMenu(const QString& scriptName) { |
| @@ -79,21 +81,21 @@ void ScriptEditorWindow::loadScriptClicked() { · 10 unmodified lines | |||
| 79 | } | 81 | } |
| 80 | 82 | ||
| 81 | void ScriptEditorWindow::loadMenuAboutToShow() { | 83 | void ScriptEditorWindow::loadMenuAboutToShow() { |
| 82 | loadMenu->clear(); | 84 | _loadMenu->clear(); |
| 83 | QStringList runningScripts = Application::getInstance()->getRunningScripts(); | 85 | QStringList runningScripts = Application::getInstance()->getRunningScripts(); |
| 84 | if (runningScripts.count() > 0) { | 86 | if (runningScripts.count() > 0) { |
| 85 | QSignalMapper* signalMapper = new QSignalMapper(this); | 87 | QSignalMapper* signalMapper = new QSignalMapper(this); |
| 86 | foreach (const QString& runningScript, runningScripts) { | 88 | foreach (const QString& runningScript, runningScripts) { |
| 87 | QAction* runningScriptAction = new QAction(runningScript, loadMenu); | 89 | QAction* runningScriptAction = new QAction(runningScript, _loadMenu); |
| 88 | connect(runningScriptAction, SIGNAL(triggered()), signalMapper, SLOT(map())); | 90 | connect(runningScriptAction, SIGNAL(triggered()), signalMapper, SLOT(map())); |
| 89 | signalMapper->setMapping(runningScriptAction, runningScript); | 91 | signalMapper->setMapping(runningScriptAction, runningScript); |
| 90 | loadMenu->addAction(runningScriptAction); | 92 | _loadMenu->addAction(runningScriptAction); |
| 91 | } | 93 | } |
| 92 | connect(signalMapper, SIGNAL(mapped(const QString &)), this, SLOT(loadScriptMenu(const QString &))); | 94 | connect(signalMapper, SIGNAL(mapped(const QString &)), this, SLOT(loadScriptMenu(const QString&))); |
| 93 | } else { | 95 | } else { |
| 94 | QAction* naAction = new QAction("(no running scripts)",loadMenu); | 96 | QAction* naAction = new QAction("(no running scripts)", _loadMenu); |
| 95 | naAction->setDisabled(true); | 97 | naAction->setDisabled(true); |
| 96 | loadMenu->addAction(naAction); | 98 | _loadMenu->addAction(naAction); |
| 97 | } | 99 | } |
| 98 | } | 100 | } |
| 99 | 101 | ||
| @@ -102,19 +104,22 @@ void ScriptEditorWindow::newScriptClicked() { · 2 unmodified lines | |||
| 102 | } | 104 | } |
| 103 | 105 | ||
| 104 | void ScriptEditorWindow::toggleRunScriptClicked() { | 106 | void ScriptEditorWindow::toggleRunScriptClicked() { |
| 105 | this->setRunningState(!(ui->tabWidget->currentIndex() !=-1 && ((ScriptEditorWidget*)ui->tabWidget->currentWidget())->isRunning())); | 107 | this->setRunningState(!(_ScriptEditorWindowUI->tabWidget->currentIndex() !=-1 |
| 108 | && static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget->currentWidget())->isRunning())); | ||
| 106 | } | 109 | } |
| 107 | 110 | ||
| 108 | void ScriptEditorWindow::saveScriptClicked() { | 111 | void ScriptEditorWindow::saveScriptClicked() { |
| 109 | if (ui->tabWidget->currentIndex() != -1) { | 112 | if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) { |
| 110 | ScriptEditorWidget* currentScriptWidget = (ScriptEditorWidget*)ui->tabWidget->currentWidget(); | 113 | ScriptEditorWidget* currentScriptWidget = static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget |
| 114 | ->currentWidget()); | ||
| 111 | currentScriptWidget->save(); | 115 | currentScriptWidget->save(); |
| 112 | } | 116 | } |
| 113 | } | 117 | } |
| 114 | 118 | ||
| 115 | void ScriptEditorWindow::saveScriptAsClicked() { | 119 | void ScriptEditorWindow::saveScriptAsClicked() { |
| 116 | if (ui->tabWidget->currentIndex() != -1) { | 120 | if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) { |
| 117 | ScriptEditorWidget* currentScriptWidget = (ScriptEditorWidget*)ui->tabWidget->currentWidget(); | 121 | ScriptEditorWidget* currentScriptWidget = static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget |
| 122 | ->currentWidget()); | ||
| 118 | currentScriptWidget->saveAs(); | 123 | currentScriptWidget->saveAs(); |
| 119 | } | 124 | } |
| 120 | } | 125 | } |
| @@ -124,8 +129,8 @@ ScriptEditorWidget* ScriptEditorWindow::addScriptEditorWidget(QString title) { · 3 unmodified lines | |||
| 124 | connect(newScriptEditorWidget, SIGNAL(scriptnameChanged()), this, SLOT(updateScriptNameOrStatus())); | 129 | connect(newScriptEditorWidget, SIGNAL(scriptnameChanged()), this, SLOT(updateScriptNameOrStatus())); |
| 125 | connect(newScriptEditorWidget, SIGNAL(scriptModified()), this, SLOT(updateScriptNameOrStatus())); | 130 | connect(newScriptEditorWidget, SIGNAL(scriptModified()), this, SLOT(updateScriptNameOrStatus())); |
| 126 | connect(newScriptEditorWidget, SIGNAL(runningStateChanged()), this, SLOT(updateButtons())); | 131 | connect(newScriptEditorWidget, SIGNAL(runningStateChanged()), this, SLOT(updateButtons())); |
| 127 | ui->tabWidget->addTab(newScriptEditorWidget, title); | 132 | _ScriptEditorWindowUI->tabWidget->addTab(newScriptEditorWidget, title); |
| 128 | ui->tabWidget->setCurrentWidget(newScriptEditorWidget); | 133 | _ScriptEditorWindowUI->tabWidget->setCurrentWidget(newScriptEditorWidget); |
| 129 | newScriptEditorWidget->setUpdatesEnabled(true); | 134 | newScriptEditorWidget->setUpdatesEnabled(true); |
| 130 | newScriptEditorWidget->adjustSize(); | 135 | newScriptEditorWidget->adjustSize(); |
| 131 | return newScriptEditorWidget; | 136 | return newScriptEditorWidget; |
| @@ -133,13 +138,14 @@ ScriptEditorWidget* ScriptEditorWindow::addScriptEditorWidget(QString title) { · 1 unmodified line | |||
| 133 | 138 | ||
| 134 | void ScriptEditorWindow::tabSwitched(int tabIndex) { | 139 | void ScriptEditorWindow::tabSwitched(int tabIndex) { |
| 135 | this->updateButtons(); | 140 | this->updateButtons(); |
| 136 | if (ui->tabWidget->currentIndex() != -1) { | 141 | if (_ScriptEditorWindowUI->tabWidget->currentIndex() != -1) { |
| 137 | ScriptEditorWidget* currentScriptWidget = (ScriptEditorWidget*)ui->tabWidget->currentWidget(); | 142 | ScriptEditorWidget* currentScriptWidget = static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget |
| 138 | QString modifiedStar = (currentScriptWidget->isModified()?"*":""); | 143 | ->currentWidget()); |
| 144 | QString modifiedStar = (currentScriptWidget->isModified() ? "*" : ""); | ||
| 139 | if (currentScriptWidget->getScriptName().length() > 0) { | 145 | if (currentScriptWidget->getScriptName().length() > 0) { |
| 140 | this->setWindowTitle("Script Editor ["+currentScriptWidget->getScriptName()+modifiedStar+"]"); | 146 | this->setWindowTitle("Script Editor [" + currentScriptWidget->getScriptName() + modifiedStar + "]"); |
| 141 | } else { | 147 | } else { |
| 142 | this->setWindowTitle("Script Editor [New script"+modifiedStar+"]"); | 148 | this->setWindowTitle("Script Editor [New script" + modifiedStar + "]"); |
| 143 | } | 149 | } |
| 144 | } else { | 150 | } else { |
| 145 | this->setWindowTitle("Script Editor"); | 151 | this->setWindowTitle("Script Editor"); |
| @@ -147,21 +153,25 @@ void ScriptEditorWindow::tabSwitched(int tabIndex) { · 1 unmodified line | |||
| 147 | } | 153 | } |
| 148 | 154 | ||
| 149 | void ScriptEditorWindow::tabCloseRequested(int tabIndex) { | 155 | void ScriptEditorWindow::tabCloseRequested(int tabIndex) { |
| 150 | ScriptEditorWidget* closingScriptWidget = (ScriptEditorWidget*)ui->tabWidget->widget(tabIndex); | 156 | ScriptEditorWidget* closingScriptWidget = static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget |
| 157 | ->widget(tabIndex)); | ||
| 151 | if(closingScriptWidget->questionSave()) { | 158 | if(closingScriptWidget->questionSave()) { |
| 152 | ui->tabWidget->removeTab(tabIndex); | 159 | _ScriptEditorWindowUI->tabWidget->removeTab(tabIndex); |
| 153 | } | 160 | } |
| 154 | } | 161 | } |
| 155 | 162 | ||
| 156 | void ScriptEditorWindow::closeEvent(QCloseEvent *event) { | 163 | void ScriptEditorWindow::closeEvent(QCloseEvent *event) { |
| 157 | bool unsaved_docs_warning = false; | 164 | bool unsaved_docs_warning = false; |
| 158 | for (int i = 0; i < ui->tabWidget->count(); i++ && !unsaved_docs_warning){ | 165 | for (int i = 0; i < _ScriptEditorWindowUI->tabWidget->count(); i++){ |
| 159 | if(((ScriptEditorWidget*)ui->tabWidget->widget(i))->isModified()){ | 166 | if(static_cast<ScriptEditorWidget*>(_ScriptEditorWindowUI->tabWidget->widget(i))->isModified()){ |
| 160 | unsaved_docs_warning = true; | 167 | unsaved_docs_warning = true; |
| 168 | break; | ||
| 161 | } | 169 | } |
| 162 | } | 170 | } |
| 163 | 171 | ||
| 164 | if (!unsaved_docs_warning || QMessageBox::warning(this, tr("Interface"), tr("There are some unsaved scripts, are you sure you want to close the editor? Changes will be lost!"), QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Discard) { | 172 | if (!unsaved_docs_warning || QMessageBox::warning(this, tr("Interface"), |
| 173 | tr("There are some unsaved scripts, are you sure you want to close the editor? Changes will be lost!"), | ||
| 174 | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Discard) { | ||
| 165 | event->accept(); | 175 | event->accept(); |
| 166 | } else { | 176 | } else { |
| 167 | event->ignore(); | 177 | event->ignore(); |
| @@ -172,19 +182,19 @@ void ScriptEditorWindow::updateScriptNameOrStatus() { · 4 unmodified lines | |||
| 172 | ScriptEditorWidget* source = (ScriptEditorWidget*)QObject::sender(); | 182 | ScriptEditorWidget* source = (ScriptEditorWidget*)QObject::sender(); |
| 173 | QString modifiedStar = (source->isModified()?"*":""); | 183 | QString modifiedStar = (source->isModified()?"*":""); |
| 174 | if (source->getScriptName().length() > 0) { | 184 | if (source->getScriptName().length() > 0) { |
| 175 | for (int i = 0; i < ui->tabWidget->count(); i++){ | 185 | for (int i = 0; i < _ScriptEditorWindowUI->tabWidget->count(); i++){ |
| 176 | if (ui->tabWidget->widget(i) == source) { | 186 | if (_ScriptEditorWindowUI->tabWidget->widget(i) == source) { |
| 177 | ui->tabWidget->setTabText(i,modifiedStar+QFileInfo(source->getScriptName()).fileName()); | 187 | _ScriptEditorWindowUI->tabWidget->setTabText(i,modifiedStar + QFileInfo(source->getScriptName()).fileName()); |
| 178 | ui->tabWidget->setTabToolTip(i, source->getScriptName()); | 188 | _ScriptEditorWindowUI->tabWidget->setTabToolTip(i, source->getScriptName()); |
| 179 | } | 189 | } |
| 180 | } | 190 | } |
| 181 | } | 191 | } |
| 182 | 192 | ||
| 183 | if (ui->tabWidget->currentWidget() == source) { | 193 | if (_ScriptEditorWindowUI->tabWidget->currentWidget() == source) { |
| 184 | if (source->getScriptName().length() > 0) { | 194 | if (source->getScriptName().length() > 0) { |
| 185 | this->setWindowTitle("Script Editor ["+source->getScriptName()+modifiedStar+"]"); | 195 | this->setWindowTitle("Script Editor [" + source->getScriptName() + modifiedStar + "]"); |
| 186 | } else { | 196 | } else { |
| 187 | this->setWindowTitle("Script Editor [New script"+modifiedStar+"]"); | 197 | this->setWindowTitle("Script Editor [New script" + modifiedStar + "]"); |
| 188 | } | 198 | } |
| 189 | } | 199 | } |
| 190 | } | 200 | } |