Previous 199869 Revisions Next

r34017 Monday 22nd December, 2014 at 19:16:45 UTC by Olivier Galibert
debug/qt: Add a per-device window [O. Galibert]

There probably is interesting information to add, and it can look
better.  Anybody, feel free to enhance it :-)
[src/emu]device.c device.h didisasm.c diexec.c digfx.c diimage.c dimemory.c dinetwork.c dinvram.c dioutput.c dirtc.c diserial.c dislot.c disound.c distate.c divideo.c
[src/emu/cpu/z80]z80daisy.c
[src/osd/modules/debugger]debugqt.c
[src/osd/modules/debugger/qt]debugqtdeviceinformationwindow.c* debugqtdeviceinformationwindow.h* debugqtdeviceswindow.c debugqtdeviceswindow.h
[src/osd/sdl]sdl.mak
[src/osd/windows]windows.mak

trunk/src/emu/cpu/z80/z80daisy.c
r242528r242529
1919//-------------------------------------------------
2020
2121device_z80daisy_interface::device_z80daisy_interface(const machine_config &mconfig, device_t &device)
22   : device_interface(device)
22   : device_interface(device, "z80daisy")
2323{
2424}
2525
trunk/src/emu/device.c
r242528r242529
841841//  device_interface - constructor
842842//-------------------------------------------------
843843
844device_interface::device_interface(device_t &device)
844device_interface::device_interface(device_t &device, const char *type)
845845   : m_interface_next(NULL),
846      m_device(device)
846      m_device(device),
847      m_type(type)
847848{
848849   device_interface **tailptr;
849850   for (tailptr = &device.m_interface_list; *tailptr != NULL; tailptr = &(*tailptr)->m_interface_next) ;
trunk/src/emu/device.h
r242528r242529
132132   astring default_bios_tag() const { return m_default_bios_tag; }
133133
134134   // interface helpers
135   device_interface *first_interface() const { return m_interface_list; }
135136   template<class _DeviceClass> bool interface(_DeviceClass *&intf) { intf = dynamic_cast<_DeviceClass *>(this); return (intf != NULL); }
136137   template<class _DeviceClass> bool interface(_DeviceClass *&intf) const { intf = dynamic_cast<const _DeviceClass *>(this); return (intf != NULL); }
137138
r242528r242529
297298
298299protected:
299300   // construction/destruction
300   device_interface(device_t &device);
301   device_interface(device_t &device, const char *type);
301302   virtual ~device_interface();
302303
303304public:
305   const char *interface_type() const { return m_type; }
306
304307   // casting helpers
305308   device_t &device() { return m_device; }
306309   const device_t &device() const { return m_device; }
r242528r242529
333336   // internal state
334337   device_interface *      m_interface_next;
335338   device_t &              m_device;
339   const char *            m_type;
336340};
337341
338342
trunk/src/emu/didisasm.c
r242528r242529
2020//-------------------------------------------------
2121
2222device_disasm_interface::device_disasm_interface(const machine_config &mconfig, device_t &device)
23   : device_interface(device)
23   : device_interface(device, "disasm")
2424{
2525}
2626
trunk/src/emu/diexec.c
r242528r242529
4242//-------------------------------------------------
4343
4444device_execute_interface::device_execute_interface(const machine_config &mconfig, device_t &device)
45   : device_interface(device),
45   : device_interface(device, "execute"),
4646      m_disabled(false),
4747      m_vblank_interrupt_screen(NULL),
4848      m_timed_interrupt_period(attotime::zero),
trunk/src/emu/digfx.c
r242528r242529
2020
2121device_gfx_interface::device_gfx_interface(const machine_config &mconfig, device_t &device,
2222                              const gfx_decode_entry *gfxinfo, const char *palette_tag)
23   : device_interface(device),
23   : device_interface(device, "gfx"),
2424   m_gfxdecodeinfo(gfxinfo),
2525   m_palette_tag(palette_tag),
2626   m_palette_is_sibling(palette_tag == NULL),
trunk/src/emu/diimage.c
r242528r242529
5353//-------------------------------------------------
5454
5555device_image_interface::device_image_interface(const machine_config &mconfig, device_t &device)
56   : device_interface(device),
56   : device_interface(device, "image"),
5757      m_file(NULL),
5858      m_mame_file(NULL),
5959      m_software_info_ptr(NULL),
trunk/src/emu/dimemory.c
r242528r242529
115115//-------------------------------------------------
116116
117117device_memory_interface::device_memory_interface(const machine_config &mconfig, device_t &device)
118   : device_interface(device)
118   : device_interface(device, "memory")
119119{
120120   memset(m_address_map, 0, sizeof(m_address_map));
121121   memset(m_addrspace, 0, sizeof(m_addrspace));
trunk/src/emu/dinetwork.c
r242528r242529
22#include "osdnet.h"
33
44device_network_interface::device_network_interface(const machine_config &mconfig, device_t &device, float bandwidth)
5   : device_interface(device)
5   : device_interface(device, "network")
66{
77   m_promisc = false;
88   m_bandwidth = bandwidth;
trunk/src/emu/dinvram.c
r242528r242529
2121//-------------------------------------------------
2222
2323device_nvram_interface::device_nvram_interface(const machine_config &mconfig, device_t &device)
24   : device_interface(device)
24   : device_interface(device, "nvram")
2525{
2626}
2727
trunk/src/emu/dioutput.c
r242528r242529
2121//-------------------------------------------------
2222
2323device_output_interface::device_output_interface(const machine_config &mconfig, device_t &device) :
24   device_interface(device),
24   device_interface(device, "output"),
2525   m_output_index(0),
2626   m_output_name(NULL)
2727{
trunk/src/emu/dirtc.c
r242528r242529
2929//-------------------------------------------------
3030
3131device_rtc_interface::device_rtc_interface(const machine_config &mconfig, device_t &device)
32   : device_interface(device)
32   : device_interface(device, "rtc")
3333{
3434}
3535
trunk/src/emu/diserial.c
r242528r242529
88#include "emu.h"
99
1010device_serial_interface::device_serial_interface(const machine_config &mconfig, device_t &device)
11   : device_interface(device),
11   : device_interface(device, "serial"),
1212   m_start_bit_hack_for_external_clocks(false),
1313   m_df_start_bit_count(0),
1414   m_df_word_length(0),
trunk/src/emu/dislot.c
r242528r242529
1010#include "emuopts.h"
1111
1212device_slot_interface::device_slot_interface(const machine_config &mconfig, device_t &device)
13   : device_interface(device),
13   : device_interface(device, "slot"),
1414   m_default_option(NULL),
1515   m_fixed(false)
1616{
r242528r242529
8181
8282
8383device_slot_card_interface::device_slot_card_interface(const machine_config &mconfig, device_t &device)
84   : device_interface(device)
84   : device_interface(device, "slot")
8585{
8686}
8787
trunk/src/emu/disound.c
r242528r242529
2121//-------------------------------------------------
2222
2323device_sound_interface::device_sound_interface(const machine_config &mconfig, device_t &device)
24   : device_interface(device),
24   : device_interface(device, "sound"),
2525      m_outputs(0),
2626      m_auto_allocated_inputs(0)
2727{
trunk/src/emu/distate.c
r242528r242529
390390//-------------------------------------------------
391391
392392device_state_interface::device_state_interface(const machine_config &mconfig, device_t &device)
393   : device_interface(device)
393   : device_interface(device, "state")
394394{
395395   memset(m_fast_state, 0, sizeof(m_fast_state));
396396
trunk/src/emu/divideo.c
r242528r242529
2424//-------------------------------------------------
2525
2626device_video_interface::device_video_interface(const machine_config &mconfig, device_t &device, bool screen_required)
27   : device_interface(device),
27   : device_interface(device, "video"),
2828      m_screen_required(screen_required),
2929      m_screen_tag(s_unconfigured_screen_tag),
3030      m_screen(NULL)
trunk/src/osd/modules/debugger/debugqt.c
r242528r242529
2626#include "qt/debugqtmemorywindow.h"
2727#include "qt/debugqtbreakpointswindow.h"
2828#include "qt/debugqtdeviceswindow.h"
29#include "qt/debugqtdeviceinformationwindow.h"
2930#include "debugqt.h"
3031
3132
r242528r242529
8687      WindowQtConfig::WindowType type = (WindowQtConfig::WindowType)xml_get_attribute_int(wnode, "type", WindowQtConfig::WIN_TYPE_UNKNOWN);
8788      switch (type)
8889      {
89         case WindowQtConfig::WIN_TYPE_MAIN:         xmlConfigurations.push_back(new MainWindowQtConfig()); break;
90         case WindowQtConfig::WIN_TYPE_MEMORY:       xmlConfigurations.push_back(new MemoryWindowQtConfig()); break;
91         case WindowQtConfig::WIN_TYPE_DASM:         xmlConfigurations.push_back(new DasmWindowQtConfig()); break;
92         case WindowQtConfig::WIN_TYPE_LOG:          xmlConfigurations.push_back(new LogWindowQtConfig()); break;
93         case WindowQtConfig::WIN_TYPE_BREAK_POINTS: xmlConfigurations.push_back(new BreakpointsWindowQtConfig()); break;
94         case WindowQtConfig::WIN_TYPE_DEVICES:      xmlConfigurations.push_back(new DevicesWindowQtConfig()); break;
90         case WindowQtConfig::WIN_TYPE_MAIN:               xmlConfigurations.push_back(new MainWindowQtConfig()); break;
91         case WindowQtConfig::WIN_TYPE_MEMORY:             xmlConfigurations.push_back(new MemoryWindowQtConfig()); break;
92         case WindowQtConfig::WIN_TYPE_DASM:               xmlConfigurations.push_back(new DasmWindowQtConfig()); break;
93         case WindowQtConfig::WIN_TYPE_LOG:                xmlConfigurations.push_back(new LogWindowQtConfig()); break;
94         case WindowQtConfig::WIN_TYPE_BREAK_POINTS:       xmlConfigurations.push_back(new BreakpointsWindowQtConfig()); break;
95         case WindowQtConfig::WIN_TYPE_DEVICES:            xmlConfigurations.push_back(new DevicesWindowQtConfig()); break;
96         case WindowQtConfig::WIN_TYPE_DEVICE_INFORMATION: xmlConfigurations.push_back(new DeviceInformationWindowQtConfig()); break;
9597         default: continue;
9698      }
9799      xmlConfigurations.back()->recoverFromXmlNode(wnode);
r242528r242529
149151         xmlConfigurations.push_back(new BreakpointsWindowQtConfig());
150152      else if (dynamic_cast<DevicesWindow*>(widget))
151153         xmlConfigurations.push_back(new DevicesWindowQtConfig());
154      else if (dynamic_cast<DeviceInformationWindow*>(widget))
155         xmlConfigurations.push_back(new DeviceInformationWindowQtConfig());
152156
153157      xmlConfigurations.back()->buildFromQWidget(widget);
154158   }
r242528r242529
193197            foo = new BreakpointsWindow(&machine); break;
194198         case WindowQtConfig::WIN_TYPE_DEVICES:
195199            foo = new DevicesWindow(&machine); break;
200         case WindowQtConfig::WIN_TYPE_DEVICE_INFORMATION:
201            foo = new DeviceInformationWindow(&machine); break;
196202         default: break;
197203      }
198204      config->applyToQWidget(foo);
trunk/src/osd/modules/debugger/qt/debugqtdeviceinformationwindow.c
r0r242529
1#define NO_MEM_TRACKING
2
3#include "debugqtdeviceinformationwindow.h"
4
5
6DeviceInformationWindow::DeviceInformationWindow(running_machine* machine, device_t* device, QWidget* parent) :
7   WindowQt(machine, NULL)
8{
9   m_device = device;
10
11   if (parent != NULL)
12   {
13      QPoint parentPos = parent->pos();
14      setGeometry(parentPos.x()+100, parentPos.y()+100, 600, 400);
15   }
16
17   if(m_device)
18      fill_device_information();
19}
20
21
22DeviceInformationWindow::~DeviceInformationWindow()
23{
24}
25
26void DeviceInformationWindow::fill_device_information()
27{
28   char title[4069];
29   sprintf(title, "Debug: Device %s", m_device->tag());
30   setWindowTitle(title);
31
32
33   QFrame *mainWindowFrame = new QFrame(this);
34   QVBoxLayout *vLayout = new QVBoxLayout(mainWindowFrame);
35   vLayout->setObjectName("vlayout");
36   vLayout->setSpacing(3);
37   vLayout->setContentsMargins(2,2,2,2);
38
39   QFrame *primaryFrame = new QFrame(mainWindowFrame);
40   primaryFrame->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
41   QGridLayout *gl1 = new QGridLayout(primaryFrame);
42   gl1->addWidget(new QLabel(QString("Tag"), primaryFrame), 0, 0);
43   gl1->addWidget(new QLabel(QString(m_device->tag()), primaryFrame), 0, 1);
44   gl1->addWidget(new QLabel(QString("Name"), primaryFrame), 1, 0);
45   gl1->addWidget(new QLabel(QString(m_device->name()), primaryFrame), 1, 1);
46   gl1->addWidget(new QLabel(QString("Shortname"), primaryFrame), 2, 0);
47   gl1->addWidget(new QLabel(QString(m_device->shortname()), primaryFrame), 2, 1);
48
49   int cpos = 3;
50   device_interface *intf = m_device->first_interface();
51   if(intf) {
52      gl1->addWidget(new QLabel(QString("Interfaces"), primaryFrame), cpos, 0);
53      while(intf) {
54         gl1->addWidget(new QLabel(QString(intf->interface_type()), primaryFrame), cpos, 1);
55         cpos++;
56         intf = intf->interface_next();
57      }
58   }
59
60   vLayout->addWidget(primaryFrame);
61
62   device_memory_interface *d_memory;
63   if(m_device->interface(d_memory)) {
64      QFrame *f = new QFrame(mainWindowFrame);
65      f->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
66      QVBoxLayout *vb = new QVBoxLayout(f);
67      bool first = true;
68      for(address_spacenum i=AS_0; i<ADDRESS_SPACES; i++)
69         if(d_memory->has_space(i)) {
70            QFrame *ff = new QFrame(f);
71            QHBoxLayout *hb = new QHBoxLayout(ff);
72            if(first) {
73               hb->addWidget(new QLabel("Memory maps"));
74               first = false;
75            }
76            hb->addStretch();
77            hb->addWidget(new QLabel(d_memory->space_config(i)->name()));
78            vb->addWidget(ff);
79         }
80      vLayout->addWidget(f);
81   }
82
83   vLayout->addStretch();
84
85   setCentralWidget(mainWindowFrame);
86}
87
88void DeviceInformationWindow::set_device(const char *tag)
89{
90   m_device = m_machine->device(tag);
91   if(!m_device)
92      m_device = &m_machine->root_device();
93   fill_device_information();
94}
95
96const char *DeviceInformationWindow::device_tag() const
97{
98   return m_device->tag();
99}
100
101
102//=========================================================================
103//  DeviceInformationWindowQtConfig
104//=========================================================================
105void DeviceInformationWindowQtConfig::buildFromQWidget(QWidget* widget)
106{
107   WindowQtConfig::buildFromQWidget(widget);
108   DeviceInformationWindow* window = dynamic_cast<DeviceInformationWindow*>(widget);
109   m_device_tag = window->device_tag();
110}
111
112
113void DeviceInformationWindowQtConfig::applyToQWidget(QWidget* widget)
114{
115   WindowQtConfig::applyToQWidget(widget);
116   DeviceInformationWindow* window = dynamic_cast<DeviceInformationWindow*>(widget);
117   window->set_device(m_device_tag.cstr());
118}
119
120
121void DeviceInformationWindowQtConfig::addToXmlDataNode(xml_data_node* node) const
122{
123   WindowQtConfig::addToXmlDataNode(node);
124   xml_set_attribute(node, "device-tag", m_device_tag);
125}
126
127
128void DeviceInformationWindowQtConfig::recoverFromXmlNode(xml_data_node* node)
129{
130   WindowQtConfig::recoverFromXmlNode(node);
131   m_device_tag = xml_get_attribute_string(node, "device-tag", ":");
132}
trunk/src/osd/modules/debugger/qt/debugqtdeviceinformationwindow.h
r0r242529
1#ifndef __DEBUG_QT_DEVICE_INFORMATION_WINDOW_H__
2#define __DEBUG_QT_DEVICE_INFORMATION_WINDOW_H__
3
4#include <QtGui/QtGui>
5
6#include "debugqtwindow.h"
7
8//============================================================
9//  The Device Information Window.
10//============================================================
11class DeviceInformationWindow : public WindowQt
12{
13   Q_OBJECT
14
15public:
16   DeviceInformationWindow(running_machine* machine, device_t* device = NULL, QWidget* parent=NULL);
17   virtual ~DeviceInformationWindow();
18
19   void set_device(const char *tag);
20   const char *device_tag() const;
21
22private:
23   device_t *m_device;
24
25   void fill_device_information();
26};
27
28
29
30
31//=========================================================================
32//  A way to store the configuration of a window long enough to read/write.
33//=========================================================================
34class DeviceInformationWindowQtConfig : public WindowQtConfig
35{
36public:
37   astring m_device_tag;
38
39   DeviceInformationWindowQtConfig() :
40      WindowQtConfig(WIN_TYPE_DEVICE_INFORMATION)
41   {
42   }
43
44   ~DeviceInformationWindowQtConfig() {}
45
46   void buildFromQWidget(QWidget* widget);
47   void applyToQWidget(QWidget* widget);
48   void addToXmlDataNode(xml_data_node* node) const;
49   void recoverFromXmlNode(xml_data_node* node);
50};
51
52
53#endif
trunk/src/osd/modules/debugger/qt/debugqtdeviceswindow.c
r242528r242529
11#define NO_MEM_TRACKING
22
33#include "debugqtdeviceswindow.h"
4#include "debugqtdeviceinformationwindow.h"
45
56DevicesWindowModel::DevicesWindowModel(running_machine *machine, QObject *parent)
67{
r242528r242529
1819
1920   device_t *dev = static_cast<device_t *>(index.internalPointer());
2021   switch(index.column()) {
21   case 0: return QString(dev->basetag()); break;
22   case 1: return QString(dev->name()); break;
22   case 0: return dev == &m_machine->root_device() ? QString("<root>") : QString(dev->basetag());
23   case 1: return QString(dev->name());
2324   }
2425
2526   return QVariant();
r242528r242529
108109   WindowQt(machine, NULL),
109110   m_devices_model(machine)
110111{
112   m_selected_device = NULL;
113
111114   setWindowTitle("Debug: All Devices");
112115
113116   if (parent != NULL)
r242528r242529
123126   m_devices_view->setModel(&m_devices_model);
124127   m_devices_view->expandAll();
125128   m_devices_view->resizeColumnToContents(0);
129   connect(m_devices_view->selectionModel(), SIGNAL(currentRowChanged(const QModelIndex &,const QModelIndex &)), this, SLOT(currentRowChanged(const QModelIndex &,const QModelIndex &)));
130   connect(m_devices_view, SIGNAL(activated(const QModelIndex &)), this, SLOT(activated(const QModelIndex &)));
126131   setCentralWidget(m_devices_view);
127132}
128133
r242528r242529
132137}
133138
134139
140void DevicesWindow::currentRowChanged(const QModelIndex &current, const QModelIndex &previous)
141{
142   m_selected_device = static_cast<device_t *>(current.internalPointer());
143}
135144
145
146void DevicesWindow::activated(const QModelIndex &index)
147{
148   device_t *dev = static_cast<device_t *>(index.internalPointer());
149   (new DeviceInformationWindow(m_machine, dev, this))->show();
150}
151
152
153
136154//=========================================================================
137155//  DevicesWindowQtConfig
138156//=========================================================================
trunk/src/osd/modules/debugger/qt/debugqtdeviceswindow.h
r242528r242529
4343   DevicesWindow(running_machine* machine, QWidget* parent=NULL);
4444   virtual ~DevicesWindow();
4545
46public slots:
47    void currentRowChanged(const QModelIndex &current, const QModelIndex &previous);
48    void activated(const QModelIndex &index);
49
4650private:
4751   QTreeView *m_devices_view;
4852   DevicesWindowModel m_devices_model;
53   device_t *m_selected_device;
4954};
5055
5156
trunk/src/osd/sdl/sdl.mak
r242528r242529
680680   $(OSDOBJ)/modules/debugger/qt/debugqtmemorywindow.o \
681681   $(OSDOBJ)/modules/debugger/qt/debugqtbreakpointswindow.o \
682682   $(OSDOBJ)/modules/debugger/qt/debugqtdeviceswindow.o \
683   $(OSDOBJ)/modules/debugger/qt/debugqtdeviceinformationwindow.o \
683684   $(OSDOBJ)/modules/debugger/qt/debugqtview.moc.o \
684685   $(OSDOBJ)/modules/debugger/qt/debugqtwindow.moc.o \
685686   $(OSDOBJ)/modules/debugger/qt/debugqtlogwindow.moc.o \
r242528r242529
687688   $(OSDOBJ)/modules/debugger/qt/debugqtmainwindow.moc.o \
688689   $(OSDOBJ)/modules/debugger/qt/debugqtmemorywindow.moc.o \
689690   $(OSDOBJ)/modules/debugger/qt/debugqtbreakpointswindow.moc.o \
690   $(OSDOBJ)/modules/debugger/qt/debugqtdeviceswindow.moc.o
691   $(OSDOBJ)/modules/debugger/qt/debugqtdeviceswindow.moc.o \
692   $(OSDOBJ)/modules/debugger/qt/debugqtdeviceinformationwindow.moc.o
691693endif
692694
693695ifeq ($(NO_DEBUGGER),1)
trunk/src/osd/windows/windows.mak
r242528r242529
416416   $(OSDOBJ)/modules/debugger/qt/debugqtmemorywindow.o \
417417   $(OSDOBJ)/modules/debugger/qt/debugqtbreakpointswindow.o \
418418   $(OSDOBJ)/modules/debugger/qt/debugqtdeviceswindow.o \
419   $(OSDOBJ)/modules/debugger/qt/debugqtdeviceinformationwindow.o \
419420   $(OSDOBJ)/modules/debugger/qt/debugqtview.moc.o \
420421   $(OSDOBJ)/modules/debugger/qt/debugqtwindow.moc.o \
421422   $(OSDOBJ)/modules/debugger/qt/debugqtlogwindow.moc.o \
r242528r242529
423424   $(OSDOBJ)/modules/debugger/qt/debugqtmainwindow.moc.o \
424425   $(OSDOBJ)/modules/debugger/qt/debugqtmemorywindow.moc.o \
425426   $(OSDOBJ)/modules/debugger/qt/debugqtbreakpointswindow.moc.o \
426   $(OSDOBJ)/modules/debugger/qt/debugqtdeviceswindow.moc.o
427   $(OSDOBJ)/modules/debugger/qt/debugqtdeviceswindow.moc.o \
428   $(OSDOBJ)/modules/debugger/qt/debugqtdeviceinformationwindow.moc.o
427429endif
428430
429431#-------------------------------------------------


Previous 199869 Revisions Next


© 1997-2024 The MAME Team