QmlJSEditor: Add option to automatically format QML/JS file on save

Change-Id: Ide1810efdef98595705daa32c83fecc2ad367a49
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
This commit is contained in:
Michael Dönnebrink
2016-06-18 14:15:02 +02:00
parent 410211e090
commit ed6abae46d
10 changed files with 349 additions and 182 deletions

View File

@@ -0,0 +1,194 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "qmljseditingsettingspage.h"
#include "qmljseditorconstants.h"
#include <qmljstools/qmljstoolsconstants.h>
#include <coreplugin/icore.h>
#include <QSettings>
#include <QTextStream>
#include <QCheckBox>
using namespace QmlJSEditor;
using namespace QmlJSEditor::Internal;
QmlJsEditingSettings::QmlJsEditingSettings()
: m_enableContextPane(false),
m_pinContextPane(false),
m_autoFormatOnSave(false),
m_autoFormatOnlyCurrentProject(false)
{}
void QmlJsEditingSettings::set()
{
if (get() != *this)
toSettings(Core::ICore::settings());
}
void QmlJsEditingSettings::fromSettings(QSettings *settings)
{
settings->beginGroup(QLatin1String(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML));
m_enableContextPane = settings->value(
QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANE_KEY),
QVariant(false)).toBool();
m_pinContextPane = settings->value(
QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANEPIN_KEY),
QVariant(false)).toBool();
m_autoFormatOnSave = settings->value(
QLatin1String(QmlJSEditor::Constants::AUTO_FORMAT_ON_SAVE),
QVariant(false)).toBool();
m_autoFormatOnlyCurrentProject = settings->value(
QLatin1String(QmlJSEditor::Constants::AUTO_FORMAT_ONLY_CURRENT_PROJECT),
QVariant(false)).toBool();
settings->endGroup();
}
void QmlJsEditingSettings::toSettings(QSettings *settings) const
{
settings->beginGroup(QLatin1String(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML));
settings->setValue(QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANE_KEY),
m_enableContextPane);
settings->setValue(QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANEPIN_KEY),
m_pinContextPane);
settings->setValue(QLatin1String(QmlJSEditor::Constants::AUTO_FORMAT_ON_SAVE),
m_autoFormatOnSave);
settings->setValue(QLatin1String(QmlJSEditor::Constants::AUTO_FORMAT_ONLY_CURRENT_PROJECT),
m_autoFormatOnlyCurrentProject);
settings->endGroup();
}
bool QmlJsEditingSettings::equals(const QmlJsEditingSettings &other) const
{
return m_enableContextPane == other.m_enableContextPane
&& m_pinContextPane == other.m_pinContextPane
&& m_autoFormatOnSave == other.m_autoFormatOnSave
&& m_autoFormatOnlyCurrentProject == other.m_autoFormatOnlyCurrentProject;
}
bool QmlJsEditingSettings::enableContextPane() const
{
return m_enableContextPane;
}
void QmlJsEditingSettings::setEnableContextPane(const bool enableContextPane)
{
m_enableContextPane = enableContextPane;
}
bool QmlJsEditingSettings::pinContextPane() const
{
return m_pinContextPane;
}
void QmlJsEditingSettings::setPinContextPane(const bool pinContextPane)
{
m_pinContextPane = pinContextPane;
}
bool QmlJsEditingSettings::autoFormatOnSave() const
{
return m_autoFormatOnSave;
}
void QmlJsEditingSettings::setAutoFormatOnSave(const bool autoFormatOnSave)
{
m_autoFormatOnSave = autoFormatOnSave;
}
bool QmlJsEditingSettings::autoFormatOnlyCurrentProject() const
{
return m_autoFormatOnlyCurrentProject;
}
void QmlJsEditingSettings::setAutoFormatOnlyCurrentProject(const bool autoFormatOnlyCurrentProject)
{
m_autoFormatOnlyCurrentProject = autoFormatOnlyCurrentProject;
}
QmlJsEditingSettignsPageWidget::QmlJsEditingSettignsPageWidget(QWidget *parent) :
QWidget(parent)
{
m_ui.setupUi(this);
}
QmlJsEditingSettings QmlJsEditingSettignsPageWidget::settings() const
{
QmlJsEditingSettings s;
s.setEnableContextPane(m_ui.textEditHelperCheckBox->isChecked());
s.setPinContextPane(m_ui.textEditHelperCheckBoxPin->isChecked());
s.setAutoFormatOnSave(m_ui.autoFormatOnSave->isChecked());
s.setAutoFormatOnlyCurrentProject(m_ui.autoFormatOnlyCurrentProject->isChecked());
return s;
}
void QmlJsEditingSettignsPageWidget::setSettings(const QmlJsEditingSettings &s)
{
m_ui.textEditHelperCheckBox->setChecked(s.enableContextPane());
m_ui.textEditHelperCheckBoxPin->setChecked(s.pinContextPane());
m_ui.autoFormatOnSave->setChecked(s.autoFormatOnSave());
m_ui.autoFormatOnlyCurrentProject->setChecked(s.autoFormatOnlyCurrentProject());
}
QmlJsEditingSettings QmlJsEditingSettings::get()
{
QmlJsEditingSettings settings;
settings.fromSettings(Core::ICore::settings());
return settings;
}
QmlJsEditingSettingsPage::QmlJsEditingSettingsPage() :
m_widget(0)
{
setId("C.QmlJsEditing");
setDisplayName(tr("QML/JS Editing"));
setCategory(Constants::SETTINGS_CATEGORY_QML);
setDisplayCategory(QCoreApplication::translate("QmlJSEditor",
QmlJSEditor::Constants::SETTINGS_TR_CATEGORY_QML));
setCategoryIcon(Utils::Icon(QmlJSTools::Constants::SETTINGS_CATEGORY_QML_ICON));
}
QWidget *QmlJsEditingSettingsPage::widget()
{
if (!m_widget) {
m_widget = new QmlJsEditingSettignsPageWidget;
m_widget->setSettings(QmlJsEditingSettings::get());
}
return m_widget;
}
void QmlJsEditingSettingsPage::apply()
{
if (!m_widget) // page was never shown
return;
m_widget->settings().set();
}
void QmlJsEditingSettingsPage::finish()
{
delete m_widget;
}

View File

@@ -25,7 +25,7 @@
#pragma once #pragma once
#include "ui_quicktoolbarsettingspage.h" #include "ui_qmljseditingsettingspage.h"
#include <coreplugin/dialogs/ioptionspage.h> #include <coreplugin/dialogs/ioptionspage.h>
#include <QPointer> #include <QPointer>
#include <QWidget> #include <QWidget>
@@ -36,61 +36,77 @@ QT_END_NAMESPACE
namespace QmlJSEditor { namespace QmlJSEditor {
class QuickToolBarSettings { class QmlJsEditingSettings {
public: public:
QuickToolBarSettings(); QmlJsEditingSettings();
static QuickToolBarSettings get(); static QmlJsEditingSettings get();
void set(); void set();
void fromSettings(QSettings *); void fromSettings(QSettings *);
void toSettings(QSettings *) const; void toSettings(QSettings *) const;
bool equals(const QuickToolBarSettings &other) const; bool equals(const QmlJsEditingSettings &other) const;
bool enableContextPane;
bool pinContextPane; bool enableContextPane() const;
void setEnableContextPane(const bool enableContextPane);
bool pinContextPane() const;
void setPinContextPane(const bool pinContextPane);
bool autoFormatOnSave() const;
void setAutoFormatOnSave(const bool autoFormatOnSave);
bool autoFormatOnlyCurrentProject() const;
void setAutoFormatOnlyCurrentProject(const bool autoFormatOnlyCurrentProject);
private:
bool m_enableContextPane;
bool m_pinContextPane;
bool m_autoFormatOnSave;
bool m_autoFormatOnlyCurrentProject;
}; };
inline bool operator==(const QuickToolBarSettings &s1, const QuickToolBarSettings &s2) inline bool operator==(const QmlJsEditingSettings &s1, const QmlJsEditingSettings &s2)
{ return s1.equals(s2); } { return s1.equals(s2); }
inline bool operator!=(const QuickToolBarSettings &s1, const QuickToolBarSettings &s2) inline bool operator!=(const QmlJsEditingSettings &s1, const QmlJsEditingSettings &s2)
{ return !s1.equals(s2); } { return !s1.equals(s2); }
class QuickToolBarSettings; class QmlJsEditingSettings;
namespace Internal { namespace Internal {
class QuickToolBarSettingsPageWidget : public QWidget class QmlJsEditingSettignsPageWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit QuickToolBarSettingsPageWidget(QWidget *parent = 0); explicit QmlJsEditingSettignsPageWidget(QWidget *parent = 0);
QuickToolBarSettings settings() const; QmlJsEditingSettings settings() const;
void setSettings(const QuickToolBarSettings &); void setSettings(const QmlJsEditingSettings &);
static QuickToolBarSettings get(); static QmlJsEditingSettings get();
private: private:
Ui::QuickToolBarSettingsPage m_ui; Ui::QmlJsEditingSettingsPage m_ui;
}; };
class QuickToolBarSettingsPage : public Core::IOptionsPage class QmlJsEditingSettingsPage : public Core::IOptionsPage
{ {
Q_OBJECT Q_OBJECT
public: public:
QuickToolBarSettingsPage(); QmlJsEditingSettingsPage();
QWidget *widget(); QWidget *widget();
void apply(); void apply();
void finish(); void finish();
private: private:
QPointer<QuickToolBarSettingsPageWidget> m_widget; QPointer<QmlJsEditingSettignsPageWidget> m_widget;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>QmlJSEditor::Internal::QuickToolBarSettingsPage</class> <class>QmlJSEditor::Internal::QmlJsEditingSettingsPage</class>
<widget class="QWidget" name="QmlJSEditor::Internal::QuickToolBarSettingsPage"> <widget class="QWidget" name="QmlJSEditor::Internal::QmlJsEditingSettingsPage">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
@@ -14,8 +14,8 @@
<string>Form</string> <string>Form</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0"> <item row="1" column="0">
<widget class="QGroupBox" name="groupBox"> <widget class="QGroupBox" name="groupBox_2">
<property name="title"> <property name="title">
<string>Qt Quick Toolbars</string> <string>Qt Quick Toolbars</string>
</property> </property>
@@ -40,7 +40,7 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="3" column="0">
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@@ -48,13 +48,56 @@
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>207</height> <height>40</height>
</size> </size>
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Automatic Formatting on File Save</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QCheckBox" name="autoFormatOnSave">
<property name="text">
<string>Enable auto format on file save</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="autoFormatOnlyCurrentProject">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Restrict to files contained in the current project</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<resources/> <resources/>
<connections/> <connections>
<connection>
<sender>autoFormatOnSave</sender>
<signal>toggled(bool)</signal>
<receiver>autoFormatOnlyCurrentProject</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>216</x>
<y>40</y>
</hint>
<hint type="destinationlabel">
<x>216</x>
<y>63</y>
</hint>
</hints>
</connection>
</connections>
</ui> </ui>

View File

@@ -17,7 +17,7 @@ HEADERS += \
qmloutlinemodel.h \ qmloutlinemodel.h \
qmltaskmanager.h \ qmltaskmanager.h \
qmljsoutlinetreeview.h \ qmljsoutlinetreeview.h \
quicktoolbarsettingspage.h \ qmljseditingsettingspage.h \
quicktoolbar.h \ quicktoolbar.h \
qmljscomponentnamedialog.h \ qmljscomponentnamedialog.h \
qmljsfindreferences.h \ qmljsfindreferences.h \
@@ -46,7 +46,7 @@ SOURCES += \
qmltaskmanager.cpp \ qmltaskmanager.cpp \
qmljsquickfixes.cpp \ qmljsquickfixes.cpp \
qmljsoutlinetreeview.cpp \ qmljsoutlinetreeview.cpp \
quicktoolbarsettingspage.cpp \ qmljseditingsettingspage.cpp \
quicktoolbar.cpp \ quicktoolbar.cpp \
qmljscomponentnamedialog.cpp \ qmljscomponentnamedialog.cpp \
qmljsfindreferences.cpp \ qmljsfindreferences.cpp \
@@ -62,5 +62,5 @@ SOURCES += \
qmljseditordocument.cpp qmljseditordocument.cpp
FORMS += \ FORMS += \
quicktoolbarsettingspage.ui \ qmljseditingsettingspage.ui \
qmljscomponentnamedialog.ui qmljscomponentnamedialog.ui

View File

@@ -26,6 +26,9 @@ QtcPlugin {
"qmljscomponentnamedialog.cpp", "qmljscomponentnamedialog.cpp",
"qmljscomponentnamedialog.h", "qmljscomponentnamedialog.h",
"qmljscomponentnamedialog.ui", "qmljscomponentnamedialog.ui",
"qmljseditingsettingspage.cpp",
"qmljseditingsettingspage.h",
"qmljseditingsettingspage.ui",
"qmljseditor.cpp", "qmljseditor.cpp",
"qmljseditor.h", "qmljseditor.h",
"qmljseditor_global.h", "qmljseditor_global.h",
@@ -68,9 +71,6 @@ QtcPlugin {
"qmltaskmanager.h", "qmltaskmanager.h",
"quicktoolbar.cpp", "quicktoolbar.cpp",
"quicktoolbar.h", "quicktoolbar.h",
"quicktoolbarsettingspage.cpp",
"quicktoolbarsettingspage.h",
"quicktoolbarsettingspage.ui",
] ]
Export { Export {

View File

@@ -57,5 +57,8 @@ const char QML_CONTEXTPANEPIN_KEY[] = "QmlJSEditor.ContextPanePinned";
const char QML_UI_FILE_WARNING[] = "QmlJSEditor.QmlUiFileWarning"; const char QML_UI_FILE_WARNING[] = "QmlJSEditor.QmlUiFileWarning";
const char AUTO_FORMAT_ON_SAVE[] = "QmlJSEditor.AutoFormatOnSave";
const char AUTO_FORMAT_ONLY_CURRENT_PROJECT[] = "QmlJSEditor.AutoFormatOnlyCurrentProject";
} // namespace Constants } // namespace Constants
} // namespace QmlJSEditor } // namespace QmlJSEditor

View File

@@ -23,18 +23,18 @@
** **
****************************************************************************/ ****************************************************************************/
#include "qmljseditorplugin.h" #include "qmljseditingsettingspage.h"
#include "qmljshighlighter.h"
#include "qmljseditor.h" #include "qmljseditor.h"
#include "qmljseditorconstants.h" #include "qmljseditorconstants.h"
#include "qmljseditordocument.h" #include "qmljseditordocument.h"
#include "qmljseditorplugin.h"
#include "qmljshighlighter.h"
#include "qmljsoutline.h" #include "qmljsoutline.h"
#include "qmljspreviewrunner.h" #include "qmljspreviewrunner.h"
#include "qmljsquickfixassist.h"
#include "qmljssnippetprovider.h" #include "qmljssnippetprovider.h"
#include "qmltaskmanager.h" #include "qmltaskmanager.h"
#include "quicktoolbar.h" #include "quicktoolbar.h"
#include "quicktoolbarsettingspage.h"
#include "qmljsquickfixassist.h"
#include <qmljs/qmljsicons.h> #include <qmljs/qmljsicons.h>
#include <qmljs/qmljsmodelmanagerinterface.h> #include <qmljs/qmljsmodelmanagerinterface.h>
@@ -50,6 +50,8 @@
#include <coreplugin/actionmanager/command.h> #include <coreplugin/actionmanager/command.h>
#include <coreplugin/editormanager/editormanager.h> #include <coreplugin/editormanager/editormanager.h>
#include <projectexplorer/taskhub.h> #include <projectexplorer/taskhub.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projecttree.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <texteditor/texteditorconstants.h> #include <texteditor/texteditorconstants.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -193,11 +195,14 @@ bool QmlJSEditorPlugin::initialize(const QStringList & /*arguments*/, QString *e
addAutoReleasedObject(new QmlJSOutlineWidgetFactory); addAutoReleasedObject(new QmlJSOutlineWidgetFactory);
addAutoReleasedObject(new QuickToolBar); addAutoReleasedObject(new QuickToolBar);
addAutoReleasedObject(new QuickToolBarSettingsPage); addAutoReleasedObject(new QmlJsEditingSettingsPage);
connect(EditorManager::instance(), &EditorManager::currentEditorChanged, connect(EditorManager::instance(), &EditorManager::currentEditorChanged,
this, &QmlJSEditorPlugin::currentEditorChanged); this, &QmlJSEditorPlugin::currentEditorChanged);
connect(EditorManager::instance(), &Core::EditorManager::aboutToSave,
this, &QmlJSEditorPlugin::autoFormatOnSave);
return true; return true;
} }
@@ -234,9 +239,25 @@ void QmlJSEditorPlugin::renameUsages()
void QmlJSEditorPlugin::reformatFile() void QmlJSEditorPlugin::reformatFile()
{ {
if (m_currentDocument) { if (m_currentDocument) {
QTC_ASSERT(!m_currentDocument->isSemanticInfoOutdated(), return); QmlJS::Document::Ptr document = m_currentDocument->semanticInfo().document;
QmlJS::Snapshot snapshot = QmlJS::ModelManagerInterface::instance()->snapshot();
const QString &newText = QmlJS::reformat(m_currentDocument->semanticInfo().document); if (m_currentDocument->isSemanticInfoOutdated()) {
QmlJS::Document::MutablePtr latestDocument;
const QString fileName = m_currentDocument->filePath().toString();
latestDocument = snapshot.documentFromSource(QString::fromUtf8(m_currentDocument->contents()),
fileName,
QmlJS::ModelManagerInterface::guessLanguageOfFile(fileName));
latestDocument->parseQml();
snapshot.insert(latestDocument);
document = latestDocument;
}
if (!document->isParsedCorrectly())
return;
const QString &newText = QmlJS::reformat(document);
QTextCursor tc(m_currentDocument->document()); QTextCursor tc(m_currentDocument->document());
tc.movePosition(QTextCursor::Start); tc.movePosition(QTextCursor::Start);
tc.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); tc.movePosition(QTextCursor::End, QTextCursor::KeepAnchor);
@@ -296,4 +317,25 @@ void QmlJSEditorPlugin::checkCurrentEditorSemanticInfoUpToDate()
m_reformatFileAction->setEnabled(semanticInfoUpToDate); m_reformatFileAction->setEnabled(semanticInfoUpToDate);
} }
void QmlJSEditorPlugin::autoFormatOnSave(Core::IDocument *document)
{
if (!QmlJsEditingSettings::get().autoFormatOnSave())
return;
// Check that we are dealing with a QML/JS editor
if (document->id() != Constants::C_QMLJSEDITOR_ID)
return;
// Check if file is contained in the current project (if wished)
if (QmlJsEditingSettings::get().autoFormatOnlyCurrentProject()) {
const ProjectExplorer::Project *pro = ProjectExplorer::ProjectTree::currentProject();
if (!pro || !pro->files(ProjectExplorer::Project::SourceFiles).contains(
document->filePath().toString())) {
return;
}
}
reformatFile();
}
} // namespace QmlJSEditor } // namespace QmlJSEditor

View File

@@ -38,6 +38,7 @@ namespace Utils { class JsonSchemaManager; }
namespace Core { namespace Core {
class Command; class Command;
class ActionContainer; class ActionContainer;
class IDocument;
class IEditor; class IEditor;
} }
@@ -82,6 +83,7 @@ private:
void currentEditorChanged(Core::IEditor *editor); void currentEditorChanged(Core::IEditor *editor);
void runSemanticScan(); void runSemanticScan();
void checkCurrentEditorSemanticInfoUpToDate(); void checkCurrentEditorSemanticInfoUpToDate();
void autoFormatOnSave(Core::IDocument *document);
Core::Command *addToolAction(QAction *a, Core::Context &context, Core::Id id, Core::Command *addToolAction(QAction *a, Core::Context &context, Core::Id id,
Core::ActionContainer *c1, const QString &keySequence); Core::ActionContainer *c1, const QString &keySequence);

View File

@@ -24,7 +24,7 @@
****************************************************************************/ ****************************************************************************/
#include "quicktoolbar.h" #include "quicktoolbar.h"
#include "quicktoolbarsettingspage.h" #include "qmljseditingsettingspage.h"
#include <utils/changeset.h> #include <utils/changeset.h>
#include <qmleditorwidgets/contextpanewidget.h> #include <qmleditorwidgets/contextpanewidget.h>
@@ -114,7 +114,7 @@ QuickToolBar::~QuickToolBar()
void QuickToolBar::apply(TextEditor::TextEditorWidget *editorWidget, Document::Ptr document, const ScopeChain *scopeChain, Node *node, bool update, bool force) void QuickToolBar::apply(TextEditor::TextEditorWidget *editorWidget, Document::Ptr document, const ScopeChain *scopeChain, Node *node, bool update, bool force)
{ {
if (!QuickToolBarSettings::get().enableContextPane && !force && !update) { if (!QmlJsEditingSettings::get().enableContextPane() && !force && !update) {
contextWidget()->hide(); contextWidget()->hide();
return; return;
} }
@@ -219,10 +219,10 @@ void QuickToolBar::apply(TextEditor::TextEditorWidget *editorWidget, Document::P
if (!update) if (!update)
contextWidget()->setType(m_prototypes); contextWidget()->setType(m_prototypes);
if (!update) if (!update)
contextWidget()->activate(p3 , p1, p2, QuickToolBarSettings::get().pinContextPane); contextWidget()->activate(p3 , p1, p2, QmlJsEditingSettings::get().pinContextPane());
else else
contextWidget()->rePosition(p3 , p1, p2, QuickToolBarSettings::get().pinContextPane); contextWidget()->rePosition(p3 , p1, p2, QmlJsEditingSettings::get().pinContextPane());
contextWidget()->setOptions(QuickToolBarSettings::get().enableContextPane, QuickToolBarSettings::get().pinContextPane); contextWidget()->setOptions(QmlJsEditingSettings::get().enableContextPane(), QmlJsEditingSettings::get().pinContextPane());
contextWidget()->setPath(document->path()); contextWidget()->setPath(document->path());
contextWidget()->setProperties(&propertyReader); contextWidget()->setProperties(&propertyReader);
m_doc = document; m_doc = document;
@@ -404,16 +404,16 @@ void QuickToolBar::onPropertyRemovedAndChange(const QString &remove, const QStri
void QuickToolBar::onPinnedChanged(bool b) void QuickToolBar::onPinnedChanged(bool b)
{ {
QuickToolBarSettings settings = QuickToolBarSettings::get(); QmlJsEditingSettings settings = QmlJsEditingSettings::get();
settings.pinContextPane = b; settings.setPinContextPane(b);
settings.set(); settings.set();
} }
void QuickToolBar::onEnabledChanged(bool b) void QuickToolBar::onEnabledChanged(bool b)
{ {
QuickToolBarSettings settings = QuickToolBarSettings::get(); QmlJsEditingSettings settings = QmlJsEditingSettings::get();
settings.pinContextPane = b; settings.setPinContextPane(b);
settings.enableContextPane = b; settings.setEnableContextPane(b);
settings.set(); settings.set();
} }

View File

@@ -1,133 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "quicktoolbarsettingspage.h"
#include "qmljseditorconstants.h"
#include <qmljstools/qmljstoolsconstants.h>
#include <coreplugin/icore.h>
#include <QSettings>
#include <QTextStream>
#include <QCheckBox>
using namespace QmlJSEditor;
using namespace QmlJSEditor::Internal;
QuickToolBarSettings::QuickToolBarSettings()
: enableContextPane(false),
pinContextPane(false)
{}
void QuickToolBarSettings::set()
{
if (get() != *this)
toSettings(Core::ICore::settings());
}
void QuickToolBarSettings::fromSettings(QSettings *settings)
{
settings->beginGroup(QLatin1String(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML));
enableContextPane = settings->value(
QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANE_KEY), QVariant(false)).toBool();
pinContextPane = settings->value(
QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANEPIN_KEY), QVariant(false)).toBool();
settings->endGroup();
}
void QuickToolBarSettings::toSettings(QSettings *settings) const
{
settings->beginGroup(QLatin1String(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML));
settings->setValue(QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANE_KEY), enableContextPane);
settings->setValue(QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANEPIN_KEY), pinContextPane);
settings->endGroup();
}
bool QuickToolBarSettings::equals(const QuickToolBarSettings &other) const
{
return enableContextPane == other.enableContextPane
&& pinContextPane == other.pinContextPane;
}
QuickToolBarSettingsPageWidget::QuickToolBarSettingsPageWidget(QWidget *parent) :
QWidget(parent)
{
m_ui.setupUi(this);
}
QuickToolBarSettings QuickToolBarSettingsPageWidget::settings() const
{
QuickToolBarSettings ds;
ds.enableContextPane = m_ui.textEditHelperCheckBox->isChecked();
ds.pinContextPane = m_ui.textEditHelperCheckBoxPin->isChecked();
return ds;
}
void QuickToolBarSettingsPageWidget::setSettings(const QuickToolBarSettings &s)
{
m_ui.textEditHelperCheckBox->setChecked(s.enableContextPane);
m_ui.textEditHelperCheckBoxPin->setChecked(s.pinContextPane);
}
QuickToolBarSettings QuickToolBarSettings::get()
{
QuickToolBarSettings settings;
settings.fromSettings(Core::ICore::settings());
return settings;
}
QuickToolBarSettingsPage::QuickToolBarSettingsPage() :
m_widget(0)
{
setId("C.QmlToolbar");
setDisplayName(tr("Qt Quick ToolBar"));
setCategory(Constants::SETTINGS_CATEGORY_QML);
setDisplayCategory(QCoreApplication::translate("QmlJSEditor",
QmlJSEditor::Constants::SETTINGS_TR_CATEGORY_QML));
setCategoryIcon(Utils::Icon(QmlJSTools::Constants::SETTINGS_CATEGORY_QML_ICON));
}
QWidget *QuickToolBarSettingsPage::widget()
{
if (!m_widget) {
m_widget = new QuickToolBarSettingsPageWidget;
m_widget->setSettings(QuickToolBarSettings::get());
}
return m_widget;
}
void QuickToolBarSettingsPage::apply()
{
if (!m_widget) // page was never shown
return;
m_widget->settings().set();
}
void QuickToolBarSettingsPage::finish()
{
delete m_widget;
}