From fd787868288521ae655ddd1ac8000895662eaa77 Mon Sep 17 00:00:00 2001 From: Tony Wasserka Date: Wed, 2 Jul 2014 21:16:36 +0200 Subject: citra-qt: Rewrite disassembly view. --- src/citra_qt/debugger/disassembler.hxx | 41 +++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) (limited to 'src/citra_qt/debugger/disassembler.hxx') diff --git a/src/citra_qt/debugger/disassembler.hxx b/src/citra_qt/debugger/disassembler.hxx index e668bbbeb..a842da956 100644 --- a/src/citra_qt/debugger/disassembler.hxx +++ b/src/citra_qt/debugger/disassembler.hxx @@ -1,3 +1,4 @@ +#include #include #include "ui_disassembler.h" @@ -5,9 +6,41 @@ #include "common/break_points.h" class QAction; -class QStandardItemModel; class EmuThread; +class DisassemblerModel : public QAbstractItemModel +{ + Q_OBJECT + +public: + DisassemblerModel(QObject* parent); + + QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override; + QModelIndex parent(const QModelIndex& child) const override; + int columnCount(const QModelIndex& parent = QModelIndex()) const override; + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; + + QModelIndex IndexFromAbsoluteAddress(unsigned int address) const; + const BreakPoints& GetBreakPoints() const; + +public slots: + void ParseFromAddress(unsigned int address); + void OnSelectionChanged(const QModelIndex&); + void OnSetOrUnsetBreakpoint(); + void SetNextInstruction(unsigned int address); + +private: + unsigned int base_address; + unsigned int code_size; + unsigned int program_counter; + + QModelIndex selection; + + // TODO: Make BreakPoints less crappy (i.e. const-correct) so that this needn't be mutable. + mutable BreakPoints breakpoints; +}; + class DisassemblerWidget : public QDockWidget { Q_OBJECT @@ -18,7 +51,6 @@ public: void Init(); public slots: - void OnSetBreakpoint(); void OnContinue(); void OnStep(); void OnStepInto(); @@ -32,11 +64,10 @@ private: int SelectedRow(); Ui::DockWidget disasm_ui; - QStandardItemModel* model; - u32 base_addr; + DisassemblerModel* model; - BreakPoints* breakpoints; + u32 base_addr; EmuThread& emu_thread; }; -- cgit v1.2.3