diff options
Diffstat (limited to 'src/osd/modules/debugger/qt/memorywindow.cpp')
-rw-r--r-- | src/osd/modules/debugger/qt/memorywindow.cpp | 202 |
1 files changed, 77 insertions, 125 deletions
diff --git a/src/osd/modules/debugger/qt/memorywindow.cpp b/src/osd/modules/debugger/qt/memorywindow.cpp index 2360cda0458..0aed1a750ce 100644 --- a/src/osd/modules/debugger/qt/memorywindow.cpp +++ b/src/osd/modules/debugger/qt/memorywindow.cpp @@ -24,6 +24,9 @@ #define horizontalAdvance width #endif + +namespace osd::debugger::qt { + MemoryWindow::MemoryWindow(running_machine &machine, QWidget *parent) : WindowQt(machine, nullptr) { @@ -89,17 +92,17 @@ MemoryWindow::MemoryWindow(running_machine &machine, QWidget *parent) : QAction *formatAct32bitFloat = new QAction("32-bit Floating Point", this); QAction *formatAct64bitFloat = new QAction("64-bit Floating Point", this); QAction *formatAct80bitFloat = new QAction("80-bit Floating Point", this); - formatActOne->setObjectName("formatActOne"); - formatActTwo->setObjectName("formatActTwo"); - formatActFour->setObjectName("formatActFour"); - formatActEight->setObjectName("formatActEight"); - formatActOneOctal->setObjectName("formatActOneOctal"); - formatActTwoOctal->setObjectName("formatActTwoOctal"); - formatActFourOctal->setObjectName("formatActFourOctal"); - formatActEightOctal->setObjectName("formatActEightOctal"); - formatAct32bitFloat->setObjectName("formatAct32bitFloat"); - formatAct64bitFloat->setObjectName("formatAct64bitFloat"); - formatAct80bitFloat->setObjectName("formatAct80bitFloat"); + formatActOne->setData(int(debug_view_memory::data_format::HEX_8BIT)); + formatActTwo->setData(int(debug_view_memory::data_format::HEX_16BIT)); + formatActFour->setData(int(debug_view_memory::data_format::HEX_32BIT)); + formatActEight->setData(int(debug_view_memory::data_format::HEX_64BIT)); + formatActOneOctal->setData(int(debug_view_memory::data_format::OCTAL_8BIT)); + formatActTwoOctal->setData(int(debug_view_memory::data_format::OCTAL_16BIT)); + formatActFourOctal->setData(int(debug_view_memory::data_format::OCTAL_32BIT)); + formatActEightOctal->setData(int(debug_view_memory::data_format::OCTAL_64BIT)); + formatAct32bitFloat->setData(int(debug_view_memory::data_format::FLOAT_32BIT)); + formatAct64bitFloat->setData(int(debug_view_memory::data_format::FLOAT_64BIT)); + formatAct80bitFloat->setData(int(debug_view_memory::data_format::FLOAT_80BIT)); formatActOne->setCheckable(true); formatActTwo->setCheckable(true); formatActFour->setCheckable(true); @@ -141,6 +144,8 @@ MemoryWindow::MemoryWindow(running_machine &machine, QWidget *parent) : addressGroup->setObjectName("addressgroup"); QAction *addressActLogical = new QAction("Logical Addresses", this); QAction *addressActPhysical = new QAction("Physical Addresses", this); + addressActLogical->setData(false); + addressActPhysical->setData(true); addressActLogical->setCheckable(true); addressActPhysical->setCheckable(true); addressActLogical->setActionGroup(addressGroup); @@ -156,9 +161,9 @@ MemoryWindow::MemoryWindow(running_machine &machine, QWidget *parent) : QAction *radixActHexadecimal = new QAction("Hexadecimal Addresses", this); QAction *radixActDecimal = new QAction("Decimal Addresses", this); QAction *radixActOctal = new QAction("Octal Addresses", this); - radixActHexadecimal->setObjectName("radixHexadecimal"); - radixActDecimal->setObjectName("radixDecimal"); - radixActOctal->setObjectName("radixOctal"); + radixActHexadecimal->setData(16); + radixActDecimal->setData(10); + radixActOctal->setData(8); radixActHexadecimal->setCheckable(true); radixActDecimal->setCheckable(true); radixActOctal->setCheckable(true); @@ -218,16 +223,16 @@ void MemoryWindow::saveConfigurationToNode(util::xml::data_node &node) { WindowQt::saveConfigurationToNode(node); - node.set_attribute_int(osd::debugger::ATTR_WINDOW_TYPE, osd::debugger::WINDOW_TYPE_MEMORY_VIEWER); + node.set_attribute_int(ATTR_WINDOW_TYPE, WINDOW_TYPE_MEMORY_VIEWER); debug_view_memory &memView = *m_memTable->view<debug_view_memory>(); - node.set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_REGION, m_memTable->sourceIndex()); - node.set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_REVERSE_COLUMNS, memView.reverse() ? 1 : 0); - node.set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ADDRESS_MODE, memView.physical() ? 1 : 0); - node.set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ADDRESS_RADIX, memView.address_radix()); - node.set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_DATA_FORMAT, int(memView.get_data_format())); - node.set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ROW_CHUNKS, memView.chunks_per_row()); - node.add_child(osd::debugger::NODE_WINDOW_EXPRESSION, memView.expression()); + node.set_attribute_int(ATTR_WINDOW_MEMORY_REGION, m_memTable->sourceIndex()); + node.set_attribute_int(ATTR_WINDOW_MEMORY_REVERSE_COLUMNS, memView.reverse() ? 1 : 0); + node.set_attribute_int(ATTR_WINDOW_MEMORY_ADDRESS_MODE, memView.physical() ? 1 : 0); + node.set_attribute_int(ATTR_WINDOW_MEMORY_ADDRESS_RADIX, memView.address_radix()); + node.set_attribute_int(ATTR_WINDOW_MEMORY_DATA_FORMAT, int(memView.get_data_format())); + node.set_attribute_int(ATTR_WINDOW_MEMORY_ROW_CHUNKS, memView.chunks_per_row()); + node.add_child(NODE_WINDOW_EXPRESSION, memView.expression()); } @@ -239,28 +244,26 @@ void MemoryWindow::memoryRegionChanged(int index) m_memTable->viewport()->update(); // Update the data format radio buttons to the memory region's default - debug_view_memory *memView = m_memTable->view<debug_view_memory>(); - switch (memView->get_data_format()) + debug_view_memory *const memView = m_memTable->view<debug_view_memory>(); + + QActionGroup *const dataFormat = findChild<QActionGroup *>("dataformat"); + for (QAction *action : dataFormat->actions()) { - case debug_view_memory::data_format::HEX_8BIT: dataFormatMenuItem("formatActOne")->setChecked(true); break; - case debug_view_memory::data_format::HEX_16BIT: dataFormatMenuItem("formatActTwo")->setChecked(true); break; - case debug_view_memory::data_format::HEX_32BIT: dataFormatMenuItem("formatActFour")->setChecked(true); break; - case debug_view_memory::data_format::HEX_64BIT: dataFormatMenuItem("formatActEight")->setChecked(true); break; - case debug_view_memory::data_format::OCTAL_8BIT: dataFormatMenuItem("formatActOneOctal")->setChecked(true); break; - case debug_view_memory::data_format::OCTAL_16BIT: dataFormatMenuItem("formatActTwoOctal")->setChecked(true); break; - case debug_view_memory::data_format::OCTAL_32BIT: dataFormatMenuItem("formatActFourOctal")->setChecked(true); break; - case debug_view_memory::data_format::OCTAL_64BIT: dataFormatMenuItem("formatActEightOctal")->setChecked(true); break; - case debug_view_memory::data_format::FLOAT_32BIT: dataFormatMenuItem("formatAct32bitFloat")->setChecked(true); break; - case debug_view_memory::data_format::FLOAT_64BIT: dataFormatMenuItem("formatAct64bitFloat")->setChecked(true); break; - case debug_view_memory::data_format::FLOAT_80BIT: dataFormatMenuItem("formatAct80bitFloat")->setChecked(true); break; - default: break; + if (debug_view_memory::data_format(action->data().toInt()) == memView->get_data_format()) + { + action->setChecked(true); + break; + } } - switch (memView->address_radix()) + + QActionGroup *radixGroup = findChild<QActionGroup*>("radixgroup"); + for (QAction *action : radixGroup->actions()) { - case 8: dataFormatMenuItem("radixOctal")->setChecked(true); break; - case 10: dataFormatMenuItem("radixDecimal")->setChecked(true); break; - case 16: dataFormatMenuItem("radixHexadecimal")->setChecked(true); break; - default: break; + if (action->data().toInt() == memView->address_radix()) + { + action->setChecked(true); + break; + } } } } @@ -287,30 +290,7 @@ void MemoryWindow::expressionSubmitted() void MemoryWindow::formatChanged(QAction* changedTo) { debug_view_memory *const memView = m_memTable->view<debug_view_memory>(); - - if (changedTo->text() == "1-byte hexadecimal") - memView->set_data_format(debug_view_memory::data_format::HEX_8BIT); - else if (changedTo->text() == "2-byte hexadecimal") - memView->set_data_format(debug_view_memory::data_format::HEX_16BIT); - else if (changedTo->text() == "4-byte hexadecimal") - memView->set_data_format(debug_view_memory::data_format::HEX_32BIT); - else if (changedTo->text() == "8-byte hexadecimal") - memView->set_data_format(debug_view_memory::data_format::HEX_64BIT); - else if (changedTo->text() == "1-byte octal") - memView->set_data_format(debug_view_memory::data_format::OCTAL_8BIT); - else if (changedTo->text() == "2-byte octal") - memView->set_data_format(debug_view_memory::data_format::OCTAL_16BIT); - else if (changedTo->text() == "4-byte octal") - memView->set_data_format(debug_view_memory::data_format::OCTAL_32BIT); - else if (changedTo->text() == "8-byte octal") - memView->set_data_format(debug_view_memory::data_format::OCTAL_64BIT); - else if (changedTo->text() == "32 bit floating point") - memView->set_data_format(debug_view_memory::data_format::FLOAT_32BIT); - else if (changedTo->text() == "64 bit floating point") - memView->set_data_format(debug_view_memory::data_format::FLOAT_64BIT); - else if (changedTo->text() == "80 bit floating point") - memView->set_data_format(debug_view_memory::data_format::FLOAT_80BIT); - + memView->set_data_format(debug_view_memory::data_format(changedTo->data().toInt())); m_memTable->viewport()->update(); } @@ -318,12 +298,7 @@ void MemoryWindow::formatChanged(QAction* changedTo) void MemoryWindow::addressChanged(QAction* changedTo) { debug_view_memory *const memView = m_memTable->view<debug_view_memory>(); - - if (changedTo->text() == "Logical Addresses") - memView->set_physical(false); - else if (changedTo->text() == "Physical Addresses") - memView->set_physical(true); - + memView->set_physical(changedTo->data().toBool()); m_memTable->viewport()->update(); } @@ -331,14 +306,7 @@ void MemoryWindow::addressChanged(QAction* changedTo) void MemoryWindow::radixChanged(QAction* changedTo) { debug_view_memory *const memView = m_memTable->view<debug_view_memory>(); - - if (changedTo->text() == "Hexadecimal Addresses") - memView->set_address_radix(16); - else if (changedTo->text() == "Decimal Addresses") - memView->set_address_radix(10); - else if (changedTo->text() == "Octal Addresses") - memView->set_address_radix(8); - + memView->set_address_radix(changedTo->data().toInt()); m_memTable->viewport()->update(); } @@ -393,25 +361,6 @@ void MemoryWindow::setToCurrentCpu() } -// I have a hard time storing QActions as class members. This is a substitute. -QAction *MemoryWindow::dataFormatMenuItem(const QString& itemName) -{ - QList<QMenu *> menus = menuBar()->findChildren<QMenu *>(); - for (int i = 0; i < menus.length(); i++) - { - if (menus[i]->title() != "&Options") - continue; - QList<QAction *> actions = menus[i]->actions(); - for (int j = 0; j < actions.length(); j++) - { - if (actions[j]->objectName() == itemName) - return actions[j]; - } - } - return nullptr; -} - - //========================================================================= // DebuggerMemView //========================================================================= @@ -497,33 +446,34 @@ void MemoryWindowQtConfig::applyToQWidget(QWidget *widget) if (m_reverse) reverse->trigger(); - QActionGroup *addressGroup = window->findChild<QActionGroup*>("addressgroup"); - addressGroup->actions()[m_addressMode]->trigger(); + QActionGroup *const addressGroup = window->findChild<QActionGroup*>("addressgroup"); + for (QAction *action : addressGroup->actions()) + { + if (action->data().toBool() == m_addressMode) + { + action->trigger(); + break; + } + } - QActionGroup *radixGroup = window->findChild<QActionGroup*>("radixgroup"); - switch (m_addressRadix) + QActionGroup *const radixGroup = window->findChild<QActionGroup*>("radixgroup"); + for (QAction *action : radixGroup->actions()) { - case 16: radixGroup->actions()[0]->trigger(); break; - case 10: radixGroup->actions()[1]->trigger(); break; - case 8: radixGroup->actions()[2]->trigger(); break; - default: break; + if (action->data().toInt() == m_addressRadix) + { + action->trigger(); + break; + } } - QActionGroup *dataFormat = window->findChild<QActionGroup*>("dataformat"); - switch (debug_view_memory::data_format(m_dataFormat)) + QActionGroup *const dataFormat = window->findChild<QActionGroup*>("dataformat"); + for (QAction *action : dataFormat->actions()) { - case debug_view_memory::data_format::HEX_8BIT: dataFormat->actions()[0]->trigger(); break; - case debug_view_memory::data_format::HEX_16BIT: dataFormat->actions()[1]->trigger(); break; - case debug_view_memory::data_format::HEX_32BIT: dataFormat->actions()[2]->trigger(); break; - case debug_view_memory::data_format::HEX_64BIT: dataFormat->actions()[3]->trigger(); break; - case debug_view_memory::data_format::OCTAL_8BIT: dataFormat->actions()[4]->trigger(); break; - case debug_view_memory::data_format::OCTAL_16BIT: dataFormat->actions()[5]->trigger(); break; - case debug_view_memory::data_format::OCTAL_32BIT: dataFormat->actions()[6]->trigger(); break; - case debug_view_memory::data_format::OCTAL_64BIT: dataFormat->actions()[7]->trigger(); break; - case debug_view_memory::data_format::FLOAT_32BIT: dataFormat->actions()[8]->trigger(); break; - case debug_view_memory::data_format::FLOAT_64BIT: dataFormat->actions()[9]->trigger(); break; - case debug_view_memory::data_format::FLOAT_80BIT: dataFormat->actions()[10]->trigger(); break; - default: break; + if (action->data().toInt() == m_dataFormat) + { + action->trigger(); + break; + } } } @@ -531,9 +481,11 @@ void MemoryWindowQtConfig::applyToQWidget(QWidget *widget) void MemoryWindowQtConfig::recoverFromXmlNode(util::xml::data_node const &node) { WindowQtConfig::recoverFromXmlNode(node); - m_memoryRegion = node.get_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_REGION, m_memoryRegion); - m_reverse = node.get_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_REVERSE_COLUMNS, m_reverse); - m_addressMode = node.get_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ADDRESS_MODE, m_addressMode); - m_addressRadix = node.get_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ADDRESS_RADIX, m_addressRadix); - m_dataFormat = node.get_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_DATA_FORMAT, m_dataFormat); + m_memoryRegion = node.get_attribute_int(ATTR_WINDOW_MEMORY_REGION, m_memoryRegion); + m_reverse = node.get_attribute_int(ATTR_WINDOW_MEMORY_REVERSE_COLUMNS, m_reverse); + m_addressMode = node.get_attribute_int(ATTR_WINDOW_MEMORY_ADDRESS_MODE, m_addressMode); + m_addressRadix = node.get_attribute_int(ATTR_WINDOW_MEMORY_ADDRESS_RADIX, m_addressRadix); + m_dataFormat = node.get_attribute_int(ATTR_WINDOW_MEMORY_DATA_FORMAT, m_dataFormat); } + +} // namespace osd::debugger::qt |