diff options
| author | Karel Kočí <cynerd@email.cz> | 2018-01-21 20:36:41 +0100 | 
|---|---|---|
| committer | Karel Kočí <cynerd@email.cz> | 2018-01-21 20:36:41 +0100 | 
| commit | b0a3e568a9e10ee9d99e8679b2ddd697705e756c (patch) | |
| tree | 5254201ae2f6a2709e8d319fcdedaaa787cb27da /qtmips_gui/coreview/instructionview.cpp | |
| parent | 553187e18f5a587dcf38a7d3f9a82929583ddc84 (diff) | |
| download | qtmips-b0a3e568a9e10ee9d99e8679b2ddd697705e756c.tar.gz qtmips-b0a3e568a9e10ee9d99e8679b2ddd697705e756c.tar.bz2 qtmips-b0a3e568a9e10ee9d99e8679b2ddd697705e756c.zip | |
Update instruction viewers
Diffstat (limited to 'qtmips_gui/coreview/instructionview.cpp')
| -rw-r--r-- | qtmips_gui/coreview/instructionview.cpp | 34 | 
1 files changed, 29 insertions, 5 deletions
| 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 <QPainter>  #include <QFont>  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()));  } | 
