From 6594529f3b45f514e4637a3a8536517075e14095 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Tue, 10 Mar 2009 19:35:17 +0100 Subject: [PATCH] Fixes: debugger: easy access to source files and modules from the context menu --- src/plugins/debugger/debuggermanager.cpp | 11 +++++++ src/plugins/debugger/debuggermanager.h | 1 + src/plugins/debugger/moduleswindow.cpp | 35 ++++++++++++++++++---- src/plugins/debugger/moduleswindow.h | 5 ++-- src/plugins/debugger/sourcefileswindow.cpp | 28 ++++++++++++----- src/plugins/debugger/sourcefileswindow.h | 2 +- 6 files changed, 65 insertions(+), 17 deletions(-) diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index 98182dd8f30..79cc59c6010 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -260,6 +260,8 @@ void DebuggerManager::init() this, SLOT(loadSymbols(QString))); connect(modulesView, SIGNAL(loadAllSymbolsRequested()), this, SLOT(loadAllSymbols())); + connect(modulesView, SIGNAL(fileOpenRequested(QString)), + this, SLOT(fileOpen(QString))); // Source Files //m_sourceFilesHandler = new SourceFilesHandler; @@ -268,6 +270,8 @@ void DebuggerManager::init() //sourceFileView->setModel(m_stackHandler->stackModel()); connect(sourceFilesView, SIGNAL(reloadSourceFilesRequested()), this, SLOT(reloadSourceFiles())); + connect(sourceFilesView, SIGNAL(fileOpenRequested(QString)), + this, SLOT(fileOpen(QString))); // Registers QAbstractItemView *registerView = @@ -1390,6 +1394,13 @@ void DebuggerManager::gotoLocation(const QString &fileName, int line, emit gotoLocationRequested(fileName, line, setMarker); } +void DebuggerManager::fileOpen(const QString &fileName) +{ + // connected to the plugin + emit gotoLocationRequested(fileName, 1, false); +} + + ////////////////////////////////////////////////////////////////////// // diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h index bee10133bf9..af89e332b45 100644 --- a/src/plugins/debugger/debuggermanager.h +++ b/src/plugins/debugger/debuggermanager.h @@ -245,6 +245,7 @@ public slots: QVariant sessionValue(const QString &name); void gotoLocation(const QString &file, int line, bool setLocationMarker); + void fileOpen(const QString &file); void resetLocation(); void interruptDebuggingRequest(); diff --git a/src/plugins/debugger/moduleswindow.cpp b/src/plugins/debugger/moduleswindow.cpp index a24ab4df51b..c8e7e41625e 100644 --- a/src/plugins/debugger/moduleswindow.cpp +++ b/src/plugins/debugger/moduleswindow.cpp @@ -48,6 +48,16 @@ ModulesWindow::ModulesWindow(QWidget *parent) setAlternatingRowColors(true); setRootIsDecorated(false); setIconSize(QSize(10, 10)); + + connect(this, SIGNAL(activated(QModelIndex)), + this, SLOT(moduleActivated(QModelIndex))); +} + +void ModulesWindow::moduleActivated(const QModelIndex &index) +{ + qDebug() << "ACTIVATED: " << index.row() << index.column() + << model()->data(index); + emit fileOpenRequested(model()->data(index).toString()); } void ModulesWindow::resizeEvent(QResizeEvent *event) @@ -73,19 +83,30 @@ void ModulesWindow::contextMenuEvent(QContextMenuEvent *ev) QString name = model()->data(index).toString(); QMenu menu; - QAction *act0 = new QAction("Update module list", &menu); - QAction *act1 = new QAction("Adjust column widths to contents", &menu); - QAction *act2 = new QAction("Always adjust column widths to contents", &menu); + QAction *act0 = new QAction(tr("Update module list"), &menu); + QAction *act1 = new QAction(tr("Adjust column widths to contents"), &menu); + QAction *act2 = new QAction(tr("Always adjust column widths to contents"), &menu); act2->setCheckable(true); act2->setChecked(m_alwaysResizeColumnsToContents); - QAction *act3 = new QAction("Show source files for module " + name, &menu); - QAction *act4 = new QAction("Load symbols for all modules", &menu); - QAction *act5 = new QAction("Load symbols for module " + name, &menu); + QAction *act3 = new QAction(tr("Show source files for module \"%1\"").arg(name), + &menu); + QAction *act4 = new QAction(tr("Load symbols for all modules"), &menu); + QAction *act5 = 0; + QAction *act6 = 0; + if (name.isEmpty()) { + act5 = new QAction(tr("Load symbols for module"), &menu); + act6 = new QAction(tr("Edit file"), &menu); + } else { + act5 = new QAction(tr("Load symbols for module \"%1\"").arg(name), &menu); + act6 = new QAction(tr("Edit file \"%1\"").arg(name), &menu); + } act5->setDisabled(name.isEmpty()); + act6->setDisabled(name.isEmpty()); menu.addAction(act0); menu.addAction(act4); menu.addAction(act5); + menu.addAction(act6); menu.addSeparator(); menu.addAction(act1); menu.addAction(act2); @@ -104,6 +125,8 @@ void ModulesWindow::contextMenuEvent(QContextMenuEvent *ev) emit loadAllSymbolsRequested(); else if (act == act5) emit loadSymbolsRequested(name); + else if (act == act6) + emit fileOpenRequested(name); } void ModulesWindow::resizeColumnsToContents() diff --git a/src/plugins/debugger/moduleswindow.h b/src/plugins/debugger/moduleswindow.h index ed64c38fd09..a2686141961 100644 --- a/src/plugins/debugger/moduleswindow.h +++ b/src/plugins/debugger/moduleswindow.h @@ -47,17 +47,18 @@ signals: void displaySourceRequested(const QString &modulesName); void loadSymbolsRequested(const QString &modulesName); void loadAllSymbolsRequested(); + void fileOpenRequested(QString); public slots: void resizeColumnsToContents(); void setAlwaysResizeColumnsToContents(bool on); + void moduleActivated(const QModelIndex &); -protected: +private: void resizeEvent(QResizeEvent *ev); void contextMenuEvent(QContextMenuEvent *ev); void setModel(QAbstractItemModel *model); -private: bool m_alwaysResizeColumnsToContents; }; diff --git a/src/plugins/debugger/sourcefileswindow.cpp b/src/plugins/debugger/sourcefileswindow.cpp index 91853c357af..1f90bc0d818 100644 --- a/src/plugins/debugger/sourcefileswindow.cpp +++ b/src/plugins/debugger/sourcefileswindow.cpp @@ -178,28 +178,40 @@ SourceFilesWindow::SourceFilesWindow(QWidget *parent) this, SLOT(sourceFileActivated(QModelIndex))); } -SourceFilesWindow::~SourceFilesWindow() -{ -} - void SourceFilesWindow::sourceFileActivated(const QModelIndex &index) { - qDebug() << "ACTIVATED: " << index.row() << index.column(); + qDebug() << "ACTIVATED: " << index.row() << index.column() + << model()->data(index); + emit fileOpenRequested(model()->data(index).toString()); } void SourceFilesWindow::contextMenuEvent(QContextMenuEvent *ev) { + QModelIndex index = indexAt(ev->pos()); + index = index.sibling(index.row(), 0); + QString name = model()->data(index).toString(); + QMenu menu; QAction *act1 = new QAction(tr("Reload data"), &menu); //act1->setCheckable(true); - + QAction *act2 = 0; + if (name.isEmpty()) { + act2 = new QAction(tr("Open file"), &menu); + act2->setEnabled(false); + } else { + act2 = new QAction(tr("Open file \"%1\"'").arg(name), &menu); + act2->setEnabled(true); + } + menu.addAction(act1); + menu.addAction(act2); QAction *act = menu.exec(ev->globalPos()); - if (act == act1) { + if (act == act1) emit reloadSourceFilesRequested(); - } + else if (act == act2) + emit fileOpenRequested(name); } void SourceFilesWindow::setSourceFiles(const QMap<QString, QString> &sourceFiles) diff --git a/src/plugins/debugger/sourcefileswindow.h b/src/plugins/debugger/sourcefileswindow.h index cf630c00295..5356878923f 100644 --- a/src/plugins/debugger/sourcefileswindow.h +++ b/src/plugins/debugger/sourcefileswindow.h @@ -50,13 +50,13 @@ class SourceFilesWindow : public QTreeView public: SourceFilesWindow(QWidget *parent = 0); - ~SourceFilesWindow(); void setSourceFiles(const QMap<QString, QString> &sourceFiles); void removeAll(); signals: void reloadSourceFilesRequested(); + void fileOpenRequested(QString file); private slots: void sourceFileActivated(const QModelIndex &index); -- GitLab