From 2b5ca09c90c5e091c094e9ed8f02079674b8aeda Mon Sep 17 00:00:00 2001 From: bd Date: Sat, 19 Apr 2025 15:14:56 -0400 Subject: Add new widget to display number in base 10 and 16 --- gui/digitlabel.cc | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 gui/digitlabel.cc (limited to 'gui/digitlabel.cc') diff --git a/gui/digitlabel.cc b/gui/digitlabel.cc new file mode 100644 index 0000000..a5c84f1 --- /dev/null +++ b/gui/digitlabel.cc @@ -0,0 +1,39 @@ +#include "digitlabel.h" + +DigitLabel::DigitLabel(QWidget *parent) : QLabel(parent) +{ + this->update_display(); +} + +void DigitLabel::clear() +{ + this->is_cleared = true; + setText(QString()); +} + +void DigitLabel::set_value(int v) +{ + this->is_cleared = false; + if (this->v != v) { + this->v = v; + update_display(); + } +} + +void DigitLabel::toggle_mode() +{ + this->is_hex = !this->is_hex; + this->update_display(); +} + +void DigitLabel::update_display() +{ + QString t; + if (this->is_cleared) { + setText(QString()); + } else { + t = (this->is_hex) ? QString::number(this->v, 6).toUpper() + : QString::number(this->v); + setText(t); + } +} -- cgit v1.2.3 From dbf5d3986e5fe271b072cd3d32e73e4fa26a5fae Mon Sep 17 00:00:00 2001 From: bd Date: Mon, 21 Apr 2025 11:59:32 -0400 Subject: Add licensing to new files --- gui/digitlabel.cc | 17 +++++++++++++++++ gui/digitlabel.h | 17 +++++++++++++++++ gui/dynamicwaysentry.cc | 17 +++++++++++++++++ gui/dynamicwaysentry.h | 17 +++++++++++++++++ 4 files changed, 68 insertions(+) (limited to 'gui/digitlabel.cc') diff --git a/gui/digitlabel.cc b/gui/digitlabel.cc index a5c84f1..ffecfff 100644 --- a/gui/digitlabel.cc +++ b/gui/digitlabel.cc @@ -1,3 +1,20 @@ +// Simulator for the RISC-V[ECTOR] mini-ISA +// Copyright (C) 2025 Siddarth Suresh +// Copyright (C) 2025 bdunahu + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + #include "digitlabel.h" DigitLabel::DigitLabel(QWidget *parent) : QLabel(parent) diff --git a/gui/digitlabel.h b/gui/digitlabel.h index 9106cc9..2916426 100644 --- a/gui/digitlabel.h +++ b/gui/digitlabel.h @@ -1,3 +1,20 @@ +// Simulator for the RISC-V[ECTOR] mini-ISA +// Copyright (C) 2025 Siddarth Suresh +// Copyright (C) 2025 bdunahu + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + #ifndef DIGITLABEL_H #define DIGITLABEL_H diff --git a/gui/dynamicwaysentry.cc b/gui/dynamicwaysentry.cc index 4e2cd66..e1f740e 100644 --- a/gui/dynamicwaysentry.cc +++ b/gui/dynamicwaysentry.cc @@ -1,3 +1,20 @@ +// Simulator for the RISC-V[ECTOR] mini-ISA +// Copyright (C) 2025 Siddarth Suresh +// Copyright (C) 2025 bdunahu + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + #include "dynamicwaysentry.h" #include #include diff --git a/gui/dynamicwaysentry.h b/gui/dynamicwaysentry.h index de001ee..26b8b3e 100644 --- a/gui/dynamicwaysentry.h +++ b/gui/dynamicwaysentry.h @@ -1,3 +1,20 @@ +// Simulator for the RISC-V[ECTOR] mini-ISA +// Copyright (C) 2025 Siddarth Suresh +// Copyright (C) 2025 bdunahu + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + #ifndef DYNAMICWAYSENTRY_H #define DYNAMICWAYSENTRY_H -- cgit v1.2.3 From 40dfec9ae067d3f8e3868d259bfc4251aeca8724 Mon Sep 17 00:00:00 2001 From: bd Date: Mon, 21 Apr 2025 15:56:38 -0400 Subject: Add functionality to toggle button. --- gui/digitlabel.cc | 20 ++++++++------------ gui/digitlabel.h | 12 ++++++------ gui/gui.cc | 22 +++++++++++++++------- gui/gui.h | 9 +++++++++ gui/gui.ui | 5 ++++- 5 files changed, 42 insertions(+), 26 deletions(-) (limited to 'gui/digitlabel.cc') diff --git a/gui/digitlabel.cc b/gui/digitlabel.cc index ffecfff..8314943 100644 --- a/gui/digitlabel.cc +++ b/gui/digitlabel.cc @@ -16,11 +16,9 @@ // along with this program. If not, see . #include "digitlabel.h" +#include "gui.h" -DigitLabel::DigitLabel(QWidget *parent) : QLabel(parent) -{ - this->update_display(); -} +DigitLabel::DigitLabel(QWidget *parent) : QLabel(parent) { setText(QString()); } void DigitLabel::clear() { @@ -31,16 +29,14 @@ void DigitLabel::clear() void DigitLabel::set_value(int v) { this->is_cleared = false; - if (this->v != v) { - this->v = v; - update_display(); - } + this->v = v; + update_display(); } -void DigitLabel::toggle_mode() +void DigitLabel::on_hex_toggle(bool is_hex) { - this->is_hex = !this->is_hex; - this->update_display(); + this->is_hex = is_hex; + update_display(); } void DigitLabel::update_display() @@ -49,7 +45,7 @@ void DigitLabel::update_display() if (this->is_cleared) { setText(QString()); } else { - t = (this->is_hex) ? QString::number(this->v, 6).toUpper() + t = (this->is_hex) ? QString::number(this->v, 16).toUpper() : QString::number(this->v); setText(t); } diff --git a/gui/digitlabel.h b/gui/digitlabel.h index 2916426..68b01cb 100644 --- a/gui/digitlabel.h +++ b/gui/digitlabel.h @@ -29,7 +29,7 @@ class DigitLabel : public QLabel * Constructor. * @return a newly allocated DigitLabel. */ - explicit DigitLabel(QWidget *parent = nullptr); + explicit DigitLabel(QWidget *parent); /** * Sets the empty flag. @@ -44,7 +44,7 @@ class DigitLabel : public QLabel /** * Toggles the base this label displays in, by setting `this->is_hex'. */ - void toggle_mode(); + void on_hex_toggle(bool is_hex); private: /** @@ -55,13 +55,13 @@ class DigitLabel : public QLabel /** * The decimal value associated with this label. */ - int v = 0; + int v; /** - * To display in hexidecimal or not. + * If this digit should display in hexidecinmal. */ - bool is_hex = true; + int is_hex; /** - * To display in hexidecimal or not. + * If this digit should not display. */ bool is_cleared = true; }; diff --git a/gui/gui.cc b/gui/gui.cc index 2744a06..294a7d0 100644 --- a/gui/gui.cc +++ b/gui/gui.cc @@ -48,6 +48,13 @@ GUI::GUI(QWidget *parent) : QMainWindow(parent), ui(new Ui::GUI) worker = new Worker(); worker->moveToThread(&workerThread); + // find all the labels + QList labels = this->findChildren(); + for (DigitLabel* label : labels) { + connect(this, &GUI::hex_toggled, label, &DigitLabel::on_hex_toggle); + } + emit this->hex_toggled(this->is_hex); + // display clock cycles and PC connect(worker, &Worker::clock_cycles, this, &GUI::on_worker_refresh_gui); @@ -207,6 +214,7 @@ void GUI::onWorkerExecuteInfo(const std::vector info) void GUI::onWorkerMemoryInfo(const std::vector info) { if (!info.empty()) { + std::cout << "this " << info[3] << std::endl; ui->memory_mnemonic->setText(mnemonicToString((Mnemonic)info[0])); ui->memory_squashed->setText(QString::number(info[1])); ui->memory_s1->set_value(info[2]); @@ -299,13 +307,13 @@ void GUI::on_upload_program_state_btn_clicked() void GUI::on_enable_pipeline_checkbox_checkStateChanged( const Qt::CheckState &arg1) { - if (arg1 == Qt::CheckState::Checked) { - qDebug() << "enable pipeline checkbox checked."; - this->is_pipelined = true; - } else { - qDebug() << "enable pipeline checkbox unchecked."; - this->is_pipelined = false; - } + this->is_pipelined = (arg1 == Qt::CheckState::Checked) ? true : false; +} + +void GUI::on_base_toggle_checkbox_checkStateChanged(const Qt::CheckState &state) +{ + this->is_hex = (state == Qt::CheckState::Checked) ? false : true; + emit this->hex_toggled(this->is_hex); } void GUI::on_step_btn_clicked() diff --git a/gui/gui.h b/gui/gui.h index 7efde1f..0b10145 100644 --- a/gui/gui.h +++ b/gui/gui.h @@ -58,6 +58,7 @@ class GUI : public QMainWindow const QString &img = "idle.png"); signals: + void hex_toggled(bool is_hex); void sendRunSteps(int steps); void sendConfigure( std::vector ways, vector program, bool is_pipelined); @@ -92,6 +93,9 @@ class GUI : public QMainWindow void on_enable_pipeline_checkbox_checkStateChanged(const Qt::CheckState &arg1); + void + on_base_toggle_checkbox_checkStateChanged(const Qt::CheckState &state); + void on_step_btn_clicked(); void on_save_program_state_btn_clicked(); @@ -112,6 +116,11 @@ class GUI : public QMainWindow */ bool ready; + /** + * Whether or not numerical values are currently displaying in hex. + */ + bool is_hex = true; + /** * The message displayed on the status bar. */ diff --git a/gui/gui.ui b/gui/gui.ui index f205b96..dbb3a33 100644 --- a/gui/gui.ui +++ b/gui/gui.ui @@ -541,7 +541,10 @@ - + + + true + Decimal -- cgit v1.2.3