Commit 3452b421 authored by mae's avatar mae
Browse files

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
parent a0bb57f2
......@@ -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();
}
......
......@@ -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);
......
......@@ -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
......@@ -95,6 +95,8 @@ public:
QList<Declaration> declarations() const;
QStringList words() const;
void unCommentSelection(); // from basetexteditor
public slots:
virtual void setFontSettings(const TextEditor::FontSettings &);
......
......@@ -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
/**************************************************************************
**
** 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
/**************************************************************************
**
** 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
......@@ -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
......
......@@ -63,8 +63,6 @@ private:
const QString m_kind;
const QStringList m_mimeTypes;
const Context m_context;
TextEditor::TextEditorActionHandler *m_actionHandler;
};
} // namespace Internal
......
......@@ -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)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment