forked from qt-creator/qt-creator
Implement Code Style schemes
Task-number: QTCREATORBUG-5092 Change-Id: I218cef02f7c242e4dfae59b1b8021ea618e60d07 Reviewed-on: http://codereview.qt-project.org/5160 Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
This commit is contained in:
@@ -30,16 +30,37 @@
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "qmljscodestylesettingsfactory.h"
|
||||
#include "qmljscodestylepreferencesfactory.h"
|
||||
#include "qmljscodestylesettingspage.h"
|
||||
#include "qmljstoolsconstants.h"
|
||||
#include "qmljsindenter.h"
|
||||
#include <texteditor/tabpreferences.h>
|
||||
#include <texteditor/simplecodestylepreferences.h>
|
||||
#include <texteditor/tabsettings.h>
|
||||
#include <texteditor/snippets/isnippetprovider.h>
|
||||
#include <extensionsystem/pluginmanager.h>
|
||||
#include <qmljseditor/qmljseditorconstants.h>
|
||||
#include <QtGui/QLayout>
|
||||
|
||||
using namespace QmlJSTools;
|
||||
|
||||
static const char *defaultPreviewText =
|
||||
"import QtQuick 1.0\n"
|
||||
"\n"
|
||||
"Rectangle {\n"
|
||||
" width: 360\n"
|
||||
" height: 360\n"
|
||||
" Text {\n"
|
||||
" anchors.centerIn: parent\n"
|
||||
" text: \"Hello World\"\n"
|
||||
" }\n"
|
||||
" MouseArea {\n"
|
||||
" anchors.fill: parent\n"
|
||||
" onClicked: {\n"
|
||||
" Qt.quit();\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
"}\n";
|
||||
|
||||
QmlJSCodeStylePreferencesFactory::QmlJSCodeStylePreferencesFactory()
|
||||
{
|
||||
}
|
||||
@@ -54,22 +75,17 @@ QString QmlJSCodeStylePreferencesFactory::displayName()
|
||||
return Constants::QML_JS_SETTINGS_NAME;
|
||||
}
|
||||
|
||||
TextEditor::IFallbackPreferences *QmlJSCodeStylePreferencesFactory::createPreferences(
|
||||
const QList<TextEditor::IFallbackPreferences *> &fallbacks) const
|
||||
TextEditor::ICodeStylePreferences *QmlJSCodeStylePreferencesFactory::createCodeStyle() const
|
||||
{
|
||||
Q_UNUSED(fallbacks);
|
||||
return 0;
|
||||
return new TextEditor::SimpleCodeStylePreferences();
|
||||
}
|
||||
|
||||
QWidget *QmlJSCodeStylePreferencesFactory::createEditor(TextEditor::IFallbackPreferences *preferences,
|
||||
TextEditor::TabPreferences *tabPreferences,
|
||||
QWidget *QmlJSCodeStylePreferencesFactory::createEditor(TextEditor::ICodeStylePreferences *preferences,
|
||||
QWidget *parent) const
|
||||
{
|
||||
Q_UNUSED(preferences)
|
||||
|
||||
Internal::QmlJSCodeStylePreferencesWidget *widget = new Internal::QmlJSCodeStylePreferencesWidget(parent);
|
||||
widget->layout()->setMargin(0);
|
||||
widget->setTabPreferences(tabPreferences);
|
||||
widget->setPreferences(preferences);
|
||||
return widget;
|
||||
}
|
||||
|
||||
@@ -78,3 +94,18 @@ TextEditor::Indenter *QmlJSCodeStylePreferencesFactory::createIndenter() const
|
||||
return new QmlJSEditor::Internal::Indenter();
|
||||
}
|
||||
|
||||
TextEditor::ISnippetProvider *QmlJSCodeStylePreferencesFactory::snippetProvider() const
|
||||
{
|
||||
const QList<TextEditor::ISnippetProvider *> &providers =
|
||||
ExtensionSystem::PluginManager::instance()->getObjects<TextEditor::ISnippetProvider>();
|
||||
foreach (TextEditor::ISnippetProvider *provider, providers)
|
||||
if (provider->groupId() == QLatin1String(QmlJSEditor::Constants::QML_SNIPPETS_GROUP_ID))
|
||||
return provider;
|
||||
return 0;
|
||||
}
|
||||
|
||||
QString QmlJSCodeStylePreferencesFactory::previewText() const
|
||||
{
|
||||
return QLatin1String(defaultPreviewText);
|
||||
}
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef QMLJSCODESTYLESETTINGSFACTORY_H
|
||||
#define QMLJSCODESTYLESETTINGSFACTORY_H
|
||||
#ifndef QMLJSCODESTYLEPREFERENCESFACTORY_H
|
||||
#define QMLJSCODESTYLEPREFERENCESFACTORY_H
|
||||
|
||||
#include <texteditor/icodestylepreferencesfactory.h>
|
||||
|
||||
@@ -44,14 +44,14 @@ public:
|
||||
|
||||
virtual QString languageId();
|
||||
virtual QString displayName();
|
||||
virtual TextEditor::IFallbackPreferences *createPreferences(const QList<TextEditor::IFallbackPreferences *> &fallbacks) const;
|
||||
virtual QWidget *createEditor(TextEditor::IFallbackPreferences *settings,
|
||||
TextEditor::TabPreferences *tabSettings,
|
||||
virtual TextEditor::ICodeStylePreferences *createCodeStyle() const;
|
||||
virtual QWidget *createEditor(TextEditor::ICodeStylePreferences *settings,
|
||||
QWidget *parent) const;
|
||||
virtual TextEditor::Indenter *createIndenter() const;
|
||||
|
||||
virtual TextEditor::ISnippetProvider *snippetProvider() const;
|
||||
QString previewText() const;
|
||||
};
|
||||
|
||||
} // namespace QmlJSTools
|
||||
|
||||
#endif // QMLJSCODESTYLESETTINGSFACTORY_H
|
||||
#endif // QMLJSCODESTYLEPREFERENCESFACTORY_H
|
||||
@@ -40,9 +40,10 @@
|
||||
#include <texteditor/snippets/isnippetprovider.h>
|
||||
#include <texteditor/fontsettings.h>
|
||||
#include <texteditor/tabsettings.h>
|
||||
#include <texteditor/tabpreferences.h>
|
||||
#include <texteditor/simplecodestylepreferences.h>
|
||||
#include <texteditor/displaysettings.h>
|
||||
#include <texteditor/texteditorsettings.h>
|
||||
#include <texteditor/codestyleeditor.h>
|
||||
#include <extensionsystem/pluginmanager.h>
|
||||
#include <qmldesigner/qmldesignerconstants.h>
|
||||
#include <qmljseditor/qmljseditorconstants.h>
|
||||
@@ -59,7 +60,7 @@ namespace Internal {
|
||||
|
||||
QmlJSCodeStylePreferencesWidget::QmlJSCodeStylePreferencesWidget(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
m_tabPreferences(0),
|
||||
m_preferences(0),
|
||||
m_ui(new Ui::QmlJSCodeStyleSettingsPage)
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
@@ -72,10 +73,11 @@ QmlJSCodeStylePreferencesWidget::QmlJSCodeStylePreferencesWidget(QWidget *parent
|
||||
break;
|
||||
}
|
||||
}
|
||||
TextEditor::TextEditorSettings *settings = TextEditorSettings::instance();
|
||||
setFontSettings(settings->fontSettings());
|
||||
connect(settings, SIGNAL(fontSettingsChanged(TextEditor::FontSettings)),
|
||||
this, SLOT(setFontSettings(TextEditor::FontSettings)));
|
||||
|
||||
TextEditor::TextEditorSettings *textEditorSettings = TextEditorSettings::instance();
|
||||
decorateEditor(textEditorSettings->fontSettings());
|
||||
connect(textEditorSettings, SIGNAL(fontSettingsChanged(TextEditor::FontSettings)),
|
||||
this, SLOT(decorateEditor(TextEditor::FontSettings)));
|
||||
|
||||
setVisualizeWhitespace(true);
|
||||
|
||||
@@ -87,12 +89,13 @@ QmlJSCodeStylePreferencesWidget::~QmlJSCodeStylePreferencesWidget()
|
||||
delete m_ui;
|
||||
}
|
||||
|
||||
void QmlJSCodeStylePreferencesWidget::setTabPreferences(TextEditor::TabPreferences *tabPreferences)
|
||||
void QmlJSCodeStylePreferencesWidget::setPreferences(TextEditor::ICodeStylePreferences *preferences)
|
||||
{
|
||||
m_tabPreferences = tabPreferences;
|
||||
m_ui->tabPreferencesWidget->setTabPreferences(tabPreferences);
|
||||
connect(m_tabPreferences, SIGNAL(currentSettingsChanged(TextEditor::TabSettings)),
|
||||
this, SLOT(slotSettingsChanged()));
|
||||
m_preferences = preferences;
|
||||
m_ui->tabPreferencesWidget->setPreferences(preferences);
|
||||
if (m_preferences)
|
||||
connect(m_preferences, SIGNAL(currentTabSettingsChanged(TextEditor::TabSettings)),
|
||||
this, SLOT(slotSettingsChanged()));
|
||||
updatePreview();
|
||||
}
|
||||
|
||||
@@ -108,9 +111,21 @@ QString QmlJSCodeStylePreferencesWidget::searchKeywords() const
|
||||
return rc;
|
||||
}
|
||||
|
||||
void QmlJSCodeStylePreferencesWidget::setFontSettings(const TextEditor::FontSettings &fontSettings)
|
||||
void QmlJSCodeStylePreferencesWidget::decorateEditor(const TextEditor::FontSettings &fontSettings)
|
||||
{
|
||||
m_ui->previewTextEdit->setFont(fontSettings.font());
|
||||
const ISnippetProvider *provider = 0;
|
||||
const QList<ISnippetProvider *> &providers =
|
||||
ExtensionSystem::PluginManager::instance()->getObjects<ISnippetProvider>();
|
||||
foreach (const ISnippetProvider *current, providers) {
|
||||
if (current->groupId() == QLatin1String(QmlJSEditor::Constants::QML_SNIPPETS_GROUP_ID)) {
|
||||
provider = current;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
m_ui->previewTextEdit->setFontSettings(fontSettings);
|
||||
if (provider)
|
||||
provider->decorateEditor(m_ui->previewTextEdit);
|
||||
}
|
||||
|
||||
void QmlJSCodeStylePreferencesWidget::setVisualizeWhitespace(bool on)
|
||||
@@ -129,9 +144,9 @@ void QmlJSCodeStylePreferencesWidget::updatePreview()
|
||||
{
|
||||
QTextDocument *doc = m_ui->previewTextEdit->document();
|
||||
|
||||
const TextEditor::TabSettings &ts = m_tabPreferences
|
||||
? m_tabPreferences->currentSettings()
|
||||
: TextEditorSettings::instance()->tabPreferences()->settings();
|
||||
const TextEditor::TabSettings &ts = m_preferences
|
||||
? m_preferences->currentTabSettings()
|
||||
: TextEditorSettings::instance()->codeStyle()->tabSettings();
|
||||
m_ui->previewTextEdit->setTabSettings(ts);
|
||||
QtStyleCodeFormatter formatter(ts);
|
||||
formatter.invalidateCache(doc);
|
||||
@@ -140,9 +155,7 @@ void QmlJSCodeStylePreferencesWidget::updatePreview()
|
||||
QTextCursor tc = m_ui->previewTextEdit->textCursor();
|
||||
tc.beginEditBlock();
|
||||
while (block.isValid()) {
|
||||
int depth = formatter.indentFor(block);
|
||||
ts.indentLine(block, depth);
|
||||
formatter.updateLineStateChange(block);
|
||||
m_ui->previewTextEdit->indenter()->indentBlock(doc, block, QChar::Null, ts);
|
||||
|
||||
block = block.next();
|
||||
}
|
||||
@@ -189,22 +202,17 @@ QIcon QmlJSCodeStyleSettingsPage::categoryIcon() const
|
||||
|
||||
QWidget *QmlJSCodeStyleSettingsPage::createPage(QWidget *parent)
|
||||
{
|
||||
m_widget = new QmlJSCodeStylePreferencesWidget(parent);
|
||||
TextEditor::SimpleCodeStylePreferences *originalTabPreferences
|
||||
= QmlJSToolsSettings::instance()->qmlJSCodeStyle();
|
||||
m_pageTabPreferences = new TextEditor::SimpleCodeStylePreferences(m_widget);
|
||||
m_pageTabPreferences->setDelegatingPool(originalTabPreferences->delegatingPool());
|
||||
m_pageTabPreferences->setTabSettings(originalTabPreferences->tabSettings());
|
||||
m_pageTabPreferences->setCurrentDelegate(originalTabPreferences->currentDelegate());
|
||||
m_pageTabPreferences->setId(originalTabPreferences->id());
|
||||
TextEditorSettings *settings = TextEditorSettings::instance();
|
||||
m_widget = new CodeStyleEditor(settings->codeStyleFactory(QmlJSTools::Constants::QML_JS_SETTINGS_ID),
|
||||
m_pageTabPreferences, parent);
|
||||
|
||||
TextEditor::TabPreferences *originalTabPreferences
|
||||
= QmlJSToolsSettings::instance()->tabPreferences();
|
||||
QList<TextEditor::IFallbackPreferences *> originalTabFallbacks = originalTabPreferences->fallbacks();
|
||||
m_pageTabPreferences = new TextEditor::TabPreferences(originalTabFallbacks, m_widget);
|
||||
for (int i = 0; i < originalTabFallbacks.count(); i++) {
|
||||
TextEditor::IFallbackPreferences *fallback = originalTabFallbacks.at(i);
|
||||
m_pageTabPreferences->setFallbackEnabled(fallback, originalTabPreferences->isFallbackEnabled(fallback));
|
||||
}
|
||||
m_pageTabPreferences->setSettings(originalTabPreferences->settings());
|
||||
m_pageTabPreferences->setCurrentFallback(originalTabPreferences->currentFallback());
|
||||
m_widget->setTabPreferences(m_pageTabPreferences);
|
||||
|
||||
if (m_searchKeywords.isEmpty())
|
||||
m_searchKeywords = m_widget->searchKeywords();
|
||||
return m_widget;
|
||||
}
|
||||
|
||||
@@ -213,14 +221,14 @@ void QmlJSCodeStyleSettingsPage::apply()
|
||||
if (m_widget) {
|
||||
QSettings *s = Core::ICore::instance()->settings();
|
||||
|
||||
TextEditor::TabPreferences *originalTabPreferences = QmlJSToolsSettings::instance()->tabPreferences();
|
||||
if (originalTabPreferences->settings() != m_pageTabPreferences->settings()) {
|
||||
originalTabPreferences->setSettings(m_pageTabPreferences->settings());
|
||||
TextEditor::SimpleCodeStylePreferences *originalTabPreferences = QmlJSToolsSettings::instance()->qmlJSCodeStyle();
|
||||
if (originalTabPreferences->tabSettings() != m_pageTabPreferences->tabSettings()) {
|
||||
originalTabPreferences->setTabSettings(m_pageTabPreferences->tabSettings());
|
||||
if (s)
|
||||
originalTabPreferences->toSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s);
|
||||
}
|
||||
if (originalTabPreferences->currentFallback() != m_pageTabPreferences->currentFallback()) {
|
||||
originalTabPreferences->setCurrentFallback(m_pageTabPreferences->currentFallback());
|
||||
if (originalTabPreferences->currentDelegate() != m_pageTabPreferences->currentDelegate()) {
|
||||
originalTabPreferences->setCurrentDelegate(m_pageTabPreferences->currentDelegate());
|
||||
if (s)
|
||||
originalTabPreferences->toSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s);
|
||||
}
|
||||
|
||||
@@ -44,7 +44,8 @@ QT_END_NAMESPACE
|
||||
namespace TextEditor {
|
||||
class FontSettings;
|
||||
class TabSettings;
|
||||
class TabPreferences;
|
||||
class CodeStyleEditor;
|
||||
class ICodeStylePreferences;
|
||||
}
|
||||
|
||||
namespace QmlJSTools {
|
||||
@@ -62,19 +63,19 @@ public:
|
||||
explicit QmlJSCodeStylePreferencesWidget(QWidget *parent = 0);
|
||||
virtual ~QmlJSCodeStylePreferencesWidget();
|
||||
|
||||
void setTabPreferences(TextEditor::TabPreferences *tabPreferences);
|
||||
void setPreferences(TextEditor::ICodeStylePreferences *preferences);
|
||||
|
||||
QString searchKeywords() const;
|
||||
|
||||
private slots:
|
||||
void setFontSettings(const TextEditor::FontSettings &fontSettings);
|
||||
void decorateEditor(const TextEditor::FontSettings &fontSettings);
|
||||
void setVisualizeWhitespace(bool on);
|
||||
void slotSettingsChanged();
|
||||
void updatePreview();
|
||||
|
||||
private:
|
||||
|
||||
TextEditor::TabPreferences *m_tabPreferences;
|
||||
TextEditor::ICodeStylePreferences *m_preferences;
|
||||
Ui::QmlJSCodeStyleSettingsPage *m_ui;
|
||||
};
|
||||
|
||||
@@ -101,8 +102,8 @@ public:
|
||||
|
||||
private:
|
||||
QString m_searchKeywords;
|
||||
TextEditor::TabPreferences *m_pageTabPreferences;
|
||||
QPointer<QmlJSCodeStylePreferencesWidget> m_widget;
|
||||
TextEditor::ICodeStylePreferences *m_pageTabPreferences;
|
||||
QPointer<TextEditor::CodeStyleEditor> m_widget;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>342</width>
|
||||
<height>304</height>
|
||||
<width>138</width>
|
||||
<height>112</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string notr="true">Form</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="TextEditor::TabPreferencesWidget" name="tabPreferencesWidget" native="true">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="TextEditor::SimpleCodeStylePreferencesWidget" name="tabPreferencesWidget" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
@@ -24,7 +24,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<item row="0" column="1" rowspan="2">
|
||||
<widget class="TextEditor::SnippetEditorWidget" name="previewTextEdit">
|
||||
<property name="plainText">
|
||||
<string notr="true">import QtQuick 1.0
|
||||
@@ -47,20 +47,33 @@ Rectangle {
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>267</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>TextEditor::SimpleCodeStylePreferencesWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header location="global">texteditor/simplecodestylepreferenceswidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>TextEditor::SnippetEditorWidget</class>
|
||||
<extends>QPlainTextEdit</extends>
|
||||
<header location="global">texteditor/snippets/snippeteditor.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>TextEditor::TabPreferencesWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header location="global">texteditor/tabpreferenceswidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
||||
@@ -81,3 +81,9 @@ void Indenter::indentBlock(QTextDocument *doc,
|
||||
|
||||
tabSettings.indentLine(block, depth);
|
||||
}
|
||||
|
||||
void Indenter::invalidateCache(QTextDocument *doc)
|
||||
{
|
||||
QmlJSTools::QtStyleCodeFormatter codeFormatter;
|
||||
codeFormatter.invalidateCache(doc);
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@ public:
|
||||
const QTextBlock &block,
|
||||
const QChar &typedChar,
|
||||
const TextEditor::TabSettings &tabSettings);
|
||||
virtual void invalidateCache(QTextDocument *doc);
|
||||
};
|
||||
|
||||
} // Internal
|
||||
|
||||
@@ -9,7 +9,7 @@ HEADERS += \
|
||||
$$PWD/qmljstoolsplugin.h \
|
||||
$$PWD/qmljstoolsconstants.h \
|
||||
$$PWD/qmljstoolssettings.h \
|
||||
$$PWD/qmljscodestylesettingsfactory.h \
|
||||
$$PWD/qmljscodestylepreferencesfactory.h \
|
||||
$$PWD/qmljsmodelmanager.h \
|
||||
$$PWD/qmljsqtstylecodeformatter.h \
|
||||
$$PWD/qmljsrefactoringchanges.h \
|
||||
@@ -23,7 +23,7 @@ HEADERS += \
|
||||
SOURCES += \
|
||||
$$PWD/qmljstoolsplugin.cpp \
|
||||
$$PWD/qmljstoolssettings.cpp \
|
||||
$$PWD/qmljscodestylesettingsfactory.cpp \
|
||||
$$PWD/qmljscodestylepreferencesfactory.cpp \
|
||||
$$PWD/qmljsmodelmanager.cpp \
|
||||
$$PWD/qmljsqtstylecodeformatter.cpp \
|
||||
$$PWD/qmljsrefactoringchanges.cpp \
|
||||
|
||||
@@ -37,11 +37,6 @@
|
||||
#include "qmljscodestylesettingspage.h"
|
||||
#include "qmljstoolsconstants.h"
|
||||
#include "qmljstoolssettings.h"
|
||||
#include "qmljscodestylesettingsfactory.h"
|
||||
|
||||
#include <texteditor/texteditorsettings.h>
|
||||
#include <texteditor/tabsettings.h>
|
||||
#include <texteditor/codestylepreferencesmanager.h>
|
||||
|
||||
#include <extensionsystem/pluginmanager.h>
|
||||
|
||||
@@ -102,9 +97,6 @@ bool QmlJSToolsPlugin::initialize(const QStringList &arguments, QString *error)
|
||||
addAutoReleasedObject(new FunctionFilter(locatorData));
|
||||
addAutoReleasedObject(new QmlJSCodeStyleSettingsPage);
|
||||
|
||||
TextEditor::CodeStylePreferencesManager::instance()->registerFactory(
|
||||
new QmlJSTools::QmlJSCodeStylePreferencesFactory());
|
||||
|
||||
// Menus
|
||||
Core::ActionContainer *mtools = am->actionContainer(Core::Constants::M_TOOLS);
|
||||
Core::ActionContainer *mqmljstools = am->createMenu(Constants::M_TOOLS_QMLJS);
|
||||
@@ -126,10 +118,6 @@ bool QmlJSToolsPlugin::initialize(const QStringList &arguments, QString *error)
|
||||
connect(core->progressManager(), SIGNAL(allTasksFinished(QString)),
|
||||
this, SLOT(onAllTasksFinished(QString)));
|
||||
|
||||
TextEditor::TextEditorSettings *ts = TextEditor::TextEditorSettings::instance();
|
||||
ts->registerMimeTypeForLanguageId(QLatin1String(Constants::QML_MIMETYPE), Constants::QML_JS_SETTINGS_ID);
|
||||
ts->registerMimeTypeForLanguageId(QLatin1String(Constants::JS_MIMETYPE), Constants::QML_JS_SETTINGS_ID);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,17 +32,22 @@
|
||||
|
||||
#include "qmljstoolssettings.h"
|
||||
#include "qmljstoolsconstants.h"
|
||||
#include "qmljscodestylepreferencesfactory.h"
|
||||
|
||||
#include <texteditor/texteditorsettings.h>
|
||||
#include <texteditor/tabpreferences.h>
|
||||
#include <texteditor/simplecodestylepreferences.h>
|
||||
#include <texteditor/tabsettings.h>
|
||||
#include <texteditor/codestylepool.h>
|
||||
|
||||
#include <utils/qtcassert.h>
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
#include <QtCore/QSettings>
|
||||
|
||||
static const char *idKey = "QmlJSGlobal";
|
||||
|
||||
using namespace QmlJSTools;
|
||||
using TextEditor::TabSettings;
|
||||
|
||||
namespace QmlJSTools {
|
||||
namespace Internal {
|
||||
@@ -50,7 +55,7 @@ namespace Internal {
|
||||
class QmlJSToolsSettingsPrivate
|
||||
{
|
||||
public:
|
||||
TextEditor::TabPreferences *m_tabPreferences;
|
||||
TextEditor::SimpleCodeStylePreferences *m_globalCodeStyle;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
@@ -65,19 +70,55 @@ QmlJSToolsSettings::QmlJSToolsSettings(QObject *parent)
|
||||
QTC_ASSERT(!m_instance, return);
|
||||
m_instance = this;
|
||||
|
||||
TextEditor::TextEditorSettings *textEditorSettings = TextEditor::TextEditorSettings::instance();
|
||||
|
||||
// code style factory
|
||||
TextEditor::ICodeStylePreferencesFactory *factory = new QmlJSTools::QmlJSCodeStylePreferencesFactory();
|
||||
textEditorSettings->registerCodeStyleFactory(factory);
|
||||
|
||||
// code style pool
|
||||
TextEditor::CodeStylePool *pool = new TextEditor::CodeStylePool(factory, this);
|
||||
textEditorSettings->registerCodeStylePool(Constants::QML_JS_SETTINGS_ID, pool);
|
||||
|
||||
// global code style settings
|
||||
d->m_globalCodeStyle = new TextEditor::SimpleCodeStylePreferences(this);
|
||||
d->m_globalCodeStyle->setDelegatingPool(pool);
|
||||
d->m_globalCodeStyle->setDisplayName(tr("Global", "Settings"));
|
||||
d->m_globalCodeStyle->setId(idKey);
|
||||
pool->addCodeStyle(d->m_globalCodeStyle);
|
||||
textEditorSettings->registerCodeStyle(QmlJSTools::Constants::QML_JS_SETTINGS_ID, d->m_globalCodeStyle);
|
||||
|
||||
// built-in settings
|
||||
// Qt style
|
||||
TextEditor::SimpleCodeStylePreferences *qtCodeStyle = new TextEditor::SimpleCodeStylePreferences();
|
||||
qtCodeStyle->setId(QLatin1String("qt"));
|
||||
qtCodeStyle->setDisplayName(tr("Qt"));
|
||||
qtCodeStyle->setReadOnly(true);
|
||||
TabSettings qtTabSettings;
|
||||
qtTabSettings.m_tabPolicy = TabSettings::SpacesOnlyTabPolicy;
|
||||
qtTabSettings.m_tabSize = 4;
|
||||
qtTabSettings.m_indentSize = 4;
|
||||
qtTabSettings.m_continuationAlignBehavior = TabSettings::ContinuationAlignWithIndent;
|
||||
qtCodeStyle->setTabSettings(qtTabSettings);
|
||||
pool->addCodeStyle(qtCodeStyle);
|
||||
|
||||
// default delegate for global preferences
|
||||
d->m_globalCodeStyle->setCurrentDelegate(qtCodeStyle);
|
||||
|
||||
pool->loadCustomCodeStyles();
|
||||
|
||||
// load global settings (after built-in settings are added to the pool)
|
||||
if (const QSettings *s = Core::ICore::instance()->settings()) {
|
||||
TextEditor::TextEditorSettings *textEditorSettings = TextEditor::TextEditorSettings::instance();
|
||||
TextEditor::TabPreferences *tabPrefs = textEditorSettings->tabPreferences();
|
||||
d->m_tabPreferences
|
||||
= new TextEditor::TabPreferences(QList<TextEditor::IFallbackPreferences *>()
|
||||
<< tabPrefs, this);
|
||||
d->m_tabPreferences->setCurrentFallback(tabPrefs);
|
||||
d->m_tabPreferences->setFallbackEnabled(tabPrefs, false);
|
||||
d->m_tabPreferences->fromSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s);
|
||||
d->m_tabPreferences->setDisplayName(tr("Global Qt Quick", "Settings"));
|
||||
d->m_tabPreferences->setId(idKey);
|
||||
textEditorSettings->registerLanguageTabPreferences(QmlJSTools::Constants::QML_JS_SETTINGS_ID, d->m_tabPreferences);
|
||||
d->m_globalCodeStyle->fromSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s);
|
||||
}
|
||||
|
||||
// mimetypes to be handled
|
||||
textEditorSettings->registerMimeTypeForLanguageId(
|
||||
QLatin1String(Constants::QML_MIMETYPE),
|
||||
Constants::QML_JS_SETTINGS_ID);
|
||||
textEditorSettings->registerMimeTypeForLanguageId(
|
||||
QLatin1String(Constants::JS_MIMETYPE),
|
||||
Constants::QML_JS_SETTINGS_ID);
|
||||
}
|
||||
|
||||
QmlJSToolsSettings::~QmlJSToolsSettings()
|
||||
@@ -92,9 +133,9 @@ QmlJSToolsSettings *QmlJSToolsSettings::instance()
|
||||
return m_instance;
|
||||
}
|
||||
|
||||
TextEditor::TabPreferences *QmlJSToolsSettings::tabPreferences() const
|
||||
TextEditor::SimpleCodeStylePreferences *QmlJSToolsSettings::qmlJSCodeStyle() const
|
||||
{
|
||||
return d->m_tabPreferences;
|
||||
return d->m_globalCodeStyle;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
namespace TextEditor
|
||||
{
|
||||
class TabPreferences;
|
||||
class SimpleCodeStylePreferences;
|
||||
}
|
||||
|
||||
namespace QmlJSTools
|
||||
@@ -63,7 +63,7 @@ public:
|
||||
|
||||
static QmlJSToolsSettings *instance();
|
||||
|
||||
TextEditor::TabPreferences *tabPreferences() const;
|
||||
TextEditor::SimpleCodeStylePreferences *qmlJSCodeStyle() const;
|
||||
|
||||
private:
|
||||
Internal::QmlJSToolsSettingsPrivate *d;
|
||||
|
||||
Reference in New Issue
Block a user