From 3452b4214db2681ee9013bbc4a96a7372b2edd48 Mon Sep 17 00:00:00 2001 From: mae <qt-info@nokia.com> Date: Mon, 9 Nov 2009 17:35:20 +0100 Subject: [PATCH] implement the standard context menu also for the script editors In addition, clean up the text editor action handling in the qtscript plugin. Rev-by: con --- src/plugins/qmleditor/qmleditor.cpp | 4 +- src/plugins/qmleditor/qmleditorplugin.cpp | 7 ++ src/plugins/qtscripteditor/qtscripteditor.cpp | 6 ++ src/plugins/qtscripteditor/qtscripteditor.h | 2 + src/plugins/qtscripteditor/qtscripteditor.pro | 2 - .../qtscripteditoractionhandler.cpp | 99 ------------------- .../qtscripteditoractionhandler.h | 55 ----------- .../qtscripteditor/qtscripteditorfactory.cpp | 9 +- .../qtscripteditor/qtscripteditorfactory.h | 2 - .../qtscripteditor/qtscripteditorplugin.cpp | 18 ++-- 10 files changed, 35 insertions(+), 169 deletions(-) delete mode 100644 src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp delete mode 100644 src/plugins/qtscripteditor/qtscripteditoractionhandler.h diff --git a/src/plugins/qmleditor/qmleditor.cpp b/src/plugins/qmleditor/qmleditor.cpp index 76d44b67773..3790a27c732 100644 --- a/src/plugins/qmleditor/qmleditor.cpp +++ b/src/plugins/qmleditor/qmleditor.cpp @@ -746,7 +746,7 @@ TextEditor::BaseTextEditor::Link ScriptEditor::findLinkAt(const QTextCursor &cur void ScriptEditor::contextMenuEvent(QContextMenuEvent *e) { - QMenu *menu = createStandardContextMenu(); + QMenu *menu = new QMenu(); if (Core::ActionContainer *mcontext = Core::ICore::instance()->actionManager()->actionContainer(QmlEditor::Constants::M_CONTEXT)) { QMenu *contextMenu = mcontext->menu(); @@ -762,6 +762,8 @@ void ScriptEditor::contextMenuEvent(QContextMenuEvent *e) connect(a, SIGNAL(triggered()), this, SLOT(renameIdUnderCursor())); } + appendStandardContextMenuActions(menu); + menu->exec(e->globalPos()); menu->deleteLater(); } diff --git a/src/plugins/qmleditor/qmleditorplugin.cpp b/src/plugins/qmleditor/qmleditorplugin.cpp index 47b71b9af18..5958ab469a1 100644 --- a/src/plugins/qmleditor/qmleditorplugin.cpp +++ b/src/plugins/qmleditor/qmleditorplugin.cpp @@ -114,6 +114,13 @@ bool QmlEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err | TextEditor::TextEditorActionHandler::UnCollapseAll); m_actionHandler->initializeActions(); + Core::ActionManager *am = core->actionManager(); + Core::ActionContainer *contextMenu= am->createMenu(QmlEditor::Constants::M_CONTEXT); + Core::Command *cmd = am->command(TextEditor::Constants::AUTO_INDENT_SELECTION); + contextMenu->addAction(cmd); + cmd = am->command(TextEditor::Constants::UN_COMMENT_SELECTION); + contextMenu->addAction(cmd); + m_completion = new QmlCodeCompletion(); addAutoReleasedObject(m_completion); diff --git a/src/plugins/qtscripteditor/qtscripteditor.cpp b/src/plugins/qtscripteditor/qtscripteditor.cpp index fbd91ab062b..d751a87d395 100644 --- a/src/plugins/qtscripteditor/qtscripteditor.cpp +++ b/src/plugins/qtscripteditor/qtscripteditor.cpp @@ -40,6 +40,7 @@ #include "parser/javascriptast_p.h" #include <indenter.h> +#include <utils/uncommentselection.h> #include <coreplugin/icore.h> #include <coreplugin/actionmanager/actionmanager.h> @@ -408,5 +409,10 @@ void ScriptEditor::contextMenuEvent(QContextMenuEvent *e) delete menu; } +void ScriptEditor::unCommentSelection() +{ + Utils::unCommentSelection(this); +} + } // namespace Internal } // namespace QtScriptEditor diff --git a/src/plugins/qtscripteditor/qtscripteditor.h b/src/plugins/qtscripteditor/qtscripteditor.h index 06e72371bd1..6556176a350 100644 --- a/src/plugins/qtscripteditor/qtscripteditor.h +++ b/src/plugins/qtscripteditor/qtscripteditor.h @@ -95,6 +95,8 @@ public: QList<Declaration> declarations() const; QStringList words() const; + void unCommentSelection(); // from basetexteditor + public slots: virtual void setFontSettings(const TextEditor::FontSettings &); diff --git a/src/plugins/qtscripteditor/qtscripteditor.pro b/src/plugins/qtscripteditor/qtscripteditor.pro index 7fd3ff19c6d..2ff0c5699e7 100644 --- a/src/plugins/qtscripteditor/qtscripteditor.pro +++ b/src/plugins/qtscripteditor/qtscripteditor.pro @@ -13,14 +13,12 @@ HEADERS += qtscripteditor.h \ qtscripteditorfactory.h \ qtscripteditorplugin.h \ qtscripthighlighter.h \ -qtscripteditoractionhandler.h \ qtscriptcodecompletion.h SOURCES += qtscripteditor.cpp \ qtscripteditorfactory.cpp \ qtscripteditorplugin.cpp \ qtscripthighlighter.cpp \ -qtscripteditoractionhandler.cpp \ qtscriptcodecompletion.cpp RESOURCES += qtscripteditor.qrc diff --git a/src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp b/src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp deleted file mode 100644 index 3c48ea9b25e..00000000000 --- a/src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (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 http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "qtscripteditoractionhandler.h" -#include "qtscripteditorconstants.h" -#include "qtscripteditor.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> - -#if 0 -static QAction *actionFromId(const QString &id) -{ - Core::Command *cmd = Core::ICore::instance()->actionManager()->command(id); - if (!cmd) - return 0; - return cmd->action(); -} -#endif - -namespace QtScriptEditor { -namespace Internal { - -QtScriptEditorActionHandler::QtScriptEditorActionHandler() - : TextEditor::TextEditorActionHandler(QLatin1String(QtScriptEditor::Constants::C_QTSCRIPTEDITOR), - Format) -{ -} - -void QtScriptEditorActionHandler::createActions() -{ - TextEditor::TextEditorActionHandler::createActions(); -} - - -void QtScriptEditorActionHandler::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 QtScriptEditor diff --git a/src/plugins/qtscripteditor/qtscripteditoractionhandler.h b/src/plugins/qtscripteditor/qtscripteditoractionhandler.h deleted file mode 100644 index 8e94c2a454d..00000000000 --- a/src/plugins/qtscripteditor/qtscripteditoractionhandler.h +++ /dev/null @@ -1,55 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (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 http://qt.nokia.com/contact. -** -**************************************************************************/ - -#ifndef QTSCRIPTDITORACTIONHANDLER_H -#define QTSCRIPTDITORACTIONHANDLER_H - -#include <texteditor/texteditoractionhandler.h> - -namespace QtScriptEditor { -namespace Internal { - -class QtScriptEditorActionHandler : public TextEditor::TextEditorActionHandler -{ - Q_OBJECT - -public: - QtScriptEditorActionHandler(); - -private: - virtual void createActions(); - -private slots: - void run(); -}; - -} // namespace Internal -} // namespace QtScriptEditor - -#endif // QTSCRIPTDITORACTIONHANDLER_H diff --git a/src/plugins/qtscripteditor/qtscripteditorfactory.cpp b/src/plugins/qtscripteditor/qtscripteditorfactory.cpp index 03cf1b98449..7e4ae5715b2 100644 --- a/src/plugins/qtscripteditor/qtscripteditorfactory.cpp +++ b/src/plugins/qtscripteditor/qtscripteditorfactory.cpp @@ -29,11 +29,14 @@ #include "qtscripteditorfactory.h" #include "qtscripteditor.h" -#include "qtscripteditoractionhandler.h" #include "qtscripteditorconstants.h" #include "qtscripteditorplugin.h" +#include <coreplugin/icore.h> #include <coreplugin/editormanager/editormanager.h> +#include <coreplugin/actionmanager/actionmanager.h> + +#include <texteditor/texteditorconstants.h> #include <QtCore/QFileInfo> #include <QtCore/QDebug> @@ -45,14 +48,12 @@ QtScriptEditorFactory::QtScriptEditorFactory(const Context &context, QObject *pa : Core::IEditorFactory(parent), m_kind(QLatin1String(C_QTSCRIPTEDITOR)), m_mimeTypes(QLatin1String(QtScriptEditor::Constants::C_QTSCRIPTEDITOR_MIMETYPE)), - m_context(context), - m_actionHandler(new QtScriptEditorActionHandler) + m_context(context) { } QtScriptEditorFactory::~QtScriptEditorFactory() { - delete m_actionHandler; } QString QtScriptEditorFactory::kind() const diff --git a/src/plugins/qtscripteditor/qtscripteditorfactory.h b/src/plugins/qtscripteditor/qtscripteditorfactory.h index 93c222daa98..0556f35f16c 100644 --- a/src/plugins/qtscripteditor/qtscripteditorfactory.h +++ b/src/plugins/qtscripteditor/qtscripteditorfactory.h @@ -63,8 +63,6 @@ private: const QString m_kind; const QStringList m_mimeTypes; const Context m_context; - - TextEditor::TextEditorActionHandler *m_actionHandler; }; } // namespace Internal diff --git a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp index 5ff65d9bc44..266d2d48204 100644 --- a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp +++ b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp @@ -88,6 +88,11 @@ bool QtScriptEditorPlugin::initialize(const QStringList & /*arguments*/, QString m_context = m_scriptcontext; m_context << core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR); + m_actionHandler = new TextEditor::TextEditorActionHandler(QtScriptEditor::Constants::C_QTSCRIPTEDITOR, + TextEditor::TextEditorActionHandler::Format + | TextEditor::TextEditorActionHandler::UnCommentSelection + | TextEditor::TextEditorActionHandler::UnCollapseAll); + registerActions(); m_editor = new QtScriptEditorFactory(m_context, this); @@ -104,10 +109,6 @@ bool QtScriptEditorPlugin::initialize(const QStringList & /*arguments*/, QString wizardParameters, this); addObject(m_wizard); - m_actionHandler = new TextEditor::TextEditorActionHandler(QtScriptEditor::Constants::C_QTSCRIPTEDITOR, - TextEditor::TextEditorActionHandler::Format - | TextEditor::TextEditorActionHandler::UnCommentSelection - | TextEditor::TextEditorActionHandler::UnCollapseAll); m_completion = new QtScriptCodeCompletion(); addAutoReleasedObject(m_completion); @@ -145,8 +146,13 @@ void QtScriptEditorPlugin::initializeEditor(QtScriptEditor::Internal::ScriptEdit void QtScriptEditorPlugin::registerActions() { -// Core::ActionManager *am = Core::ICore::instance()->actionManager(); -// Core::ActionContainer *mcontext = am->createMenu(QtScriptEditor::Constants::M_CONTEXT); + m_actionHandler->initializeActions(); + Core::ActionManager *am = Core::ICore::instance()->actionManager(); + Core::ActionContainer *contextMenu= am->createMenu(QtScriptEditor::Constants::M_CONTEXT); + Core::Command *cmd = am->command(TextEditor::Constants::AUTO_INDENT_SELECTION); + contextMenu->addAction(cmd); + cmd = am->command(TextEditor::Constants::UN_COMMENT_SELECTION); + contextMenu->addAction(cmd); } Q_EXPORT_PLUGIN(QtScriptEditorPlugin) -- GitLab