halt j halt
This commit is contained in:
parent
bfa4a8cd72
commit
12421d0e5d
23 changed files with 270 additions and 173 deletions
|
|
@ -10,8 +10,39 @@ MainWindow::MainWindow(QWidget *parent)
|
|||
ui->setupUi(this);
|
||||
QAction *actionLoad = new QAction(tr("Load"), this);
|
||||
ui->menuLoad->addAction(actionLoad);
|
||||
|
||||
connect(actionLoad, &QAction::triggered, this, &MainWindow::onLoadTriggered);
|
||||
connect(ui->runButton, &QPushButton::clicked, this, &MainWindow::on_runButton_clicked);
|
||||
|
||||
// nastavi tabelo
|
||||
const int columns = 16;
|
||||
int memSize = machine.getMemSize(); // ali fiksno (npr. 1000000), če še ni naloženo
|
||||
int rows = (memSize + columns - 1) / columns;
|
||||
|
||||
ui->tableWidget->setColumnCount(columns);
|
||||
ui->tableWidget->setRowCount(rows);
|
||||
|
||||
// Nastavi naslove stolpcev
|
||||
QStringList headers;
|
||||
for (int c = 0; c < columns; ++c) {
|
||||
headers << QString("%1").arg(c, 2, 16, QChar('0')).toUpper();
|
||||
}
|
||||
ui->tableWidget->setHorizontalHeaderLabels(headers);
|
||||
|
||||
// Nastavi naslove vrstic v heks formatu
|
||||
QStringList verticalHeaders;
|
||||
for (int r = 0; r < rows; ++r) {
|
||||
verticalHeaders << QString("%1").arg(r * columns, 4, 16, QChar('0')).toUpper();
|
||||
}
|
||||
ui->tableWidget->setVerticalHeaderLabels(verticalHeaders);
|
||||
|
||||
// Nastavi fiksno širino stolpcev (ali prilagodi po potrebi)
|
||||
int columnWidth = 30;
|
||||
for (int c = 0; c < columns; ++c) {
|
||||
ui->tableWidget->setColumnWidth(c, columnWidth);
|
||||
}
|
||||
|
||||
// Nastavi politiko velikosti
|
||||
ui->tableWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
|
|
@ -36,6 +67,33 @@ void MainWindow::on_readButton_clicked()
|
|||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_runButton_clicked() {
|
||||
executor.start();
|
||||
}
|
||||
|
||||
void populateMemoryTable(QTableWidget* tableWidget, Machine& machine) {
|
||||
const int columns = 16;
|
||||
int memSize = machine.getMemSize();
|
||||
|
||||
for (int r = 0; r < tableWidget->rowCount(); ++r) {
|
||||
for (int c = 0; c < columns; ++c) {
|
||||
int addr = r * columns + c;
|
||||
if (addr < memSize) {
|
||||
unsigned char val = machine.readByte(addr);
|
||||
QString hexVal = QString("%1").arg(val, 2, 16, QChar('0')).toUpper();
|
||||
// Posodobi ali ustvari nov element
|
||||
if (tableWidget->item(r, c)) {
|
||||
tableWidget->item(r, c)->setText(hexVal);
|
||||
} else {
|
||||
tableWidget->setItem(r, c, new QTableWidgetItem(hexVal));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void MainWindow::onLoadTriggered() {
|
||||
QString filename = QFileDialog::getOpenFileName(this, tr("Open Object File"), "", tr("Object Files (*.obj)"));
|
||||
if (!filename.isEmpty()) {
|
||||
|
|
@ -44,4 +102,9 @@ void MainWindow::onLoadTriggered() {
|
|||
QMessageBox::warning(this, tr("Error"), tr("Failed to load file"));
|
||||
}
|
||||
}
|
||||
populateMemoryTable(ui->tableWidget, machine);
|
||||
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
||||
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
|
||||
ui->tableWidget->horizontalHeader()->setDefaultSectionSize(30);
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue