OpenCores
URL https://opencores.org/ocsvn/riscv_vhdl/riscv_vhdl/trunk

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [debugger/] [src/] [gui_plugin/] [CpuWidgets/] [MemControl.cpp] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 sergeykhbr
/**
2
 * @file
3
 * @copyright  Copyright 2016 GNSS Sensor Ltd. All right reserved.
4
 * @author     Sergey Khabarov - sergeykhbr@gmail.com
5
 * @brief      Memory Editor control panel.
6
 */
7
 
8
#include "MemControl.h"
9
#include "moc_MemControl.h"
10
 
11
#include <memory>
12
#include <string.h>
13
#include <QtWidgets/QBoxLayout>
14
#include <QtWidgets/QLabel>
15
#include <QtWidgets/QPushButton>
16
 
17
namespace debugger {
18
 
19
MemControl::MemControl(QWidget *parent, uint64_t addr, uint64_t sz)
20
    : QWidget(parent) {
21
    QFont font = QFont("Courier");
22
    font.setStyleHint(QFont::Monospace);
23
    font.setPointSize(8);
24
    font.setFixedPitch(true);
25
    setFont(font);
26
    QFontMetrics fm(font);
27
 
28
    paletteModified_.setColor(QPalette::Base, Qt::yellow);
29
    paletteModified_.setColor(QPalette::Text, Qt::black);
30
 
31
    paletteDefault_.setColor(QPalette::Text, Qt::black);
32
    paletteDefault_.setColor(QPalette::Base, Qt::white);
33
 
34
 
35
    QGridLayout *gridLayout = new QGridLayout(this);
36
    setLayout(gridLayout);
37
 
38
 
39
    QLabel *lbl = new QLabel("Addr,HEX:");
40
    gridLayout->addWidget(lbl, 0, 0, Qt::AlignRight);
41
 
42
    editAddr_ = new QLineEdit(this);
43
    editAddr_->setText(QString("%1").arg(addr, 16, 16, QChar('0')));
44
    editAddr_->setFixedWidth(8 + fm.width(editAddr_->text()));
45
    editAddr_->setPalette(paletteDefault_);
46
    gridLayout->addWidget(editAddr_, 0, 1, Qt::AlignLeft);
47
 
48
    QLabel *lbl2 = new QLabel("Size,B:");
49
    gridLayout->addWidget(lbl2, 0, 2, Qt::AlignRight);
50
 
51
    editBytes_ = new QLineEdit(this);
52
    editBytes_->setText(QString("%1").arg(sz, 0, 10));
53
    editBytes_->setFixedWidth(8 + fm.width("000000"));
54
    editBytes_->setPalette(paletteDefault_);
55
    gridLayout->addWidget(editBytes_, 0, 3, Qt::AlignLeft);
56
 
57
    QPushButton *btnUpdate = new QPushButton(tr("&Update"));
58
    btnUpdate->setFlat(false);
59
    btnUpdate->setCheckable(false);
60
    gridLayout->addWidget(btnUpdate, 0, 4, Qt::AlignLeft);
61
    gridLayout->setColumnStretch(4, 10);
62
 
63
    connect(editAddr_, SIGNAL(textChanged(const QString &)),
64
                       this, SLOT(slotModified()));
65
    connect(editBytes_, SIGNAL(textChanged(const QString &)),
66
                        this, SLOT(slotModified()));
67
    connect(btnUpdate, SIGNAL(released()), this, SLOT(slotUpdate()));
68
 
69
    cmd_.make_list(2);
70
}
71
 
72
void MemControl::slotModified() {
73
    editAddr_->setPalette(paletteModified_);
74
    editBytes_->setPalette(paletteModified_);
75
}
76
 
77
void MemControl::slotUpdate() {
78
    editAddr_->setPalette(paletteDefault_);
79
    editBytes_->setPalette(paletteDefault_);
80
 
81
    if (!isChanged()) {
82
        return;
83
    }
84
    uint64_t adr = editAddr_->text().toLongLong(0, 16);
85
    uint64_t sz = editBytes_->text().toLongLong(0, 10);
86
    cmd_[0u].make_uint64(adr);
87
    cmd_[1].make_uint64(sz);
88
 
89
    emit signalAddressChanged(&cmd_);
90
}
91
 
92
bool MemControl::isChanged() {
93
    return true;
94
}
95
 
96
 
97
}  // namespace debugger

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.