// -------------------------------------------------------------------------------- // void guPLSoListBox::RandomizeTracks( void ) { int Index; int Pos; int NewPos; int Count = m_Items.Count(); guTrack SavedItem; if( Count > 2 ) { for( Index = 0; Index < Count; Index++ ) { do { Pos = guRandom( Count ); NewPos = guRandom( Count ); } while( Pos == NewPos ); SavedItem = m_Items[ Pos ]; m_Items[ Pos ] = m_Items[ NewPos ]; m_Items[ NewPos ] = SavedItem; RefreshRow( Pos ); RefreshRow( NewPos ); } ClearSelectedItems(); } }
void wxSimpleHtmlListBox::SetString(unsigned int n, const wxString& s) { wxCHECK_RET( IsValid(n), wxT("invalid index in wxSimpleHtmlListBox::SetString") ); m_items[n]=s; RefreshRow(n); }
void wxVListBox::RefreshSelected() { // only refresh those items which are currently visible and selected: for ( size_t n = GetVisibleBegin(), end = GetVisibleEnd(); n < end; n++ ) { if ( IsSelected(n) ) RefreshRow(n); } }
bool wxSymbolListCtrl::DoSetCurrent(int current) { wxASSERT_MSG( current == wxNOT_FOUND || (current >= m_minSymbolValue && current <= m_maxSymbolValue), wxT("wxSymbolListCtrl::DoSetCurrent(): invalid symbol value") ); if ( current == m_current ) { // nothing to do return false; } if ( m_current != wxNOT_FOUND ) RefreshRow(SymbolValueToLineNumber(m_current)); m_current = current; if ( m_current != wxNOT_FOUND ) { int lineNo = SymbolValueToLineNumber(m_current); // if the line is not visible at all, we scroll it into view but we // don't need to refresh it -- it will be redrawn anyhow if ( !IsVisible(lineNo) ) { ScrollToRow(lineNo); } else // line is at least partly visible { // it is, indeed, only partly visible, so scroll it into view to // make it entirely visible while ( (unsigned)lineNo + 1 == GetVisibleEnd() && ScrollToRow(GetVisibleBegin() + 1) ) ; // but in any case refresh it as even if it was only partly visible // before we need to redraw it entirely as its background changed RefreshRow(lineNo); } } return true; }
bool wxVListBox::DoSetCurrent(int current) { wxASSERT_MSG( current == wxNOT_FOUND || (current >= 0 && (size_t)current < GetItemCount()), wxT("wxVListBox::DoSetCurrent(): invalid item index") ); if ( current == m_current ) { // nothing to do return false; } if ( m_current != wxNOT_FOUND ) RefreshRow(m_current); m_current = current; if ( m_current != wxNOT_FOUND ) { // if the line is not visible at all, we scroll it into view but we // don't need to refresh it -- it will be redrawn anyhow if ( !IsVisible(m_current) ) { ScrollToRow(m_current); } else // line is at least partly visible { // it is, indeed, only partly visible, so scroll it into view to // make it entirely visible // BUT scrolling down when m_current is first visible makes it // completely hidden, so that is even worse while ( (size_t)m_current + 1 == GetVisibleRowsEnd() && (size_t)m_current != GetVisibleRowsBegin() && ScrollToRow(GetVisibleBegin() + 1) ) ; // but in any case refresh it as even if it was only partly visible // before we need to redraw it entirely as its background changed RefreshRow(m_current); } } return true; }
bool wxVListBox::Select(size_t item, bool select) { wxCHECK_MSG( m_selStore, false, wxT("Select() may only be used with multiselection listbox") ); wxCHECK_MSG( item < GetItemCount(), false, wxT("Select(): invalid item index") ); bool changed = m_selStore->SelectItem(item, select); if ( changed ) { // selection really changed RefreshRow(item); } DoSetCurrent(item); return changed; }
bool wxVListBox::SelectRange(size_t from, size_t to) { wxCHECK_MSG( m_selStore, false, wxT("SelectRange() may only be used with multiselection listbox") ); // make sure items are in correct order if ( from > to ) { size_t tmp = from; from = to; to = tmp; } wxCHECK_MSG( to < GetItemCount(), false, wxT("SelectRange(): invalid item index") ); wxArrayInt changed; if ( !m_selStore->SelectRange(from, to, true, &changed) ) { // too many items have changed, we didn't record them in changed array // so we have no choice but to refresh everything between from and to RefreshRows(from, to); } else // we've got the indices of the changed items { const size_t count = changed.GetCount(); if ( !count ) { // nothing changed return false; } // refresh just the lines which have really changed for ( size_t n = 0; n < count; n++ ) { RefreshRow(changed[n]); } } // something changed return true; }
void MyHtmlListBox::UpdateFirstItem() { m_firstItemUpdated = !m_firstItemUpdated; RefreshRow(0); }