summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/debugger/qt/memorywindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/debugger/qt/memorywindow.cpp')
-rw-r--r--src/osd/modules/debugger/qt/memorywindow.cpp202
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