summaryrefslogtreecommitdiff
path: root/src/plugins/duieditor/duieditoractionhandler.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-04-22 15:21:04 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2009-04-22 15:21:04 +0200
commitdf16c1b68723a015c96dd1c66442d2ca310855ef (patch)
treed925c582b78f30d2d3a4215ba38ff1b1903ff992 /src/plugins/duieditor/duieditoractionhandler.cpp
parentef8e69d96a667af8af280c536c00db2ac2645a79 (diff)
downloadqt-creator-df16c1b68723a015c96dd1c66442d2ca310855ef.tar.gz
Initial work on the DUI editor-plugin.
Diffstat (limited to 'src/plugins/duieditor/duieditoractionhandler.cpp')
-rw-r--r--src/plugins/duieditor/duieditoractionhandler.cpp100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/plugins/duieditor/duieditoractionhandler.cpp b/src/plugins/duieditor/duieditoractionhandler.cpp
new file mode 100644
index 0000000000..23e437faea
--- /dev/null
+++ b/src/plugins/duieditor/duieditoractionhandler.cpp
@@ -0,0 +1,100 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+**
+**************************************************************************/
+
+#include "duieditoractionhandler.h"
+#include "duieditorconstants.h"
+#include "duieditor.h"
+
+#include <coreplugin/icore.h>
+#include <coreplugin/actionmanager/actionmanager.h>
+#include <coreplugin/scriptmanager/scriptmanager.h>
+
+#include <QtCore/QDebug>
+#include <QtGui/QAction>
+#include <QtGui/QMainWindow>
+#include <QtGui/QMessageBox>
+
+static QAction *actionFromId(const QString &id)
+{
+ Core::Command *cmd = Core::ICore::instance()->actionManager()->command(id);
+ if (!cmd)
+ return 0;
+ return cmd->action();
+}
+
+namespace DuiEditor {
+namespace Internal {
+
+DuiEditorActionHandler::DuiEditorActionHandler()
+ : TextEditor::TextEditorActionHandler(QLatin1String(DuiEditor::Constants::C_DUIEDITOR),
+ Format),
+ m_runAction(0)
+{
+}
+
+void DuiEditorActionHandler::createActions()
+{
+ TextEditor::TextEditorActionHandler::createActions();
+ m_runAction = actionFromId(QLatin1String(DuiEditor::Constants::RUN));
+ connect(m_runAction, SIGNAL(triggered()), this, SLOT(run()));
+}
+
+
+void DuiEditorActionHandler::run()
+{
+ typedef Core::ScriptManager::Stack Stack;
+ if (!currentEditor())
+ return;
+
+ const QString script = currentEditor()->toPlainText();
+
+ // run
+ Stack errorStack;
+ QString errorMessage;
+ if (Core::ICore::instance()->scriptManager()->runScript(script, &errorMessage, &errorStack))
+ return;
+
+ // try to find a suitable error line in the stack
+ // ignoring 0 and other files (todo: open other files?)
+ int errorLineNumber = 0;
+ if (const int numFrames = errorStack.size()) {
+ for (int f = 0; f < numFrames; f++) {
+ if (errorStack[f].lineNumber && errorStack[f].fileName.isEmpty()) {
+ errorLineNumber = errorStack[f].lineNumber;
+ break;
+ }
+ }
+ }
+ if (errorLineNumber)
+ currentEditor()->gotoLine(errorLineNumber);
+ QMessageBox::critical(Core::ICore::instance()->mainWindow(), tr("Qt Script Error"), errorMessage);
+}
+
+} // namespace Internal
+} // namespace DuiEditor