diff options
author | 2015-11-08 12:56:12 +0100 | |
---|---|---|
committer | 2015-11-08 12:56:12 +0100 | |
commit | 7c19aac60e12d6f5ea301bdb34d7826a01e0b06f (patch) | |
tree | f310d86aa2c6bfc19d115307dedde4eb0cd52dad /src/osd/modules/debugger/qt/deviceswindow.cpp | |
parent | a57b46ae933badd7441ce1644711dbb851e2b504 (diff) |
Rename *.c -> *.cpp in our source (nw)
Diffstat (limited to 'src/osd/modules/debugger/qt/deviceswindow.cpp')
-rw-r--r-- | src/osd/modules/debugger/qt/deviceswindow.cpp | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/src/osd/modules/debugger/qt/deviceswindow.cpp b/src/osd/modules/debugger/qt/deviceswindow.cpp new file mode 100644 index 00000000000..0a71fd8fbdf --- /dev/null +++ b/src/osd/modules/debugger/qt/deviceswindow.cpp @@ -0,0 +1,182 @@ +// license:BSD-3-Clause +// copyright-holders:Andrew Gardner +#define NO_MEM_TRACKING + +#include "deviceswindow.h" +#include "deviceinformationwindow.h" + +DevicesWindowModel::DevicesWindowModel(running_machine *machine, QObject *parent) +{ + m_machine = machine; +} + +DevicesWindowModel::~DevicesWindowModel() +{ +} + +QVariant DevicesWindowModel::data(const QModelIndex &index, int role) const +{ + if(!index.isValid() || role != Qt::DisplayRole) + return QVariant(); + + device_t *dev = static_cast<device_t *>(index.internalPointer()); + switch(index.column()) { + case 0: return dev == &m_machine->root_device() ? QString("<root>") : QString(dev->basetag()); + case 1: return QString(dev->name()); + } + + return QVariant(); +} + +Qt::ItemFlags DevicesWindowModel::flags(const QModelIndex &index) const +{ + if(!index.isValid()) + return 0; + + return QAbstractItemModel::flags(index); +} + +QVariant DevicesWindowModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if(role != Qt::DisplayRole || section < 0 || section >= 2) + return QVariant(); + return QString(section ? "Name" : "Tag"); +} + +QModelIndex DevicesWindowModel::index(int row, int column, const QModelIndex &parent) const +{ + if(!hasIndex(row, column, parent)) + return QModelIndex(); + + device_t *target = NULL; + + if(!parent.isValid()) { + if(row == 0) + target = &m_machine->root_device(); + + } else { + device_t *dparent = static_cast<device_t *>(parent.internalPointer()); + int count = row; + for(target = dparent->first_subdevice(); count && target; target = target->next()) + count--; + } + + if(target) + return createIndex(row, column, target); + + return QModelIndex(); +} + +QModelIndex DevicesWindowModel::parent(const QModelIndex &index) const +{ + if(!index.isValid()) + return QModelIndex(); + + device_t *dchild = static_cast<device_t *>(index.internalPointer()); + device_t *dparent = dchild->owner(); + + if(!dparent) + return QModelIndex(); + + device_t *dpp = dparent->owner(); + int row = 0; + if(dpp) { + for(device_t *child = dpp->first_subdevice(); child && child != dparent; child = child->next()) + row++; + } + return createIndex(row, 0, dparent); +} + +int DevicesWindowModel::rowCount(const QModelIndex &parent) const +{ + if(!parent.isValid()) + return 1; + + device_t *dparent = static_cast<device_t *>(parent.internalPointer()); + int count = 0; + for(device_t *child = dparent->first_subdevice(); child; child = child->next()) + count++; + + return count; +} + +int DevicesWindowModel::columnCount(const QModelIndex &parent) const +{ + return 2; +} + + + +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) + { + QPoint parentPos = parent->pos(); + setGeometry(parentPos.x()+100, parentPos.y()+100, 600, 400); + } + + // + // The tree widget + // + m_devices_view = new QTreeView(this); + 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); +} + + +DevicesWindow::~DevicesWindow() +{ +} + + +void DevicesWindow::currentRowChanged(const QModelIndex ¤t, 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 +//========================================================================= +void DevicesWindowQtConfig::buildFromQWidget(QWidget* widget) +{ + WindowQtConfig::buildFromQWidget(widget); + // DevicesWindow* window = dynamic_cast<DevicesWindow*>(widget); +} + + +void DevicesWindowQtConfig::applyToQWidget(QWidget* widget) +{ + WindowQtConfig::applyToQWidget(widget); + // DevicesWindow* window = dynamic_cast<DevicesWindow*>(widget); +} + + +void DevicesWindowQtConfig::addToXmlDataNode(xml_data_node* node) const +{ + WindowQtConfig::addToXmlDataNode(node); +} + + +void DevicesWindowQtConfig::recoverFromXmlNode(xml_data_node* node) +{ + WindowQtConfig::recoverFromXmlNode(node); +} |