From 7f3ac4614b2756975283e4268fcb73af8fbb3d2d Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Fri, 3 Apr 2009 15:46:40 +0200
Subject: [PATCH] debugger: use a new action for "executing a line"

---
 src/plugins/debugger/debuggeractions.cpp      |  4 +++
 src/plugins/debugger/debuggeractions.h        |  1 +
 src/plugins/debugger/debuggermanager.cpp      | 14 +++++---
 src/plugins/debugger/debuggermanager.h        |  2 ++
 src/plugins/debugger/debuggeroutputwindow.cpp | 36 ++++---------------
 src/plugins/debugger/debuggeroutputwindow.h   |  4 ---
 6 files changed, 23 insertions(+), 38 deletions(-)

diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index 6d90a3f7bed..95f9c3b1104 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -314,6 +314,10 @@ DebuggerSettings *theDebuggerSettings()
     item->setDefaultValue(20);
     instance->insertItem(MaximalStackDepth, item);
 
+    item = new SavedAction(instance);
+    item->setText(QObject::tr("Execute line"));
+    instance->insertItem(ExecuteCommand, item);
+
     return instance;
 }
 
diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h
index 95167153e18..31e04199f53 100644
--- a/src/plugins/debugger/debuggeractions.h
+++ b/src/plugins/debugger/debuggeractions.h
@@ -75,6 +75,7 @@ enum DebuggerActionCode
     GdbLocation,
     GdbEnvironment,
     GdbScriptFile,
+    ExecuteCommand,
 
     // Stack
     MaximalStackDepth,
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index 078692f7312..ea973c0c692 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -358,9 +358,6 @@ void DebuggerManager::init()
     m_watchAction->setText(tr("Add to Watch Window"));
 
     // For usuage hints oin focus{In,Out}
-    //connect(m_outputWindow, SIGNAL(statusMessageRequested(QString,int)),
-    //    this, SLOT(showStatusMessage(QString,int)));
-
     connect(m_continueAction, SIGNAL(triggered()),
         this, SLOT(continueExec()));
 
@@ -401,8 +398,8 @@ void DebuggerManager::init()
     connect(m_statusTimer, SIGNAL(timeout()),
         this, SLOT(clearStatusMessage()));
 
-    connect(m_outputWindow, SIGNAL(commandExecutionRequested(QString)),
-        this, SLOT(executeDebuggerCommand(QString)));
+    connect(theDebuggerAction(ExecuteCommand), SIGNAL(triggered()),
+        this, SLOT(executeDebuggerCommand()));
 
 
     m_breakDock = createDockForWidget(m_breakWindow);
@@ -971,6 +968,7 @@ void DebuggerManager::assignValueInDebugger()
             assignValueInDebugger(str.left(i), str.mid(i + 1));
     }
 }
+
 void DebuggerManager::assignValueInDebugger(const QString &expr, const QString &value)
 {
     QTC_ASSERT(m_engine, return);
@@ -1036,6 +1034,12 @@ void DebuggerManager::nextIExec()
     m_engine->nextIExec();
 }
 
+void DebuggerManager::executeDebuggerCommand()
+{
+    if (QAction *action = qobject_cast<QAction *>(sender()))
+        executeDebuggerCommand(action->data().toString());
+}
+
 void DebuggerManager::executeDebuggerCommand(const QString &command)
 {
     if (Debugger::Constants::Internal::debug)
diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h
index fb6bc9e36cf..77150b452b2 100644
--- a/src/plugins/debugger/debuggermanager.h
+++ b/src/plugins/debugger/debuggermanager.h
@@ -238,6 +238,8 @@ public slots:
 
     void assignValueInDebugger();
     void assignValueInDebugger(const QString &expr, const QString &value);
+
+    void executeDebuggerCommand();
     void executeDebuggerCommand(const QString &command);
 
     void showStatusMessage(const QString &msg, int timeout = -1); // -1 forever
diff --git a/src/plugins/debugger/debuggeroutputwindow.cpp b/src/plugins/debugger/debuggeroutputwindow.cpp
index 11b2a1fb0a3..b9d3fc9e3d2 100644
--- a/src/plugins/debugger/debuggeroutputwindow.cpp
+++ b/src/plugins/debugger/debuggeroutputwindow.cpp
@@ -84,6 +84,8 @@ public:
         menu->addAction(m_clearContentsAction);
         //menu->addAction(m_saveContentsAction);
         addContextActions(menu);
+        theDebuggerAction(ExecuteCommand)->setData(textCursor().block().text());
+        menu->addAction(theDebuggerAction(ExecuteCommand));
         menu->addSeparator();
         menu->addAction(theDebuggerAction(SettingsDialog));
         menu->exec(ev->globalPos());
@@ -101,35 +103,20 @@ class InputPane : public DebuggerPane
 {
     Q_OBJECT
 public:
-    InputPane(QWidget *parent) : DebuggerPane(parent)
-    {
-        m_commandExecutionAction = new QAction(this);
-        m_commandExecutionAction->setText("Execute line");
-        m_commandExecutionAction->setEnabled(true);
-        //m_commandExecutionAction->setShortcut
-       //     (Qt::ControlModifier + Qt::Key_Return);
-
-        connect(m_commandExecutionAction, SIGNAL(triggered(bool)),
-            this, SLOT(executeCommand()));
-    }
+    InputPane(QWidget *parent)
+        : DebuggerPane(parent)
+    {}
 
 signals:
-    void commandExecutionRequested(const QString &);
     void clearContentsRequested();
     void statusMessageRequested(const QString &, int);
     void commandSelected(int);
 
-private slots:
-    void executeCommand()
-    {
-        emit commandExecutionRequested(textCursor().block().text());
-    }
-
 private:
     void keyPressEvent(QKeyEvent *ev)
     {
         if (ev->modifiers() == Qt::ControlModifier && ev->key() == Qt::Key_Return)
-            emit commandExecutionRequested(textCursor().block().text());
+            theDebuggerAction(ExecuteCommand)->trigger(textCursor().block().text());
         else if (ev->modifiers() == Qt::ControlModifier && ev->key() == Qt::Key_R)
             emit clearContentsRequested();
         else
@@ -157,7 +144,7 @@ private:
 
     void addContextActions(QMenu *menu)
     {
-       menu->addAction(m_commandExecutionAction);
+       menu->addAction(theDebuggerAction(ExecuteCommand));
     }
     
     void focusInEvent(QFocusEvent *ev)  
@@ -171,8 +158,6 @@ private:
         emit statusMessageRequested(QString(), -1);
         QPlainTextEdit::focusOutEvent(ev);
     }
-
-    QAction *m_commandExecutionAction;
 };
 
 
@@ -252,19 +237,12 @@ DebuggerOutputWindow::DebuggerOutputWindow(QWidget *parent)
     aggregate->add(new BaseTextFind(m_inputText));
 #endif
 
-    connect(m_inputText, SIGNAL(commandExecutionRequested(QString)),
-       this, SIGNAL(commandExecutionRequested(QString)));
     connect(m_inputText, SIGNAL(statusMessageRequested(QString,int)),
        this, SIGNAL(statusMessageRequested(QString,int)));
     connect(m_inputText, SIGNAL(commandSelected(int)),
        m_combinedText, SLOT(gotoResult(int)));
 };
 
-void DebuggerOutputWindow::onReturnPressed()
-{
-    emit commandExecutionRequested(m_commandEdit->text());
-}
-
 void DebuggerOutputWindow::showOutput(const QString &prefix, const QString &output)
 {
     if (output.isEmpty())
diff --git a/src/plugins/debugger/debuggeroutputwindow.h b/src/plugins/debugger/debuggeroutputwindow.h
index 50df8f10177..904e0456199 100644
--- a/src/plugins/debugger/debuggeroutputwindow.h
+++ b/src/plugins/debugger/debuggeroutputwindow.h
@@ -65,10 +65,6 @@ public slots:
 signals:
     void showPage();
     void statusMessageRequested(const QString &msg, int);
-    void commandExecutionRequested(const QString &cmd);
-
-private slots:
-    void onReturnPressed();
 
 private:
     QPlainTextEdit *m_combinedText;  // combined input/output
-- 
GitLab