diff options
author | Karel Kočí <cynerd@email.cz> | 2018-01-25 17:37:34 +0100 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2018-01-25 17:37:34 +0100 |
commit | 063da67766585bd1db5e8afd83e2f9eda88119c0 (patch) | |
tree | 928c2101adc3f7c317d9f86c13e2a2d1337806fb /qtmips_gui/coreview | |
parent | 215934254c3a80d8b30858f8c273a329c817a7f9 (diff) | |
download | qtmips-063da67766585bd1db5e8afd83e2f9eda88119c0.tar.gz qtmips-063da67766585bd1db5e8afd83e2f9eda88119c0.tar.bz2 qtmips-063da67766585bd1db5e8afd83e2f9eda88119c0.zip |
Jump to pc address when program counter is double clicked
Diffstat (limited to 'qtmips_gui/coreview')
-rw-r--r-- | qtmips_gui/coreview/programcounter.cpp | 7 | ||||
-rw-r--r-- | qtmips_gui/coreview/programcounter.h | 9 |
2 files changed, 16 insertions, 0 deletions
diff --git a/qtmips_gui/coreview/programcounter.cpp b/qtmips_gui/coreview/programcounter.cpp index ab7d49b..5d34fac 100644 --- a/qtmips_gui/coreview/programcounter.cpp +++ b/qtmips_gui/coreview/programcounter.cpp @@ -10,6 +10,8 @@ using namespace coreview; ////////////////////// ProgramCounter::ProgramCounter(machine::QtMipsMachine *machine) : QGraphicsObject(nullptr), name("PC", this), value(this) { + registers = machine->registers(); + QFont font; font.setPointSize(7); @@ -49,6 +51,11 @@ const Connector *ProgramCounter::connector_out() const { return con_out; } +void ProgramCounter::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event __attribute__((unused))) { + emit open_program(); + emit jump_to_pc(registers->read_pc()); +} + void ProgramCounter::pc_update(std::uint32_t val) { value.setText(QString("0x") + QString::number(val, 16)); } diff --git a/qtmips_gui/coreview/programcounter.h b/qtmips_gui/coreview/programcounter.h index c60ad36..6b5772a 100644 --- a/qtmips_gui/coreview/programcounter.h +++ b/qtmips_gui/coreview/programcounter.h @@ -20,10 +20,19 @@ public: const Connector *connector_in() const; const Connector *connector_out() const; +signals: + void open_program(); + void jump_to_pc(std::uint32_t addr); + +protected: + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + private slots: void pc_update(std::uint32_t val); private: + const machine::Registers *registers; + QGraphicsSimpleTextItem name; QGraphicsSimpleTextItem value; |