void wxDataViewCtrl::SetSelections(wxDataViewItemArray const& sel) { size_t const noOfSelections = sel.GetCount(); size_t i; wxDataViewItem last_parent; // make sure that all to be selected items are visible in the control: for (i = 0; i < noOfSelections; i++) { wxDataViewItem item = sel[i]; wxDataViewItem parent = GetModel()->GetParent( item ); if (parent.IsOk() && (parent != last_parent)) ExpandAncestors(item); last_parent = parent; } // finally select the items: wxDataViewWidgetImpl* dataViewWidgetPtr(GetDataViewPeer()); // variable definition for abbreviational purposes for (i=0; i<noOfSelections; ++i) dataViewWidgetPtr->Select(sel[i]); }
bool wxDataViewCtrl::AssociateModel(wxDataViewModel* model) { wxDataViewWidgetImpl* dataViewWidgetPtr(GetDataViewPeer()); wxCHECK_MSG(dataViewWidgetPtr != NULL,false,"Pointer to native control must not be NULL."); if (wxDataViewCtrlBase::AssociateModel(model) && dataViewWidgetPtr->AssociateModel(model)) { if (model != NULL) model->AddNotifier(new wxOSXDataViewModelNotifier(this)); return true; } else return false; }
bool wxDataViewCtrl::InsertColumn(unsigned int pos, wxDataViewColumn* columnPtr) { wxDataViewWidgetImpl* dataViewWidgetPtr(GetDataViewPeer()); // first, some error checking: wxCHECK_MSG(dataViewWidgetPtr != NULL, false,"Pointer to native control must not be NULL."); wxCHECK_MSG(columnPtr != NULL, false,"Column pointer must not be NULL."); wxCHECK_MSG(columnPtr->GetRenderer() != NULL, false,"Column does not have a renderer."); wxCHECK_MSG(GetModel() != NULL, false,"No model associated with control."); wxCHECK_MSG(columnPtr->GetModelColumn() < GetModel()->GetColumnCount(),false,"Column's model column has no equivalent in the associated model."); // add column to wxWidget's internal structure: if (wxDataViewCtrlBase::InsertColumn(pos,columnPtr)) { m_ColumnPtrs.Add(columnPtr); // if the insertion in the native control is successful the rest can also be initialized: if (dataViewWidgetPtr->InsertColumn(pos,columnPtr)) { // make sure that the data is up-to-date... // if the newly appended column is the first column add the initial data to the control and mark the column as an expander column, // otherwise ask the control to 'update' the data in the newly appended column: if (GetColumnCount() == 1) SetExpanderColumn(columnPtr); // done: return true; } else { // clean-up: m_ColumnPtrs.Remove(columnPtr); delete columnPtr; // and send a message in debug mode: wxFAIL_MSG("Column could not be added to native control."); // failed: return false; } } else { // clean-up: delete columnPtr; wxFAIL_MSG("Could not add column to internal structures."); // failed: return false; } }
bool wxDataViewCtrl::AssociateModel(wxDataViewModel* model) { wxDataViewWidgetImpl* dataViewWidgetPtr(GetDataViewPeer()); wxCHECK_MSG(dataViewWidgetPtr != NULL,false,"Pointer to native control must not be NULL."); // We could have been associated with another model previously, break the // association in this case. if ( m_ModelNotifier ) m_ModelNotifier->GetOwner()->RemoveNotifier(m_ModelNotifier); if (wxDataViewCtrlBase::AssociateModel(model) && dataViewWidgetPtr->AssociateModel(model)) { if (model != NULL) { m_ModelNotifier = new wxOSXDataViewModelNotifier(this); model->AddNotifier(m_ModelNotifier); } return true; } else return false; }