From 666b4542956fdfc77a99c10685b422be6933f0dc Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 25 Jan 2010 15:22:08 +0100 Subject: [PATCH] Add "Select All" menu item to the design mode --- .../integration/designdocumentcontroller.cpp | 14 ++++++++++++++ .../integration/designdocumentcontroller.h | 1 + src/plugins/qmldesigner/designmode.cpp | 5 +++++ src/plugins/qmldesigner/designmodewidget.cpp | 13 +++++++++++++ src/plugins/qmldesigner/designmodewidget.h | 3 +++ 5 files changed, 36 insertions(+) diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp index 0060b2cfba5..08a68a47132 100644 --- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp @@ -663,6 +663,20 @@ void DesignDocumentController::paste() } } +void DesignDocumentController::selectAll() +{ + if (!m_d->model) + return; + + DesignDocumentControllerView view; + m_d->model->attachView(&view); + + + QList allNodesExceptRootNode(view.allModelNodes()); + allNodesExceptRootNode.removeOne(view.rootModelNode()); + view.setSelectedModelNodes(allNodesExceptRootNode); +} + void DesignDocumentController::showError(const QString &message, QWidget *parent) const { if (!parent) diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.h b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.h index 355cf79e00c..c4488ec884f 100644 --- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.h +++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.h @@ -110,6 +110,7 @@ public slots: void copySelected(); void cutSelected(); void paste(); + void selectAll(); void togglePreview(bool visible); void toggleWithDebugPreview(bool visible); diff --git a/src/plugins/qmldesigner/designmode.cpp b/src/plugins/qmldesigner/designmode.cpp index 89722b48aff..ffa1578e238 100644 --- a/src/plugins/qmldesigner/designmode.cpp +++ b/src/plugins/qmldesigner/designmode.cpp @@ -147,6 +147,11 @@ DesignMode::DesignMode() : command->setDefaultKeySequence(QKeySequence::Paste); editMenu->addAction(command, Core::Constants::G_EDIT_COPYPASTE); + command = actionManager->registerAction(m_mainWidget->selectAllAction(), + Core::Constants::SELECTALL, context()); + command->setDefaultKeySequence(QKeySequence::SelectAll); + editMenu->addAction(command, Core::Constants::G_EDIT_SELECTALL); + // add second shortcut to trigger delete QAction *deleteAction = new QAction(m_mainWidget); deleteAction->setShortcut(QKeySequence(QLatin1String("Backspace"))); diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index ab8e3f58c25..30a2011c982 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -497,6 +497,8 @@ DesignModeWidget::DesignModeWidget(DesignMode *designMode, QWidget *parent) : connect(m_copyAction, SIGNAL(triggered()), this, SLOT(copySelected())); m_pasteAction = new Utils::ParameterAction(tr("&Paste"), tr("Paste \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); connect(m_pasteAction, SIGNAL(triggered()), this, SLOT(paste())); + m_selectAllAction = new Utils::ParameterAction(tr("Select &All"), tr("Select All \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); + connect(m_selectAllAction, SIGNAL(triggered()), this, SLOT(selectAll())); QLabel *defaultBackground = new QLabel(tr("Open/Create a qml file first.")); defaultBackground->setAlignment(Qt::AlignCenter); @@ -598,6 +600,11 @@ QAction *DesignModeWidget::pasteAction() const return m_pasteAction; } +QAction *DesignModeWidget::selectAllAction() const +{ + return m_selectAllAction; +} + DesignMode *DesignModeWidget::designMode() const { return m_designMode; @@ -639,6 +646,12 @@ void DesignModeWidget::paste() m_currentDocumentWidget->document()->paste(); } +void DesignModeWidget::selectAll() +{ + if (m_currentDocumentWidget) + m_currentDocumentWidget->document()->selectAll(); +} + void DesignModeWidget::undoAvailable(bool isAvailable) { DesignDocumentController *documentController = qobject_cast(sender()); diff --git a/src/plugins/qmldesigner/designmodewidget.h b/src/plugins/qmldesigner/designmodewidget.h index e80fb8c1ffe..964d7081656 100644 --- a/src/plugins/qmldesigner/designmodewidget.h +++ b/src/plugins/qmldesigner/designmodewidget.h @@ -172,6 +172,7 @@ public: QAction *cutAction() const; QAction *copyAction() const; QAction *pasteAction() const; + QAction *selectAllAction() const; DesignMode *designMode() const; @@ -182,6 +183,7 @@ private slots: void cutSelected(); void copySelected(); void paste(); + void selectAll(); void undoAvailable(bool isAvailable); void redoAvailable(bool isAvailable); @@ -202,6 +204,7 @@ private: QAction *m_cutAction; QAction *m_copyAction; QAction *m_pasteAction; + QAction *m_selectAllAction; bool m_syncWithTextEdit; };