| 1162 | } |
| 1163 | |
| 1164 | bool MainWindow::portAdd(uint16_t port, int mask, bool unset) { |
| 1165 | const int row = m_ports->rowCount(); |
| 1166 | QString portStr; |
| 1167 | uint8_t data = 0; |
| 1168 | |
| 1169 | if (unset) { |
| 1170 | portStr = DEBUG_UNSET_PORT; |
| 1171 | } else { |
| 1172 | portStr = int2hex(port, 4).toUpper(); |
| 1173 | if (guiDebug) { |
| 1174 | data = port_peek_byte(port); |
| 1175 | } |
| 1176 | } |
| 1177 | |
| 1178 | // return if port is already set |
| 1179 | for (int i = 0; i < row; i++) { |
| 1180 | if (m_ports->item(i, PORT_ADDR_COL)->text() == portStr) { |
| 1181 | if (portStr != DEBUG_UNSET_PORT) { |
| 1182 | return false; |
| 1183 | } |
| 1184 | } |
| 1185 | } |
| 1186 | |
| 1187 | m_ports->setRowCount(row + 1); |
| 1188 | m_ports->blockSignals(true); |
| 1189 | |
| 1190 | QToolButton *btnRemove = new QToolButton; |
| 1191 | btnRemove->setIcon(m_iconRemove); |
| 1192 | |
| 1193 | QToolButton *btnRead = new QToolButton; |
| 1194 | btnRead->setIcon((mask & DBG_MASK_PORT_READ) ? m_iconCheck : m_iconCheckGray); |
| 1195 | btnRead->setCheckable(true); |
| 1196 | btnRead->setChecked(mask & DBG_MASK_PORT_READ); |
| 1197 | |
| 1198 | QToolButton *btnWrite = new QToolButton; |
| 1199 | btnWrite->setIcon((mask & DBG_MASK_PORT_WRITE) ? m_iconCheck : m_iconCheckGray); |
| 1200 | btnWrite->setCheckable(true); |
| 1201 | btnWrite->setChecked(mask & DBG_MASK_PORT_WRITE); |
| 1202 | |
| 1203 | QToolButton *btnFreeze = new QToolButton; |
| 1204 | btnFreeze->setIcon((mask & DBG_MASK_PORT_FREEZE) ? m_iconCheck : m_iconCheckGray); |
| 1205 | btnFreeze->setCheckable(true); |
| 1206 | btnFreeze->setChecked(mask & DBG_MASK_PORT_FREEZE); |
| 1207 | |
| 1208 | QTableWidgetItem *itemAddr = new QTableWidgetItem(portStr); |
| 1209 | QTableWidgetItem *itemData = new QTableWidgetItem(int2hex(data, 2)); |
| 1210 | QTableWidgetItem *itemRead = new QTableWidgetItem; |
| 1211 | QTableWidgetItem *itemWrite = new QTableWidgetItem; |
| 1212 | QTableWidgetItem *itemFreeze = new QTableWidgetItem; |
| 1213 | QTableWidgetItem *itemRemove = new QTableWidgetItem; |
| 1214 | |
| 1215 | connect(btnRemove, &QToolButton::clicked, this, &MainWindow::portRemoveSelected); |
| 1216 | connect(btnRead, &QToolButton::clicked, [this, btnRead, itemRead](bool checked) { btnRead->setIcon(checked ? m_iconCheck : m_iconCheckGray); portModified(itemRead); }); |
| 1217 | connect(btnWrite, &QToolButton::clicked, [this, btnWrite, itemWrite](bool checked) { btnWrite->setIcon(checked ? m_iconCheck : m_iconCheckGray); portModified(itemWrite); }); |
| 1218 | connect(btnFreeze, &QToolButton::clicked, [this, btnFreeze, itemFreeze](bool checked) { btnFreeze->setIcon(checked ? m_iconCheck : m_iconCheckGray); portModified(itemFreeze); }); |
| 1219 | |
| 1220 | m_ports->setItem(row, PORT_ADDR_COL, itemAddr); |
| 1221 | m_ports->setItem(row, PORT_VALUE_COL, itemData); |
nothing calls this directly
no test coverage detected