void ElementDataGridRow::SetDataSource(const Rocket::Core::String& data_source_name) { if (data_source) data_source->DetachListener(this); if (ParseDataSource(data_source, data_table, data_source_name)) { data_source->AttachListener(this); RefreshRows(); } }
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 ElementDataGridRow::OnRowChange(DataSource* _data_source, const Rocket::Core::String& _data_table) { if (_data_source == data_source && _data_table == data_table) RefreshRows(); }