From 14839418a8189d975e530536f1208b006354e129 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Mon, 30 Mar 2009 23:59:31 +0200 Subject: [PATCH] Enable the standard actions (e.g undo, redo, ...) --- src/plugins/qtscripteditor/qtscripteditor.cpp | 18 ++++++------------ src/plugins/qtscripteditor/qtscripteditor.h | 4 ---- .../qtscripteditor/qtscripteditorfactory.cpp | 4 ++-- .../qtscripteditor/qtscripteditorplugin.cpp | 14 +++++++++++++- .../qtscripteditor/qtscripteditorplugin.h | 7 ++++++- 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/plugins/qtscripteditor/qtscripteditor.cpp b/src/plugins/qtscripteditor/qtscripteditor.cpp index dbab0ba888d..fb70e52562d 100644 --- a/src/plugins/qtscripteditor/qtscripteditor.cpp +++ b/src/plugins/qtscripteditor/qtscripteditor.cpp @@ -47,6 +47,7 @@ #include <texteditor/fontsettings.h> #include <texteditor/textblockiterator.h> #include <texteditor/texteditorconstants.h> +#include <texteditor/texteditorsettings.h> #include <QtGui/QMenu> #include <QtCore/QTimer> @@ -64,11 +65,9 @@ ScriptEditorEditable::ScriptEditorEditable(ScriptEditor *editor, const QList<int } ScriptEditor::ScriptEditor(const Context &context, - TextEditor::TextEditorActionHandler *ah, QWidget *parent) : TextEditor::BaseTextEditor(parent), - m_context(context), - m_ah(ah) + m_context(context) { setParenthesesMatchingEnabled(true); setMarksVisible(true); @@ -93,15 +92,10 @@ ScriptEditor::~ScriptEditor() Core::IEditor *ScriptEditorEditable::duplicate(QWidget *parent) { - return qobject_cast<ScriptEditor*>(editor())->duplicate(parent)->editableInterface(); -} - -ScriptEditor *ScriptEditor::duplicate(QWidget *parent) -{ - ScriptEditor *editor = new ScriptEditor(m_context, m_ah, parent); - editor->duplicateFrom(this); - QtScriptEditorPlugin::initializeEditor(editor); - return editor; + ScriptEditor *newEditor = new ScriptEditor(m_context, parent); + newEditor->duplicateFrom(editor()); + QtScriptEditorPlugin::instance()->initializeEditor(newEditor); + return newEditor->editableInterface(); } const char *ScriptEditorEditable::kind() const diff --git a/src/plugins/qtscripteditor/qtscripteditor.h b/src/plugins/qtscripteditor/qtscripteditor.h index 2e8b157f20f..4371e5873ce 100644 --- a/src/plugins/qtscripteditor/qtscripteditor.h +++ b/src/plugins/qtscripteditor/qtscripteditor.h @@ -68,12 +68,9 @@ public: typedef QList<int> Context; ScriptEditor(const Context &context, - TextEditor::TextEditorActionHandler *ah, QWidget *parent = 0); ~ScriptEditor(); - ScriptEditor *duplicate(QWidget *parent); - public slots: virtual void setFontSettings(const TextEditor::FontSettings &); @@ -90,7 +87,6 @@ private: virtual void indentBlock(QTextDocument *doc, QTextBlock block, QChar typedChar); const Context m_context; - TextEditor::TextEditorActionHandler *m_ah; QTimer *m_updateDocumentTimer; }; diff --git a/src/plugins/qtscripteditor/qtscripteditorfactory.cpp b/src/plugins/qtscripteditor/qtscripteditorfactory.cpp index e7b80abab8e..849c3abd40a 100644 --- a/src/plugins/qtscripteditor/qtscripteditorfactory.cpp +++ b/src/plugins/qtscripteditor/qtscripteditorfactory.cpp @@ -72,8 +72,8 @@ Core::IFile *QtScriptEditorFactory::open(const QString &fileName) Core::IEditor *QtScriptEditorFactory::createEditor(QWidget *parent) { - ScriptEditor *rc = new ScriptEditor(m_context, m_actionHandler, parent); - QtScriptEditorPlugin::initializeEditor(rc); + ScriptEditor *rc = new ScriptEditor(m_context, parent); + QtScriptEditorPlugin::instance()->initializeEditor(rc); return rc->editableInterface(); } diff --git a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp index a86b5098443..b13ed76b898 100644 --- a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp +++ b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp @@ -45,6 +45,7 @@ #include <texteditor/texteditorconstants.h> #include <texteditor/texteditorsettings.h> #include <texteditor/textfilewizard.h> +#include <texteditor/texteditoractionhandler.h> #include <utils/qtcassert.h> #include <QtCore/QtPlugin> @@ -58,7 +59,8 @@ QtScriptEditorPlugin *QtScriptEditorPlugin::m_instance = 0; QtScriptEditorPlugin::QtScriptEditorPlugin() : m_wizard(0), - m_editor(0) + m_editor(0), + m_actionHandler(0) { m_instance = this; } @@ -67,6 +69,7 @@ QtScriptEditorPlugin::~QtScriptEditorPlugin() { removeObject(m_editor); removeObject(m_wizard); + delete m_actionHandler; m_instance = 0; } @@ -97,18 +100,27 @@ 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); + error_message->clear(); + return true; } void QtScriptEditorPlugin::extensionsInitialized() { + m_actionHandler->initializeActions(); } void QtScriptEditorPlugin::initializeEditor(QtScriptEditor::Internal::ScriptEditor *editor) { QTC_ASSERT(m_instance, /**/); + m_actionHandler->setupActions(editor); + TextEditor::TextEditorSettings::instance()->initializeEditor(editor); } diff --git a/src/plugins/qtscripteditor/qtscripteditorplugin.h b/src/plugins/qtscripteditor/qtscripteditorplugin.h index 344bb1ffbe3..e43bb21c8a2 100644 --- a/src/plugins/qtscripteditor/qtscripteditorplugin.h +++ b/src/plugins/qtscripteditor/qtscripteditorplugin.h @@ -34,6 +34,7 @@ namespace TextEditor { class TextFileWizard; +class TextEditorActionHandler; } // namespace TextEditor namespace QtScriptEditor { @@ -54,7 +55,10 @@ public: bool initialize(const QStringList &arguments, QString *errorMessage = 0); void extensionsInitialized(); - static void initializeEditor(ScriptEditor *editor); + static QtScriptEditorPlugin *instance() + { return m_instance; } + + void initializeEditor(ScriptEditor *editor); private: void registerActions(); @@ -67,6 +71,7 @@ private: TextEditor::TextFileWizard *m_wizard; QtScriptEditorFactory *m_editor; + TextEditor::TextEditorActionHandler *m_actionHandler; }; } // namespace Internal -- GitLab