From f9e5214e87a935e1311b886e44bdfe1f8bfbdf56 Mon Sep 17 00:00:00 2001 From: Siddarth-Suresh <65844402+Siddarth-Suresh@users.noreply.github.com> Date: Tue, 15 Apr 2025 11:59:27 -0400 Subject: Added pipeline to GUI --- gui/gui.cc | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 100 insertions(+), 6 deletions(-) (limited to 'gui/gui.cc') diff --git a/gui/gui.cc b/gui/gui.cc index 3d3c56f..3c091e1 100644 --- a/gui/gui.cc +++ b/gui/gui.cc @@ -19,6 +19,16 @@ GUI::GUI(QWidget *parent) // Display clock cycles and PC connect(worker, &Worker::clock_cycles, this, &GUI::onWorkerClockCycles); + connect(worker, &Worker::if_info, this, &GUI::onWorkerFetchInfo); + + connect(worker, &Worker::id_info, this, &GUI::onWorkerDecodeInfo); + + connect(worker, &Worker::ex_info, this, &GUI::onWorkerExecuteInfo); + + connect(worker, &Worker::mm_info, this, &GUI::onWorkerMemoryInfo); + + connect(worker, &Worker::wb_info, this, &GUI::onWorkerWriteBackInfo); + // Display dram connect(worker, &Worker::dram_storage, this, &GUI::onWorkerShowDram); @@ -103,7 +113,7 @@ void displayTableHTML(QTextEdit *textEdit, const std::vectorsetReadOnly(true); } -void browseAndUploadFile(QTextEdit *textEdit) { +void browseAndUploadFile(QWidget* parent) { QString filePath = QFileDialog::getOpenFileName(nullptr, "Open File", QDir::homePath(), "Text Files (*.txt);;All Files (*.*)"); if (filePath.isEmpty()) { @@ -112,7 +122,8 @@ void browseAndUploadFile(QTextEdit *textEdit) { QFile file(filePath); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { - textEdit->setPlainText("Error: Unable to open file!"); + // textEdit->setPlainText("Error: Unable to open file!"); + QMessageBox::critical(parent, "File Upload", "Unable to open file!"); return; } @@ -135,15 +146,98 @@ void browseAndUploadFile(QTextEdit *textEdit) { file.close(); - textEdit->setReadOnly(false); - textEdit->setHtml(content); - textEdit->setReadOnly(true); + + QMessageBox::information(parent, "File Upload", "Instructions loaded successfully!"); + + // textEdit->setReadOnly(false); + // textEdit->setHtml(content); + // textEdit->setReadOnly(true); } void GUI::onWorkerClockCycles(int cycles, int pc) { + QFont font = ui->cycles_label->font(); + font.setBold(true); + font.setItalic(true); + font.setPointSize(14); + ui->cycles_label->setFont(font); ui->cycles_label->setText("Clock Cycles: " + QString::number(cycles) + "\t\t" + "PC: " + QString::number(pc)); } +void GUI::onWorkerFetchInfo(const std::vector info) { + //QString::asprintf("%04X", value) + if(!info.empty()) { + ui->fetch_pc->setText(QString::number(info[0])); + ui->fetch_instruction_bits->setText(QString::asprintf("%04X", info[1])); + } else { + ui->fetch_pc->clear(); + ui->fetch_instruction_bits->clear(); + } +} + +void GUI::onWorkerDecodeInfo(const std::vector info) { + if(!info.empty()) { + // ui->decode_mnemonic->setText(mnemonicToString((Mnemonic)info[0])); + ui->decode_pc->setText(QString::number(info[0])); + ui->decode_s1->setText(QString::asprintf("%04X", info[1])); + // ui->decode_s2->setText(QString::asprintf("%04X", info[3])); + // ui->decode_s3->setText(QString::asprintf("%04X", info[4])); + } else { + // ui->decode_mnemonic->clear(); + ui->decode_pc->clear(); + ui->decode_s1->clear(); + // ui->decode_s2->clear(); + // ui->decode_s3->clear(); + } +} + +void GUI::onWorkerExecuteInfo(const std::vector info) { + if(!info.empty()) { + ui->execute_mnemonic->setText(mnemonicToString((Mnemonic)info[0])); + ui->execute_pc->setText(QString::number(info[1])); + ui->execute_s1->setText(QString::asprintf("%04X", info[2])); + ui->execute_s2->setText(QString::asprintf("%04X", info[3])); + ui->execute_s3->setText(QString::asprintf("%04X", info[4])); + } else { + ui->execute_mnemonic->clear(); + ui->execute_pc->clear(); + ui->execute_s1->clear(); + ui->execute_s2->clear(); + ui->execute_s3->clear(); + } +} + +void GUI::onWorkerMemoryInfo(const std::vector info) { + if(!info.empty()) { + ui->memory_mnemonic->setText(mnemonicToString((Mnemonic)info[0])); + ui->memory_pc->setText(QString::number(info[1])); + ui->memory_s1->setText(QString::asprintf("%04X", info[2])); + ui->memory_s2->setText(QString::asprintf("%04X", info[3])); + ui->memory_s3->setText(QString::asprintf("%04X", info[4])); + } else { + ui->memory_mnemonic->clear(); + ui->memory_pc->clear(); + ui->memory_s1->clear(); + ui->memory_s2->clear(); + ui->memory_s3->clear(); + } +} + +void GUI::onWorkerWriteBackInfo(const std::vector info) { + if(!info.empty()) { + ui->wb_mnemonic->setText(mnemonicToString((Mnemonic)info[0])); + ui->wb_pc->setText(QString::number(info[1])); + ui->wb_s1->setText(QString::asprintf("%04X", info[2])); + ui->wb_s2->setText(QString::asprintf("%04X", info[3])); + ui->wb_s3->setText(QString::asprintf("%04X", info[4])); + } else { + ui->wb_mnemonic->clear(); + ui->wb_pc->clear(); + ui->wb_s1->clear(); + ui->wb_s2->clear(); + ui->wb_s3->clear(); + } +} + void GUI::onWorkerShowDram(const std::vector> data) { displayTableHTML(ui->dram_table, data); } @@ -163,7 +257,7 @@ void GUI::onWorkerFinished() { void GUI::on_upload_intructions_btn_clicked() { qDebug() << "Upload intructions button clicked."; - browseAndUploadFile(ui->instruction_table); + browseAndUploadFile(ui->register_table); } -- cgit v1.2.3