From c25428f519d401634d2e7555cc5cc0908efb5b0d Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sat, 17 Sep 2022 06:28:25 +1000 Subject: 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. --- src/osd/modules/debugger/debugqt.cpp | 126 +++++++++++++++-------------------- 1 file changed, 55 insertions(+), 71 deletions(-) (limited to 'src/osd/modules/debugger/debugqt.cpp') diff --git a/src/osd/modules/debugger/debugqt.cpp b/src/osd/modules/debugger/debugqt.cpp index dbc638d354a..cb09b08f0dc 100644 --- a/src/osd/modules/debugger/debugqt.cpp +++ b/src/osd/modules/debugger/debugqt.cpp @@ -56,8 +56,13 @@ public: #if defined(_WIN32) && !defined(SDLMAME_WIN32) virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *) Q_DECL_OVERRIDE; #endif + private: + void configuration_save(config_type which_type, util::xml::data_node *parentnode); + void gather_save_configurations(); + running_machine *m_machine; + util::xml::file::ptr m_config; }; @@ -94,16 +99,15 @@ void xml_configuration_load(running_machine &machine, config_type cfg_type, conf util::xml::data_node const *wnode = nullptr; for (wnode = parentnode->get_child(osd::debugger::NODE_WINDOW); wnode; wnode = wnode->get_next_sibling(osd::debugger::NODE_WINDOW)) { - WindowQtConfig::WindowType type = (WindowQtConfig::WindowType)wnode->get_attribute_int(osd::debugger::ATTR_WINDOW_TYPE, WindowQtConfig::WIN_TYPE_UNKNOWN); - switch (type) + switch (wnode->get_attribute_int(osd::debugger::ATTR_WINDOW_TYPE, -1)) { - case WindowQtConfig::WIN_TYPE_MAIN: xmlConfigurations.push_back(std::make_unique()); break; - case WindowQtConfig::WIN_TYPE_MEMORY: xmlConfigurations.push_back(std::make_unique()); break; - case WindowQtConfig::WIN_TYPE_DASM: xmlConfigurations.push_back(std::make_unique()); break; - case WindowQtConfig::WIN_TYPE_LOG: xmlConfigurations.push_back(std::make_unique()); break; - case WindowQtConfig::WIN_TYPE_BREAK_POINTS: xmlConfigurations.push_back(std::make_unique()); break; - case WindowQtConfig::WIN_TYPE_DEVICES: xmlConfigurations.push_back(std::make_unique()); break; - case WindowQtConfig::WIN_TYPE_DEVICE_INFORMATION: xmlConfigurations.push_back(std::make_unique()); break; + case osd::debugger::WINDOW_TYPE_CONSOLE: xmlConfigurations.push_back(std::make_unique()); break; + case osd::debugger::WINDOW_TYPE_MEMORY_VIEWER: xmlConfigurations.push_back(std::make_unique()); break; + case osd::debugger::WINDOW_TYPE_DISASSEMBLY_VIEWER: xmlConfigurations.push_back(std::make_unique()); break; + case osd::debugger::WINDOW_TYPE_ERROR_LOG_VIEWER: xmlConfigurations.push_back(std::make_unique()); break; + case osd::debugger::WINDOW_TYPE_POINTS_VIEWER: xmlConfigurations.push_back(std::make_unique()); break; + case osd::debugger::WINDOW_TYPE_DEVICES_VIEWER: xmlConfigurations.push_back(std::make_unique()); break; + case osd::debugger::WINDOW_TYPE_DEVICE_INFO_VIEWER: xmlConfigurations.push_back(std::make_unique()); break; default: continue; } xmlConfigurations.back()->recoverFromXmlNode(*wnode); @@ -111,60 +115,6 @@ void xml_configuration_load(running_machine &machine, config_type cfg_type, conf } -void xml_configuration_save(running_machine &machine, config_type cfg_type, util::xml::data_node *parentnode) -{ - // We only save system configuration - if (cfg_type != config_type::SYSTEM) - return; - - for (int i = 0; i < xmlConfigurations.size(); i++) - { - WindowQtConfig &config = *xmlConfigurations[i]; - - // Create an xml node - util::xml::data_node *const debugger_node = parentnode->add_child(osd::debugger::NODE_WINDOW, nullptr); - - // Insert the appropriate information - if (debugger_node) - config.addToXmlDataNode(*debugger_node); - } -} - - -void gather_save_configurations() -{ - xmlConfigurations.clear(); - - // Loop over all the open windows - foreach (QWidget *widget, QApplication::topLevelWidgets()) - { - if (!widget->isVisible()) - continue; - - if (!widget->isWindow() || widget->windowType() != Qt::Window) - continue; - - // Figure out its type - if (dynamic_cast(widget)) - xmlConfigurations.push_back(std::make_unique()); - else if (dynamic_cast(widget)) - xmlConfigurations.push_back(std::make_unique()); - else if (dynamic_cast(widget)) - xmlConfigurations.push_back(std::make_unique()); - else if (dynamic_cast(widget)) - xmlConfigurations.push_back(std::make_unique()); - else if (dynamic_cast(widget)) - xmlConfigurations.push_back(std::make_unique()); - else if (dynamic_cast(widget)) - xmlConfigurations.push_back(std::make_unique()); - else if (dynamic_cast(widget)) - xmlConfigurations.push_back(std::make_unique()); - - xmlConfigurations.back()->buildFromQWidget(widget); - } -} - - //============================================================ // Utilities //============================================================ @@ -174,7 +124,7 @@ void load_and_clear_main_window_config(std::vector