summaryrefslogtreecommitdiff
path: root/src/plugins/qmakeprojectmanager/profileeditor.cpp
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2014-08-22 17:40:24 +0200
committerhjk <hjk121@nokiamail.com>2014-08-25 12:36:39 +0200
commitb84a47ffc5010f38511763f44a0240f4211f7332 (patch)
treeb5339c5ae130a341bb550be0668ca4419f8edee4 /src/plugins/qmakeprojectmanager/profileeditor.cpp
parent3430514eff316c40e80c6392bce75de1c3c00451 (diff)
downloadqt-creator-b84a47ffc5010f38511763f44a0240f4211f7332.tar.gz
QmakeProjectManager: Some editor creation related cleanup
Use a BaseEditorFactory derived class, move some code around. Change-Id: I051ae55d106610ca818abdd3a5f6fd9f17131af2 Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Diffstat (limited to 'src/plugins/qmakeprojectmanager/profileeditor.cpp')
-rw-r--r--src/plugins/qmakeprojectmanager/profileeditor.cpp81
1 files changed, 52 insertions, 29 deletions
diff --git a/src/plugins/qmakeprojectmanager/profileeditor.cpp b/src/plugins/qmakeprojectmanager/profileeditor.cpp
index 01250add01..47dac06826 100644
--- a/src/plugins/qmakeprojectmanager/profileeditor.cpp
+++ b/src/plugins/qmakeprojectmanager/profileeditor.cpp
@@ -46,6 +46,8 @@
#include <QDir>
#include <QTextBlock>
+using namespace TextEditor;
+
namespace QmakeProjectManager {
namespace Internal {
@@ -53,23 +55,33 @@ namespace Internal {
// ProFileEditor
//
-ProFileEditor::ProFileEditor()
+class ProFileEditor : public TextEditor::BaseTextEditor
{
- addContext(Constants::C_PROFILEEDITOR);
- setDuplicateSupported(true);
- setCommentStyle(Utils::CommentDefinition::HashStyle);
- setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject<ProFileCompletionAssistProvider>());
- setEditorCreator([]() { return new ProFileEditor; });
- setDocumentCreator([]() { return new ProFileDocument; });
- setWidgetCreator([]() { return new ProFileEditorWidget; });
-}
+public:
+ ProFileEditor()
+ {
+ addContext(Constants::C_PROFILEEDITOR);
+ setDuplicateSupported(true);
+ setCommentStyle(Utils::CommentDefinition::HashStyle);
+ setCompletionAssistProvider(ExtensionSystem::PluginManager::getObject<ProFileCompletionAssistProvider>());
+ }
+};
//
// ProFileEditorWidget
//
-ProFileEditorWidget::ProFileEditorWidget()
-{}
+class ProFileEditorWidget : public BaseTextEditorWidget
+{
+public:
+ ProFileEditorWidget() {}
+
+protected:
+ virtual Link findLinkAt(const QTextCursor &, bool resolveTarget = true,
+ bool inNextSplit = false);
+ BaseTextEditor *createEditor();
+ void contextMenuEvent(QContextMenuEvent *);
+};
static bool isValidFileNameChar(const QChar &c)
{
@@ -159,7 +171,7 @@ ProFileEditorWidget::Link ProFileEditorWidget::findLinkAt(const QTextCursor &cur
return link;
}
-TextEditor::BaseTextEditor *ProFileEditorWidget::createEditor()
+BaseTextEditor *ProFileEditorWidget::createEditor()
{
QTC_ASSERT("should not happen anymore" && false, return 0);
}
@@ -173,6 +185,18 @@ void ProFileEditorWidget::contextMenuEvent(QContextMenuEvent *e)
// ProFileDocument
//
+class ProFileDocument : public BaseTextDocument
+{
+public:
+ ProFileDocument();
+ QString defaultPath() const;
+ QString suggestedFileName() const;
+
+ // qmake project files doesn't support UTF8-BOM
+ // If the BOM would be added qmake would fail and QtCreator couldn't parse the project file
+ bool supportsUtf8Bom() { return false; }
+};
+
ProFileDocument::ProFileDocument()
{
setId(Constants::PROFILE_EDITOR_ID);
@@ -192,34 +216,33 @@ QString ProFileDocument::suggestedFileName() const
return fi.fileName();
}
-
//
// ProFileEditorFactory
//
ProFileEditorFactory::ProFileEditorFactory()
{
- setId(QmakeProjectManager::Constants::PROFILE_EDITOR_ID);
- setDisplayName(qApp->translate("OpenWith::Editors", QmakeProjectManager::Constants::PROFILE_EDITOR_DISPLAY_NAME));
- addMimeType(QmakeProjectManager::Constants::PROFILE_MIMETYPE);
- addMimeType(QmakeProjectManager::Constants::PROINCLUDEFILE_MIMETYPE);
- addMimeType(QmakeProjectManager::Constants::PROFEATUREFILE_MIMETYPE);
- addMimeType(QmakeProjectManager::Constants::PROCONFIGURATIONFILE_MIMETYPE);
- addMimeType(QmakeProjectManager::Constants::PROCACHEFILE_MIMETYPE);
- addMimeType(QmakeProjectManager::Constants::PROSTASHFILE_MIMETYPE);
- new TextEditor::TextEditorActionHandler(this, Constants::C_PROFILEEDITOR,
- TextEditor::TextEditorActionHandler::UnCommentSelection
- | TextEditor::TextEditorActionHandler::JumpToFileUnderCursor);
+ setId(Constants::PROFILE_EDITOR_ID);
+ setDisplayName(qApp->translate("OpenWith::Editors", Constants::PROFILE_EDITOR_DISPLAY_NAME));
+ addMimeType(Constants::PROFILE_MIMETYPE);
+ addMimeType(Constants::PROINCLUDEFILE_MIMETYPE);
+ addMimeType(Constants::PROFEATUREFILE_MIMETYPE);
+ addMimeType(Constants::PROCONFIGURATIONFILE_MIMETYPE);
+ addMimeType(Constants::PROCACHEFILE_MIMETYPE);
+ addMimeType(Constants::PROSTASHFILE_MIMETYPE);
+
+ setDocumentCreator([]() { return new ProFileDocument; });
+ setEditorWidgetCreator([]() { return new ProFileEditorWidget; });
+ setEditorCreator([]() { return new ProFileEditor; });
+
+ setEditorActionHandlers(Constants::C_PROFILEEDITOR,
+ TextEditorActionHandler::UnCommentSelection
+ | TextEditorActionHandler::JumpToFileUnderCursor);
Core::FileIconProvider::registerIconOverlayForSuffix(QtSupport::Constants::ICON_QT_PROJECT, "pro");
Core::FileIconProvider::registerIconOverlayForSuffix(QtSupport::Constants::ICON_QT_PROJECT, "pri");
Core::FileIconProvider::registerIconOverlayForSuffix(QtSupport::Constants::ICON_QT_PROJECT, "prf");
}
-Core::IEditor *ProFileEditorFactory::createEditor()
-{
- return new ProFileEditor;
-}
-
} // namespace Internal
} // namespace QmakeProjectManager