| 1483 | } |
| 1484 | |
| 1485 | bool MainWindow::watchAdd(const QString& label, uint32_t low, uint32_t high, int mask, bool toggle, bool unset) { |
| 1486 | const int row = m_watchpoints->rowCount(); |
| 1487 | QString lowStr; |
| 1488 | QString highStr; |
| 1489 | QString watchLen; |
| 1490 | |
| 1491 | if (unset) { |
| 1492 | lowStr = DEBUG_UNSET_ADDR; |
| 1493 | highStr = DEBUG_UNSET_ADDR; |
| 1494 | } else { |
| 1495 | lowStr = int2hex((low &= 0xFFFFFF), 6).toUpper(); |
| 1496 | highStr = int2hex((high &= 0xFFFFFF), 6).toUpper(); |
| 1497 | } |
| 1498 | |
| 1499 | // return if address is already set |
| 1500 | for (int i = 0; i < row; i++) { |
| 1501 | if (m_watchpoints->item(i, WATCH_LOW_COL)->text() == lowStr && |
| 1502 | m_watchpoints->item(i, WATCH_HIGH_COL)->text() == highStr) { |
| 1503 | if (lowStr != DEBUG_UNSET_ADDR && highStr != DEBUG_UNSET_ADDR) { |
| 1504 | if (!m_useSoftCom) { |
| 1505 | m_watchpoints->selectRow(i); |
| 1506 | if (toggle) { |
| 1507 | watchRemoveRow(i); |
| 1508 | } |
| 1509 | } else { |
| 1510 | ui->lcd->setFocus(); |
| 1511 | } |
| 1512 | return false; |
| 1513 | } |
| 1514 | } |
| 1515 | } |
| 1516 | |
| 1517 | m_watchpoints->blockSignals(true); |
| 1518 | |
| 1519 | QToolButton *button = new QToolButton(); |
| 1520 | button->setIcon(m_iconRemove); |
| 1521 | connect(button, &QToolButton::clicked, this, &MainWindow::watchRemoveSelected); |
| 1522 | |
| 1523 | QTableWidgetItem *itemLabel = new QTableWidgetItem(label); |
| 1524 | QTableWidgetItem *itemLow = new QTableWidgetItem(lowStr); |
| 1525 | QTableWidgetItem *itemHigh = new QTableWidgetItem(highStr); |
| 1526 | QTableWidgetItem *itemRead = new QTableWidgetItem; |
| 1527 | QTableWidgetItem *itemWrite = new QTableWidgetItem; |
| 1528 | QTableWidgetItem *itemRemove = new QTableWidgetItem; |
| 1529 | |
| 1530 | QToolButton *btnRead = new QToolButton; |
| 1531 | btnRead->setIcon((mask & DBG_MASK_READ) ? m_iconCheck : m_iconCheckGray); |
| 1532 | btnRead->setCheckable(true); |
| 1533 | btnRead->setChecked((mask & DBG_MASK_READ) ? true : false); |
| 1534 | |
| 1535 | QToolButton *btnWrite = new QToolButton; |
| 1536 | btnWrite->setIcon((mask & DBG_MASK_WRITE) ? m_iconCheck : m_iconCheckGray); |
| 1537 | btnWrite->setCheckable(true); |
| 1538 | btnWrite->setChecked((mask & DBG_MASK_WRITE) ? true : false); |
| 1539 | |
| 1540 | connect(btnRead, &QToolButton::clicked, [this, btnRead, row](bool checked) { |
| 1541 | btnRead->setIcon(checked ? m_iconCheck : m_iconCheckGray); |
| 1542 | watchUpdateRow(row); |