void PreferencesDialog::SelectKey(bool add, QPair<QString, QPair<QString, QString>> init) { sortLock->lock(); KeyDialog dialog(this); int status = 0; while(status != 2) { QPair<QString, QPair<QString, QString>> result = dialog.SelectKey(add, init); if(result == QPair<QString, QPair<QString, QString>>()) // cancel break; for(int i = 0; i < numberOfShortcuts; ++i) { if(!add && i == ui->infoWidget->currentRow()) // don't compare selected row if we're changing continue; if(ui->infoWidget->item(i, 0)->text() == result.first) { if(QMessageBox::question(this, tr("Existing keybinding"), tr("%0 is already being used. Would you like to change its function?").arg( result.first)) == QMessageBox::Yes) { baka->input[ui->infoWidget->item(i, 0)->text()] = {QString(), QString()}; RemoveRow(i); status = 0; } else { init = result; status = 1; } break; } } if(status == 0) { if(add) // add AddRow(result.first, result.second.first, result.second.second); else // change { if(result.first != init.first) baka->input[init.first] = {QString(), QString()}; ModifyRow(ui->infoWidget->currentRow(), result.first, result.second.first, result.second.second); } baka->input[result.first] = result.second; status = 2; } else status = 0; } sortLock->unlock(); }
void MultiViewerMain::OnTableDBGridCellChange(wxGridEvent& event) { int nRow = event.GetRow(); int nCol = event.GetCol(); if(eGridAdding == m_eGridState && m_nEditRow <= nRow) { event.Skip(); return; } wxString wxStrCellValue = m_pTableDBDataGrid->GetCellValue(nRow, nCol); string szStrCellVale = SQLUtil::wxstr2str(wxStrCellValue); ModifyRow(nRow, nCol, szStrCellVale.c_str() ); }