OSDN Git Service

implement the standard context menu also for the script editors
authormae <qt-info@nokia.com>
Mon, 9 Nov 2009 16:35:20 +0000 (17:35 +0100)
committercon <qtc-committer@nokia.com>
Tue, 10 Nov 2009 13:47:48 +0000 (14:47 +0100)
In addition, clean up the text editor action handling in the qtscript
plugin.

Rev-by: con
(cherry picked from commit 3452b4214db2681ee9013bbc4a96a7372b2edd48)

src/plugins/qmleditor/qmleditor.cpp
src/plugins/qmleditor/qmleditorplugin.cpp
src/plugins/qtscripteditor/qtscripteditor.cpp
src/plugins/qtscripteditor/qtscripteditor.h
src/plugins/qtscripteditor/qtscripteditor.pro
src/plugins/qtscripteditor/qtscripteditoractionhandler.cpp [deleted file]
src/plugins/qtscripteditor/qtscripteditoractionhandler.h [deleted file]
src/plugins/qtscripteditor/qtscripteditorfactory.cpp
src/plugins/qtscripteditor/qtscripteditorfactory.h
src/plugins/qtscripteditor/qtscripteditorplugin.cpp

index 76d44b6..3790a27 100644 (file)
@@ -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();
 }
index 47b71b9..5958ab4 100644 (file)
@@ -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);
 
index fbd91ab..d751a87 100644 (file)
@@ -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
index 06e7237..6556176 100644 (file)
@@ -95,6 +95,8 @@ public:
     QList<Declaration> declarations() const;
     QStringList words() const;
 
+    void unCommentSelection(); // from basetexteditor
+
 public slots:
     virtual void setFontSettings(const TextEditor::FontSettings &);
 
index 7fd3ff1..2ff0c56 100644 (file)
@@ -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 (file)
index 3c48ea9..0000000
+++ /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 (file)
index 8e94c2a..0000000
+++ /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
index 03cf1b9..7e4ae57 100644 (file)
 
 #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
index 93c222d..0556f35 100644 (file)
@@ -63,8 +63,6 @@ private:
     const QString m_kind;
     const QStringList m_mimeTypes;
     const Context m_context;
-
-    TextEditor::TextEditorActionHandler *m_actionHandler;
 };
 
 } // namespace Internal
index 5ff65d9..266d2d4 100644 (file)
@@ -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)