summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/debugger/qt/memorywindow.cpp
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2022-09-17 06:28:25 +1000
committer Vas Crabb <vas@vastheman.com>2022-09-17 06:31:07 +1000
commitc25428f519d401634d2e7555cc5cc0908efb5b0d (patch)
tree870decebdc57c8c742a8059629225aa923034e53 /src/osd/modules/debugger/qt/memorywindow.cpp
parentb64b4ef8bbae5c5745740d0861393a2b37b0fd32 (diff)
Added a crude dark theme for the Win32 debugger.
Also made a start on weaning the Qt debugger off its weird configuation objects. It can now save more view state with less string comparisons on memory labels, but it can't restore all of it yet.
Diffstat (limited to 'src/osd/modules/debugger/qt/memorywindow.cpp')
-rw-r--r--src/osd/modules/debugger/qt/memorywindow.cpp95
1 files changed, 26 insertions, 69 deletions
diff --git a/src/osd/modules/debugger/qt/memorywindow.cpp b/src/osd/modules/debugger/qt/memorywindow.cpp
index 8373a56ec3f..2360cda0458 100644
--- a/src/osd/modules/debugger/qt/memorywindow.cpp
+++ b/src/osd/modules/debugger/qt/memorywindow.cpp
@@ -214,6 +214,23 @@ MemoryWindow::~MemoryWindow()
}
+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);
+
+ 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());
+}
+
+
void MemoryWindow::memoryRegionChanged(int index)
{
if (index < m_memTable->view()->source_count())
@@ -222,7 +239,7 @@ 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 = downcast<debug_view_memory*>(m_memTable->view());
+ debug_view_memory *memView = m_memTable->view<debug_view_memory>();
switch (memView->get_data_format())
{
case debug_view_memory::data_format::HEX_8BIT: dataFormatMenuItem("formatActOne")->setChecked(true); break;
@@ -252,7 +269,7 @@ void MemoryWindow::memoryRegionChanged(int index)
void MemoryWindow::expressionSubmitted()
{
const QString expression = m_inputEdit->text();
- downcast<debug_view_memory *>(m_memTable->view())->set_expression(expression.toLocal8Bit().data());
+ m_memTable->view<debug_view_memory>()->set_expression(expression.toLocal8Bit().data());
// Make the cursor pop
m_memTable->view()->set_cursor_visible(true);
@@ -269,7 +286,7 @@ void MemoryWindow::expressionSubmitted()
void MemoryWindow::formatChanged(QAction* changedTo)
{
- debug_view_memory *memView = downcast<debug_view_memory*>(m_memTable->view());
+ 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);
@@ -300,7 +317,7 @@ void MemoryWindow::formatChanged(QAction* changedTo)
void MemoryWindow::addressChanged(QAction* changedTo)
{
- debug_view_memory *memView = downcast<debug_view_memory *>(m_memTable->view());
+ debug_view_memory *const memView = m_memTable->view<debug_view_memory>();
if (changedTo->text() == "Logical Addresses")
memView->set_physical(false);
@@ -313,7 +330,7 @@ void MemoryWindow::addressChanged(QAction* changedTo)
void MemoryWindow::radixChanged(QAction* changedTo)
{
- debug_view_memory *memView = downcast<debug_view_memory *>(m_memTable->view());
+ debug_view_memory *const memView = m_memTable->view<debug_view_memory>();
if (changedTo->text() == "Hexadecimal Addresses")
memView->set_address_radix(16);
@@ -328,7 +345,7 @@ void MemoryWindow::radixChanged(QAction* changedTo)
void MemoryWindow::reverseChanged(bool changedTo)
{
- debug_view_memory *memView = downcast<debug_view_memory*>(m_memTable->view());
+ debug_view_memory *const memView = m_memTable->view<debug_view_memory>();
memView->set_reverse(changedTo);
m_memTable->viewport()->update();
}
@@ -336,7 +353,7 @@ void MemoryWindow::reverseChanged(bool changedTo)
void MemoryWindow::increaseBytesPerLine(bool changedTo)
{
- debug_view_memory *memView = downcast<debug_view_memory*>(m_memTable->view());
+ debug_view_memory *const memView = m_memTable->view<debug_view_memory>();
memView->set_chunks_per_row(memView->chunks_per_row() + 1);
m_memTable->viewport()->update();
}
@@ -344,7 +361,7 @@ void MemoryWindow::increaseBytesPerLine(bool changedTo)
void MemoryWindow::decreaseBytesPerLine(bool checked)
{
- debug_view_memory *memView = downcast<debug_view_memory *>(m_memTable->view());
+ debug_view_memory *const memView = m_memTable->view<debug_view_memory>();
memView->set_chunks_per_row(memView->chunks_per_row() - 1);
m_memTable->viewport()->update();
}
@@ -404,7 +421,7 @@ void DebuggerMemView::addItemsToContextMenu(QMenu *menu)
if (view()->cursor_visible())
{
- debug_view_memory &memView = downcast<debug_view_memory &>(*view());
+ debug_view_memory &memView = *view<debug_view_memory>();
debug_view_memory_source const &source = downcast<debug_view_memory_source const &>(*memView.source());
address_space *const addressSpace = source.space();
if (addressSpace)
@@ -468,55 +485,6 @@ void DebuggerMemView::copyLastPc()
//=========================================================================
// MemoryWindowQtConfig
//=========================================================================
-void MemoryWindowQtConfig::buildFromQWidget(QWidget *widget)
-{
- WindowQtConfig::buildFromQWidget(widget);
- MemoryWindow *window = dynamic_cast<MemoryWindow *>(widget);
- QComboBox *memoryRegion = window->findChild<QComboBox*>("memoryregion");
- m_memoryRegion = memoryRegion->currentIndex();
-
- QAction *reverse = window->findChild<QAction *>("reverse");
- m_reverse = reverse->isChecked();
-
- QActionGroup *addressGroup = window->findChild<QActionGroup*>("addressgroup");
- if (addressGroup->checkedAction()->text() == "Logical Addresses")
- m_addressMode = 0;
- else if (addressGroup->checkedAction()->text() == "Physical Addresses")
- m_addressMode = 1;
-
- QActionGroup *radixGroup = window->findChild<QActionGroup*>("radixgroup");
- if (radixGroup->checkedAction()->text() == "Hexadecimal Addresses")
- m_addressRadix = 16;
- else if (radixGroup->checkedAction()->text() == "Decimal Addresses")
- m_addressRadix = 10;
- else if (radixGroup->checkedAction()->text() == "Octal Addresses")
- m_addressRadix = 8;
-
- QActionGroup *dataFormat = window->findChild<QActionGroup*>("dataformat");
- if (dataFormat->checkedAction()->text() == "1-byte Chunks (Hex)")
- m_dataFormat = int(debug_view_memory::data_format::HEX_8BIT);
- else if (dataFormat->checkedAction()->text() == "2-byte Chunks (Hex)")
- m_dataFormat = int(debug_view_memory::data_format::HEX_16BIT);
- else if (dataFormat->checkedAction()->text() == "4-byte Chunks (Hex)")
- m_dataFormat = int(debug_view_memory::data_format::HEX_32BIT);
- else if (dataFormat->checkedAction()->text() == "8-byte Chunks (Hex)")
- m_dataFormat = int(debug_view_memory::data_format::HEX_64BIT);
- else if (dataFormat->checkedAction()->text() == "1-byte Chunks (Octal)")
- m_dataFormat = int(debug_view_memory::data_format::OCTAL_8BIT);
- else if (dataFormat->checkedAction()->text() == "2-byte Chunks (Octal)")
- m_dataFormat = int(debug_view_memory::data_format::OCTAL_16BIT);
- else if (dataFormat->checkedAction()->text() == "4-byte Chunks (Octal)")
- m_dataFormat = int(debug_view_memory::data_format::OCTAL_32BIT);
- else if (dataFormat->checkedAction()->text() == "8-byte Chunks (Octal)")
- m_dataFormat = int(debug_view_memory::data_format::OCTAL_64BIT);
- else if (dataFormat->checkedAction()->text() == "32-bit floating point")
- m_dataFormat = int(debug_view_memory::data_format::FLOAT_32BIT);
- else if (dataFormat->checkedAction()->text() == "64-bit Floating Point")
- m_dataFormat = int(debug_view_memory::data_format::FLOAT_64BIT);
- else if (dataFormat->checkedAction()->text() == "80-bit Floating Point")
- m_dataFormat = int(debug_view_memory::data_format::FLOAT_80BIT);
-}
-
void MemoryWindowQtConfig::applyToQWidget(QWidget *widget)
{
@@ -560,17 +528,6 @@ void MemoryWindowQtConfig::applyToQWidget(QWidget *widget)
}
-void MemoryWindowQtConfig::addToXmlDataNode(util::xml::data_node &node) const
-{
- WindowQtConfig::addToXmlDataNode(node);
- node.set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_REGION, m_memoryRegion);
- node.set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_REVERSE_COLUMNS, m_reverse);
- node.set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ADDRESS_MODE, m_addressMode);
- node.set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ADDRESS_RADIX, m_addressRadix);
- node.set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_DATA_FORMAT, m_dataFormat);
-}
-
-
void MemoryWindowQtConfig::recoverFromXmlNode(util::xml::data_node const &node)
{
WindowQtConfig::recoverFromXmlNode(node);