bool TagsEditor::TransferDataToWindow() { size_t i; wxString n; wxString v; // Disable redrawing until we're done mGrid->BeginBatch(); // Delete all rows if (mGrid->GetNumberRows()) { mGrid->DeleteRows(0, mGrid->GetNumberRows()); } // Populate the static rows for (i = 0; i < STATICCNT; i++) { mGrid->AppendRows(); mGrid->SetReadOnly(i, 0); mGrid->SetCellValue(i, 0, labelmap[i].label); mGrid->SetCellValue(i, 1, mLocal.GetTag(labelmap[i].name)); if (!mEditTitle && mGrid->GetCellValue(i, 0).CmpNoCase(LABEL_TITLE) == 0) { mGrid->SetReadOnly(i, 1); } if (!mEditTrack && mGrid->GetCellValue(i, 0).CmpNoCase(LABEL_TRACK) == 0) { mGrid->SetReadOnly(i, 1); } mLocal.SetTag(labelmap[i].name, wxEmptyString); } // Populate the rest for (bool cont = mLocal.GetFirst(n, v); cont; cont = mLocal.GetNext(n, v)) { mGrid->AppendRows(); mGrid->SetCellValue(i, 0, n); mGrid->SetCellValue(i, 1, v); i++; } // Add an extra one to help with initial sizing and to show it can be done mGrid->AppendRows(1); // We're done, so allow the grid to redraw mGrid->EndBatch(); // Set the editors SetEditors(); return true; }
bool TagsEditor::TransferDataToWindow() { size_t i; TagMap popTagMap; // Disable redrawing until we're done mGrid->BeginBatch(); // Delete all rows if (mGrid->GetNumberRows()) { mGrid->DeleteRows(0, mGrid->GetNumberRows()); } // Populate the static rows for (i = 0; i < STATICCNT; i++) { mGrid->AppendRows(); mGrid->SetReadOnly(i, 0); // The special tag name that's displayed and translated may not match // the key string used for internal lookup. mGrid->SetCellValue(i, 0, wxGetTranslation( labelmap[i].label ) ); mGrid->SetCellValue(i, 1, mLocal.GetTag(labelmap[i].name)); if (!mEditTitle && mGrid->GetCellValue(i, 0).CmpNoCase(wxGetTranslation(LABEL_TITLE)) == 0) { mGrid->SetReadOnly(i, 1); } if (!mEditTrack && mGrid->GetCellValue(i, 0).CmpNoCase(wxGetTranslation(LABEL_TRACK)) == 0) { mGrid->SetReadOnly(i, 1); } popTagMap[ labelmap[i].name ] = mGrid->GetCellValue(i, 1); } // Populate the rest for (const auto &pair : mLocal.GetRange()) { const auto &n = pair.first; const auto &v = pair.second; if (popTagMap.find(n) == popTagMap.end()) { mGrid->AppendRows(); mGrid->SetCellValue(i, 0, n); mGrid->SetCellValue(i, 1, v); i++; } } // Add an extra one to help with initial sizing and to show it can be done mGrid->AppendRows(1); // We're done, so allow the grid to redraw mGrid->EndBatch(); // Set the editors SetEditors(); Layout(); Fit(); return true; }