mirror of
https://github.com/rizinorg/cutter.git
synced 2025-02-22 06:33:46 +00:00
Make DebugToolbar into DebugActions
This commit is contained in:
parent
55f634dbf1
commit
2ffcccd41e
@ -206,7 +206,7 @@ SOURCES += \
|
|||||||
common/CommandTask.cpp \
|
common/CommandTask.cpp \
|
||||||
common/ProgressIndicator.cpp \
|
common/ProgressIndicator.cpp \
|
||||||
common/R2Task.cpp \
|
common/R2Task.cpp \
|
||||||
widgets/DebugToolbar.cpp \
|
widgets/DebugActions.cpp \
|
||||||
widgets/MemoryMapWidget.cpp \
|
widgets/MemoryMapWidget.cpp \
|
||||||
dialogs/preferences/DebugOptionsWidget.cpp \
|
dialogs/preferences/DebugOptionsWidget.cpp \
|
||||||
widgets/BreakpointWidget.cpp \
|
widgets/BreakpointWidget.cpp \
|
||||||
@ -309,7 +309,7 @@ HEADERS += \
|
|||||||
common/ProgressIndicator.h \
|
common/ProgressIndicator.h \
|
||||||
plugins/CutterPlugin.h \
|
plugins/CutterPlugin.h \
|
||||||
common/R2Task.h \
|
common/R2Task.h \
|
||||||
widgets/DebugToolbar.h \
|
widgets/DebugActions.h \
|
||||||
widgets/MemoryMapWidget.h \
|
widgets/MemoryMapWidget.h \
|
||||||
dialogs/preferences/DebugOptionsWidget.h \
|
dialogs/preferences/DebugOptionsWidget.h \
|
||||||
widgets/BreakpointWidget.h \
|
widgets/BreakpointWidget.h \
|
||||||
|
@ -79,7 +79,7 @@
|
|||||||
#include "widgets/JupyterWidget.h"
|
#include "widgets/JupyterWidget.h"
|
||||||
#include "widgets/HeadersWidget.h"
|
#include "widgets/HeadersWidget.h"
|
||||||
#include "widgets/ZignaturesWidget.h"
|
#include "widgets/ZignaturesWidget.h"
|
||||||
#include "widgets/DebugToolbar.h"
|
#include "widgets/DebugActions.h"
|
||||||
#include "widgets/MemoryMapWidget.h"
|
#include "widgets/MemoryMapWidget.h"
|
||||||
#include "widgets/BreakpointWidget.h"
|
#include "widgets/BreakpointWidget.h"
|
||||||
#include "widgets/RegisterRefsWidget.h"
|
#include "widgets/RegisterRefsWidget.h"
|
||||||
@ -117,18 +117,17 @@ void MainWindow::initUI()
|
|||||||
spacer3->setMaximumWidth(100);
|
spacer3->setMaximumWidth(100);
|
||||||
ui->mainToolBar->addWidget(spacer3);
|
ui->mainToolBar->addWidget(spacer3);
|
||||||
|
|
||||||
DebugToolbar *debugToolbar = new DebugToolbar(this);
|
DebugActions *debugActions = new DebugActions(ui->mainToolBar, this);
|
||||||
ui->mainToolBar->addWidget(debugToolbar);
|
|
||||||
// Debug menu
|
// Debug menu
|
||||||
ui->menuDebug->addAction(debugToolbar->actionStartEmul);
|
ui->menuDebug->addAction(debugActions->actionStartEmul);
|
||||||
ui->menuDebug->addSeparator();
|
ui->menuDebug->addSeparator();
|
||||||
ui->menuDebug->addAction(debugToolbar->actionStep);
|
ui->menuDebug->addAction(debugActions->actionStep);
|
||||||
ui->menuDebug->addAction(debugToolbar->actionStepOver);
|
ui->menuDebug->addAction(debugActions->actionStepOver);
|
||||||
ui->menuDebug->addAction(debugToolbar->actionStepOut);
|
ui->menuDebug->addAction(debugActions->actionStepOut);
|
||||||
ui->menuDebug->addSeparator();
|
ui->menuDebug->addSeparator();
|
||||||
ui->menuDebug->addAction(debugToolbar->actionContinue);
|
ui->menuDebug->addAction(debugActions->actionContinue);
|
||||||
ui->menuDebug->addAction(debugToolbar->actionContinueUntilCall);
|
ui->menuDebug->addAction(debugActions->actionContinueUntilCall);
|
||||||
ui->menuDebug->addAction(debugToolbar->actionContinueUntilSyscall);
|
ui->menuDebug->addAction(debugActions->actionContinueUntilSyscall);
|
||||||
|
|
||||||
// Sepparator between undo/redo and goto lineEdit
|
// Sepparator between undo/redo and goto lineEdit
|
||||||
QWidget *spacer4 = new QWidget();
|
QWidget *spacer4 = new QWidget();
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include "DebugToolbar.h"
|
#include "DebugActions.h"
|
||||||
#include "MainWindow.h"
|
#include "MainWindow.h"
|
||||||
#include "dialogs/AttachProcDialog.h"
|
#include "dialogs/AttachProcDialog.h"
|
||||||
|
|
||||||
@ -7,13 +7,14 @@
|
|||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
#include <QToolBar>
|
||||||
|
|
||||||
DebugToolbar::DebugToolbar(MainWindow *main, QWidget *parent) :
|
DebugActions::DebugActions(QToolBar *toolBar, MainWindow *main) :
|
||||||
QToolBar(parent),
|
QObject(main),
|
||||||
main(main)
|
main(main)
|
||||||
{
|
{
|
||||||
setObjectName("debugToolbar");
|
setObjectName("DebugActions");
|
||||||
setIconSize(QSize(16, 16));
|
// setIconSize(QSize(16, 16));
|
||||||
|
|
||||||
// define icons
|
// define icons
|
||||||
QIcon startDebugIcon = QIcon(":/img/icons/play_light_debug.svg");
|
QIcon startDebugIcon = QIcon(":/img/icons/play_light_debug.svg");
|
||||||
@ -46,21 +47,21 @@ DebugToolbar::DebugToolbar(MainWindow *main, QWidget *parent) :
|
|||||||
QString stepOutLabel = tr("Step out");
|
QString stepOutLabel = tr("Step out");
|
||||||
|
|
||||||
// define actions
|
// define actions
|
||||||
actionStart = new QAction(startDebugIcon, startDebugLabel, parent);
|
actionStart = new QAction(startDebugIcon, startDebugLabel, this);
|
||||||
actionStart->setShortcut(QKeySequence(Qt::Key_F9));
|
actionStart->setShortcut(QKeySequence(Qt::Key_F9));
|
||||||
actionStartEmul = new QAction(startEmulIcon, startEmulLabel, parent);
|
actionStartEmul = new QAction(startEmulIcon, startEmulLabel, this);
|
||||||
actionAttach = new QAction(startAttachIcon, startAttachLabel, parent);
|
actionAttach = new QAction(startAttachIcon, startAttachLabel, this);
|
||||||
actionStop = new QAction(stopIcon, stopDebugLabel, parent);
|
actionStop = new QAction(stopIcon, stopDebugLabel, this);
|
||||||
actionContinue = new QAction(continueIcon, continueLabel, parent);
|
actionContinue = new QAction(continueIcon, continueLabel, this);
|
||||||
actionContinue->setShortcut(QKeySequence(Qt::Key_F5));
|
actionContinue->setShortcut(QKeySequence(Qt::Key_F5));
|
||||||
actionContinueUntilMain = new QAction(continueUntilMainIcon, continueUMLabel, parent);
|
actionContinueUntilMain = new QAction(continueUntilMainIcon, continueUMLabel, this);
|
||||||
actionContinueUntilCall = new QAction(continueUntilCallIcon, continueUCLabel, parent);
|
actionContinueUntilCall = new QAction(continueUntilCallIcon, continueUCLabel, this);
|
||||||
actionContinueUntilSyscall = new QAction(continueUntilSyscallIcon, continueUSLabel, parent);
|
actionContinueUntilSyscall = new QAction(continueUntilSyscallIcon, continueUSLabel, this);
|
||||||
actionStep = new QAction(stepIcon, stepLabel, parent);
|
actionStep = new QAction(stepIcon, stepLabel, this);
|
||||||
actionStep->setShortcut(QKeySequence(Qt::Key_F7));
|
actionStep->setShortcut(QKeySequence(Qt::Key_F7));
|
||||||
actionStepOver = new QAction(stepOverIcon, stepOverLabel, parent);
|
actionStepOver = new QAction(stepOverIcon, stepOverLabel, this);
|
||||||
actionStepOver->setShortcut(QKeySequence(Qt::Key_F8));
|
actionStepOver->setShortcut(QKeySequence(Qt::Key_F8));
|
||||||
actionStepOut = new QAction(stepOutIcon, stepOutLabel, parent);
|
actionStepOut = new QAction(stepOutIcon, stepOutLabel, this);
|
||||||
actionStepOut->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_F8));
|
actionStepOut->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_F8));
|
||||||
|
|
||||||
QToolButton *startButton = new QToolButton;
|
QToolButton *startButton = new QToolButton;
|
||||||
@ -88,13 +89,13 @@ DebugToolbar::DebugToolbar(MainWindow *main, QWidget *parent) :
|
|||||||
continueUntilButton->setDefaultAction(actionContinueUntilMain);
|
continueUntilButton->setDefaultAction(actionContinueUntilMain);
|
||||||
|
|
||||||
// define toolbar widgets and actions
|
// define toolbar widgets and actions
|
||||||
addWidget(startButton);
|
toolBar->addWidget(startButton);
|
||||||
addAction(actionContinue);
|
toolBar->addAction(actionContinue);
|
||||||
addAction(actionStop);
|
toolBar->addAction(actionStop);
|
||||||
actionAllContinues = addWidget(continueUntilButton);
|
actionAllContinues = toolBar->addWidget(continueUntilButton);
|
||||||
addAction(actionStep);
|
toolBar->addAction(actionStep);
|
||||||
addAction(actionStepOver);
|
toolBar->addAction(actionStepOver);
|
||||||
addAction(actionStepOut);
|
toolBar->addAction(actionStepOut);
|
||||||
|
|
||||||
allActions = {actionStop, actionAllContinues, actionContinue, actionContinueUntilCall, actionContinueUntilMain, actionContinueUntilSyscall, actionStep, actionStepOut, actionStepOver};
|
allActions = {actionStop, actionAllContinues, actionContinue, actionContinueUntilCall, actionContinueUntilMain, actionContinueUntilSyscall, actionStep, actionStepOut, actionStepOver};
|
||||||
// hide allactions
|
// hide allactions
|
||||||
@ -131,7 +132,7 @@ DebugToolbar::DebugToolbar(MainWindow *main, QWidget *parent) :
|
|||||||
Core()->startDebug();
|
Core()->startDebug();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(actionAttach, &QAction::triggered, this, &DebugToolbar::attachProcessDialog);
|
connect(actionAttach, &QAction::triggered, this, &DebugActions::attachProcessDialog);
|
||||||
connect(actionStartEmul, &QAction::triggered, Core(), &CutterCore::startEmulation);
|
connect(actionStartEmul, &QAction::triggered, Core(), &CutterCore::startEmulation);
|
||||||
connect(actionStartEmul, &QAction::triggered, [ = ]() {
|
connect(actionStartEmul, &QAction::triggered, [ = ]() {
|
||||||
setAllActionsVisible(true);
|
setAllActionsVisible(true);
|
||||||
@ -147,19 +148,19 @@ DebugToolbar::DebugToolbar(MainWindow *main, QWidget *parent) :
|
|||||||
connect(actionStepOver, &QAction::triggered, Core(), &CutterCore::stepOverDebug);
|
connect(actionStepOver, &QAction::triggered, Core(), &CutterCore::stepOverDebug);
|
||||||
connect(actionStepOut, &QAction::triggered, Core(), &CutterCore::stepOutDebug);
|
connect(actionStepOut, &QAction::triggered, Core(), &CutterCore::stepOutDebug);
|
||||||
connect(actionContinue, &QAction::triggered, Core(), &CutterCore::continueDebug);
|
connect(actionContinue, &QAction::triggered, Core(), &CutterCore::continueDebug);
|
||||||
connect(actionContinueUntilMain, &QAction::triggered, this, &DebugToolbar::continueUntilMain);
|
connect(actionContinueUntilMain, &QAction::triggered, this, &DebugActions::continueUntilMain);
|
||||||
connect(actionContinueUntilCall, &QAction::triggered, Core(), &CutterCore::continueUntilCall);
|
connect(actionContinueUntilCall, &QAction::triggered, Core(), &CutterCore::continueUntilCall);
|
||||||
connect(actionContinueUntilSyscall, &QAction::triggered, Core(), &CutterCore::continueUntilSyscall);
|
connect(actionContinueUntilSyscall, &QAction::triggered, Core(), &CutterCore::continueUntilSyscall);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebugToolbar::continueUntilMain()
|
void DebugActions::continueUntilMain()
|
||||||
{
|
{
|
||||||
Core()->continueUntilDebug("main");
|
Core()->continueUntilDebug("main");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebugToolbar::attachProcessDialog()
|
void DebugActions::attachProcessDialog()
|
||||||
{
|
{
|
||||||
AttachProcDialog *dialog = new AttachProcDialog(this);
|
AttachProcDialog *dialog = new AttachProcDialog(main);
|
||||||
bool success = false;
|
bool success = false;
|
||||||
while (!success) {
|
while (!success) {
|
||||||
success = true;
|
success = true;
|
||||||
@ -178,7 +179,7 @@ void DebugToolbar::attachProcessDialog()
|
|||||||
delete dialog;
|
delete dialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebugToolbar::attachProcess(int pid)
|
void DebugActions::attachProcess(int pid)
|
||||||
{
|
{
|
||||||
QString stopAttachLabel = tr("Detach from process");
|
QString stopAttachLabel = tr("Detach from process");
|
||||||
// hide unwanted buttons
|
// hide unwanted buttons
|
||||||
@ -190,7 +191,7 @@ void DebugToolbar::attachProcess(int pid)
|
|||||||
Core()->attachDebug(pid);
|
Core()->attachDebug(pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebugToolbar::setAllActionsVisible(bool visible)
|
void DebugActions::setAllActionsVisible(bool visible)
|
||||||
{
|
{
|
||||||
for (QAction *action : allActions) {
|
for (QAction *action : allActions) {
|
||||||
action->setVisible(visible);
|
action->setVisible(visible);
|
@ -1,16 +1,19 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QToolBar>
|
|
||||||
#include "Cutter.h"
|
#include "Cutter.h"
|
||||||
|
|
||||||
class MainWindow;
|
class MainWindow;
|
||||||
|
class QToolBar;
|
||||||
|
|
||||||
class DebugToolbar : public QToolBar
|
class DebugActions : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit DebugToolbar(MainWindow *main, QWidget *parent = nullptr);
|
explicit DebugActions(QToolBar *toolBar, MainWindow *main);
|
||||||
|
|
||||||
|
void addToToolBar(QToolBar *toolBar);
|
||||||
|
|
||||||
QAction *actionStart;
|
QAction *actionStart;
|
||||||
QAction *actionStartEmul;
|
QAction *actionStartEmul;
|
||||||
QAction *actionAttach;
|
QAction *actionAttach;
|
Loading…
Reference in New Issue
Block a user