MCPcopy Create free account
hub / github.com/CE-Programming/CEmu / breakAdd

Method breakAdd

gui/qt/debugger.cpp:1040–1121  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1038}
1039
1040bool MainWindow::breakAdd(const QString &label, uint32_t addr, bool enabled, bool toggle, bool unset) {
1041 const int row = m_breakpoints->rowCount();
1042 QString addrStr;
1043
1044 if (unset) {
1045 addrStr = DEBUG_UNSET_ADDR;
1046 } else {
1047 addrStr = int2hex((addr &= 0xFFFFFF), 6).toUpper();
1048 }
1049
1050 // return if address is already set
1051 for (int i = 0; i < row; i++) {
1052 if (m_breakpoints->item(i, BREAK_ADDR_COL)->text() == addrStr) {
1053 if (addrStr != DEBUG_UNSET_ADDR) {
1054 if (!m_useSoftCom) {
1055 m_breakpoints->selectRow(i);
1056 if (toggle) {
1057 breakRemoveRow(i);
1058 }
1059 } else {
1060 ui->lcd->setFocus();
1061 }
1062 return false;
1063 }
1064 }
1065 }
1066
1067 m_breakpoints->blockSignals(true);
1068 m_breakpoints->setRowCount(row + 1);
1069
1070 QToolButton *btnRemove = new QToolButton;
1071 btnRemove->setIcon(m_iconRemove);
1072
1073 QToolButton *btnEnable = new QToolButton;
1074 btnEnable->setIcon(enabled ? m_iconCheck : m_iconCheckGray);
1075 btnEnable->setCheckable(true);
1076 btnEnable->setChecked(enabled);
1077
1078 connect(btnRemove, &QToolButton::clicked, this, &MainWindow::breakRemoveSelected);
1079 connect(btnEnable, &QToolButton::clicked, [this, btnEnable, row](bool checked) {
1080 uint32_t addr = static_cast<uint32_t>(hex2int(m_breakpoints->item(row, BREAK_ADDR_COL)->text()));
1081 btnEnable->setIcon(checked ? m_iconCheck : m_iconCheckGray);
1082 debug_watch(addr, DBG_MASK_EXEC, checked);
1083 disasmUpdate();
1084 memUpdate();
1085 });
1086
1087 QTableWidgetItem *itemLabel = new QTableWidgetItem(label);
1088 QTableWidgetItem *itemAddr = new QTableWidgetItem(addrStr);
1089 QTableWidgetItem *itemBreak = new QTableWidgetItem;
1090 QTableWidgetItem *itemRemove = new QTableWidgetItem;
1091
1092 m_breakpoints->setItem(row, BREAK_NAME_COL, itemLabel);
1093 m_breakpoints->setItem(row, BREAK_ADDR_COL, itemAddr);
1094 m_breakpoints->setItem(row, BREAK_ENABLE_COL, itemBreak);
1095 m_breakpoints->setItem(row, BREAK_REMOVE_COL, itemRemove);
1096 m_breakpoints->setCellWidget(row, BREAK_REMOVE_COL, btnRemove);
1097 m_breakpoints->setCellWidget(row, BREAK_ENABLE_COL, btnEnable);

Callers

nothing calls this directly

Calls 4

int2hexFunction · 0.85
hex2intFunction · 0.85
debug_watchFunction · 0.85
rowCountMethod · 0.80

Tested by

no test coverage detected