diff options
-rw-r--r-- | src/plugins/qmljstools/qmljscodestylesettingsfactory.cpp | 41 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljscodestylesettingsfactory.h | 24 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljscodestylesettingspage.cpp | 76 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljscodestylesettingspage.h | 11 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljstools-lib.pri | 4 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljstoolsplugin.cpp | 10 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljstoolsplugin.h | 4 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljstoolssettings.cpp | 66 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljstoolssettings.h | 77 |
9 files changed, 270 insertions, 43 deletions
diff --git a/src/plugins/qmljstools/qmljscodestylesettingsfactory.cpp b/src/plugins/qmljstools/qmljscodestylesettingsfactory.cpp new file mode 100644 index 0000000000..ab6d556488 --- /dev/null +++ b/src/plugins/qmljstools/qmljscodestylesettingsfactory.cpp @@ -0,0 +1,41 @@ +#include "qmljscodestylesettingsfactory.h" +#include "qmljscodestylesettingspage.h" +#include "qmljstoolsconstants.h" +#include <texteditor/tabpreferences.h> +#include <texteditor/tabsettings.h> +#include <QtGui/QLayout> + +using namespace QmlJSTools; + +QmlJSCodeStylePreferencesFactory::QmlJSCodeStylePreferencesFactory() +{ +} + +QString QmlJSCodeStylePreferencesFactory::languageId() +{ + return Constants::QML_JS_SETTINGS_ID; +} + +QString QmlJSCodeStylePreferencesFactory::displayName() +{ + return Constants::QML_JS_SETTINGS_NAME; +} + +TextEditor::IFallbackPreferences *QmlJSCodeStylePreferencesFactory::createPreferences( + const QList<TextEditor::IFallbackPreferences *> &fallbacks) const +{ + return 0; +} + +QWidget *QmlJSCodeStylePreferencesFactory::createEditor(TextEditor::IFallbackPreferences *preferences, + TextEditor::TabPreferences *tabPreferences, + QWidget *parent) const +{ + Q_UNUSED(preferences) + + Internal::QmlJSCodeStylePreferencesWidget *widget = new Internal::QmlJSCodeStylePreferencesWidget(parent); + widget->layout()->setMargin(0); + widget->setTabPreferences(tabPreferences); + return widget; +} + diff --git a/src/plugins/qmljstools/qmljscodestylesettingsfactory.h b/src/plugins/qmljstools/qmljscodestylesettingsfactory.h new file mode 100644 index 0000000000..321f564e92 --- /dev/null +++ b/src/plugins/qmljstools/qmljscodestylesettingsfactory.h @@ -0,0 +1,24 @@ +#ifndef QMLJSCODESTYLESETTINGSFACTORY_H +#define QMLJSCODESTYLESETTINGSFACTORY_H + +#include <texteditor/icodestylepreferencesfactory.h> + +namespace QmlJSTools { + +class QmlJSCodeStylePreferencesFactory : public TextEditor::ICodeStylePreferencesFactory +{ +public: + QmlJSCodeStylePreferencesFactory(); + + 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, + QWidget *parent) const; + +}; + +} // namespace QmlJSTools + +#endif // QMLJSCODESTYLESETTINGSFACTORY_H diff --git a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp index 01968e4bdb..31afdbabac 100644 --- a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp +++ b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp @@ -1,6 +1,7 @@ #include "qmljscodestylesettingspage.h" #include "ui_qmljscodestylesettingspage.h" #include "qmljstoolsconstants.h" +#include "qmljstoolssettings.h" #include "qmljsindenter.h" #include "qmljsqtstylecodeformatter.h" @@ -24,7 +25,7 @@ namespace Internal { // ------------------ CppCodeStyleSettingsWidget -QmlJSCodeStyleSettingsWidget::QmlJSCodeStyleSettingsWidget(QWidget *parent) : +QmlJSCodeStylePreferencesWidget::QmlJSCodeStylePreferencesWidget(QWidget *parent) : QWidget(parent), m_tabPreferences(0), m_ui(new ::Ui::QmlJSCodeStyleSettingsPage) @@ -49,22 +50,22 @@ QmlJSCodeStyleSettingsWidget::QmlJSCodeStyleSettingsWidget(QWidget *parent) : updatePreview(); } -QmlJSCodeStyleSettingsWidget::~QmlJSCodeStyleSettingsWidget() +QmlJSCodeStylePreferencesWidget::~QmlJSCodeStylePreferencesWidget() { delete m_ui; } -void QmlJSCodeStyleSettingsWidget::setTabPreferences(TextEditor::TabPreferences *tabPreferences) +void QmlJSCodeStylePreferencesWidget::setTabPreferences(TextEditor::TabPreferences *tabPreferences) { m_tabPreferences = tabPreferences; m_ui->tabPreferencesWidget->setTabPreferences(tabPreferences); connect(m_tabPreferences, SIGNAL(currentSettingsChanged(TextEditor::TabSettings)), - this, SLOT(slotTabSettingsChanged())); + this, SLOT(slotSettingsChanged())); updatePreview(); } -QString QmlJSCodeStyleSettingsWidget::searchKeywords() const +QString QmlJSCodeStylePreferencesWidget::searchKeywords() const { QString rc; QLatin1Char sep(' '); @@ -75,29 +76,30 @@ QString QmlJSCodeStyleSettingsWidget::searchKeywords() const return rc; } -void QmlJSCodeStyleSettingsWidget::setFontSettings(const TextEditor::FontSettings &fontSettings) +void QmlJSCodeStylePreferencesWidget::setFontSettings(const TextEditor::FontSettings &fontSettings) { m_ui->previewTextEdit->setFont(fontSettings.font()); } -void QmlJSCodeStyleSettingsWidget::setVisualizeWhitespace(bool on) +void QmlJSCodeStylePreferencesWidget::setVisualizeWhitespace(bool on) { DisplaySettings displaySettings = m_ui->previewTextEdit->displaySettings(); displaySettings.m_visualizeWhitespace = on; m_ui->previewTextEdit->setDisplaySettings(displaySettings); } -void QmlJSCodeStyleSettingsWidget::slotTabSettingsChanged() +void QmlJSCodeStylePreferencesWidget::slotSettingsChanged() { updatePreview(); } -void QmlJSCodeStyleSettingsWidget::updatePreview() +void QmlJSCodeStylePreferencesWidget::updatePreview() { QTextDocument *doc = m_ui->previewTextEdit->document(); const TextEditor::TabSettings &ts = m_tabPreferences - ? m_tabPreferences->currentSettings() : TextEditorSettings::instance()->tabPreferences()->settings(); + ? m_tabPreferences->currentSettings() + : TextEditorSettings::instance()->tabPreferences()->settings(); m_ui->previewTextEdit->setTabSettings(ts); QtStyleCodeFormatter formatter(ts); formatter.invalidateCache(doc); @@ -119,17 +121,9 @@ void QmlJSCodeStyleSettingsWidget::updatePreview() QmlJSCodeStyleSettingsPage::QmlJSCodeStyleSettingsPage(/*QSharedPointer<CppFileSettings> &settings,*/ QWidget *parent) : - Core::IOptionsPage(parent)/*, - m_settings(settings)*/ -{ - if (const QSettings *s = Core::ICore::instance()->settings()) { - TextEditor::TabSettings tabSettings; - // read it from old global settings for the first time? - tabSettings.fromSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s); -// TextEditor::TextEditorSettings *textEditorSettings = TextEditor::TextEditorSettings::instance(); -// textEditorSettings->setTabSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, -// tabSettings); - } + Core::IOptionsPage(parent), + m_pageTabPreferences(0) +{ } QmlJSCodeStyleSettingsPage::~QmlJSCodeStyleSettingsPage() @@ -163,10 +157,14 @@ QIcon QmlJSCodeStyleSettingsPage::categoryIcon() const QWidget *QmlJSCodeStyleSettingsPage::createPage(QWidget *parent) { - m_widget = new QmlJSCodeStyleSettingsWidget(parent); - m_widget->setTabPreferences( - TextEditorSettings::instance()->tabPreferences( - QmlJSTools::Constants::QML_JS_SETTINGS_ID)); + m_widget = new QmlJSCodeStylePreferencesWidget(parent); + + TextEditor::TabPreferences *originalTabPreferences + = QmlJSToolsSettings::instance()->tabPreferences(); + m_pageTabPreferences = new TextEditor::TabPreferences(originalTabPreferences->fallbacks(), m_widget); + m_pageTabPreferences->setSettings(originalTabPreferences->settings()); + m_pageTabPreferences->setCurrentFallback(originalTabPreferences->currentFallback()); + m_widget->setTabPreferences(m_pageTabPreferences); if (m_searchKeywords.isEmpty()) m_searchKeywords = m_widget->searchKeywords(); @@ -175,17 +173,21 @@ QWidget *QmlJSCodeStyleSettingsPage::createPage(QWidget *parent) void QmlJSCodeStyleSettingsPage::apply() { -// if (m_widget) { -// const TabSettings newTabSettings = m_widget->tabSettings(); -// TextEditor::TextEditorSettings *textEditorSettings = TextEditor::TextEditorSettings::instance(); -// if (newTabSettings != textEditorSettings->tabSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID)) { -// textEditorSettings->setTabSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, -// newTabSettings); -// if (QSettings *s = Core::ICore::instance()->settings()) { -// newTabSettings.toSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s); -// } -// } -// } + 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()); + if (s) + originalTabPreferences->toSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s); + } + if (originalTabPreferences->currentFallback() != m_pageTabPreferences->currentFallback()) { + originalTabPreferences->setCurrentFallback(m_pageTabPreferences->currentFallback()); + if (s) + originalTabPreferences->toSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s); + } + } } bool QmlJSCodeStyleSettingsPage::matches(const QString &s) const @@ -194,4 +196,4 @@ bool QmlJSCodeStyleSettingsPage::matches(const QString &s) const } } // namespace Internal -} // namespace CppTools +} // namespace QmlJSTools diff --git a/src/plugins/qmljstools/qmljscodestylesettingspage.h b/src/plugins/qmljstools/qmljscodestylesettingspage.h index c7574e30e3..e24619177f 100644 --- a/src/plugins/qmljstools/qmljscodestylesettingspage.h +++ b/src/plugins/qmljstools/qmljscodestylesettingspage.h @@ -21,13 +21,13 @@ namespace TextEditor { namespace QmlJSTools { namespace Internal { -class QmlJSCodeStyleSettingsWidget : public QWidget +class QmlJSCodeStylePreferencesWidget : public QWidget { Q_OBJECT public: - explicit QmlJSCodeStyleSettingsWidget(QWidget *parent = 0); - virtual ~QmlJSCodeStyleSettingsWidget(); + explicit QmlJSCodeStylePreferencesWidget(QWidget *parent = 0); + virtual ~QmlJSCodeStylePreferencesWidget(); void setTabPreferences(TextEditor::TabPreferences *tabPreferences); @@ -36,7 +36,7 @@ public: private slots: void setFontSettings(const TextEditor::FontSettings &fontSettings); void setVisualizeWhitespace(bool on); - void slotTabSettingsChanged(); + void slotSettingsChanged(); void updatePreview(); private: @@ -68,7 +68,8 @@ public: private: QString m_searchKeywords; - QPointer<QmlJSCodeStyleSettingsWidget> m_widget; + TextEditor::TabPreferences *m_pageTabPreferences; + QPointer<QmlJSCodeStylePreferencesWidget> m_widget; }; } // namespace Internal diff --git a/src/plugins/qmljstools/qmljstools-lib.pri b/src/plugins/qmljstools/qmljstools-lib.pri index 607830d55c..2d5cad5b23 100644 --- a/src/plugins/qmljstools/qmljstools-lib.pri +++ b/src/plugins/qmljstools/qmljstools-lib.pri @@ -8,6 +8,8 @@ HEADERS += \ $$PWD/qmljstools_global.h \ $$PWD/qmljstoolsplugin.h \ $$PWD/qmljstoolsconstants.h \ + $$PWD/qmljstoolssettings.h \ + $$PWD/qmljscodestylesettingsfactory.h \ $$PWD/qmljsmodelmanager.h \ $$PWD/qmljsqtstylecodeformatter.h \ $$PWD/qmljsrefactoringchanges.h \ @@ -19,6 +21,8 @@ HEADERS += \ SOURCES += \ $$PWD/qmljstoolsplugin.cpp \ + $$PWD/qmljstoolssettings.cpp \ + $$PWD/qmljscodestylesettingsfactory.cpp \ $$PWD/qmljsmodelmanager.cpp \ $$PWD/qmljsqtstylecodeformatter.cpp \ $$PWD/qmljsrefactoringchanges.cpp \ diff --git a/src/plugins/qmljstools/qmljstoolsplugin.cpp b/src/plugins/qmljstools/qmljstoolsplugin.cpp index 322070c93e..5e750bc8e8 100644 --- a/src/plugins/qmljstools/qmljstoolsplugin.cpp +++ b/src/plugins/qmljstools/qmljstoolsplugin.cpp @@ -36,9 +36,12 @@ #include "qmljslocatordata.h" #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> @@ -74,6 +77,8 @@ bool QmlJSToolsPlugin::initialize(const QStringList &arguments, QString *error) Q_UNUSED(error) // Core::ICore *core = Core::ICore::instance(); + m_settings = new QmlJSToolsSettings(this); // force registration of qmljstools settings + // Objects m_modelManager = new ModelManager(this); // Core::VCSManager *vcsManager = core->vcsManager(); @@ -87,7 +92,10 @@ bool QmlJSToolsPlugin::initialize(const QStringList &arguments, QString *error) LocatorData *locatorData = new LocatorData; addAutoReleasedObject(locatorData); addAutoReleasedObject(new FunctionFilter(locatorData)); -// addAutoReleasedObject(new QmlJSCodeStyleSettingsPage); + addAutoReleasedObject(new QmlJSCodeStyleSettingsPage); + + TextEditor::CodeStylePreferencesManager::instance()->registerFactory( + new QmlJSTools::QmlJSCodeStylePreferencesFactory()); return true; } diff --git a/src/plugins/qmljstools/qmljstoolsplugin.h b/src/plugins/qmljstools/qmljstoolsplugin.h index 3c4e8796aa..c6019e42f4 100644 --- a/src/plugins/qmljstools/qmljstoolsplugin.h +++ b/src/plugins/qmljstools/qmljstoolsplugin.h @@ -45,6 +45,9 @@ class QDir; QT_END_NAMESPACE namespace QmlJSTools { + +class QmlJSToolsSettings; + namespace Internal { class ModelManager; @@ -66,6 +69,7 @@ public: private: ModelManager *m_modelManager; + QmlJSToolsSettings *m_settings; static QmlJSToolsPlugin *m_instance; }; diff --git a/src/plugins/qmljstools/qmljstoolssettings.cpp b/src/plugins/qmljstools/qmljstoolssettings.cpp new file mode 100644 index 0000000000..503f8f03f5 --- /dev/null +++ b/src/plugins/qmljstools/qmljstoolssettings.cpp @@ -0,0 +1,66 @@ +#include "qmljstoolssettings.h" +#include "qmljstoolsconstants.h" + +#include <texteditor/texteditorsettings.h> +#include <texteditor/tabpreferences.h> + +#include <utils/qtcassert.h> +#include <coreplugin/icore.h> +#include <QtCore/QSettings> + +static const char *idKey = "QmlJSGlobal"; + +using namespace QmlJSTools; + +namespace QmlJSTools { +namespace Internal { + +class QmlJSToolsSettingsPrivate +{ +public: + TextEditor::TabPreferences *m_tabPreferences; +}; + +} // namespace Internal +} // namespace QmlJSTools + +QmlJSToolsSettings *QmlJSToolsSettings::m_instance = 0; + +QmlJSToolsSettings::QmlJSToolsSettings(QObject *parent) + : QObject(parent) + , m_d(new Internal::QmlJSToolsSettingsPrivate) +{ + QTC_ASSERT(!m_instance, return); + m_instance = this; + + if (const QSettings *s = Core::ICore::instance()->settings()) { + TextEditor::TextEditorSettings *textEditorSettings = TextEditor::TextEditorSettings::instance(); + m_d->m_tabPreferences + = new TextEditor::TabPreferences(QList<TextEditor::IFallbackPreferences *>() + << textEditorSettings->tabPreferences(), this); + m_d->m_tabPreferences->setCurrentFallback(textEditorSettings->tabPreferences()); + m_d->m_tabPreferences->fromSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s); + m_d->m_tabPreferences->setDisplayName(tr("global QML")); + m_d->m_tabPreferences->setId(idKey); + textEditorSettings->registerLanguageTabPreferences(QmlJSTools::Constants::QML_JS_SETTINGS_ID, m_d->m_tabPreferences); + } +} + +QmlJSToolsSettings::~QmlJSToolsSettings() +{ + delete m_d; + + m_instance = 0; +} + +QmlJSToolsSettings *QmlJSToolsSettings::instance() +{ + return m_instance; +} + +TextEditor::TabPreferences *QmlJSToolsSettings::tabPreferences() const +{ + return m_d->m_tabPreferences; +} + + diff --git a/src/plugins/qmljstools/qmljstoolssettings.h b/src/plugins/qmljstools/qmljstoolssettings.h new file mode 100644 index 0000000000..9eb8b657c5 --- /dev/null +++ b/src/plugins/qmljstools/qmljstoolssettings.h @@ -0,0 +1,77 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** No Commercial Usage +** +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** 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. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +**************************************************************************/ + +#ifndef QMLJSTOOLSSETTINGS_H +#define QMLJSTOOLSSETTINGS_H + +#include "qmljstools_global.h" + +#include <QtCore/QObject> + +namespace TextEditor +{ +class TabPreferences; +} + +namespace QmlJSTools +{ + +namespace Internal +{ +class QmlJSToolsSettingsPrivate; +} + +/** + * This class provides a central place for cpp tools settings. + */ +class QMLJSTOOLS_EXPORT QmlJSToolsSettings : public QObject +{ + Q_OBJECT + +public: + explicit QmlJSToolsSettings(QObject *parent); + ~QmlJSToolsSettings(); + + static QmlJSToolsSettings *instance(); + + TextEditor::TabPreferences *tabPreferences() const; + +private: + Internal::QmlJSToolsSettingsPrivate *m_d; + + static QmlJSToolsSettings *m_instance; +}; + +} // namespace QmlJSTools + +#endif // QMLJSTOOLSSETTINGS_H |