GUI: resolved issue #110 (Attach Dialog + Detach menu option) + updated calculator icon
This commit is contained in:
parent
520d063a79
commit
b8f1ebbb30
|
@ -0,0 +1,75 @@
|
|||
#include "AttachDialog.h"
|
||||
#include "ui_AttachDialog.h"
|
||||
|
||||
AttachDialog::AttachDialog(QWidget* parent) : QDialog(parent), ui(new Ui::AttachDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
setWindowFlags(Qt::Dialog | Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::MSWindowsFixedSizeDialogHint);
|
||||
setFixedSize(this->size()); //fixed size
|
||||
|
||||
//setup actions
|
||||
mAttachAction = new QAction("Attach", this);
|
||||
mAttachAction->setShortcut(QKeySequence("enter"));
|
||||
connect(mAttachAction, SIGNAL(triggered()), this, SLOT(on_btnAttach_clicked()));
|
||||
|
||||
mRefreshAction = new QAction("Refresh", this);
|
||||
mRefreshAction->setShortcut(QKeySequence("F5"));
|
||||
connect(mRefreshAction, SIGNAL(triggered()), this, SLOT(refresh()));
|
||||
this->addAction(mRefreshAction);
|
||||
|
||||
|
||||
//setup process list
|
||||
int charwidth = ui->listProcesses->getCharWidth();
|
||||
ui->listProcesses->addColumnAt(charwidth * sizeof(int) * 2 + 8, "PID", true);
|
||||
ui->listProcesses->addColumnAt(0, "Path", true);
|
||||
connect(ui->listProcesses, SIGNAL(enterPressedSignal()), this, SLOT(on_btnAttach_clicked()));
|
||||
connect(ui->listProcesses, SIGNAL(doubleClickedSignal()), this, SLOT(on_btnAttach_clicked()));
|
||||
connect(ui->listProcesses, SIGNAL(contextMenuSignal(QPoint)), this, SLOT(processListContextMenu(QPoint)));
|
||||
|
||||
refresh();
|
||||
}
|
||||
|
||||
AttachDialog::~AttachDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void AttachDialog::refresh()
|
||||
{
|
||||
ui->listProcesses->setRowCount(0);
|
||||
ui->listProcesses->setTableOffset(0);
|
||||
DBGPROCESSINFO* entries;
|
||||
int count;
|
||||
if(!DbgFunctions()->GetProcessList(&entries, &count))
|
||||
return;
|
||||
ui->listProcesses->setRowCount(count);
|
||||
for(int i = 0; i < count; i++)
|
||||
{
|
||||
ui->listProcesses->setCellContent(i, 0, QString().sprintf("%.8X", entries[i].dwProcessId));
|
||||
ui->listProcesses->setCellContent(i, 1, QString(entries[i].szExeFile));
|
||||
}
|
||||
ui->listProcesses->setSingleSelection(0);
|
||||
ui->listProcesses->reloadData();
|
||||
}
|
||||
|
||||
void AttachDialog::on_btnAttach_clicked()
|
||||
{
|
||||
QString pid = ui->listProcesses->getCellContent(ui->listProcesses->getInitialSelection(), 0);
|
||||
DbgCmdExec(QString("attach " + pid).toUtf8().constData());
|
||||
accept();
|
||||
}
|
||||
|
||||
void AttachDialog::processListContextMenu(const QPoint & pos)
|
||||
{
|
||||
QMenu* wMenu = new QMenu(this); //create context menu
|
||||
wMenu->addAction(mAttachAction);
|
||||
wMenu->addAction(mRefreshAction);
|
||||
QMenu wCopyMenu("&Copy", this);
|
||||
ui->listProcesses->setupCopyMenu(&wCopyMenu);
|
||||
if(wCopyMenu.actions().length())
|
||||
{
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(&wCopyMenu);
|
||||
}
|
||||
wMenu->exec(mapToGlobal(pos)); //execute context menu
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
#ifndef ATTACHDIALOG_H
|
||||
#define ATTACHDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class AttachDialog;
|
||||
}
|
||||
|
||||
class AttachDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit AttachDialog(QWidget* parent = 0);
|
||||
~AttachDialog();
|
||||
|
||||
private slots:
|
||||
void on_btnAttach_clicked();
|
||||
void refresh();
|
||||
void processListContextMenu(const QPoint & pos);
|
||||
|
||||
private:
|
||||
Ui::AttachDialog* ui;
|
||||
QAction* mAttachAction;
|
||||
QAction* mRefreshAction;
|
||||
};
|
||||
|
||||
#endif // ATTACHDIALOG_H
|
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>AttachDialog</class>
|
||||
<widget class="QDialog" name="AttachDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>611</width>
|
||||
<height>293</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Attach</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="../../resource.qrc">
|
||||
<normaloff>:/icons/images/attach.png</normaloff>:/icons/images/attach.png</iconset>
|
||||
</property>
|
||||
<widget class="StdTable" name="listProcesses">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>611</width>
|
||||
<height>251</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Sunken</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="btnAttach">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>450</x>
|
||||
<y>260</y>
|
||||
<width>75</width>
|
||||
<height>23</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>&Attach</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="btnCancel">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>530</x>
|
||||
<y>260</y>
|
||||
<width>75</width>
|
||||
<height>23</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>&Cancel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>StdTable</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>StdTable.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources>
|
||||
<include location="../../resource.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>btnCancel</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>AttachDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>561</x>
|
||||
<y>272</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>551</x>
|
||||
<y>255</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
|
@ -156,6 +156,8 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
|
|||
connect(ui->actionCheckUpdates, SIGNAL(triggered()), this, SLOT(checkUpdates()));
|
||||
connect(ui->actionCallStack, SIGNAL(triggered()), this, SLOT(displayCallstack()));
|
||||
connect(ui->actionDonate, SIGNAL(triggered()), this, SLOT(donate()));
|
||||
connect(ui->actionAttach, SIGNAL(triggered()), this, SLOT(displayAttach()));
|
||||
connect(ui->actionDetach, SIGNAL(triggered()), this, SLOT(detach()));
|
||||
|
||||
connect(Bridge::getBridge(), SIGNAL(updateWindowTitle(QString)), this, SLOT(updateWindowTitleSlot(QString)));
|
||||
connect(Bridge::getBridge(), SIGNAL(addRecentFile(QString)), this, SLOT(addRecentFile(QString)));
|
||||
|
@ -231,6 +233,7 @@ void MainWindow::setTab(QWidget* widget)
|
|||
void MainWindow::refreshShortcuts()
|
||||
{
|
||||
ui->actionOpen->setShortcut(ConfigShortcut("FileOpen"));
|
||||
ui->actionAttach->setShortcut(ConfigShortcut("FileAttach"));
|
||||
ui->actionExit->setShortcut(ConfigShortcut("FileExit"));
|
||||
|
||||
ui->actionCpu->setShortcut(ConfigShortcut("ViewCpu"));
|
||||
|
@ -253,6 +256,7 @@ void MainWindow::refreshShortcuts()
|
|||
ui->actionRunSelection->setShortcut(ConfigShortcut("DebugRunSelection"));
|
||||
ui->actionPause->setShortcut(ConfigShortcut("DebugPause"));
|
||||
ui->actionRestart->setShortcut(ConfigShortcut("DebugRestart"));
|
||||
ui->actionDetach->setShortcut(ConfigShortcut("DebugDetach"));
|
||||
ui->actionClose->setShortcut(ConfigShortcut("DebugClose"));
|
||||
ui->actionStepInto->setShortcut(ConfigShortcut("DebugStepInto"));
|
||||
ui->actioneStepInto->setShortcut(ConfigShortcut("DebugeStepInfo"));
|
||||
|
@ -479,11 +483,7 @@ void MainWindow::openFile()
|
|||
{
|
||||
filename = fileToOpen->text();
|
||||
}
|
||||
|
||||
if(DbgIsDebugging())
|
||||
DbgCmdExecDirect("stop");
|
||||
QString cmd;
|
||||
DbgCmdExec(cmd.sprintf("init \"%s\"", filename.toUtf8().constData()).toUtf8().constData());
|
||||
DbgCmdExec(QString("init \"" + filename + "\"").toUtf8().constData());
|
||||
|
||||
//file is from recent menu
|
||||
if(fileToOpen != NULL && fileToOpen->objectName().startsWith("MRU"))
|
||||
|
@ -907,3 +907,14 @@ void MainWindow::donate()
|
|||
return;
|
||||
QDesktopServices::openUrl(QUrl("https://blockchain.info/address/1GuXgtCrLk4aYgivAT7xAi8zVHWk5CkEoY"));
|
||||
}
|
||||
|
||||
void MainWindow::displayAttach()
|
||||
{
|
||||
AttachDialog attach(this);
|
||||
attach.exec();
|
||||
}
|
||||
|
||||
void MainWindow::detach()
|
||||
{
|
||||
DbgCmdExec("detach");
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "UpdateChecker.h"
|
||||
#include "CallStackView.h"
|
||||
#include "CalculatorDialog.h"
|
||||
#include "AttachDialog.h"
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
|
@ -94,6 +95,8 @@ public slots:
|
|||
void refreshShortcuts();
|
||||
void openShortcuts();
|
||||
void donate();
|
||||
void displayAttach();
|
||||
void detach();
|
||||
|
||||
private:
|
||||
Ui::MainWindow* ui;
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
</widget>
|
||||
<addaction name="actionOpen"/>
|
||||
<addaction name="menuRecent_Files"/>
|
||||
<addaction name="actionAttach"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionExit"/>
|
||||
</widget>
|
||||
|
@ -70,6 +71,7 @@
|
|||
<addaction name="actionPause"/>
|
||||
<addaction name="actionRestart"/>
|
||||
<addaction name="actionClose"/>
|
||||
<addaction name="actionDetach"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionStepInto"/>
|
||||
<addaction name="actioneStepInto"/>
|
||||
|
@ -567,6 +569,30 @@
|
|||
<string>Calculator</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionAttach">
|
||||
<property name="icon">
|
||||
<iconset resource="../../resource.qrc">
|
||||
<normaloff>:/icons/images/attach.png</normaloff>:/icons/images/attach.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Attach</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Attach</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionDetach">
|
||||
<property name="icon">
|
||||
<iconset resource="../../resource.qrc">
|
||||
<normaloff>:/icons/images/detach.png</normaloff>:/icons/images/detach.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Detach</string>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Detach</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<resources>
|
||||
|
|
|
@ -167,6 +167,7 @@ Configuration::Configuration() : QObject()
|
|||
|
||||
// hotkeys settings
|
||||
defaultShortcuts.insert("FileOpen", Shortcut(tr("File -> Open"), "F3", true));
|
||||
defaultShortcuts.insert("FileAttach", Shortcut(tr("File -> Attach"), "Alt+A", true));
|
||||
defaultShortcuts.insert("FileExit", Shortcut(tr("File -> Exit"), "Alt+X", true));
|
||||
|
||||
defaultShortcuts.insert("ViewCpu", Shortcut(tr("View -> CPU"), "Alt+C", true));
|
||||
|
@ -190,6 +191,7 @@ Configuration::Configuration() : QObject()
|
|||
defaultShortcuts.insert("DebugPause", Shortcut(tr("Debug -> Pause"), "F12", true));
|
||||
defaultShortcuts.insert("DebugRestart", Shortcut(tr("Debug -> Restart"), "Ctrl+F2", true));
|
||||
defaultShortcuts.insert("DebugClose", Shortcut(tr("Debug -> Close"), "Alt+F2", true));
|
||||
defaultShortcuts.insert("DebugDetach", Shortcut(tr("Debug -> Detach"), "Ctrl+Alt+F2", true));
|
||||
defaultShortcuts.insert("DebugStepInto", Shortcut(tr("Debug -> Step into"), "F7", true));
|
||||
defaultShortcuts.insert("DebugeStepInfo", Shortcut(tr("Debug -> Step into (skip execptions)"), "Shift+F7", true));
|
||||
defaultShortcuts.insert("DebugStepOver", Shortcut(tr("Debug -> Step over"), "F8", true));
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 766 B |
Binary file not shown.
Before Width: | Height: | Size: 452 B After Width: | Height: | Size: 400 B |
Binary file not shown.
After Width: | Height: | Size: 853 B |
Binary file not shown.
After Width: | Height: | Size: 451 B |
|
@ -43,5 +43,8 @@
|
|||
<file>images/shortcut.png</file>
|
||||
<file>images/donate.png</file>
|
||||
<file>images/calculator.png</file>
|
||||
<file>images/attach.png</file>
|
||||
<file>images/detach.png</file>
|
||||
<file>images/trace.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
|
@ -83,7 +83,8 @@ SOURCES += \
|
|||
Src/Gui/CallStackView.cpp \
|
||||
Src/Gui/ShortcutsDialog.cpp \
|
||||
Src/BasicView/ShortcutEdit.cpp \
|
||||
Src/Gui/CalculatorDialog.cpp
|
||||
Src/Gui/CalculatorDialog.cpp \
|
||||
Src/Gui/AttachDialog.cpp
|
||||
|
||||
|
||||
HEADERS += \
|
||||
|
@ -145,7 +146,8 @@ HEADERS += \
|
|||
Src/Gui/CallStackView.h \
|
||||
Src/Gui/ShortcutsDialog.h \
|
||||
Src/BasicView/ShortcutEdit.h \
|
||||
Src/Gui/CalculatorDialog.h
|
||||
Src/Gui/CalculatorDialog.h \
|
||||
Src/Gui/AttachDialog.h
|
||||
|
||||
|
||||
INCLUDEPATH += \
|
||||
|
@ -177,7 +179,8 @@ FORMS += \
|
|||
Src/Gui/PatchDialog.ui \
|
||||
Src/Gui/PatchDialogGroupSelector.ui \
|
||||
Src/Gui/ShortcutsDialog.ui \
|
||||
Src/Gui/CalculatorDialog.ui
|
||||
Src/Gui/CalculatorDialog.ui \
|
||||
Src/Gui/AttachDialog.ui
|
||||
|
||||
INCLUDEPATH += $$PWD/Src/Bridge
|
||||
|
||||
|
|
Loading…
Reference in New Issue