From 92c7fd220506df5f7997d27dbbcdb513e66932a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Thu, 25 Jan 2018 15:40:50 +0100 Subject: Implement memoryview --- qtmips_gui/memoryview.h | 51 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 9 deletions(-) (limited to 'qtmips_gui/memoryview.h') diff --git a/qtmips_gui/memoryview.h b/qtmips_gui/memoryview.h index e1049e8..be2c8a2 100644 --- a/qtmips_gui/memoryview.h +++ b/qtmips_gui/memoryview.h @@ -2,35 +2,68 @@ #define MEMORYVIEW_H #include -#include +#include #include +#include #include +#include +#include +#include #include +#include +#include "qtmipsmachine.h" +#include "statictable.h" class MemoryView : public QWidget { + Q_OBJECT public: MemoryView(QWidget *parent = nullptr); - ~MemoryView(); - void set_center(std::uint32_t address); - std::uint32_t center(); + virtual void setup(machine::QtMipsMachine*); + + void set_focus(std::uint32_t address); + std::uint32_t focus(); protected: - //virtual QWidget *row_widget(std::uint32_t address) = 0; + const machine::Memory *memory; - void resizeEvent(QResizeEvent *event); - void wheelEvent(QWheelEvent *event); + virtual QList row_widget(std::uint32_t address, QWidget *parent) = 0; QVBoxLayout *layout; + void reload_content(); // reload displayed data + void update_content(int count, int shift); // update content to match given count and shift + private slots: void go_edit_finish(); private: - std::uint32_t center_addr; + unsigned count; + std::uint32_t addr_0; // First address in view + + class Frame : public QAbstractScrollArea { + public: + Frame(MemoryView *parent); + + StaticTable *widg; + void focus(unsigned i); // Focus on given item in widget + unsigned focussed(); // What item is in focus + void check_update(); // Update widget size and content if needed + + protected: + MemoryView *mv; + int content_y; + + bool viewportEvent(QEvent*); + void resizeEvent(QResizeEvent*); + void wheelEvent(QWheelEvent *event); + }; + Frame *memf; - QFrame *frame; + QWidget *ctl_widg; + QHBoxLayout *ctl_layout; QLineEdit *go_edit; + QToolButton *up, *down; }; #endif // MEMORYVIEW_H -- cgit v1.2.3