aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/shortcutmanager.cpp
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2016-10-07 12:15:33 +0200
committerThomas Hartmann <Thomas.Hartmann@theqtcompany.com>2016-10-10 07:13:03 +0000
commitfafb99d9101cdb13eff028e3e1ecbe84d7ea70ad (patch)
tree74f6f8d88ddb984b166899be4702b5655e740d7d /src/plugins/qmldesigner/shortcutmanager.cpp
parentbcdc41b42b50374d37a4dcb895bef6b9e80a7fb3 (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.cpp28
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);