diff --git a/src/plugins/qmldesigner/components/propertyeditor/siblingcombobox.cpp b/src/plugins/qmldesigner/components/propertyeditor/siblingcombobox.cpp index 4e6968b8bb92ec3ed3b3e2f8402b2bd93e72ca4f..7b6e0e69e06f76931ef64a06af573b75196fbb76 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/siblingcombobox.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/siblingcombobox.cpp @@ -75,11 +75,12 @@ void SiblingComboBox::setup() clear(); foreach (const QmlItemNode &itemNode, m_itemList) { - if (itemNode.isValid()) + if (itemNode.isValid()) { if (itemNode.id().isEmpty()) addItem(itemNode.simplfiedTypeName()); else addItem(itemNode.id()); + } } QmlItemNode parent(m_itemNode.instanceParent().toQmlItemNode()); diff --git a/src/plugins/qmldesigner/qmldesignerconstants.h b/src/plugins/qmldesigner/qmldesignerconstants.h index 323dfb2192adde2d6b3b0ed02b16f444af0d8ca4..1c27e94cb617e6cd5b73c35575fe094f937a3c46 100644 --- a/src/plugins/qmldesigner/qmldesignerconstants.h +++ b/src/plugins/qmldesigner/qmldesignerconstants.h @@ -35,18 +35,21 @@ namespace QmlDesigner { namespace Constants { -const char * const DELETE = "QmlDesigner.Delete"; +const char * const DELETE = "QmlDesigner.Delete"; // context -const char * const C_DESIGN_MODE = "QmlDesigner::DesignMode"; -const char * const C_FORMEDITOR = "QmlDesigner::FormEditor"; +const char * const C_DESIGN_MODE = "QmlDesigner::DesignMode"; +const char * const C_FORMEDITOR = "QmlDesigner::FormEditor"; + +// actions +const char * const SWITCH_TEXT_DESIGN = "QmlDesigner.SwitchTextDesign"; // mode -const char * const DESIGN_MODE_NAME = "Design"; -const int DESIGN_MODE_PRIORITY = Core::Constants::P_MODE_EDIT - 1; +const char * const DESIGN_MODE_NAME = "Design"; +const int DESIGN_MODE_PRIORITY = Core::Constants::P_MODE_EDIT - 1; // Wizard type -const char * const FORM_MIMETYPE = "application/x-qmldesigner"; +const char * const FORM_MIMETYPE = "application/x-qmldesigner"; namespace Internal { enum { debug = 0 }; diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index c70c72d77fbb0d9c6dd4aef3833602c2ce371b51..fbf5bcc49e4ed2eb804e46cfba1747a25e286571 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -34,6 +34,11 @@ #include "pluginmanager.h" #include "settingspage.h" +#include <qmljseditor/qmljseditorconstants.h> + +#include <coreplugin/modemanager.h> +#include <coreplugin/actionmanager/actionmanager.h> +#include <coreplugin/actionmanager/command.h> #include <coreplugin/icore.h> #include <coreplugin/dialogs/iwizard.h> #include <coreplugin/editormanager/ieditorfactory.h> @@ -86,6 +91,17 @@ bool BauhausPlugin::initialize(const QStringList & /*arguments*/, QString *error const int uid = core->uniqueIDManager()->uniqueIdentifier(QLatin1String(QmlDesigner::Constants::C_FORMEDITOR)); const QList<int> context = QList<int>() << uid; + const QList<int> switchContext = QList<int() << uid + << core->uniqueIDManager()->uniqueIdentifier(QmlJSEditor::Constants::C_QMLJSEDITOR_ID); + + Core::ActionManager *am = core->actionManager(); + + QAction *switchAction = new QAction(tr("Switch Text/Design"), this); + Core::Command *command = am->registerAction(switchAction, QmlDesigner::Constants::SWITCH_TEXT_DESIGN, switchContext); + command->setDefaultKeySequence(QKeySequence(Qt::Key_F4)); + + connect(switchAction, SIGNAL(triggered()), this, SLOT(switchTextDesign())); + m_designerCore = new QmlDesigner::IntegrationCore; m_pluginInstance = this; @@ -116,6 +132,24 @@ BauhausPlugin *BauhausPlugin::pluginInstance() return m_pluginInstance; } +void BauhausPlugin::switchTextDesign() +{ + Core::ModeManager *modeManager = Core::ModeManager::instance(); + + if (modeManager->currentMode() == Core::Constants::MODE_EDIT) { + + } else if (modeManager->currentMode() == Core::Constants::MODE_DESIGN) { + + } + + Core::IEditor *editor = editorManager->currentEditor(); + QString otherFile = correspondingHeaderOrSource(editor->file()->fileName()); + if (!otherFile.isEmpty()) { + editorManager->openEditor(otherFile); + editorManager->ensureEditorManagerVisible(); + } +} + DesignerSettings BauhausPlugin::settings() const { return m_settings; diff --git a/src/plugins/qmldesigner/qmldesignerplugin.h b/src/plugins/qmldesigner/qmldesignerplugin.h index 3ef88fbae0bd7972bc1b9b6878a5ed5e68591ded..2146573b78a0b69ac42a0aed24bbd4237dd5e5f6 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.h +++ b/src/plugins/qmldesigner/qmldesignerplugin.h @@ -65,6 +65,9 @@ public: DesignerSettings settings() const; void setSettings(const DesignerSettings &s); +private slots: + void switchTextDesign(); + private: QmlDesigner::IntegrationCore *m_designerCore; static BauhausPlugin *m_pluginInstance;