summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2014-12-22 20:16:09 +0100
committer Olivier Galibert <galibert@pobox.com>2014-12-22 20:16:45 +0100
commit02027ddfcc80176e5e92fc285160ac90c31e3175 (patch)
tree8d4d57a6c3bde33fc09a2c3cad984860c1d7aa0d
parent03ee49381c9700ebd5f3136ce3c072ddefe55342 (diff)
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 :-)
-rw-r--r--src/emu/cpu/z80/z80daisy.c2
-rw-r--r--src/emu/device.c5
-rw-r--r--src/emu/device.h6
-rw-r--r--src/emu/didisasm.c2
-rw-r--r--src/emu/diexec.c2
-rw-r--r--src/emu/digfx.c2
-rw-r--r--src/emu/diimage.c2
-rw-r--r--src/emu/dimemory.c2
-rw-r--r--src/emu/dinetwork.c2
-rw-r--r--src/emu/dinvram.c2
-rw-r--r--src/emu/dioutput.c2
-rw-r--r--src/emu/dirtc.c2
-rw-r--r--src/emu/diserial.c2
-rw-r--r--src/emu/dislot.c4
-rw-r--r--src/emu/disound.c2
-rw-r--r--src/emu/distate.c2
-rw-r--r--src/emu/divideo.c2
-rw-r--r--src/osd/modules/debugger/debugqt.c18
-rw-r--r--src/osd/modules/debugger/qt/debugqtdeviceinformationwindow.c132
-rw-r--r--src/osd/modules/debugger/qt/debugqtdeviceinformationwindow.h53
-rw-r--r--src/osd/modules/debugger/qt/debugqtdeviceswindow.c22
-rw-r--r--src/osd/modules/debugger/qt/debugqtdeviceswindow.h5
-rw-r--r--src/osd/sdl/sdl.mak4
-rw-r--r--src/osd/windows/windows.mak4
24 files changed, 252 insertions, 29 deletions
diff --git a/src/emu/cpu/z80/z80daisy.c b/src/emu/cpu/z80/z80daisy.c
index ee58fc99400..b44f2767386 100644
--- a/src/emu/cpu/z80/z80daisy.c
+++ b/src/emu/cpu/z80/z80daisy.c
@@ -19,7 +19,7 @@
//-------------------------------------------------
device_z80daisy_interface::device_z80daisy_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device)
+ : device_interface(device, "z80daisy")
{
}
diff --git a/src/emu/device.c b/src/emu/device.c
index 16c5c3b2576..ea43ad04269 100644
--- a/src/emu/device.c
+++ b/src/emu/device.c
@@ -841,9 +841,10 @@ finder_base *device_t::register_auto_finder(finder_base &autodev)
// device_interface - constructor
//-------------------------------------------------
-device_interface::device_interface(device_t &device)
+device_interface::device_interface(device_t &device, const char *type)
: m_interface_next(NULL),
- m_device(device)
+ m_device(device),
+ m_type(type)
{
device_interface **tailptr;
for (tailptr = &device.m_interface_list; *tailptr != NULL; tailptr = &(*tailptr)->m_interface_next) ;
diff --git a/src/emu/device.h b/src/emu/device.h
index 1157719f662..9060081d899 100644
--- a/src/emu/device.h
+++ b/src/emu/device.h
@@ -132,6 +132,7 @@ public:
astring default_bios_tag() const { return m_default_bios_tag; }
// interface helpers
+ device_interface *first_interface() const { return m_interface_list; }
template<class _DeviceClass> bool interface(_DeviceClass *&intf) { intf = dynamic_cast<_DeviceClass *>(this); return (intf != NULL); }
template<class _DeviceClass> bool interface(_DeviceClass *&intf) const { intf = dynamic_cast<const _DeviceClass *>(this); return (intf != NULL); }
@@ -297,10 +298,12 @@ class device_interface
protected:
// construction/destruction
- device_interface(device_t &device);
+ device_interface(device_t &device, const char *type);
virtual ~device_interface();
public:
+ const char *interface_type() const { return m_type; }
+
// casting helpers
device_t &device() { return m_device; }
const device_t &device() const { return m_device; }
@@ -333,6 +336,7 @@ protected:
// internal state
device_interface * m_interface_next;
device_t & m_device;
+ const char * m_type;
};
diff --git a/src/emu/didisasm.c b/src/emu/didisasm.c
index e31fe0815f1..9abca9e3f96 100644
--- a/src/emu/didisasm.c
+++ b/src/emu/didisasm.c
@@ -20,7 +20,7 @@
//-------------------------------------------------
device_disasm_interface::device_disasm_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device)
+ : device_interface(device, "disasm")
{
}
diff --git a/src/emu/diexec.c b/src/emu/diexec.c
index 820d310ae6b..d19183b47ee 100644
--- a/src/emu/diexec.c
+++ b/src/emu/diexec.c
@@ -42,7 +42,7 @@ const int TRIGGER_SUSPENDTIME = -4000;
//-------------------------------------------------
device_execute_interface::device_execute_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device),
+ : device_interface(device, "execute"),
m_disabled(false),
m_vblank_interrupt_screen(NULL),
m_timed_interrupt_period(attotime::zero),
diff --git a/src/emu/digfx.c b/src/emu/digfx.c
index 3d1399e8ac1..46282fdf382 100644
--- a/src/emu/digfx.c
+++ b/src/emu/digfx.c
@@ -20,7 +20,7 @@
device_gfx_interface::device_gfx_interface(const machine_config &mconfig, device_t &device,
const gfx_decode_entry *gfxinfo, const char *palette_tag)
- : device_interface(device),
+ : device_interface(device, "gfx"),
m_gfxdecodeinfo(gfxinfo),
m_palette_tag(palette_tag),
m_palette_is_sibling(palette_tag == NULL),
diff --git a/src/emu/diimage.c b/src/emu/diimage.c
index 5345db27ec4..385bc883647 100644
--- a/src/emu/diimage.c
+++ b/src/emu/diimage.c
@@ -53,7 +53,7 @@ const image_device_type_info device_image_interface::m_device_info_array[] =
//-------------------------------------------------
device_image_interface::device_image_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device),
+ : device_interface(device, "image"),
m_file(NULL),
m_mame_file(NULL),
m_software_info_ptr(NULL),
diff --git a/src/emu/dimemory.c b/src/emu/dimemory.c
index 77585be99e8..57acebf7b32 100644
--- a/src/emu/dimemory.c
+++ b/src/emu/dimemory.c
@@ -115,7 +115,7 @@ address_space_config::address_space_config(const char *name, endianness_t endian
//-------------------------------------------------
device_memory_interface::device_memory_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device)
+ : device_interface(device, "memory")
{
memset(m_address_map, 0, sizeof(m_address_map));
memset(m_addrspace, 0, sizeof(m_addrspace));
diff --git a/src/emu/dinetwork.c b/src/emu/dinetwork.c
index 32c0db9fe26..cd8f0b3a71c 100644
--- a/src/emu/dinetwork.c
+++ b/src/emu/dinetwork.c
@@ -2,7 +2,7 @@
#include "osdnet.h"
device_network_interface::device_network_interface(const machine_config &mconfig, device_t &device, float bandwidth)
- : device_interface(device)
+ : device_interface(device, "network")
{
m_promisc = false;
m_bandwidth = bandwidth;
diff --git a/src/emu/dinvram.c b/src/emu/dinvram.c
index bd23dab16be..4767d7d633c 100644
--- a/src/emu/dinvram.c
+++ b/src/emu/dinvram.c
@@ -21,7 +21,7 @@
//-------------------------------------------------
device_nvram_interface::device_nvram_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device)
+ : device_interface(device, "nvram")
{
}
diff --git a/src/emu/dioutput.c b/src/emu/dioutput.c
index 08f603b8af1..cf222f7a477 100644
--- a/src/emu/dioutput.c
+++ b/src/emu/dioutput.c
@@ -21,7 +21,7 @@
//-------------------------------------------------
device_output_interface::device_output_interface(const machine_config &mconfig, device_t &device) :
- device_interface(device),
+ device_interface(device, "output"),
m_output_index(0),
m_output_name(NULL)
{
diff --git a/src/emu/dirtc.c b/src/emu/dirtc.c
index 988024c7b48..912c49d538d 100644
--- a/src/emu/dirtc.c
+++ b/src/emu/dirtc.c
@@ -29,7 +29,7 @@ static const int DAYS_PER_MONTH[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31,
//-------------------------------------------------
device_rtc_interface::device_rtc_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device)
+ : device_interface(device, "rtc")
{
}
diff --git a/src/emu/diserial.c b/src/emu/diserial.c
index b2ee4b0edd2..085241ab670 100644
--- a/src/emu/diserial.c
+++ b/src/emu/diserial.c
@@ -8,7 +8,7 @@
#include "emu.h"
device_serial_interface::device_serial_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device),
+ : device_interface(device, "serial"),
m_start_bit_hack_for_external_clocks(false),
m_df_start_bit_count(0),
m_df_word_length(0),
diff --git a/src/emu/dislot.c b/src/emu/dislot.c
index 11f179d0a1e..22fc5c903f9 100644
--- a/src/emu/dislot.c
+++ b/src/emu/dislot.c
@@ -10,7 +10,7 @@
#include "emuopts.h"
device_slot_interface::device_slot_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device),
+ : device_interface(device, "slot"),
m_default_option(NULL),
m_fixed(false)
{
@@ -81,7 +81,7 @@ device_t* device_slot_interface::get_card_device()
device_slot_card_interface::device_slot_card_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device)
+ : device_interface(device, "slot")
{
}
diff --git a/src/emu/disound.c b/src/emu/disound.c
index b8293563677..1c088021d82 100644
--- a/src/emu/disound.c
+++ b/src/emu/disound.c
@@ -21,7 +21,7 @@
//-------------------------------------------------
device_sound_interface::device_sound_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device),
+ : device_interface(device, "sound"),
m_outputs(0),
m_auto_allocated_inputs(0)
{
diff --git a/src/emu/distate.c b/src/emu/distate.c
index 15f834b0ecb..cee1f0a6c26 100644
--- a/src/emu/distate.c
+++ b/src/emu/distate.c
@@ -390,7 +390,7 @@ void device_state_entry::set_value(const char *string) const
//-------------------------------------------------
device_state_interface::device_state_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device)
+ : device_interface(device, "state")
{
memset(m_fast_state, 0, sizeof(m_fast_state));
diff --git a/src/emu/divideo.c b/src/emu/divideo.c
index 16b3d83a713..82433d93e88 100644
--- a/src/emu/divideo.c
+++ b/src/emu/divideo.c
@@ -24,7 +24,7 @@ const char device_video_interface::s_unconfigured_screen_tag[] = "!!UNCONFIGURED
//-------------------------------------------------
device_video_interface::device_video_interface(const machine_config &mconfig, device_t &device, bool screen_required)
- : device_interface(device),
+ : device_interface(device, "video"),
m_screen_required(screen_required),
m_screen_tag(s_unconfigured_screen_tag),
m_screen(NULL)
diff --git a/src/osd/modules/debugger/debugqt.c b/src/osd/modules/debugger/debugqt.c
index 40942a63506..7ae32540b0a 100644
--- a/src/osd/modules/debugger/debugqt.c
+++ b/src/osd/modules/debugger/debugqt.c
@@ -26,6 +26,7 @@
#include "qt/debugqtmemorywindow.h"
#include "qt/debugqtbreakpointswindow.h"
#include "qt/debugqtdeviceswindow.h"
+#include "qt/debugqtdeviceinformationwindow.h"
#include "debugqt.h"
@@ -86,12 +87,13 @@ static void xml_configuration_load(running_machine &machine, int config_type, xm
WindowQtConfig::WindowType type = (WindowQtConfig::WindowType)xml_get_attribute_int(wnode, "type", WindowQtConfig::WIN_TYPE_UNKNOWN);
switch (type)
{
- case WindowQtConfig::WIN_TYPE_MAIN: xmlConfigurations.push_back(new MainWindowQtConfig()); break;
- case WindowQtConfig::WIN_TYPE_MEMORY: xmlConfigurations.push_back(new MemoryWindowQtConfig()); break;
- case WindowQtConfig::WIN_TYPE_DASM: xmlConfigurations.push_back(new DasmWindowQtConfig()); break;
- case WindowQtConfig::WIN_TYPE_LOG: xmlConfigurations.push_back(new LogWindowQtConfig()); break;
- case WindowQtConfig::WIN_TYPE_BREAK_POINTS: xmlConfigurations.push_back(new BreakpointsWindowQtConfig()); break;
- case WindowQtConfig::WIN_TYPE_DEVICES: xmlConfigurations.push_back(new DevicesWindowQtConfig()); break;
+ case WindowQtConfig::WIN_TYPE_MAIN: xmlConfigurations.push_back(new MainWindowQtConfig()); break;
+ case WindowQtConfig::WIN_TYPE_MEMORY: xmlConfigurations.push_back(new MemoryWindowQtConfig()); break;
+ case WindowQtConfig::WIN_TYPE_DASM: xmlConfigurations.push_back(new DasmWindowQtConfig()); break;
+ case WindowQtConfig::WIN_TYPE_LOG: xmlConfigurations.push_back(new LogWindowQtConfig()); break;
+ case WindowQtConfig::WIN_TYPE_BREAK_POINTS: xmlConfigurations.push_back(new BreakpointsWindowQtConfig()); break;
+ case WindowQtConfig::WIN_TYPE_DEVICES: xmlConfigurations.push_back(new DevicesWindowQtConfig()); break;
+ case WindowQtConfig::WIN_TYPE_DEVICE_INFORMATION: xmlConfigurations.push_back(new DeviceInformationWindowQtConfig()); break;
default: continue;
}
xmlConfigurations.back()->recoverFromXmlNode(wnode);
@@ -149,6 +151,8 @@ static void gather_save_configurations()
xmlConfigurations.push_back(new BreakpointsWindowQtConfig());
else if (dynamic_cast<DevicesWindow*>(widget))
xmlConfigurations.push_back(new DevicesWindowQtConfig());
+ else if (dynamic_cast<DeviceInformationWindow*>(widget))
+ xmlConfigurations.push_back(new DeviceInformationWindowQtConfig());
xmlConfigurations.back()->buildFromQWidget(widget);
}
@@ -193,6 +197,8 @@ static void setup_additional_startup_windows(running_machine& machine, std::vect
foo = new BreakpointsWindow(&machine); break;
case WindowQtConfig::WIN_TYPE_DEVICES:
foo = new DevicesWindow(&machine); break;
+ case WindowQtConfig::WIN_TYPE_DEVICE_INFORMATION:
+ foo = new DeviceInformationWindow(&machine); break;
default: break;
}
config->applyToQWidget(foo);
diff --git a/src/osd/modules/debugger/qt/debugqtdeviceinformationwindow.c b/src/osd/modules/debugger/qt/debugqtdeviceinformationwindow.c
new file mode 100644
index 00000000000..66baf08bdfa
--- /dev/null
+++ b/src/osd/modules/debugger/qt/debugqtdeviceinformationwindow.c
@@ -0,0 +1,132 @@
+#define NO_MEM_TRACKING
+
+#include "debugqtdeviceinformationwindow.h"
+
+
+DeviceInformationWindow::DeviceInformationWindow(running_machine* machine, device_t* device, QWidget* parent) :
+ WindowQt(machine, NULL)
+{
+ m_device = device;
+
+ if (parent != NULL)
+ {
+ QPoint parentPos = parent->pos();
+ setGeometry(parentPos.x()+100, parentPos.y()+100, 600, 400);
+ }
+
+ if(m_device)
+ fill_device_information();
+}
+
+
+DeviceInformationWindow::~DeviceInformationWindow()
+{
+}
+
+void DeviceInformationWindow::fill_device_information()
+{
+ char title[4069];
+ sprintf(title, "Debug: Device %s", m_device->tag());
+ setWindowTitle(title);
+
+
+ QFrame *mainWindowFrame = new QFrame(this);
+ QVBoxLayout *vLayout = new QVBoxLayout(mainWindowFrame);
+ vLayout->setObjectName("vlayout");
+ vLayout->setSpacing(3);
+ vLayout->setContentsMargins(2,2,2,2);
+
+ QFrame *primaryFrame = new QFrame(mainWindowFrame);
+ primaryFrame->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
+ QGridLayout *gl1 = new QGridLayout(primaryFrame);
+ gl1->addWidget(new QLabel(QString("Tag"), primaryFrame), 0, 0);
+ gl1->addWidget(new QLabel(QString(m_device->tag()), primaryFrame), 0, 1);
+ gl1->addWidget(new QLabel(QString("Name"), primaryFrame), 1, 0);
+ gl1->addWidget(new QLabel(QString(m_device->name()), primaryFrame), 1, 1);
+ gl1->addWidget(new QLabel(QString("Shortname"), primaryFrame), 2, 0);
+ gl1->addWidget(new QLabel(QString(m_device->shortname()), primaryFrame), 2, 1);
+
+ int cpos = 3;
+ device_interface *intf = m_device->first_interface();
+ if(intf) {
+ gl1->addWidget(new QLabel(QString("Interfaces"), primaryFrame), cpos, 0);
+ while(intf) {
+ gl1->addWidget(new QLabel(QString(intf->interface_type()), primaryFrame), cpos, 1);
+ cpos++;
+ intf = intf->interface_next();
+ }
+ }
+
+ vLayout->addWidget(primaryFrame);
+
+ device_memory_interface *d_memory;
+ if(m_device->interface(d_memory)) {
+ QFrame *f = new QFrame(mainWindowFrame);
+ f->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
+ QVBoxLayout *vb = new QVBoxLayout(f);
+ bool first = true;
+ for(address_spacenum i=AS_0; i<ADDRESS_SPACES; i++)
+ if(d_memory->has_space(i)) {
+ QFrame *ff = new QFrame(f);
+ QHBoxLayout *hb = new QHBoxLayout(ff);
+ if(first) {
+ hb->addWidget(new QLabel("Memory maps"));
+ first = false;
+ }
+ hb->addStretch();
+ hb->addWidget(new QLabel(d_memory->space_config(i)->name()));
+ vb->addWidget(ff);
+ }
+ vLayout->addWidget(f);
+ }
+
+ vLayout->addStretch();
+
+ setCentralWidget(mainWindowFrame);
+}
+
+void DeviceInformationWindow::set_device(const char *tag)
+{
+ m_device = m_machine->device(tag);
+ if(!m_device)
+ m_device = &m_machine->root_device();
+ fill_device_information();
+}
+
+const char *DeviceInformationWindow::device_tag() const
+{
+ return m_device->tag();
+}
+
+
+//=========================================================================
+// DeviceInformationWindowQtConfig
+//=========================================================================
+void DeviceInformationWindowQtConfig::buildFromQWidget(QWidget* widget)
+{
+ WindowQtConfig::buildFromQWidget(widget);
+ DeviceInformationWindow* window = dynamic_cast<DeviceInformationWindow*>(widget);
+ m_device_tag = window->device_tag();
+}
+
+
+void DeviceInformationWindowQtConfig::applyToQWidget(QWidget* widget)
+{
+ WindowQtConfig::applyToQWidget(widget);
+ DeviceInformationWindow* window = dynamic_cast<DeviceInformationWindow*>(widget);
+ window->set_device(m_device_tag.cstr());
+}
+
+
+void DeviceInformationWindowQtConfig::addToXmlDataNode(xml_data_node* node) const
+{
+ WindowQtConfig::addToXmlDataNode(node);
+ xml_set_attribute(node, "device-tag", m_device_tag);
+}
+
+
+void DeviceInformationWindowQtConfig::recoverFromXmlNode(xml_data_node* node)
+{
+ WindowQtConfig::recoverFromXmlNode(node);
+ m_device_tag = xml_get_attribute_string(node, "device-tag", ":");
+}
diff --git a/src/osd/modules/debugger/qt/debugqtdeviceinformationwindow.h b/src/osd/modules/debugger/qt/debugqtdeviceinformationwindow.h
new file mode 100644
index 00000000000..cb7ade44c00
--- /dev/null
+++ b/src/osd/modules/debugger/qt/debugqtdeviceinformationwindow.h
@@ -0,0 +1,53 @@
+#ifndef __DEBUG_QT_DEVICE_INFORMATION_WINDOW_H__
+#define __DEBUG_QT_DEVICE_INFORMATION_WINDOW_H__
+
+#include <QtGui/QtGui>
+
+#include "debugqtwindow.h"
+
+//============================================================
+// The Device Information Window.
+//============================================================
+class DeviceInformationWindow : public WindowQt
+{
+ Q_OBJECT
+
+public:
+ DeviceInformationWindow(running_machine* machine, device_t* device = NULL, QWidget* parent=NULL);
+ virtual ~DeviceInformationWindow();
+
+ void set_device(const char *tag);
+ const char *device_tag() const;
+
+private:
+ device_t *m_device;
+
+ void fill_device_information();
+};
+
+
+
+
+//=========================================================================
+// A way to store the configuration of a window long enough to read/write.
+//=========================================================================
+class DeviceInformationWindowQtConfig : public WindowQtConfig
+{
+public:
+ astring m_device_tag;
+
+ DeviceInformationWindowQtConfig() :
+ WindowQtConfig(WIN_TYPE_DEVICE_INFORMATION)
+ {
+ }
+
+ ~DeviceInformationWindowQtConfig() {}
+
+ void buildFromQWidget(QWidget* widget);
+ void applyToQWidget(QWidget* widget);
+ void addToXmlDataNode(xml_data_node* node) const;
+ void recoverFromXmlNode(xml_data_node* node);
+};
+
+
+#endif
diff --git a/src/osd/modules/debugger/qt/debugqtdeviceswindow.c b/src/osd/modules/debugger/qt/debugqtdeviceswindow.c
index ee833941b2d..10596a1c9f1 100644
--- a/src/osd/modules/debugger/qt/debugqtdeviceswindow.c
+++ b/src/osd/modules/debugger/qt/debugqtdeviceswindow.c
@@ -1,6 +1,7 @@
#define NO_MEM_TRACKING
#include "debugqtdeviceswindow.h"
+#include "debugqtdeviceinformationwindow.h"
DevicesWindowModel::DevicesWindowModel(running_machine *machine, QObject *parent)
{
@@ -18,8 +19,8 @@ QVariant DevicesWindowModel::data(const QModelIndex &index, int role) const
device_t *dev = static_cast<device_t *>(index.internalPointer());
switch(index.column()) {
- case 0: return QString(dev->basetag()); break;
- case 1: return QString(dev->name()); break;
+ case 0: return dev == &m_machine->root_device() ? QString("<root>") : QString(dev->basetag());
+ case 1: return QString(dev->name());
}
return QVariant();
@@ -108,6 +109,8 @@ DevicesWindow::DevicesWindow(running_machine* machine, QWidget* parent) :
WindowQt(machine, NULL),
m_devices_model(machine)
{
+ m_selected_device = NULL;
+
setWindowTitle("Debug: All Devices");
if (parent != NULL)
@@ -123,6 +126,8 @@ DevicesWindow::DevicesWindow(running_machine* machine, QWidget* parent) :
m_devices_view->setModel(&m_devices_model);
m_devices_view->expandAll();
m_devices_view->resizeColumnToContents(0);
+ connect(m_devices_view->selectionModel(), SIGNAL(currentRowChanged(const QModelIndex &,const QModelIndex &)), this, SLOT(currentRowChanged(const QModelIndex &,const QModelIndex &)));
+ connect(m_devices_view, SIGNAL(activated(const QModelIndex &)), this, SLOT(activated(const QModelIndex &)));
setCentralWidget(m_devices_view);
}
@@ -132,6 +137,19 @@ DevicesWindow::~DevicesWindow()
}
+void DevicesWindow::currentRowChanged(const QModelIndex &current, const QModelIndex &previous)
+{
+ m_selected_device = static_cast<device_t *>(current.internalPointer());
+}
+
+
+void DevicesWindow::activated(const QModelIndex &index)
+{
+ device_t *dev = static_cast<device_t *>(index.internalPointer());
+ (new DeviceInformationWindow(m_machine, dev, this))->show();
+}
+
+
//=========================================================================
// DevicesWindowQtConfig
diff --git a/src/osd/modules/debugger/qt/debugqtdeviceswindow.h b/src/osd/modules/debugger/qt/debugqtdeviceswindow.h
index de3645d5517..833d8d80aca 100644
--- a/src/osd/modules/debugger/qt/debugqtdeviceswindow.h
+++ b/src/osd/modules/debugger/qt/debugqtdeviceswindow.h
@@ -43,9 +43,14 @@ public:
DevicesWindow(running_machine* machine, QWidget* parent=NULL);
virtual ~DevicesWindow();
+public slots:
+ void currentRowChanged(const QModelIndex &current, const QModelIndex &previous);
+ void activated(const QModelIndex &index);
+
private:
QTreeView *m_devices_view;
DevicesWindowModel m_devices_model;
+ device_t *m_selected_device;
};
diff --git a/src/osd/sdl/sdl.mak b/src/osd/sdl/sdl.mak
index 6ec71d3a162..6551559b9e1 100644
--- a/src/osd/sdl/sdl.mak
+++ b/src/osd/sdl/sdl.mak
@@ -680,6 +680,7 @@ DEBUGOBJS = \
$(OSDOBJ)/modules/debugger/qt/debugqtmemorywindow.o \
$(OSDOBJ)/modules/debugger/qt/debugqtbreakpointswindow.o \
$(OSDOBJ)/modules/debugger/qt/debugqtdeviceswindow.o \
+ $(OSDOBJ)/modules/debugger/qt/debugqtdeviceinformationwindow.o \
$(OSDOBJ)/modules/debugger/qt/debugqtview.moc.o \
$(OSDOBJ)/modules/debugger/qt/debugqtwindow.moc.o \
$(OSDOBJ)/modules/debugger/qt/debugqtlogwindow.moc.o \
@@ -687,7 +688,8 @@ DEBUGOBJS = \
$(OSDOBJ)/modules/debugger/qt/debugqtmainwindow.moc.o \
$(OSDOBJ)/modules/debugger/qt/debugqtmemorywindow.moc.o \
$(OSDOBJ)/modules/debugger/qt/debugqtbreakpointswindow.moc.o \
- $(OSDOBJ)/modules/debugger/qt/debugqtdeviceswindow.moc.o
+ $(OSDOBJ)/modules/debugger/qt/debugqtdeviceswindow.moc.o \
+ $(OSDOBJ)/modules/debugger/qt/debugqtdeviceinformationwindow.moc.o
endif
ifeq ($(NO_DEBUGGER),1)
diff --git a/src/osd/windows/windows.mak b/src/osd/windows/windows.mak
index b72ec5238a6..39ae9f7835b 100644
--- a/src/osd/windows/windows.mak
+++ b/src/osd/windows/windows.mak
@@ -416,6 +416,7 @@ OSDOBJS += \
$(OSDOBJ)/modules/debugger/qt/debugqtmemorywindow.o \
$(OSDOBJ)/modules/debugger/qt/debugqtbreakpointswindow.o \
$(OSDOBJ)/modules/debugger/qt/debugqtdeviceswindow.o \
+ $(OSDOBJ)/modules/debugger/qt/debugqtdeviceinformationwindow.o \
$(OSDOBJ)/modules/debugger/qt/debugqtview.moc.o \
$(OSDOBJ)/modules/debugger/qt/debugqtwindow.moc.o \
$(OSDOBJ)/modules/debugger/qt/debugqtlogwindow.moc.o \
@@ -423,7 +424,8 @@ OSDOBJS += \
$(OSDOBJ)/modules/debugger/qt/debugqtmainwindow.moc.o \
$(OSDOBJ)/modules/debugger/qt/debugqtmemorywindow.moc.o \
$(OSDOBJ)/modules/debugger/qt/debugqtbreakpointswindow.moc.o \
- $(OSDOBJ)/modules/debugger/qt/debugqtdeviceswindow.moc.o
+ $(OSDOBJ)/modules/debugger/qt/debugqtdeviceswindow.moc.o \
+ $(OSDOBJ)/modules/debugger/qt/debugqtdeviceinformationwindow.moc.o
endif
#-------------------------------------------------