diff options
Diffstat (limited to 'qtmips_gui/memoryview.cpp')
-rw-r--r-- | qtmips_gui/memoryview.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/qtmips_gui/memoryview.cpp b/qtmips_gui/memoryview.cpp index d2f33d3..b2d0a66 100644 --- a/qtmips_gui/memoryview.cpp +++ b/qtmips_gui/memoryview.cpp @@ -9,9 +9,9 @@ #define ANGLE_SCROLL 4 /////////////////////////// -MemoryView::MemoryView(QWidget *parent) : QWidget(parent) { +MemoryView::MemoryView(QWidget *parent, std::uint32_t addr0) : QWidget(parent) { memory = nullptr; - addr_0 = 0; + addr_0 = addr0; layout = new QVBoxLayout(this); @@ -38,6 +38,7 @@ void MemoryView::set_focus(std::uint32_t address) { if (address < addr_0 || (address - addr_0)/4 > (unsigned)memf->widg->count()) { // This is outside of loaded area so just move it and reload everything addr_0 = address - 4*memf->focussed(); + addr0_save_change(addr_0); reload_content(); } else { memf->focus((address - addr_0) / 4); @@ -45,10 +46,14 @@ void MemoryView::set_focus(std::uint32_t address) { edit_load_focus(); } -std::uint32_t MemoryView::focus() { +std::uint32_t MemoryView::focus() const { return addr_0 + 4*memf->focussed(); } +std::uint32_t MemoryView::addr0() const { + return addr_0; +} + void MemoryView::edit_load_focus() { go_edit->setText(QString("0x%1").arg(focus(), 8, 16, QChar('0'))); } @@ -89,8 +94,11 @@ void MemoryView::update_content(int count, int shift) { else for (int i = 0; i > d_e; i--) memf->widg->removeRow(memf->widg->count() - 1); + addr0_save_change(addr_0); } +void MemoryView::addr0_save_change(std::uint32_t val) { /* ignore */ } + void MemoryView::go_edit_finish() { QString hex = go_edit->text(); hex.remove(0, 2); |