diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2016-10-07 12:15:33 +0200 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@theqtcompany.com> | 2016-10-10 07:13:03 +0000 |
commit | fafb99d9101cdb13eff028e3e1ecbe84d7ea70ad (patch) | |
tree | 74f6f8d88ddb984b166899be4702b5655e740d7d /src/plugins/qmldesigner/shortcutmanager.cpp | |
parent | bcdc41b42b50374d37a4dcb895bef6b9e80a7fb3 (diff) |
QmlDesigner: Reformat .ui.qml files when saving
The feature can be turned off using a setting,
if there are serious issues with the reformating.
Change-Id: If90475af2db8aaade8bc52af0fb7cd14bfa1c121
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner/shortcutmanager.cpp')
-rw-r--r-- | src/plugins/qmldesigner/shortcutmanager.cpp | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/plugins/qmldesigner/shortcutmanager.cpp b/src/plugins/qmldesigner/shortcutmanager.cpp index c17740c670..d06f32c118 100644 --- a/src/plugins/qmldesigner/shortcutmanager.cpp +++ b/src/plugins/qmldesigner/shortcutmanager.cpp @@ -25,6 +25,8 @@ #include "shortcutmanager.h" +#include "designersettings.h" + #include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/actionmanager/command.h> @@ -33,7 +35,13 @@ #include <coreplugin/editormanager/documentmodel.h> #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/coreconstants.h> +#include <qmljseditor/qmljseditorconstants.h> +#include <qmljseditor/qmljseditordocument.h> + #include <utils/hostosinfo.h> +#include <utils/qtcassert.h> + +#include <qmljs/qmljsreformatter.h> #include "qmldesignerconstants.h" #include "qmldesignerplugin.h" @@ -106,13 +114,29 @@ void ShortCutManager::registerActions(const Core::Context &qmlDesignerMainContex SLOT(toggleRightSidebar())); // Revert to saved - QObject *em = Core::EditorManager::instance(); + Core::EditorManager *em = Core::EditorManager::instance(); Core::ActionManager::registerAction(&m_revertToSavedAction,Core::Constants::REVERTTOSAVED, qmlDesignerMainContext); connect(&m_revertToSavedAction, SIGNAL(triggered()), em, SLOT(revertToSaved())); //Save Core::ActionManager::registerAction(&m_saveAction, Core::Constants::SAVE, qmlDesignerMainContext); - connect(&m_saveAction, SIGNAL(triggered()), em, SLOT(saveDocument())); + connect(&m_saveAction, &QAction::triggered, em, [em] { + DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); + /* Reformat document if we have a .ui.qml file */ + if (settings.value(DesignerSettingsKey::REFORMAT_UI_QML_FILES).toBool() + && em->currentDocument()->filePath().toString().endsWith(".ui.qml")) + if (QmlJSEditor::QmlJSEditorDocument *document + = qobject_cast<QmlJSEditor::QmlJSEditorDocument *>(em->currentDocument())) { + const QString &newText = QmlJS::reformat(document->semanticInfo().document); + QTextCursor tc(document->document()); + tc.movePosition(QTextCursor::Start); + tc.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + tc.insertText(newText); + } + em->saveDocument(); + }); + + //Save As Core::ActionManager::registerAction(&m_saveAsAction, Core::Constants::SAVEAS, qmlDesignerMainContext); |