Hides the ContinueUntilMain button if there is no flag called main

This commit is contained in:
mandlebro 2019-01-12 23:36:23 +00:00 committed by Itay Cohen
parent 75ae47dbcb
commit b0effdf94f
2 changed files with 16 additions and 1 deletions

View File

@ -78,7 +78,7 @@ DebugActions::DebugActions(QToolBar *toolBar, MainWindow *main) :
// startButton->setDefaultAction(actionStartEmul); // startButton->setDefaultAction(actionStartEmul);
startButton->setMenu(startMenu); startButton->setMenu(startMenu);
QToolButton *continueUntilButton = new QToolButton; continueUntilButton = new QToolButton;
continueUntilButton->setPopupMode(QToolButton::MenuButtonPopup); continueUntilButton->setPopupMode(QToolButton::MenuButtonPopup);
connect(continueUntilButton, &QToolButton::triggered, continueUntilButton, connect(continueUntilButton, &QToolButton::triggered, continueUntilButton,
&QToolButton::setDefaultAction); &QToolButton::setDefaultAction);
@ -112,6 +112,7 @@ DebugActions::DebugActions(QToolBar *toolBar, MainWindow *main) :
actionStart->setIcon(startDebugIcon); actionStart->setIcon(startDebugIcon);
actionStartEmul->setText(startEmulLabel); actionStartEmul->setText(startEmulLabel);
actionStartEmul->setIcon(startEmulIcon); actionStartEmul->setIcon(startEmulIcon);
continueUntilButton->setDefaultAction(actionContinueUntilMain);
setAllActionsVisible(false); setAllActionsVisible(false);
}); });
connect(actionStep, &QAction::triggered, Core(), &CutterCore::stepDebug); connect(actionStep, &QAction::triggered, Core(), &CutterCore::stepDebug);
@ -130,6 +131,7 @@ DebugActions::DebugActions(QToolBar *toolBar, MainWindow *main) :
actionStartEmul->setVisible(false); actionStartEmul->setVisible(false);
actionStart->setText(restartDebugLabel); actionStart->setText(restartDebugLabel);
actionStart->setIcon(restartIcon); actionStart->setIcon(restartIcon);
setButtonVisibleIfMainExists();
Core()->startDebug(); Core()->startDebug();
}); });
@ -154,6 +156,16 @@ DebugActions::DebugActions(QToolBar *toolBar, MainWindow *main) :
connect(actionContinueUntilSyscall, &QAction::triggered, Core(), &CutterCore::continueUntilSyscall); connect(actionContinueUntilSyscall, &QAction::triggered, Core(), &CutterCore::continueUntilSyscall);
} }
void DebugActions::setButtonVisibleIfMainExists()
{
int mainExists = Core()->cmd("f?main; ??").toInt();
// if main is not a flag we hide the continue until main button
if (!mainExists) {
actionContinueUntilMain->setVisible(false);
continueUntilButton->setDefaultAction(actionContinueUntilCall);
}
}
void DebugActions::continueUntilMain() void DebugActions::continueUntilMain()
{ {
Core()->continueUntilDebug("main"); Core()->continueUntilDebug("main");

View File

@ -4,6 +4,7 @@
class MainWindow; class MainWindow;
class QToolBar; class QToolBar;
class QToolButton;
class DebugActions : public QObject class DebugActions : public QObject
{ {
@ -30,10 +31,12 @@ public:
private: private:
MainWindow *main; MainWindow *main;
QList<QAction *> allActions; QList<QAction *> allActions;
QToolButton *continueUntilButton;
private slots: private slots:
void continueUntilMain(); void continueUntilMain();
void attachProcessDialog(); void attachProcessDialog();
void attachProcess(int pid); void attachProcess(int pid);
void setAllActionsVisible(bool visible); void setAllActionsVisible(bool visible);
void setButtonVisibleIfMainExists();
}; };