diff options
Diffstat (limited to 'src/osd/modules/debugger/qt/memorywindow.cpp')
| -rw-r--r-- | src/osd/modules/debugger/qt/memorywindow.cpp | 153 |
1 files changed, 105 insertions, 48 deletions
diff --git a/src/osd/modules/debugger/qt/memorywindow.cpp b/src/osd/modules/debugger/qt/memorywindow.cpp index 3aee20a0cd0..925c8b86bd1 100644 --- a/src/osd/modules/debugger/qt/memorywindow.cpp +++ b/src/osd/modules/debugger/qt/memorywindow.cpp @@ -2,6 +2,17 @@ // copyright-holders:Andrew Gardner #define NO_MEM_TRACKING +#include <QtGui/QClipboard> +#include <QtGui/QMouseEvent> +#include <QtWidgets/QActionGroup> +#include <QtWidgets/QApplication> +#include <QtWidgets/QHBoxLayout> +#include <QtWidgets/QMenu> +#include <QtWidgets/QMenuBar> +#include <QtWidgets/QScrollBar> +#include <QtWidgets/QToolTip> +#include <QtWidgets/QVBoxLayout> + #include "memorywindow.h" #include "debug/dvmemory.h" @@ -30,13 +41,13 @@ MemoryWindow::MemoryWindow(running_machine* machine, QWidget* parent) : // The input edit m_inputEdit = new QLineEdit(topSubFrame); - connect(m_inputEdit, SIGNAL(returnPressed()), this, SLOT(expressionSubmitted())); + connect(m_inputEdit, &QLineEdit::returnPressed, this, &MemoryWindow::expressionSubmitted); // The memory space combo box m_memoryComboBox = new QComboBox(topSubFrame); m_memoryComboBox->setObjectName("memoryregion"); m_memoryComboBox->setMinimumWidth(300); - connect(m_memoryComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(memoryRegionChanged(int))); + connect(m_memoryComboBox, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &MemoryWindow::memoryRegionChanged); // The main memory window m_memTable = new DebuggerMemView(DVT_MEMORY, m_machine, this); @@ -59,27 +70,45 @@ MemoryWindow::MemoryWindow(running_machine* machine, QWidget* parent) : // // Menu bars // - // Create a byte-chunk group - QActionGroup* chunkGroup = new QActionGroup(this); - chunkGroup->setObjectName("chunkgroup"); - QAction* chunkActOne = new QAction("1-byte chunks", this); - chunkActOne->setObjectName("chunkActOne"); - QAction* chunkActTwo = new QAction("2-byte chunks", this); - chunkActTwo->setObjectName("chunkActTwo"); - QAction* chunkActFour = new QAction("4-byte chunks", this); - chunkActFour->setObjectName("chunkActFour"); - chunkActOne->setCheckable(true); - chunkActTwo->setCheckable(true); - chunkActFour->setCheckable(true); - chunkActOne->setActionGroup(chunkGroup); - chunkActTwo->setActionGroup(chunkGroup); - chunkActFour->setActionGroup(chunkGroup); - chunkActOne->setShortcut(QKeySequence("Ctrl+1")); - chunkActTwo->setShortcut(QKeySequence("Ctrl+2")); - chunkActFour->setShortcut(QKeySequence("Ctrl+4")); - chunkActOne->setChecked(true); - connect(chunkGroup, SIGNAL(triggered(QAction*)), this, SLOT(chunkChanged(QAction*))); + // Create a data format group + QActionGroup* dataFormat = new QActionGroup(this); + dataFormat->setObjectName("dataformat"); + QAction* formatActOne = new QAction("1-byte chunks", this); + QAction* formatActTwo = new QAction("2-byte chunks", this); + QAction* formatActFour = new QAction("4-byte chunks", this); + QAction* formatActEight = new QAction("8-byte chunks", this); + QAction* formatAct32bitFloat = new QAction("32 bit floating point", this); + QAction* formatAct64bitFloat = new QAction("64 bit floating point", this); + QAction* formatAct80bitFloat = new QAction("80 bit floating point", this); + formatActOne->setObjectName("formatActOne"); + formatActTwo->setObjectName("formatActTwo"); + formatActFour->setObjectName("formatActFour"); + formatActEight->setObjectName("formatActEight"); + formatAct32bitFloat->setObjectName("formatAct32bitFloat"); + formatAct64bitFloat->setObjectName("formatAct64bitFloat"); + formatAct80bitFloat->setObjectName("formatAct80bitFloat"); + formatActOne->setCheckable(true); + formatActTwo->setCheckable(true); + formatActFour->setCheckable(true); + formatActEight->setCheckable(true); + formatAct32bitFloat->setCheckable(true); + formatAct64bitFloat->setCheckable(true); + formatAct80bitFloat->setCheckable(true); + formatActOne->setActionGroup(dataFormat); + formatActTwo->setActionGroup(dataFormat); + formatActFour->setActionGroup(dataFormat); + formatActEight->setActionGroup(dataFormat); + formatAct32bitFloat->setActionGroup(dataFormat); + formatAct64bitFloat->setActionGroup(dataFormat); + formatAct80bitFloat->setActionGroup(dataFormat); + formatActOne->setShortcut(QKeySequence("Ctrl+1")); + formatActTwo->setShortcut(QKeySequence("Ctrl+2")); + formatActFour->setShortcut(QKeySequence("Ctrl+4")); + formatActEight->setShortcut(QKeySequence("Ctrl+8")); + formatAct32bitFloat->setShortcut(QKeySequence("Ctrl+9")); + formatActOne->setChecked(true); + connect(dataFormat, &QActionGroup::triggered, this, &MemoryWindow::formatChanged); // Create a address display group QActionGroup* addressGroup = new QActionGroup(this); addressGroup->setObjectName("addressgroup"); @@ -92,26 +121,26 @@ MemoryWindow::MemoryWindow(running_machine* machine, QWidget* parent) : addressActLogical->setShortcut(QKeySequence("Ctrl+G")); addressActPhysical->setShortcut(QKeySequence("Ctrl+Y")); addressActLogical->setChecked(true); - connect(addressGroup, SIGNAL(triggered(QAction*)), this, SLOT(addressChanged(QAction*))); + connect(addressGroup, &QActionGroup::triggered, this, &MemoryWindow::addressChanged); // Create a reverse view radio QAction* reverseAct = new QAction("Reverse View", this); reverseAct->setObjectName("reverse"); reverseAct->setCheckable(true); reverseAct->setShortcut(QKeySequence("Ctrl+R")); - connect(reverseAct, SIGNAL(toggled(bool)), this, SLOT(reverseChanged(bool))); + connect(reverseAct, &QAction::toggled, this, &MemoryWindow::reverseChanged); // Create increase and decrease bytes-per-line actions QAction* increaseBplAct = new QAction("Increase Bytes Per Line", this); QAction* decreaseBplAct = new QAction("Decrease Bytes Per Line", this); increaseBplAct->setShortcut(QKeySequence("Ctrl+P")); decreaseBplAct->setShortcut(QKeySequence("Ctrl+O")); - connect(increaseBplAct, SIGNAL(triggered(bool)), this, SLOT(increaseBytesPerLine(bool))); - connect(decreaseBplAct, SIGNAL(triggered(bool)), this, SLOT(decreaseBytesPerLine(bool))); + connect(increaseBplAct, &QAction::triggered, this, &MemoryWindow::increaseBytesPerLine); + connect(decreaseBplAct, &QAction::triggered, this, &MemoryWindow::decreaseBytesPerLine); // Assemble the options menu QMenu* optionsMenu = menuBar()->addMenu("&Options"); - optionsMenu->addActions(chunkGroup->actions()); + optionsMenu->addActions(dataFormat->actions()); optionsMenu->addSeparator(); optionsMenu->addActions(addressGroup->actions()); optionsMenu->addSeparator(); @@ -141,13 +170,17 @@ void MemoryWindow::memoryRegionChanged(int index) m_memTable->view()->set_source(*m_memTable->view()->source_list().find(index)); m_memTable->viewport()->update(); - // Update the chunk size radio buttons to the memory region's default + // Update the data format radio buttons to the memory region's default debug_view_memory* memView = downcast<debug_view_memory*>(m_memTable->view()); - switch(memView->bytes_per_chunk()) + switch(memView->get_data_format()) { - case 1: chunkSizeMenuItem("chunkActOne")->setChecked(true); break; - case 2: chunkSizeMenuItem("chunkActTwo")->setChecked(true); break; - case 4: chunkSizeMenuItem("chunkActFour")->setChecked(true); break; + case 1: dataFormatMenuItem("formatActOne")->setChecked(true); break; + case 2: dataFormatMenuItem("formatActTwo")->setChecked(true); break; + case 4: dataFormatMenuItem("formatActFour")->setChecked(true); break; + case 8: dataFormatMenuItem("formatActEight")->setChecked(true); break; + case 9: dataFormatMenuItem("formatAct32bitFloat")->setChecked(true); break; + case 10: dataFormatMenuItem("formatAct64bitFloat")->setChecked(true); break; + case 11: dataFormatMenuItem("formatAct80bitFloat")->setChecked(true); break; default: break; } } @@ -171,20 +204,36 @@ void MemoryWindow::expressionSubmitted() } -void MemoryWindow::chunkChanged(QAction* changedTo) +void MemoryWindow::formatChanged(QAction* changedTo) { debug_view_memory* memView = downcast<debug_view_memory*>(m_memTable->view()); if (changedTo->text() == "1-byte chunks") { - memView->set_bytes_per_chunk(1); + memView->set_data_format(1); } else if (changedTo->text() == "2-byte chunks") { - memView->set_bytes_per_chunk(2); + memView->set_data_format(2); } else if (changedTo->text() == "4-byte chunks") { - memView->set_bytes_per_chunk(4); + memView->set_data_format(4); + } + else if (changedTo->text() == "8-byte chunks") + { + memView->set_data_format(8); + } + else if (changedTo->text() == "32 bit floating point") + { + memView->set_data_format(9); + } + else if (changedTo->text() == "64 bit floating point") + { + memView->set_data_format(10); + } + else if (changedTo->text() == "80 bit floating point") + { + memView->set_data_format(11); } m_memTable->viewport()->update(); } @@ -254,7 +303,7 @@ void MemoryWindow::setToCurrentCpu() // I have a hard time storing QActions as class members. This is a substitute. -QAction* MemoryWindow::chunkSizeMenuItem(const QString& itemName) +QAction* MemoryWindow::dataFormatMenuItem(const QString& itemName) { QList<QMenu*> menus = menuBar()->findChildren<QMenu*>(); for (int i = 0; i < menus.length(); i++) @@ -349,13 +398,21 @@ void MemoryWindowQtConfig::buildFromQWidget(QWidget* widget) else if (addressGroup->checkedAction()->text() == "Physical Addresses") m_addressMode = 1; - QActionGroup* chunkGroup = window->findChild<QActionGroup*>("chunkgroup"); - if (chunkGroup->checkedAction()->text() == "1-byte chunks") - m_chunkSize = 0; - else if (chunkGroup->checkedAction()->text() == "2-byte chunks") - m_chunkSize = 1; - else if (chunkGroup->checkedAction()->text() == "4-byte chunks") - m_chunkSize = 2; + QActionGroup* dataFormat = window->findChild<QActionGroup*>("dataformat"); + if (dataFormat->checkedAction()->text() == "1-byte chunks") + m_dataFormat = 0; + else if (dataFormat->checkedAction()->text() == "2-byte chunks") + m_dataFormat = 1; + else if (dataFormat->checkedAction()->text() == "4-byte chunks") + m_dataFormat = 2; + else if (dataFormat->checkedAction()->text() == "8-byte chunks") + m_dataFormat = 3; + else if (dataFormat->checkedAction()->text() == "32 bit floating point") + m_dataFormat = 4; + else if (dataFormat->checkedAction()->text() == "64 bit floating point") + m_dataFormat = 5; + else if (dataFormat->checkedAction()->text() == "80 bit floating point") + m_dataFormat = 6; } @@ -372,8 +429,8 @@ void MemoryWindowQtConfig::applyToQWidget(QWidget* widget) QActionGroup* addressGroup = window->findChild<QActionGroup*>("addressgroup"); addressGroup->actions()[m_addressMode]->trigger(); - QActionGroup* chunkGroup = window->findChild<QActionGroup*>("chunkgroup"); - chunkGroup->actions()[m_chunkSize]->trigger(); + QActionGroup* dataFormat = window->findChild<QActionGroup*>("dataformat"); + dataFormat->actions()[m_dataFormat]->trigger(); } @@ -383,7 +440,7 @@ void MemoryWindowQtConfig::addToXmlDataNode(xml_data_node* node) const xml_set_attribute_int(node, "memoryregion", m_memoryRegion); xml_set_attribute_int(node, "reverse", m_reverse); xml_set_attribute_int(node, "addressmode", m_addressMode); - xml_set_attribute_int(node, "chunksize", m_chunkSize); + xml_set_attribute_int(node, "dataformat", m_dataFormat); } @@ -393,5 +450,5 @@ void MemoryWindowQtConfig::recoverFromXmlNode(xml_data_node* node) m_memoryRegion = xml_get_attribute_int(node, "memoryregion", m_memoryRegion); m_reverse = xml_get_attribute_int(node, "reverse", m_reverse); m_addressMode = xml_get_attribute_int(node, "addressmode", m_addressMode); - m_chunkSize = xml_get_attribute_int(node, "chunksize", m_chunkSize); + m_dataFormat = xml_get_attribute_int(node, "dataformat", m_dataFormat); } |
