diff --git a/src/plugins/qt4projectmanager/profileeditor.cpp b/src/plugins/qt4projectmanager/profileeditor.cpp index b16ce68d3aa54ec564b9e5c40481c464ee992a90..84ecab593a3a752771127d0383f7b6607d952233 100644 --- a/src/plugins/qt4projectmanager/profileeditor.cpp +++ b/src/plugins/qt4projectmanager/profileeditor.cpp @@ -34,6 +34,9 @@ #include "qt4projectmanagerconstants.h" #include "profileeditorfactory.h" +#include <coreplugin/icore.h> +#include <coreplugin/actionmanager/actionmanager.h> +#include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/uniqueidmanager.h> #include <texteditor/fontsettings.h> #include <texteditor/texteditoractionhandler.h> @@ -41,6 +44,7 @@ #include <texteditor/texteditorsettings.h> #include <QtCore/QFileInfo> +#include <QtGui/QMenu> using namespace Qt4ProjectManager; using namespace Qt4ProjectManager::Internal; @@ -91,17 +95,41 @@ ProFileEditor::ProFileEditor(QWidget *parent, ProFileEditorFactory *factory, Tex ah->setupActions(this); baseTextDocument()->setSyntaxHighlighter(new ProFileHighlighter); + m_commentDefinition.clearCommentStyles(); + m_commentDefinition.setSingleLine(QString(QLatin1Char('#'))); } ProFileEditor::~ProFileEditor() { } +void ProFileEditor::unCommentSelection() +{ + Utils::unCommentSelection(this, m_commentDefinition); +} + TextEditor::BaseTextEditorEditable *ProFileEditor::createEditableInterface() { return new ProFileEditorEditable(this); } +void ProFileEditor::contextMenuEvent(QContextMenuEvent *e) +{ + QMenu *menu = new QMenu(); + + Core::ActionManager *am = Core::ICore::instance()->actionManager(); + Core::ActionContainer *mcontext = am->actionContainer(Qt4ProjectManager::Constants::M_CONTEXT); + QMenu *contextMenu = mcontext->menu(); + + foreach (QAction *action, contextMenu->actions()) + menu->addAction(action); + + appendStandardContextMenuActions(menu); + + menu->exec(e->globalPos()); + delete menu; +} + void ProFileEditor::setFontSettings(const TextEditor::FontSettings &fs) { TextEditor::BaseTextEditor::setFontSettings(fs); diff --git a/src/plugins/qt4projectmanager/profileeditor.h b/src/plugins/qt4projectmanager/profileeditor.h index f6952815af17c5d8f6b2013b96de9a0410206163..30047ae9af30cb9786d988446fb3a03146222a16 100644 --- a/src/plugins/qt4projectmanager/profileeditor.h +++ b/src/plugins/qt4projectmanager/profileeditor.h @@ -32,6 +32,7 @@ #include <texteditor/basetextdocument.h> #include <texteditor/basetexteditor.h> +#include <utils/uncommentselection.h> namespace TextEditor { class FontSettings; @@ -78,8 +79,12 @@ public: ProFileEditorFactory *factory() { return m_factory; } TextEditor::TextEditorActionHandler *actionHandler() const { return m_ah; } + + void unCommentSelection(); + protected: TextEditor::BaseTextEditorEditable *createEditableInterface(); + void contextMenuEvent(QContextMenuEvent *); public slots: virtual void setFontSettings(const TextEditor::FontSettings &); @@ -87,6 +92,7 @@ public slots: private: ProFileEditorFactory *m_factory; TextEditor::TextEditorActionHandler *m_ah; + Utils::CommentDefinition m_commentDefinition; }; class ProFileDocument : public TextEditor::BaseTextDocument diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h index 8633d8dcf34d1716ad98ad801055a8fe6243ee67..6ad65dc56cb5d2f03b0ba1083a3fb05ea6e241d9 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h +++ b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h @@ -39,6 +39,9 @@ namespace Constants { const char * const C_PROFILEEDITOR = ".pro File Editor"; const char * const C_PROFILEEDITOR_PANEL = ".pro File Editor (embedded)"; +// menus +const char * const M_CONTEXT = "ProFileEditor.ContextMenu"; + // kinds const char * const PROJECT_ID = "Qt4.Qt4Project"; const char * const PROFILE_EDITOR_ID = "Qt4.proFileEditor"; diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp index 6a1f08e01d942990f0242b9384d8b6999c9e1713..525795f27aee66e5da667b31346a4c4944271c1e 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp @@ -66,6 +66,7 @@ #include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/actionmanager/command.h> #include <texteditor/texteditoractionhandler.h> +#include <texteditor/texteditorconstants.h> #ifdef WITH_TESTS # include <QTest> @@ -117,7 +118,8 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString * addObject(m_qt4ProjectManager); TextEditor::TextEditorActionHandler *editorHandler - = new TextEditor::TextEditorActionHandler(Constants::C_PROFILEEDITOR); + = new TextEditor::TextEditorActionHandler(Constants::C_PROFILEEDITOR, + TextEditor::TextEditorActionHandler::UnCommentSelection); m_proFileEditorFactory = new ProFileEditorFactory(m_qt4ProjectManager, editorHandler); addObject(m_proFileEditorFactory); @@ -222,6 +224,13 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString * connect(m_projectExplorer, SIGNAL(currentProjectChanged(ProjectExplorer::Project *)), this, SLOT(currentProjectChanged())); + Core::ActionContainer *contextMenu= am->createMenu(Qt4ProjectManager::Constants::M_CONTEXT); + + Core::Command *cmd; + + cmd = am->command(TextEditor::Constants::UN_COMMENT_SELECTION); + contextMenu->addAction(cmd); + return true; }