mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-07-08 08:12:57 +12:00
45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
#pragma once
|
|
#include <QLineEdit>
|
|
#include <QListWidget>
|
|
#include <QPlainTextEdit>
|
|
#include <QScrollBar>
|
|
#include <QWidget>
|
|
|
|
#include "capstone.hpp"
|
|
#include "emulator.hpp"
|
|
#include "panda_qt/disabled_widget_overlay.hpp"
|
|
|
|
class CPUDebugger : public QWidget {
|
|
Q_OBJECT
|
|
Emulator* emu;
|
|
|
|
QListWidget* disasmListWidget;
|
|
QScrollBar* verticalScrollBar;
|
|
QPlainTextEdit* registerTextEdit;
|
|
QTimer* updateTimer;
|
|
QLineEdit* addressInput;
|
|
|
|
DisabledWidgetOverlay* disabledOverlay;
|
|
|
|
bool enabled = false;
|
|
bool followPC = false;
|
|
Common::CapstoneDisassembler disassembler;
|
|
|
|
public:
|
|
CPUDebugger(Emulator* emulator, QWidget* parent = nullptr);
|
|
void enable();
|
|
void disable();
|
|
|
|
private:
|
|
// Update the state of the disassembler. Qt events should always call update, not updateDisasm/updateRegister
|
|
// As update properly handles thread safety
|
|
void update();
|
|
void updateDisasm();
|
|
void updateRegisters();
|
|
void scrollToPC();
|
|
|
|
bool eventFilter(QObject* obj, QEvent* event) override;
|
|
void showEvent(QShowEvent* event) override;
|
|
void resizeEvent(QResizeEvent* event) override;
|
|
void keyPressEvent(QKeyEvent* event);
|
|
};
|