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>
This commit is contained in:
hjk
2014-08-22 17:40:24 +02:00
parent 3430514eff
commit b84a47ffc5
6 changed files with 84 additions and 104 deletions

View File

@@ -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