void wxHeaderCtrlBase::DoResizeColumnIndices(wxArrayInt& colIndices, unsigned int count) { // update the column indices array if necessary const unsigned countOld = colIndices.size(); if ( count > countOld ) { // all new columns have default positions equal to their indices for ( unsigned n = countOld; n < count; n++ ) colIndices.push_back(n); } else if ( count < countOld ) { // filter out all the positions which are invalid now while keeping the // order of the remaining ones wxArrayInt colIndicesNew; colIndicesNew.reserve(count); for ( unsigned n = 0; n < countOld; n++ ) { const unsigned idx = colIndices[n]; if ( idx < count ) colIndicesNew.push_back(idx); } colIndices.swap(colIndicesNew); } //else: count didn't really change, nothing to do wxASSERT_MSG( colIndices.size() == count, "logic error" ); }
void WadListBox::GetSelections(wxArrayInt& selection) const { selection.clear(); unsigned long cookie; int index = GetFirstSelected(cookie); while (index != wxNOT_FOUND) { selection.push_back(index); index = GetNextSelected(cookie); } }
unsigned int wxCheckListBoxBase::GetCheckedItems(wxArrayInt& checkedItems) const { unsigned int const numberOfItems = GetCount(); checkedItems.clear(); for ( unsigned int i = 0; i < numberOfItems; ++i ) { if ( IsChecked(i) ) checkedItems.push_back(i); } return checkedItems.size(); }
// returns all new dirs/files present in the immediate level of the dir // pointed by watch.GetPath(). "new" means created between the last time // the state of watch was computed and now void FindChanges(wxFSWatchEntryKq& watch, wxArrayString& changedFiles, wxArrayInt& changedFlags) { wxFSWatchEntryKq::wxDirState old = watch.GetLastState(); watch.RefreshState(); wxFSWatchEntryKq::wxDirState curr = watch.GetLastState(); // iterate over old/curr file lists and compute changes wxArrayString::iterator oit = old.files.begin(); wxArrayString::iterator cit = curr.files.begin(); for ( ; oit != old.files.end() && cit != curr.files.end(); ) { if ( *cit == *oit ) { ++cit; ++oit; } else if ( *cit <= *oit ) { changedFiles.push_back(*cit); changedFlags.push_back(wxFSW_EVENT_CREATE); ++cit; } else // ( *cit > *oit ) { changedFiles.push_back(*oit); changedFlags.push_back(wxFSW_EVENT_DELETE); ++oit; } } // border conditions if ( oit == old.files.end() ) { for ( ; cit != curr.files.end(); ++cit ) { changedFiles.push_back( *cit ); changedFlags.push_back(wxFSW_EVENT_CREATE); } } else if ( cit == curr.files.end() ) { for ( ; oit != old.files.end(); ++oit ) { changedFiles.push_back( *oit ); changedFlags.push_back(wxFSW_EVENT_DELETE); } } wxASSERT( changedFiles.size() == changedFlags.size() ); #if 0 wxLogTrace(wxTRACE_FSWATCHER, "Changed files:"); wxArrayString::iterator it = changedFiles.begin(); wxArrayInt::iterator it2 = changedFlags.begin(); for ( ; it != changedFiles.end(); ++it, ++it2) { wxString action = (*it2 == wxFSW_EVENT_CREATE) ? "created" : "deleted"; wxLogTrace(wxTRACE_FSWATCHER, wxString::Format("File: '%s' %s", *it, action)); } #endif }