aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2018-01-08 21:42:10 +0100
committerKarel Kočí <cynerd@email.cz>2018-01-08 21:42:10 +0100
commitbcdd7c87b1eda7dc6b294cfa0796ce7e36f12b23 (patch)
treef350edf10ff4978eb11c3b4b8baa02f77ec2c023
parent6e6931657b7147e31f1f8d77035de3e7911f437f (diff)
downloadqtmips-bcdd7c87b1eda7dc6b294cfa0796ce7e36f12b23.tar.gz
qtmips-bcdd7c87b1eda7dc6b294cfa0796ce7e36f12b23.tar.bz2
qtmips-bcdd7c87b1eda7dc6b294cfa0796ce7e36f12b23.zip
Add skeleton for memory view
-rw-r--r--qtmips_gui/memorydock.cpp5
-rw-r--r--qtmips_gui/memorydock.h3
-rw-r--r--qtmips_gui/memoryview.cpp47
-rw-r--r--qtmips_gui/memoryview.h36
-rw-r--r--qtmips_gui/programdock.cpp13
-rw-r--r--qtmips_gui/programdock.h3
-rw-r--r--qtmips_gui/qtmips_gui.pro2
7 files changed, 95 insertions, 14 deletions
diff --git a/qtmips_gui/memorydock.cpp b/qtmips_gui/memorydock.cpp
index 0ccca3f..8998b32 100644
--- a/qtmips_gui/memorydock.cpp
+++ b/qtmips_gui/memorydock.cpp
@@ -1,14 +1,15 @@
#include "memorydock.h"
MemoryDock::MemoryDock(QWidget *parent) : QDockWidget(parent) {
- // TODO setup memory view
+ memory_view = new MemoryView(this);
+ setWidget(memory_view);
setObjectName("Memory");
setWindowTitle("Memory");
}
MemoryDock::~MemoryDock() {
-
+ delete memory_view;
}
void MemoryDock::setup(machine::QtMipsMachine *machine) {
diff --git a/qtmips_gui/memorydock.h b/qtmips_gui/memorydock.h
index bec8a62..533451e 100644
--- a/qtmips_gui/memorydock.h
+++ b/qtmips_gui/memorydock.h
@@ -3,6 +3,7 @@
#include <QDockWidget>
#include "qtmipsmachine.h"
+#include "memoryview.h"
class MemoryDock : public QDockWidget {
Q_OBJECT
@@ -13,7 +14,7 @@ public:
void setup(machine::QtMipsMachine *machine);
private:
- // TODO memory view
+ MemoryView *memory_view;
};
#endif // MEMORYDOCK_H
diff --git a/qtmips_gui/memoryview.cpp b/qtmips_gui/memoryview.cpp
new file mode 100644
index 0000000..bd5d6d8
--- /dev/null
+++ b/qtmips_gui/memoryview.cpp
@@ -0,0 +1,47 @@
+#include "memoryview.h"
+
+MemoryView::MemoryView(QWidget *parent) : QWidget(parent) {
+ layout = new QVBoxLayout(this);
+
+ frame = new QFrame(this);
+ frame->setFrameShadow(QFrame::Sunken);
+ frame->setFrameShape(QFrame::StyledPanel);
+ frame->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ // TODO
+ layout->addWidget(frame);
+
+ go_edit = new QLineEdit(this);
+ go_edit->setText("0x00000000");
+ go_edit->setInputMask("\\0\\xHHHHHHHH");
+ layout->addWidget(go_edit);
+ connect(go_edit, SIGNAL(editingFinished()), this, SLOT(go_edit_finish()));
+
+}
+
+MemoryView::~MemoryView() {
+ delete go_edit;
+ delete frame;
+ delete layout;
+}
+
+void MemoryView::set_center(std::uint32_t address) {
+ center_addr = address;
+ // TODO update view
+}
+
+std::uint32_t MemoryView::center() {
+ return center_addr;
+}
+
+void MemoryView::resizeEvent(QResizeEvent *event) {
+ QWidget::resizeEvent(event);
+ // TODO
+}
+
+void MemoryView::wheelEvent(QWheelEvent *event) {
+ // TODO
+}
+
+void MemoryView::go_edit_finish() {
+ // TODO
+}
diff --git a/qtmips_gui/memoryview.h b/qtmips_gui/memoryview.h
new file mode 100644
index 0000000..e1049e8
--- /dev/null
+++ b/qtmips_gui/memoryview.h
@@ -0,0 +1,36 @@
+#ifndef MEMORYVIEW_H
+#define MEMORYVIEW_H
+
+#include <QWidget>
+#include <QFrame>
+#include <QBoxLayout>
+#include <QLineEdit>
+#include <cstdint>
+
+class MemoryView : public QWidget {
+public:
+ MemoryView(QWidget *parent = nullptr);
+ ~MemoryView();
+
+ void set_center(std::uint32_t address);
+ std::uint32_t center();
+
+protected:
+ //virtual QWidget *row_widget(std::uint32_t address) = 0;
+
+ void resizeEvent(QResizeEvent *event);
+ void wheelEvent(QWheelEvent *event);
+
+ QVBoxLayout *layout;
+
+private slots:
+ void go_edit_finish();
+
+private:
+ std::uint32_t center_addr;
+
+ QFrame *frame;
+ QLineEdit *go_edit;
+};
+
+#endif // MEMORYVIEW_H
diff --git a/qtmips_gui/programdock.cpp b/qtmips_gui/programdock.cpp
index 8553494..c885083 100644
--- a/qtmips_gui/programdock.cpp
+++ b/qtmips_gui/programdock.cpp
@@ -6,16 +6,8 @@ ProgramDock::ProgramDock(QWidget *parent) : QDockWidget(parent) {
widg_layout = new QBoxLayout(QBoxLayout::TopToBottom, widg);
widg_layout->setSizeConstraint(QLayout::SetMinAndMaxSize);
- // TODO memory view
-
- /*
- ctlline = new QLineEdit(widg);
- ctlline->setText("0x00000000");
- ctlline->setInputMask("\\0\\xHHHHHHHH");
- ctlline->hide();
- widg_layout->addWidget(ctlline);
- connect(ctlline, SIGNAL(returnPressed()), this, SLOT(ctlline_returnPress()));
- */
+ memory_view = new MemoryView(widg);
+ widg_layout->addWidget(memory_view);
ctlbox_single = new QComboBox(widg);
ctlbox_single->addItems({
@@ -47,6 +39,7 @@ ProgramDock::ProgramDock(QWidget *parent) : QDockWidget(parent) {
}
ProgramDock::~ProgramDock() {
+ delete memory_view;
delete ctlbox_single;
delete ctlbox_pipelined;
delete widg_layout;
diff --git a/qtmips_gui/programdock.h b/qtmips_gui/programdock.h
index 033cf54..4605a7b 100644
--- a/qtmips_gui/programdock.h
+++ b/qtmips_gui/programdock.h
@@ -7,6 +7,7 @@
#include <QLabel>
#include <QLineEdit>
#include "qtmipsmachine.h"
+#include "memoryview.h"
class ProgramDock : public QDockWidget {
Q_OBJECT
@@ -24,7 +25,7 @@ private:
QWidget *widg;
QBoxLayout *widg_layout;
- //QLineEdit *ctlline;
+ MemoryView *memory_view;
QComboBox *ctlbox_single;
QComboBox *ctlbox_pipelined;
};
diff --git a/qtmips_gui/qtmips_gui.pro b/qtmips_gui/qtmips_gui.pro
index 74a5f05..76c5e0f 100644
--- a/qtmips_gui/qtmips_gui.pro
+++ b/qtmips_gui/qtmips_gui.pro
@@ -18,6 +18,7 @@ SOURCES += \
newdialog.cpp \
coreview.cpp \
registersdock.cpp \
+ memoryview.cpp \
cachestatistics.cpp \
cachecontent.cpp \
coreview/programcounter.cpp \
@@ -34,6 +35,7 @@ HEADERS += \
newdialog.h \
coreview.h \
registersdock.h \
+ memoryview.h \
cachestatistics.h \
cachecontent.h \
coreview/programcounter.h \