diff options
Diffstat (limited to 'src/plugins/qtscripteditor/qtscripteditorplugin.cpp')
-rw-r--r-- | src/plugins/qtscripteditor/qtscripteditorplugin.cpp | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/src/plugins/qtscripteditor/qtscripteditorplugin.cpp b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp new file mode 100644 index 0000000000..7216a77f35 --- /dev/null +++ b/src/plugins/qtscripteditor/qtscripteditorplugin.cpp @@ -0,0 +1,145 @@ +/*************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Qt Software Information (qt-info@nokia.com) +** +** +** Non-Open Source Usage +** +** Licensees may use this file in accordance with the Qt Beta Version +** License Agreement, Agreement version 2.2 provided with the Software or, +** alternatively, in accordance with the terms contained in a written +** agreement between you and Nokia. +** +** GNU General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the packaging +** of this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** +** http://www.fsf.org/licensing/licenses/info/GPLv2.html and +** http://www.gnu.org/copyleft/gpl.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt GPL Exception version +** 1.2, included in the file GPL_EXCEPTION.txt in this package. +** +***************************************************************************/ +#include "qtscripteditorplugin.h" +#include "qtscripteditorconstants.h" +#include "qtscripteditorfactory.h" +#include "qtscripteditor.h" +#include "qscripthighlighter.h" + +#include <coreplugin/icore.h> +#include <coreplugin/coreconstants.h> +#include <coreplugin/mimedatabase.h> +#include <coreplugin/uniqueidmanager.h> +#include <coreplugin/actionmanager/actionmanagerinterface.h> +#include <texteditor/fontsettings.h> +#include <texteditor/storagesettings.h> +#include <texteditor/texteditorconstants.h> +#include <texteditor/texteditorsettings.h> +#include <texteditor/textfilewizard.h> + +#include <QtCore/qplugin.h> +#include <QtCore/QDebug> +#include <QtGui/QAction> + +using namespace QtScriptEditor::Internal; +using namespace QtScriptEditor::Constants; + +QtScriptEditorPlugin *QtScriptEditorPlugin::m_instance = 0; + +QtScriptEditorPlugin::QtScriptEditorPlugin() : + m_wizard(0), + m_editor(0) +{ + m_instance = this; +} + +QtScriptEditorPlugin::~QtScriptEditorPlugin() +{ + removeObject(m_editor); + removeObject(m_wizard); + m_instance = 0; +} + +bool QtScriptEditorPlugin::initialize(const QStringList & /*arguments*/, QString *error_message) +{ + typedef SharedTools::QScriptHighlighter QScriptHighlighter; + + Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>(); + if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":/qtscripteditor/QtScriptEditor.mimetypes.xml"), error_message)) + return false; + m_scriptcontext << core->uniqueIDManager()->uniqueIdentifier(QtScriptEditor::Constants::C_QTSCRIPTEDITOR); + m_context = m_scriptcontext; + m_context << core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR); + + registerActions(core); + + m_editor = new QtScriptEditorFactory(core, m_context, this); + addObject(m_editor); + + Core::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard); + wizardParameters.setDescription(tr("Qt Script file")); + wizardParameters.setName(tr("Qt Script file")); + wizardParameters.setCategory(QLatin1String("Qt")); + wizardParameters.setTrCategory(tr("Qt")); + m_wizard = new TextEditor::TextFileWizard(QLatin1String(QtScriptEditor::Constants::C_QTSCRIPTEDITOR_MIMETYPE), + QLatin1String(QtScriptEditor::Constants::C_QTSCRIPTEDITOR), + QLatin1String("qtscript$"), + wizardParameters, core, this); + addObject(m_wizard); + + error_message->clear(); + return true; +} + +void QtScriptEditorPlugin::extensionsInitialized() +{ +} + +void QtScriptEditorPlugin::initializeEditor(QtScriptEditor::Internal::ScriptEditor *editor) +{ + Q_ASSERT(m_instance); + + TextEditor::TextEditorSettings *settings = TextEditor::TextEditorSettings::instance(); + connect(settings, SIGNAL(fontSettingsChanged(TextEditor::FontSettings)), + editor, SLOT(setFontSettings(TextEditor::FontSettings))); + connect(settings, SIGNAL(tabSettingsChanged(TextEditor::TabSettings)), + editor, SLOT(setTabSettings(TextEditor::TabSettings))); + connect(settings, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)), + editor, SLOT(setStorageSettings(TextEditor::StorageSettings))); + connect(settings, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)), + editor, SLOT(setDisplaySettings(TextEditor::DisplaySettings))); + + // tab settings rely on font settings + editor->setFontSettings(settings->fontSettings()); + editor->setTabSettings(settings->tabSettings()); + editor->setStorageSettings(settings->storageSettings()); + editor->setDisplaySettings(settings->displaySettings()); +} + +void QtScriptEditorPlugin::registerActions(Core::ICore *core) +{ + Core::ActionManagerInterface *am = core->actionManager(); + Core::IActionContainer *mcontext = am->createMenu(QtScriptEditor::Constants::M_CONTEXT); + + QAction *action = new QAction(this); + action->setSeparator(true); + Core::ICommand *cmd = am->registerAction(action, QtScriptEditor::Constants::RUN_SEP, m_scriptcontext); + mcontext->addAction(cmd, Core::Constants::G_DEFAULT_THREE); + + action = new QAction(tr("Run"), this); + cmd = am->registerAction(action, QtScriptEditor::Constants::RUN, m_scriptcontext); + cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+R"))); + mcontext->addAction(cmd, Core::Constants::G_DEFAULT_THREE); +} + +Q_EXPORT_PLUGIN(QtScriptEditorPlugin) |