diff --git a/src/plugins/qtscripteditor/qtscripteditor.cpp b/src/plugins/qtscripteditor/qtscripteditor.cpp index dbab0ba888dc5c79e288acad70e675ce0e6d681e..fb70e52562deb8c1cd818a0ff32558b4e59ff58a 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 2e8b157f20f548c871b7ef5a53285a7ba33270b7..4371e5873cee596eeeb4e6aff4a7d6084f880be9 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 e7b80abab8e14095c2719d073b1e2b1534dfafef..849c3abd40a84d0dc8a64264740a0c0062c4198d 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 a86b509844383d52da5b9e788b78cf07546dc439..b13ed76b8984ca92aa6cf7f6d1de4b99500c5ad2 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 344bb1ffbe33d82fc69d4cae7da98d2cd12059c5..e43bb21c8a264807ca0d19161a788636ec6027be 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