Previous 199869 Revisions Next

r22537 Thursday 25th April, 2013 at 05:21:45 UTC by Andrew Gardner
Convert the std::vector of settings to a simple_list in preparation for saving
individual window settings.  (nw)
[src/osd/sdl]debugqt.c debugqtwindow.h

trunk/src/osd/sdl/debugqtwindow.h
r22536r22537
5353};
5454
5555
56//=======================================================================
57//  A way to store the configuration of a window long enough to use it.
58//=======================================================================
56//=========================================================================
57//  A way to store the configuration of a window long enough to read/write.
58//=========================================================================
5959class WindowQtConfig
6060{
6161public:
62   // This is a holdover from the old debugger - TODO: remove
6362   enum WindowType
6463   {
6564      WIN_TYPE_MAIN       = 0x01,
r22536r22537
7372   WindowQtConfig() :
7473      m_type(WIN_TYPE_MAIN),
7574      m_size(800, 600),
76      m_position(120, 120)
75      m_position(120, 120),
76      m_next(NULL)
7777   {}
7878   ~WindowQtConfig() {}
7979
8080   WindowType m_type;
8181   QPoint m_size;
8282   QPoint m_position;
83
84    // Dues for becoming a member of a simple_list
85    WindowQtConfig* next() const { return m_next; }
86    WindowQtConfig* m_next;
8387};
8488
8589#endif
trunk/src/osd/sdl/debugqt.c
r22536r22537
1919#include "config.h"
2020#include "debugger.h"
2121
22#include "debugqtlogwindow.h"
2223#include "debugqtmainwindow.h"
23#include "debugqtmemorywindow.h"
2424#include "debugqtdasmwindow.h"
25#include "debugqtlogwindow.h"
25#include "debugqtmemorywindow.h"
2626
2727
2828//============================================================
r22536r22537
4141//============================================================
4242
4343// Global variable used to feed the xml configuration callbacks
44std::vector<WindowQtConfig> xmlConfigurations;
44simple_list<WindowQtConfig> xmlConfigurations;
4545
46
4647static void xml_configuration_load(running_machine &machine, int config_type, xml_data_node *parentnode)
4748{
4849   xml_data_node *wnode;
r22536r22537
5556   if (parentnode == NULL)
5657      return;
5758
58   xmlConfigurations.clear();
59   xmlConfigurations.reset();
5960
6061   // Configuration load
6162   for (wnode = xml_get_sibling(parentnode->child, "window"); wnode != NULL; wnode = xml_get_sibling(wnode->next, "window"))
6263   {
63      WindowQtConfig config;
64      WindowQtConfig& config = xmlConfigurations.append(*global_alloc(WindowQtConfig));
6465      config.m_size.setX(xml_get_attribute_int(wnode, "size_x", config.m_size.x()));
6566      config.m_size.setY(xml_get_attribute_int(wnode, "size_y", config.m_size.y()));
6667      config.m_position.setX(xml_get_attribute_int(wnode, "position_x", config.m_position.x()));
6768      config.m_position.setY(xml_get_attribute_int(wnode, "position_y", config.m_position.y()));
6869      config.m_type = (WindowQtConfig::WindowType)xml_get_attribute_int(wnode, "type", config.m_type);
69      xmlConfigurations.push_back(config);
7070   }
7171}
7272
r22536r22537
7777   if (config_type != CONFIG_TYPE_GAME)
7878      return;
7979
80   for (int i = 0; i < xmlConfigurations.size(); i++)
80   for (WindowQtConfig* config = xmlConfigurations.first(); config != NULL; config = config->next())
8181   {
8282      // Create an xml node
8383      xml_data_node *debugger_node;
r22536r22537
8585      if (debugger_node == NULL)
8686         continue;
8787
88      xml_set_attribute_int(debugger_node, "type", xmlConfigurations[i].m_type);
89      xml_set_attribute_int(debugger_node, "position_x", xmlConfigurations[i].m_position.x());
90      xml_set_attribute_int(debugger_node, "position_y", xmlConfigurations[i].m_position.y());
91      xml_set_attribute_int(debugger_node, "size_x", xmlConfigurations[i].m_size.x());
92      xml_set_attribute_int(debugger_node, "size_y", xmlConfigurations[i].m_size.y());
88      xml_set_attribute_int(debugger_node, "type", config->m_type);
89      xml_set_attribute_int(debugger_node, "position_x", config->m_position.x());
90      xml_set_attribute_int(debugger_node, "position_y", config->m_position.y());
91      xml_set_attribute_int(debugger_node, "size_x", config->m_size.x());
92      xml_set_attribute_int(debugger_node, "size_y", config->m_size.y());
9393   }
9494}
9595
9696
9797static void gather_save_configurations()
9898{
99   xmlConfigurations.clear();
99   xmlConfigurations.reset();
100100
101101   // Loop over all the open windows
102102   foreach (QWidget* widget, QApplication::topLevelWidgets())
r22536r22537
118118      else if (dynamic_cast<LogWindow*>(widget))
119119         type = WindowQtConfig::WIN_TYPE_LOG;
120120
121      WindowQtConfig config;
121      WindowQtConfig& config = xmlConfigurations.append(*global_alloc(WindowQtConfig));
122122      config.m_type = type;
123123      config.m_position.setX(widget->geometry().topLeft().x());
124124      config.m_position.setY(widget->geometry().topLeft().y());
125125      config.m_size.setX(widget->size().width());
126126      config.m_size.setY(widget->size().height());
127      xmlConfigurations.push_back(config);
128127   }
129128}
130129
r22536r22537
133132//  Utilities
134133//============================================================
135134
136static void load_and_clear_main_window_config(std::vector<WindowQtConfig>& configs)
135static void load_and_clear_main_window_config(simple_list<WindowQtConfig>& configList)
137136{
138   if (configs.size() == 0)
139      return;
140
141   int i = 0;
142   for (i = 0; i < configs.size(); i++)
137   for (WindowQtConfig* config = xmlConfigurations.first(); config != NULL; config = config->next())
143138   {
144      if (configs[i].m_type == WindowQtConfig::WIN_TYPE_MAIN)
139      if (config->m_type == WindowQtConfig::WIN_TYPE_MAIN)
145140      {
146         mainQtWindow->setGeometry(configs[i].m_position.x(), configs[i].m_position.y(),
147                              configs[i].m_size.x(), configs[i].m_size.y());
141         mainQtWindow->setGeometry(config->m_position.x(), config->m_position.y(),
142                             config->m_size.x(), config->m_size.y());
143         configList.remove(*config);
148144         break;
149145      }
150146   }
151   configs.erase(configs.begin()+i);
152147}
153148
154149
155static void setup_additional_startup_windows(running_machine& machine, std::vector<WindowQtConfig>& configs)
150static void setup_additional_startup_windows(running_machine& machine, simple_list<WindowQtConfig>& configList)
156151{
157   for (int i = 0; i < configs.size(); i++)
152   for (WindowQtConfig* config = xmlConfigurations.first(); config != NULL; config = config->next())
158153   {
159154      WindowQt* foo = NULL;
160      switch (configs[i].m_type)
155      switch (config->m_type)
161156      {
162157         case WindowQtConfig::WIN_TYPE_MEMORY:
163158            foo = new MemoryWindow(&machine); break;
r22536r22537
167162            foo = new LogWindow(&machine); break;
168163         default: break;
169164      }
170      foo->setGeometry(configs[i].m_position.x(), configs[i].m_position.y(),
171                     configs[i].m_size.x(), configs[i].m_size.y());
165      foo->setGeometry(config->m_position.x(), config->m_position.y(),
166                   config->m_size.x(), config->m_size.y());
172167      foo->show();
173168   }
174169}
r22536r22537
199194   }
200195   else
201196   {
202      // If you're doing a hard reset, clear out existing widgets & get ready for re-init
197      // If you've done a hard reset, clear out existing widgets & get ready for re-init
203198      foreach (QWidget* widget, QApplication::topLevelWidgets())
204199      {
205200         if (!widget->isWindow() || widget->windowType() != Qt::Window)
r22536r22537
298293#else
299294
300295
296
301297#include "sdlinc.h"
302298
303299#include "emu.h"

Previous 199869 Revisions Next


© 1997-2024 The MAME Team