mirror of https://github.com/bsnes-emu/bsnes.git
81 lines
2.3 KiB
C++
81 lines
2.3 KiB
C++
|
#include "breakpoint.moc"
|
||
|
BreakpointEditor *breakpointEditor;
|
||
|
|
||
|
BreakpointItem::BreakpointItem(unsigned id_) : id(id_) {
|
||
|
layout = new QHBoxLayout;
|
||
|
layout->setMargin(0);
|
||
|
layout->setSpacing(Style::WidgetSpacing);
|
||
|
setLayout(layout);
|
||
|
|
||
|
enabled = new QCheckBox;
|
||
|
layout->addWidget(enabled);
|
||
|
|
||
|
addr = new QLineEdit;
|
||
|
addr->setFixedWidth(80);
|
||
|
layout->addWidget(addr);
|
||
|
|
||
|
data = new QLineEdit;
|
||
|
data->setFixedWidth(40);
|
||
|
layout->addWidget(data);
|
||
|
|
||
|
mode = new QComboBox;
|
||
|
mode->addItem("Exec");
|
||
|
mode->addItem("Read");
|
||
|
mode->addItem("Write");
|
||
|
layout->addWidget(mode);
|
||
|
|
||
|
source = new QComboBox;
|
||
|
source->addItem("S-CPU bus");
|
||
|
source->addItem("S-SMP bus");
|
||
|
source->addItem("S-PPU VRAM");
|
||
|
source->addItem("S-PPU OAM");
|
||
|
source->addItem("S-PPU CGRAM");
|
||
|
layout->addWidget(source);
|
||
|
|
||
|
connect(enabled, SIGNAL(stateChanged(int)), this, SLOT(toggle()));
|
||
|
}
|
||
|
|
||
|
void BreakpointItem::toggle() {
|
||
|
bool state = enabled->isChecked();
|
||
|
|
||
|
if(state) {
|
||
|
SNES::debugger.breakpoint[id].enabled = true;
|
||
|
SNES::debugger.breakpoint[id].addr = strhex(addr->text().toUtf8().data()) & 0xffffff;
|
||
|
SNES::debugger.breakpoint[id].data = strhex(data->text().toUtf8().data()) & 0xff;
|
||
|
if(data->text().length() == 0) SNES::debugger.breakpoint[id].data = -1;
|
||
|
SNES::debugger.breakpoint[id].mode = (SNES::Debugger::Breakpoint::Mode)mode->currentIndex();
|
||
|
SNES::debugger.breakpoint[id].source = (SNES::Debugger::Breakpoint::Source)source->currentIndex();
|
||
|
SNES::debugger.breakpoint[id].counter = 0;
|
||
|
|
||
|
addr->setEnabled(false);
|
||
|
data->setEnabled(false);
|
||
|
mode->setEnabled(false);
|
||
|
source->setEnabled(false);
|
||
|
} else {
|
||
|
SNES::debugger.breakpoint[id].enabled = false;
|
||
|
|
||
|
addr->setEnabled(true);
|
||
|
data->setEnabled(true);
|
||
|
mode->setEnabled(true);
|
||
|
source->setEnabled(true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
BreakpointEditor::BreakpointEditor() {
|
||
|
setObjectName("breakpoint-editor");
|
||
|
setWindowTitle("Breakpoint Editor");
|
||
|
setGeometryString(&config().geometry.breakpointEditor);
|
||
|
application.windowList.append(this);
|
||
|
|
||
|
layout = new QVBoxLayout;
|
||
|
layout->setSizeConstraint(QLayout::SetFixedSize);
|
||
|
layout->setMargin(Style::WindowMargin);
|
||
|
layout->setSpacing(Style::WidgetSpacing);
|
||
|
setLayout(layout);
|
||
|
|
||
|
for(unsigned n = 0; n < SNES::Debugger::Breakpoints; n++) {
|
||
|
breakpoint[n] = new BreakpointItem(n);
|
||
|
layout->addWidget(breakpoint[n]);
|
||
|
}
|
||
|
}
|