From b0a3e568a9e10ee9d99e8679b2ddd697705e756c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Sun, 21 Jan 2018 20:36:41 +0100 Subject: Update instruction viewers --- qtmips_gui/coreview/instructionview.cpp | 34 ++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) (limited to 'qtmips_gui/coreview/instructionview.cpp') diff --git a/qtmips_gui/coreview/instructionview.cpp b/qtmips_gui/coreview/instructionview.cpp index bab9bc8..0c9ec68 100644 --- a/qtmips_gui/coreview/instructionview.cpp +++ b/qtmips_gui/coreview/instructionview.cpp @@ -1,15 +1,39 @@ #include "instructionview.h" +#include #include using namespace coreview; -InstructionView::InstructionView() : QObject(), QGraphicsSimpleTextItem() { +////////////////////// +#define WIDTH 120 +#define HEIGHT 14 +#define ROUND 5 +#define GAP 2 +#define PENW 1 +////////////////////// + +InstructionView::InstructionView() : QGraphicsObject(nullptr), text(this) { QFont f; - f.setPointSize(8); - setFont(f); - instruction_update(machine::Instruction()); + f.setPointSize(6); + text.setFont(f); + + instruction_update(machine::Instruction()); // Initialize to NOP +} + +QRectF InstructionView::boundingRect() const { + return QRectF(-WIDTH/2 - PENW/2, -PENW/2, WIDTH + PENW, HEIGHT + PENW); +} + +void InstructionView::paint(QPainter *painter, const QStyleOptionGraphicsItem *option __attribute__((unused)), QWidget *widget __attribute__((unused))) { + painter->setPen(QPen(QColor(240, 240, 240))); + painter->setBrush(QBrush(QColor(240, 240, 240))); + painter->drawRoundRect(-WIDTH/2, 0, WIDTH, HEIGHT, ROUND, ROUND); } void InstructionView::instruction_update(const machine::Instruction &i) { - setText(i.to_str()); + QRectF prev_box = boundingRect(); + text.setText(i.to_str()); + QRectF box = text.boundingRect(); + text.setPos(-box.width()/2, GAP); + update(prev_box.united(boundingRect())); } -- cgit v1.2.3