X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c0a66d92372d38600f2b993a541f5788064fba2d..688a201a5af8342da53d709bbef1c23d1d8196c0:/src/mac/carbon/databrow.cpp?ds=sidebyside diff --git a/src/mac/carbon/databrow.cpp b/src/mac/carbon/databrow.cpp index 8f18448a6e..fa3d7556f0 100644 --- a/src/mac/carbon/databrow.cpp +++ b/src/mac/carbon/databrow.cpp @@ -56,11 +56,8 @@ #include "wx/dataview.h" // ============================================================================ -// DataBrowser Wrapper +// wxMacDataBrowserTableViewControl // ============================================================================ -// -// basing on DataBrowserItemIDs -// pascal Boolean wxMacDataBrowserTableViewControl::DataBrowserCompareProc(ControlRef browser, DataBrowserItemID itemOneID, DataBrowserItemID itemTwoID, DataBrowserPropertyID sortProperty) { @@ -219,34 +216,39 @@ OSStatus wxMacDataBrowserTableViewControl::GetAttributes(OptionBits* attributes) } /* wxMacDataBrowserTableViewControl::GetAttributes(OptionBits*) */ #endif -OSStatus wxMacDataBrowserTableViewControl::GetColumnWidth( DataBrowserPropertyID column , UInt16 *width ) const +OSStatus wxMacDataBrowserTableViewControl::GetColumnWidth(DataBrowserPropertyID propertyID, UInt16* width) const { - return GetDataBrowserTableViewNamedColumnWidth( m_controlRef , column , width ); + return ::GetDataBrowserTableViewNamedColumnWidth(this->m_controlRef,propertyID,width); } -OSStatus wxMacDataBrowserTableViewControl::GetDefaultRowHeight( UInt16 * height ) const +OSStatus wxMacDataBrowserTableViewControl::GetDefaultColumnWidth( UInt16 *width ) const { - return GetDataBrowserTableViewRowHeight( m_controlRef, height ); + return GetDataBrowserTableViewColumnWidth(this->m_controlRef, width ); } -OSStatus wxMacDataBrowserTableViewControl::GetHeaderButtonHeight(UInt16 *height) +OSStatus wxMacDataBrowserTableViewControl::GetDefaultRowHeight(UInt16* height) const { - return GetDataBrowserListViewHeaderBtnHeight( m_controlRef, height ); + return ::GetDataBrowserTableViewRowHeight(this->m_controlRef,height); } -OSStatus wxMacDataBrowserTableViewControl::GetDefaultColumnWidth( UInt16 *width ) const +OSStatus wxMacDataBrowserTableViewControl::GetHeaderButtonHeight(UInt16 *height) { - return GetDataBrowserTableViewColumnWidth( m_controlRef , width ); + return ::GetDataBrowserListViewHeaderBtnHeight(this->m_controlRef,height); } -OSStatus wxMacDataBrowserTableViewControl::GetRowHeight( DataBrowserItemID item , UInt16 *height) const +OSStatus wxMacDataBrowserTableViewControl::GetPartBounds(DataBrowserItemID item, DataBrowserPropertyID property, DataBrowserPropertyPart part, Rect* bounds) { - return GetDataBrowserTableViewItemRowHeight( m_controlRef, item , height); -} + return ::GetDataBrowserItemPartBounds(this->m_controlRef,item,property,part,bounds); +} /* wxMacDataBrowserTableViewControl::GetPartBounds(DataBrowserItemID, DataBrowswerPropertyID, DataBrowserPropertyPart, Rect*) */ + +OSStatus wxMacDataBrowserTableViewControl::GetRowHeight(DataBrowserItemID item, UInt16* height) const +{ + return ::GetDataBrowserTableViewItemRowHeight(this->m_controlRef,item,height); +} /* wxMacDataBrowserTableViewControl::GetRowHeight(DataBrowserItemID, UInt16*) const */ OSStatus wxMacDataBrowserTableViewControl::GetScrollPosition( UInt32 *top , UInt32 *left ) const { - return GetDataBrowserScrollPosition( m_controlRef , top , left ); + return GetDataBrowserScrollPosition(this->m_controlRef, top , left ); } #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 @@ -256,35 +258,40 @@ OSStatus wxMacDataBrowserTableViewControl::SetAttributes(OptionBits attributes) } /* wxMacDataBrowserTableViewControl::SetAttributes(OptionBits) */ #endif -OSStatus wxMacDataBrowserTableViewControl::SetColumnWidth( DataBrowserPropertyID column , UInt16 width ) +OSStatus wxMacDataBrowserTableViewControl::SetColumnWidth(DataBrowserPropertyID propertyID, UInt16 width) { - return SetDataBrowserTableViewNamedColumnWidth( m_controlRef , column , width ); + return ::SetDataBrowserTableViewNamedColumnWidth(this->m_controlRef,propertyID,width); } -OSStatus wxMacDataBrowserTableViewControl::SetDefaultColumnWidth( UInt16 width ) +OSStatus wxMacDataBrowserTableViewControl::SetDefaultColumnWidth(UInt16 width) { - return SetDataBrowserTableViewColumnWidth( m_controlRef , width ); + return ::SetDataBrowserTableViewColumnWidth(this->m_controlRef,width); } -OSStatus wxMacDataBrowserTableViewControl::SetDefaultRowHeight( UInt16 height ) +OSStatus wxMacDataBrowserTableViewControl::SetDefaultRowHeight(UInt16 height) { - return SetDataBrowserTableViewRowHeight( m_controlRef , height ); + return ::SetDataBrowserTableViewRowHeight(this->m_controlRef,height); } -OSStatus wxMacDataBrowserTableViewControl::SetHasScrollBars( bool horiz, bool vert ) +OSStatus wxMacDataBrowserTableViewControl::SetHasScrollBars(bool horiz, bool vert) { - return SetDataBrowserHasScrollBars( m_controlRef, horiz, vert ); -} + return ::SetDataBrowserHasScrollBars(this->m_controlRef,horiz,vert); +} /* wxMacDataBrowserTableViewControl::SetHasScrollBars(bool, bool) */ OSStatus wxMacDataBrowserTableViewControl::SetHeaderButtonHeight(UInt16 height) { - return SetDataBrowserListViewHeaderBtnHeight( m_controlRef, height ); -} + return ::SetDataBrowserListViewHeaderBtnHeight(this->m_controlRef,height); +} /* wxMacDataBrowserTableViewControl::SetHeaderButtonHeight(UInt16) */ -OSStatus wxMacDataBrowserTableViewControl::SetHiliteStyle( DataBrowserTableViewHiliteStyle hiliteStyle ) +OSStatus wxMacDataBrowserTableViewControl::SetHiliteStyle(DataBrowserTableViewHiliteStyle hiliteStyle) { - return SetDataBrowserTableViewHiliteStyle( m_controlRef, hiliteStyle ); -} + return ::SetDataBrowserTableViewHiliteStyle(this->m_controlRef,hiliteStyle); +} /*wxMacDataBrowserTableViewControl::SetHiliteStyle(DataBrowserTableViewHiliteStyle) */ + +OSStatus wxMacDataBrowserTableViewControl::SetIndent(float Indent) +{ + return ::DataBrowserSetMetric(this->m_controlRef,kDataBrowserMetricDisclosureColumnPerDepthGap,true,Indent); +} /* wxMacDataBrowserTableViewControl::SetIndent(float* Indent) */ OSStatus wxMacDataBrowserTableViewControl::SetRowHeight(DataBrowserItemID item, UInt16 height) { @@ -301,31 +308,36 @@ OSStatus wxMacDataBrowserTableViewControl::SetScrollPosition(UInt32 top, UInt32 // OSStatus wxMacDataBrowserTableViewControl::GetColumnCount(UInt32* numColumns) const { - return GetDataBrowserTableViewColumnCount(this->m_controlRef,numColumns); + return ::GetDataBrowserTableViewColumnCount(this->m_controlRef,numColumns); } -OSStatus wxMacDataBrowserTableViewControl::GetColumnID(DataBrowserTableViewColumnIndex position, DataBrowserTableViewColumnID* id) +OSStatus wxMacDataBrowserTableViewControl::GetColumnIndex(DataBrowserPropertyID propertyID, DataBrowserTableViewColumnIndex* index) const { - return GetDataBrowserTableViewColumnProperty(this->m_controlRef,position,id); -} /* wxMacDataBrowserTableViewControl::GetColumnID(DataBrowserTableViewColumnIndex position, DataBrowserTableViewColumnID* id) */ + return ::GetDataBrowserTableViewColumnPosition(this->m_controlRef,propertyID,index); +} /* wxMacDataBrowserTableViewControl::GetColumnIndex(DataBrowserPropertyID, DataBrowserTableViewColumnIndex*) const */ -OSStatus wxMacDataBrowserTableViewControl::GetFreePropertyID(DataBrowserPropertyID* id) const +OSStatus wxMacDataBrowserTableViewControl::GetFreePropertyID(DataBrowserPropertyID* propertyID) const { - for (*id=kMinPropertyID; *id::max(); ++(*id)) - if (this->IsUsedPropertyID(*id) == errDataBrowserPropertyNotFound) + for (*propertyID=kMinPropertyID; *propertyID::max(); ++(*propertyID)) + if (this->IsUsedPropertyID(*propertyID) == errDataBrowserPropertyNotFound) return noErr; return errDataBrowserPropertyNotSupported; } /* wxMacDataBrowserTableViewControl::GetFreePropertyID(DataBrowserPropertyID*) const */ -OSStatus wxMacDataBrowserTableViewControl::GetPropertyColumn(DataBrowserPropertyID propertyID, DataBrowserTableViewColumnIndex* column) const +OSStatus wxMacDataBrowserTableViewControl::GetPropertyFlags(DataBrowserPropertyID propertyID, DataBrowserPropertyFlags *flags) const +{ + return ::GetDataBrowserPropertyFlags(this->m_controlRef,propertyID,flags); +} + +OSStatus wxMacDataBrowserTableViewControl::GetPropertyID(DataBrowserItemDataRef itemData, DataBrowserPropertyID* propertyID) { - return GetDataBrowserTableViewColumnPosition(this->m_controlRef,propertyID,column); -} /* wxMacDataBrowserTableViewControl::GetPropertyColumn(DataBrowserPropertyID, DataBrowserTableViewColumnIndex*) const */ + return ::GetDataBrowserItemDataProperty(itemData,propertyID); +} /* wxMacDataBrowserTableViewControl::GetPropertyID(DataBrowserItemDataRef, DataBrowserPropertyID*) */ -OSStatus wxMacDataBrowserTableViewControl::GetPropertyFlags(DataBrowserPropertyID property, DataBrowserPropertyFlags *flags) const +OSStatus wxMacDataBrowserTableViewControl::GetPropertyID(DataBrowserTableViewColumnIndex index, DataBrowserTableViewColumnID* propertyID) { - return GetDataBrowserPropertyFlags( m_controlRef , property , flags ); -} + return ::GetDataBrowserTableViewColumnProperty(this->m_controlRef,index,propertyID); +} /* wxMacDataBrowserTableViewControl::GetPropertyID(DataBrowserTableViewColumnIndex, DataBrowserTableViewColumnID*) */ OSStatus wxMacDataBrowserTableViewControl::IsUsedPropertyID(DataBrowserPropertyID propertyID) const { @@ -337,28 +349,35 @@ OSStatus wxMacDataBrowserTableViewControl::IsUsedPropertyID(DataBrowserPropertyI return ::GetDataBrowserTableViewColumnPosition(this->m_controlRef,propertyID,&index); } /* wxMacDataBrowserTableViewControl::IsUsedPropertyId(DataBrowserPropertyID) const */ -OSStatus wxMacDataBrowserTableViewControl::RemoveColumn(DataBrowserTableViewColumnIndex position) +OSStatus wxMacDataBrowserTableViewControl::RemoveColumnByProperty(DataBrowserTableViewColumnID propertyID) { - DataBrowserTableViewColumnID id; - GetColumnID( position, &id ); - return RemoveDataBrowserTableViewColumn( m_controlRef, id ); -} + return ::RemoveDataBrowserTableViewColumn(this->m_controlRef,propertyID); +} /* wxMacDataBrowserTableViewControl::RemoveColumnByProperty(DataBrowserTableViewColumnID) */ -OSStatus wxMacDataBrowserTableViewControl::SetColumnPosition(DataBrowserPropertyID column, DataBrowserTableViewColumnIndex position) +OSStatus wxMacDataBrowserTableViewControl::RemoveColumnByIndex(DataBrowserTableViewColumnIndex index) { - return ::SetDataBrowserTableViewColumnPosition(this->m_controlRef,column,position); -} + DataBrowserTableViewColumnID propertyID; + -OSStatus wxMacDataBrowserTableViewControl::SetPropertyFlags(DataBrowserPropertyID property, DataBrowserPropertyFlags flags) + this->GetPropertyID(index,&propertyID); + return ::RemoveDataBrowserTableViewColumn(this->m_controlRef,propertyID); +} /* wxMacDataBrowserTableViewControl::RemoveColumnByIndex(DataBrowserTableViewColumnIndex) */ + +OSStatus wxMacDataBrowserTableViewControl::SetColumnIndex(DataBrowserPropertyID propertyID, DataBrowserTableViewColumnIndex index) { - return ::SetDataBrowserPropertyFlags(this->m_controlRef,property,flags); -} /* wxMacDataBrowserTableViewControl::SetPropertyFlags(DataBrowserPropertyID, DataBrowserPropertyFlags) */ + return ::SetDataBrowserTableViewColumnPosition(this->m_controlRef,propertyID,index); +} /* wxMacDataBrowserTableViewControl::SetColumnIndex(DataBrowserPropertyID, DataBrowserTableViewColumnIndex) */ -OSStatus wxMacDataBrowserTableViewControl::SetDisclosureColumn(DataBrowserPropertyID property, Boolean expandableRows) +OSStatus wxMacDataBrowserTableViewControl::SetDisclosureColumn(DataBrowserPropertyID propertyID, Boolean expandableRows) { - return SetDataBrowserListViewDisclosureColumn( m_controlRef, property, expandableRows); + return ::SetDataBrowserListViewDisclosureColumn(this->m_controlRef,propertyID,expandableRows); } +OSStatus wxMacDataBrowserTableViewControl::SetPropertyFlags(DataBrowserPropertyID propertyID, DataBrowserPropertyFlags flags) +{ + return ::SetDataBrowserPropertyFlags(this->m_controlRef,propertyID,flags); +} /* wxMacDataBrowserTableViewControl::SetPropertyFlags(DataBrowserPropertyID, DataBrowserPropertyFlags) */ + // // item handling // @@ -467,10 +486,10 @@ size_t wxMacDataBrowserTableViewControl::GetSelectedItemIDs(wxArrayDataBrowserIt return NoOfItems; } /* wxMacDataBrowserTableViewControl::GetSelectedItemIDs(wxArrayDataBrowserItemID&) const*/ -OSStatus wxMacDataBrowserTableViewControl::GetSelectionAnchor( DataBrowserItemID *first, DataBrowserItemID *last ) const +OSStatus wxMacDataBrowserTableViewControl::GetSelectionAnchor(DataBrowserItemID* first, DataBrowserItemID* last) const { - return GetDataBrowserSelectionAnchor( m_controlRef, first, last ); -} + return ::GetDataBrowserSelectionAnchor(this->m_controlRef,first,last); +} /* wxMacDataBrowserTableViewControl::GetSelectionAnchor(DataBrowserItemID*, DataBrowserItemID*) const */ OSStatus wxMacDataBrowserTableViewControl::GetSelectionFlags(DataBrowserSelectionFlags* flags) const { @@ -489,35 +508,52 @@ OSStatus wxMacDataBrowserTableViewControl::SetSelectionFlags(DataBrowserSelectio OSStatus wxMacDataBrowserTableViewControl::SetSelectedItems(UInt32 numItems, DataBrowserItemID const* items, DataBrowserSetOption operation) { - return ::SetDataBrowserSelectedItems( m_controlRef, numItems, items, operation ); + return ::SetDataBrowserSelectedItems(this->m_controlRef, numItems, items, operation ); } /* wxMacDataBrowserTableViewControl::SetSelectedItems(UInt32, DataBrowserItemID const*, DataBrowserSetOption) */ -OSStatus wxMacDataBrowserTableViewControl::GetSortProperty( DataBrowserPropertyID *column ) const +OSStatus wxMacDataBrowserTableViewControl::GetSortOrder(DataBrowserSortOrder* order) const { - return GetDataBrowserSortProperty( m_controlRef , column ); + return ::GetDataBrowserSortOrder(this->m_controlRef,order); } -OSStatus wxMacDataBrowserTableViewControl::SetSortProperty( DataBrowserPropertyID column ) +OSStatus wxMacDataBrowserTableViewControl::GetSortProperty(DataBrowserPropertyID* propertyID) const { - return SetDataBrowserSortProperty( m_controlRef , column ); + return ::GetDataBrowserSortProperty(this->m_controlRef,propertyID); } -OSStatus wxMacDataBrowserTableViewControl::GetSortOrder( DataBrowserSortOrder *order ) const +OSStatus wxMacDataBrowserTableViewControl::Resort(DataBrowserItemID container, Boolean sortChildren) { - return GetDataBrowserSortOrder( m_controlRef , order ); + return ::SortDataBrowserContainer(this->m_controlRef,container,sortChildren); +} /* wxMacDataBrowserTableViewControl::Resort(DataBrowserItemID, Boolean) */ + +OSStatus wxMacDataBrowserTableViewControl::SetSortOrder(DataBrowserSortOrder order) +{ + return ::SetDataBrowserSortOrder(this->m_controlRef,order); } -OSStatus wxMacDataBrowserTableViewControl::SetSortOrder( DataBrowserSortOrder order ) +OSStatus wxMacDataBrowserTableViewControl::SetSortProperty(DataBrowserPropertyID propertyID) { - return SetDataBrowserSortOrder( m_controlRef , order ); + return ::SetDataBrowserSortProperty(this->m_controlRef,propertyID); } +// +// container handling +// +OSStatus wxMacDataBrowserTableViewControl::CloseContainer(DataBrowserItemID containerID) +{ + return ::CloseDataBrowserContainer(this->m_controlRef,containerID); +} /* wxMacDataBrowserTableViewControl::CloseContainer(DataBrowserItemID) */ + +OSStatus wxMacDataBrowserTableViewControl::OpenContainer(DataBrowserItemID containerID) +{ + return ::OpenDataBrowserContainer(this->m_controlRef,containerID); +} /* wxMacDataBrowserTableViewControl::OpenContainer(DataBrowserItemID) */ + IMPLEMENT_ABSTRACT_CLASS(wxMacDataBrowserTableViewControl,wxMacControl) // ============================================================================ -// Databrowser class for the list view control +// wxMacDataBrowserListViewControl // ============================================================================ -// #pragma mark - // // column handling @@ -528,9 +564,8 @@ OSStatus wxMacDataBrowserListViewControl::AddColumn(DataBrowserListViewColumnDes } /* wxMacDataBrowserListViewControl::AddColumn(DataBrowserListViewColumnDesc*, DataBrowserTableViewColumnIndex) */ // ============================================================================ -// Databrowser class for the data view control +// wxMacDataViewDataBrowserListViewControl // ============================================================================ -// #pragma mark - // // constructors / destructor @@ -541,109 +576,33 @@ wxMacDataViewDataBrowserListViewControl::wxMacDataViewDataBrowserListViewControl } /* wxMacDataViewDataBrowserListViewControl::wxMacDataViewDataBrowserListViewControl(wxWindow* , const wxPoint&, const wxSize&, long) */ // -// item ID and model matching +// callback functions (inherited from wxMacDataBrowserTableViewControl) // -void wxMacDataViewDataBrowserListViewControl::ClearItemIDRowPairs(void) -{ - this->m_itemIDRowNumberMap.clear(); -} /* wxMacDataViewDataBrowserListViewControl::ClearItemIDRowPairs(void) */ - -bool wxMacDataViewDataBrowserListViewControl::DeleteItemIDRowPair(DataBrowserItemID itemID) +Boolean wxMacDataViewDataBrowserListViewControl::DataBrowserCompareProc(DataBrowserItemID itemOneID, DataBrowserItemID itemTwoID, DataBrowserPropertyID sortProperty) { - return (this->m_itemIDRowNumberMap.erase(itemID) == 1); -} /* wxMacDataViewDataBrowserListViewControl::DeleteItemIDRowPair(DataBrowseritemID) */ + DataBrowserSortOrder sortOrder; -bool wxMacDataViewDataBrowserListViewControl::GetRowIndex(unsigned long& rowIndex, DataBrowserItemID itemID) const -{ - ItemIDRowNumberHashMap::const_iterator iteratorHashMap(this->m_itemIDRowNumberMap.find(itemID)); + DataBrowserTableViewColumnIndex columnIndex; + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); - if (iteratorHashMap == this->m_itemIDRowNumberMap.end()) - return false; - else - { - rowIndex = iteratorHashMap->second; - return true; - } /* if */ -} /* wxMacDataViewDataBrowserListViewControl::GetRowIndex(unsigned int& rowIndex, DataBrowserItemID itemID) const */ -bool wxMacDataViewDataBrowserListViewControl::InsertItemIDRowPair(DataBrowserItemID itemID, unsigned long rowIndex) -{ - return this->m_itemIDRowNumberMap.insert(ItemIDRowNumberHashMap::value_type(itemID,rowIndex)).second; -} /* wxMacDataViewDataBrowserListViewControl::InsertItemIDRowPair(DataBrowserItemID, unsigned long) */ - -void wxMacDataViewDataBrowserListViewControl::RenumberItemIDRowIndices(unsigned int* newIndices) -{ - ItemIDRowNumberHashMap::iterator hashMapIterator(this->m_itemIDRowNumberMap.begin()); - - - while (hashMapIterator != this->m_itemIDRowNumberMap.end()) - { - hashMapIterator->second = newIndices[hashMapIterator->second]; - ++hashMapIterator; - } /* while */ -} /* wxMacDataViewDataBrowserListViewControl::RenumberItemIDRowIndices(unsigned int*) */ - -void wxMacDataViewDataBrowserListViewControl::RenumberItemIDRowIndicesDeletion (unsigned long decreaseFromIndex) -{ - ItemIDRowNumberHashMap::iterator hashMapIterator(this->m_itemIDRowNumberMap.begin()); - - - while (hashMapIterator != this->m_itemIDRowNumberMap.end()) - { - if (hashMapIterator->second >= decreaseFromIndex) - --(hashMapIterator->second); - ++hashMapIterator; - } /* while */ -} /* wxMacDataViewDataBrowserListViewControl::RenumberItemIDRowIndicesDeletion (unsigned int) */ - -void wxMacDataViewDataBrowserListViewControl::RenumberItemIDRowIndicesInsertion(unsigned long increaseFromIndex) -{ - ItemIDRowNumberHashMap::iterator hashMapIterator(this->m_itemIDRowNumberMap.begin()); - - - while (hashMapIterator != this->m_itemIDRowNumberMap.end()) + wxCHECK_MSG(dataViewCtrlPtr != NULL, false,_("Pointer to data view control not set correctly.")); + wxCHECK_MSG(dataViewCtrlPtr->GetModel() != NULL,false,_("Pointer to model not set correctly.")); + if (sortProperty >= kMinPropertyID) { - if (hashMapIterator->second >= increaseFromIndex) - ++(hashMapIterator->second); - ++hashMapIterator; - } /* while */ -} /* wxMacDataViewDataBrowserListViewControl::RenumberItemIDRowIndicesInsertion(unsigned int) */ - -void wxMacDataViewDataBrowserListViewControl::ReverseRowIndexNumbering(void) -{ - if (this->m_itemIDRowNumberMap.size() > 0) - { - size_t const maxIndex = this->m_itemIDRowNumberMap.size()-1; - - ItemIDRowNumberHashMap::iterator hashMapIterator(this->m_itemIDRowNumberMap.begin()); - - - while (hashMapIterator != this->m_itemIDRowNumberMap.end()) - { - hashMapIterator->second = maxIndex-hashMapIterator->second; - ++hashMapIterator; - } /* while */ + wxCHECK_MSG(this->GetColumnIndex(sortProperty,&columnIndex) == noErr,false,_("Could not determine column index.")); } /* if */ -} /* wxMacDataViewDataBrowserListViewControl::ReverseRowIndexNumbering(void) */ - -// -// callback functions (inherited from wxMacDataBrowserTableViewControl) -// -Boolean wxMacDataViewDataBrowserListViewControl::DataBrowserCompareProc(DataBrowserItemID itemOneID, DataBrowserItemID itemTwoID, DataBrowserPropertyID WXUNUSED(sortProperty)) -{ - unsigned long rowIndex1, rowIndex2; - - bool result = (this->GetRowIndex(rowIndex1,itemOneID) && this->GetRowIndex(rowIndex2,itemTwoID) && (rowIndex1 < rowIndex2)); - return result; + else + columnIndex = 0; + this->GetSortOrder(&sortOrder); + return static_cast(dataViewCtrlPtr->GetModel()->Compare(wxDataViewItem(reinterpret_cast(itemOneID)),wxDataViewItem(reinterpret_cast(itemTwoID)), + columnIndex,sortOrder != kDataBrowserOrderDecreasing) < 0); } /* wxMacDataViewDataBrowserListViewControl::DataBrowserCompareProc(DataBrowserItemID, DataBrowserItemID, DataBrowserPropertyID) */ -void wxMacDataViewDataBrowserListViewControl::DataBrowserDrawItemProc(DataBrowserItemID itemID, DataBrowserPropertyID property, DataBrowserItemState state, Rect const* rectangle, SInt16 bitDepth, Boolean colorDevice) +void wxMacDataViewDataBrowserListViewControl::DataBrowserDrawItemProc(DataBrowserItemID itemID, DataBrowserPropertyID propertyID, DataBrowserItemState state, Rect const* rectangle, SInt16 bitDepth, Boolean colorDevice) { - OSStatus errorStatus; - - unsigned long column; - unsigned long row; + DataBrowserTableViewColumnIndex columnIndex; wxDataViewColumn* dataViewColumnPtr; @@ -654,23 +613,15 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserDrawItemProc(DataBrowse wxVariant dataToRender; - wxCHECK_RET(this->GetPropertyColumn(property,&column) == noErr,_("Could not determine column index.")); dataViewCtrlPtr = dynamic_cast(this->GetPeer()); - wxCHECK_RET(dataViewCtrlPtr != NULL, _("Pointer to data view control not set correctly.")); - wxCHECK_RET(dataViewCtrlPtr->GetModel() != NULL,_("Pointer to model not set correctly.")); - if (dynamic_cast(dataViewCtrlPtr->GetModel()) == NULL) - { - wxCHECK_RET(this->GetRowIndex(row,itemID),_("Row index does not exist.")); - } /* if */ - else - { - wxCHECK_RET(this->GetItemRow(itemID,&row) == noErr,_("Row index does not exist.")); - } /* if */ - dataViewColumnPtr = dataViewCtrlPtr->GetColumn(column); + wxCHECK_RET(dataViewCtrlPtr != NULL, _("Pointer to data view control not set correctly.")); + wxCHECK_RET(dataViewCtrlPtr->GetModel() != NULL, _("Pointer to model not set correctly.")); + wxCHECK_RET(this->GetColumnIndex(propertyID,&columnIndex) == noErr,_("Could not determine column index.")); + dataViewColumnPtr = dataViewCtrlPtr->GetColumn(columnIndex); wxCHECK_RET(dataViewColumnPtr != NULL,_("No column for the specified column index existing.")); dataViewCustomRendererPtr = dynamic_cast(dataViewColumnPtr->GetRenderer()); wxCHECK_RET(dataViewCustomRendererPtr != NULL,_("No renderer or invalid renderer type specified for custom data column.")); - dataViewCtrlPtr->GetModel()->GetValue(dataToRender,column,row); + dataViewCtrlPtr->GetModel()->GetValue(dataToRender,wxDataViewItem(reinterpret_cast(itemID)),columnIndex); dataViewCustomRendererPtr->SetValue(dataToRender); // try to determine the content's size (drawable part): @@ -703,195 +654,362 @@ void wxMacDataViewDataBrowserListViewControl::DataBrowserDrawItemProc(DataBrowse dataViewCustomRendererPtr->GetDC()->DestroyClippingRegion(); // probably not necessary } /* wxMacDataViewDataBrowserListViewControl::DataBrowserDrawItemProc(DataBrowserItemID, DataBrowserPropertyID, DataBrowserItemState, Rect const*, SInt16, Boolean) */ -OSStatus wxMacDataViewDataBrowserListViewControl::DataBrowserGetSetItemDataProc(DataBrowserItemID itemID, DataBrowserPropertyID property, DataBrowserItemDataRef itemData, Boolean getValue) +OSStatus wxMacDataViewDataBrowserListViewControl::DataBrowserGetSetItemDataProc(DataBrowserItemID itemID, DataBrowserPropertyID propertyID, DataBrowserItemDataRef itemData, Boolean getValue) { if (getValue) { - // variable definition: - unsigned long column; - unsigned long row; - wxDataViewCtrl* dataViewCtrlPtr; - wxDataViewColumn* dataViewColumnPtr; + // variable definitions: + wxDataViewCtrl* dataViewCtrlPtr; - verify_noerr(this->GetPropertyColumn(property,&column)); dataViewCtrlPtr = dynamic_cast(this->GetPeer()); wxCHECK_MSG(dataViewCtrlPtr != NULL,errDataBrowserNotConfigured,_("Pointer to data view control not set correctly.")); - if (dynamic_cast(dataViewCtrlPtr->GetModel()) == NULL) - { - wxCHECK_MSG(this->GetRowIndex(row,itemID),errDataBrowserNotConfigured,_("Row index does not exist.")); - } /* if */ + if (dataViewCtrlPtr->IsDeleting()) + return noErr; // if a delete process is running the data of editable fields cannot be saved because the associated model variable may already have been deleted else { - wxCHECK_MSG(this->GetItemRow(itemID,&row) == noErr,errDataBrowserNotConfigured,_("Row index does not exist.")); - } /* if */ - dataViewColumnPtr = dataViewCtrlPtr->GetColumn(column); - wxCHECK_MSG((dataViewColumnPtr != NULL) && (dataViewColumnPtr->GetRenderer() != NULL),errDataBrowserNotConfigured,_("There is no column for the specified column index.")); - switch (dataViewColumnPtr->GetRenderer()->GetPropertyType()) - { - case kDataBrowserCheckboxType: - { - // variable definitions: - ThemeButtonValue buttonValue; - OSStatus errorStatus; - - errorStatus = ::GetDataBrowserItemDataButtonValue(itemData,&buttonValue); - if (errorStatus == noErr) + // variable definitions: + DataBrowserTableViewColumnIndex columnIndex; + OSStatus errorStatus; + wxDataViewColumn* dataViewColumnPtr; + + wxCHECK_MSG(dataViewCtrlPtr->GetModel() != NULL,errDataBrowserNotConfigured,_("Pointer to model not set correctly.")); + errorStatus = this->GetColumnIndex(propertyID,&columnIndex); + wxCHECK_MSG(errorStatus == noErr,errorStatus,_("Could not determine column index")); + dataViewColumnPtr = dataViewCtrlPtr->GetColumn(columnIndex); + wxCHECK_MSG((dataViewColumnPtr != NULL) && (dataViewColumnPtr->GetRenderer() != NULL),errDataBrowserNotConfigured,_("There is no column or renderer for the specified column index.")); + switch (dataViewColumnPtr->GetRenderer()->GetPropertyType()) + { + case kDataBrowserCheckboxType: { - if (buttonValue == kThemeButtonOn) - { - // variable definition and initialization: - wxVariant modifiedData(true); + // variable definition: + ThemeButtonValue buttonValue; - return (dataViewCtrlPtr->GetModel()->SetValue(modifiedData,static_cast(column),static_cast(row)) ? noErr : errDataBrowserNotConfigured); - } /* if */ - else if (buttonValue == kThemeButtonOff) + errorStatus = ::GetDataBrowserItemDataButtonValue(itemData,&buttonValue); + if (errorStatus == noErr) { - // variable definition and initialization: - wxVariant modifiedData(false); - - return (dataViewCtrlPtr->GetModel()->SetValue(modifiedData,static_cast(column),static_cast(row)) ? noErr : errDataBrowserNotConfigured); + if (buttonValue == kThemeButtonOn) + { + // variable definition and initialization: + wxVariant modifiedData(true); + + return (dataViewCtrlPtr->GetModel()->SetValue(modifiedData,wxDataViewItem(reinterpret_cast(itemID)),static_cast(columnIndex)) ? OSStatus(noErr) : OSStatus(errDataBrowserNotConfigured)); + } /* if */ + else if (buttonValue == kThemeButtonOff) + { + // variable definition and initialization: + wxVariant modifiedData(false); + + return (dataViewCtrlPtr->GetModel()->SetValue(modifiedData,wxDataViewItem(reinterpret_cast(itemID)),static_cast(columnIndex)) ? OSStatus(noErr) : OSStatus(errDataBrowserNotConfigured)); + } /* if */ + else + return errDataBrowserInvalidPropertyData; } /* if */ else - return errDataBrowserInvalidPropertyData; - } /* if */ - else - return errorStatus; - } /* block */ - case kDataBrowserTextType: - { - // variable definitions: - CFStringRef stringReference; - OSStatus errorStatus; - - errorStatus = ::GetDataBrowserItemDataText(itemData,&stringReference); - if (errorStatus == noErr) + return errorStatus; + } /* block */ + case kDataBrowserTextType: { - // variable definitions and initializations: - wxMacCFStringHolder modifiedString(stringReference); - wxVariant modifiedData(modifiedString.AsString()); + // variable definitions: + CFStringRef stringReference; - if (dataViewCtrlPtr->GetModel()->SetValue(modifiedData,static_cast(column),static_cast(row))) - return noErr; + errorStatus = ::GetDataBrowserItemDataText(itemData,&stringReference); + if (errorStatus == noErr) + { + // variable definitions and initializations: + wxMacCFStringHolder modifiedString(stringReference); + wxVariant modifiedData(modifiedString.AsString()); + + if (dataViewCtrlPtr->GetModel()->SetValue(modifiedData,wxDataViewItem(reinterpret_cast(itemID)),static_cast(columnIndex))) + return noErr; + else + return errDataBrowserNotConfigured; + } /* if */ else - return errDataBrowserNotConfigured; - } /* if */ - else - return errorStatus; - } /* block */ - default: - return errDataBrowserPropertyNotSupported; - } /* switch */ + return errorStatus; + } /* block */ + default: + return errDataBrowserPropertyNotSupported; + } /* switch */ + } /* if */ } /* if */ else { - if (property >= kMinPropertyID) // in case of data columns set the data + if (propertyID >= kMinPropertyID) // in case data columns set the data { // variable definitions: - OSStatus errorStatus; - unsigned long columnPosition; - unsigned long rowPosition; wxVariant variant; wxDataViewColumn* dataViewColumnPtr; wxDataViewCtrl* dataViewCtrlPtr; - errorStatus = this->GetPropertyColumn(property,&columnPosition); - wxCHECK_MSG(errorStatus == noErr,errorStatus,_("Column index does not exist.")); - dataViewCtrlPtr = dynamic_cast(this->GetPeer());wxCHECK_MSG(dataViewCtrlPtr != NULL,errDataBrowserNotConfigured,_("Pointer to data view control not set correctly.")); - dataViewColumnPtr = dataViewCtrlPtr->GetColumn(columnPosition); wxCHECK_MSG(dataViewColumnPtr != NULL,errDataBrowserNotConfigured,_("No column for the specified column position existing.")); - if (dynamic_cast(dataViewCtrlPtr->GetModel()) == NULL) - { - wxCHECK_MSG(this->GetRowIndex(rowPosition,itemID),errDataBrowserNotConfigured,_("Row index does not exist.")); - } /* if */ - else + dataViewCtrlPtr = dynamic_cast(this->GetPeer()); + wxCHECK_MSG(dataViewCtrlPtr != NULL,errDataBrowserNotConfigured,_("Pointer to data view control not set correctly.")); + wxCHECK_MSG(dataViewCtrlPtr->GetModel() != NULL,errDataBrowserNotConfigured,_("Pointer to model not set correctly.")); + dataViewColumnPtr = dataViewCtrlPtr->GetColumnPtr(propertyID); + wxCHECK_MSG(dataViewColumnPtr != NULL,errDataBrowserNotConfigured,_("No column for the specified column position existing.")); + wxCHECK_MSG(dataViewColumnPtr->GetRenderer() != NULL,errDataBrowserNotConfigured,_("No renderer specified for column.")); + dataViewCtrlPtr->GetModel()->GetValue(variant,wxDataViewItem(reinterpret_cast(itemID)),dataViewColumnPtr->GetModelColumn()); + if (!(variant.IsNull())) { - wxCHECK_MSG(this->GetItemRow(itemID,&rowPosition) == noErr,errDataBrowserNotConfigured,_("Row index does not exist.")); + dataViewColumnPtr->GetRenderer()->SetDataReference(itemData); + dataViewColumnPtr->GetRenderer()->SetValue(variant); + wxCHECK_MSG(dataViewColumnPtr->GetRenderer()->Render(),errDataBrowserNotConfigured,_("Rendering failed.")); } /* if */ - dataViewCtrlPtr->GetModel()->GetValue(variant,dataViewColumnPtr->GetModelColumn(),rowPosition); - wxCHECK_MSG(dataViewColumnPtr->GetRenderer() != NULL,errDataBrowserNotConfigured,_("No renderer specified for column.")); - dataViewColumnPtr->GetRenderer()->SetDataReference(itemData); - dataViewColumnPtr->GetRenderer()->SetValue(variant); - wxCHECK_MSG(dataViewColumnPtr->GetRenderer()->Render(),errDataBrowserNotConfigured,_("Rendering failed.")); + return noErr; } /* if */ else // react on special system requests - switch (property) + { + switch (propertyID) { + case kDataBrowserContainerIsClosableProperty: + { + // variable definitions: + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); + + wxCHECK_MSG(dataViewCtrlPtr != NULL,errDataBrowserNotConfigured,_("Pointer to data view control not set correctly.")); + // initialize wxWidget event: + wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING,dataViewCtrlPtr->GetId()); // variable definition + + dataViewEvent.SetEventObject(dataViewCtrlPtr); + dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast(itemID))); + // finally send the equivalent wxWidget event: + dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent); + // opening the container is allowed if not vetoed: + return ::SetDataBrowserItemDataBooleanValue(itemData,dataViewEvent.IsAllowed()); + } /* block */ + case kDataBrowserContainerIsOpenableProperty: + { + // variable definitions: + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); + + wxCHECK_MSG(dataViewCtrlPtr != NULL,errDataBrowserNotConfigured,_("Pointer to data view control not set correctly.")); + // initialize wxWidget event: + wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING,dataViewCtrlPtr->GetId()); // variable definition + + dataViewEvent.SetEventObject(dataViewCtrlPtr); + dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast(itemID))); + // finally send the equivalent wxWidget event: + dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent); + // opening the container is allowed if not vetoed: + return ::SetDataBrowserItemDataBooleanValue(itemData,dataViewEvent.IsAllowed()); + } /* block */ case kDataBrowserItemIsContainerProperty: - return ::SetDataBrowserItemDataBooleanValue(itemData,false); + { + // variable definition: + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); + + wxCHECK_MSG(dataViewCtrlPtr != NULL,errDataBrowserNotConfigured,_("Pointer to data view control not set correctly.")); + wxCHECK_MSG(dataViewCtrlPtr->GetModel() != NULL,errDataBrowserNotConfigured,_("Pointer to model not set correctly.")); + return ::SetDataBrowserItemDataBooleanValue(itemData,dataViewCtrlPtr->GetModel()->IsContainer(wxDataViewItem(reinterpret_cast(itemID)))); + } /* block */ case kDataBrowserItemIsEditableProperty: return ::SetDataBrowserItemDataBooleanValue(itemData,true); } /* switch */ + } /* if */ } /* if */ return errDataBrowserPropertyNotSupported; } /* wxMacDataViewDataBrowserListViewControl::DataBrowserGetSetItemDataProc(DataBrowserItemID, DataBrowserPropertyID, DataBrowserItemDataRef, Boolean) */ -void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(DataBrowserItemID itemID, DataBrowserItemNotification message, DataBrowserItemDataRef WXUNUSED(itemData)) +void wxMacDataViewDataBrowserListViewControl::DataBrowserItemNotificationProc(DataBrowserItemID itemID, DataBrowserItemNotification message, DataBrowserItemDataRef itemData) { switch (message) { - case kDataBrowserItemDoubleClicked: + case kDataBrowserContainerClosed: { // variable definitions: - unsigned long row; wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); - wxCHECK_RET(dataViewCtrlPtr != NULL, _("Pointer to data view control not set correctly.")); - wxCHECK_RET(this->GetRowIndex(row,itemID),_("Row index does not exist.")); + if (dataViewCtrlPtr != NULL) // can become NULL when the window is being deleted (wxWidget has already disposed the data before receiving this event + { + // initialize wxWidget event: + wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED,dataViewCtrlPtr->GetId()); // variable definition + + dataViewEvent.SetEventObject(dataViewCtrlPtr); + dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast(itemID))); + // finally send the equivalent wxWidget event: + dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent); + } /* if */ + } /* block */ + break; + case kDataBrowserContainerOpened: + { + // variable definitions: + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); + + wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data view control not set correctly.")); + dataViewCtrlPtr->AddChildrenLevel(wxDataViewItem(reinterpret_cast(itemID))); // initialize wxWidget event: - wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ROW_ACTIVATED,dataViewCtrlPtr->GetId()); // variable defintion + wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED,dataViewCtrlPtr->GetId()); // variable definition + + dataViewEvent.SetEventObject(dataViewCtrlPtr); + dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast(itemID))); + // finally send the equivalent wxWidget event: + dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent); + } /* block */ + break; + case kDataBrowserEditStarted: + { + // variable definitions: + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); + + if (dataViewCtrlPtr != NULL) + { + // initialize wxWidget event: + DataBrowserPropertyID propertyID; + wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED,dataViewCtrlPtr->GetId()); // variable definition + + dataViewEvent.SetEventObject(dataViewCtrlPtr); + dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast(itemID))); + if (this->GetPropertyID(itemData,&propertyID) == noErr) + { + // variable definition and initialization: + DataBrowserTableViewColumnIndex columnIndex; + + wxCHECK_RET(this->GetColumnIndex(propertyID,&columnIndex),_("Column index not found.")); + dataViewEvent.SetColumn(columnIndex); + dataViewEvent.SetDataViewColumn(dataViewCtrlPtr->GetColumnPtr(propertyID)); + } /* if */ + // finally send the equivalent wxWidget event: + dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent); + } /* if */ + } /* block */ + break; + case kDataBrowserEditStopped: + { + // variable definitions: + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); + + if (dataViewCtrlPtr != NULL) + { + // initialize wxWidget event: + DataBrowserPropertyID propertyID; + wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE,dataViewCtrlPtr->GetId()); // variable definition + + dataViewEvent.SetEventObject(dataViewCtrlPtr); + dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast(itemID))); + if (this->GetPropertyID(itemData,&propertyID) == noErr) + { + // variable definition and initialization: + DataBrowserTableViewColumnIndex columnIndex; + wxCHECK_RET(this->GetColumnIndex(propertyID,&columnIndex),_("Column index not found.")); + dataViewEvent.SetColumn(columnIndex); + dataViewEvent.SetDataViewColumn(dataViewCtrlPtr->GetColumnPtr(propertyID)); + } /* if */ + // finally send the equivalent wxWidget event: + dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent); + } /* if */ + } /* block */ + break; + case kDataBrowserItemAdded: + { + // variable definitions: + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); + + wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data view control not set correctly.")); + // initialize wxWidget event: + wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_ADDED,dataViewCtrlPtr->GetId()); // variable definition + dataViewEvent.SetEventObject(dataViewCtrlPtr); - dataViewEvent.SetRow(row); - // finally sent the equivalent wxWidget event: + dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast(itemID))); + // finally send the equivalent wxWidget event: dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent); } /* block */ break; - case kDataBrowserItemSelected: + case kDataBrowserItemDeselected: { // variable definitions: - unsigned long row; wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); - wxCHECK_RET(dataViewCtrlPtr != NULL, _("Pointer to data view control not set correctly.")); - if (dynamic_cast(dataViewCtrlPtr->GetModel()) == NULL) + if (dataViewCtrlPtr != NULL) // can become NULL if an item is still selected while removing the data browser { - wxCHECK_RET(this->GetRowIndex(row,itemID),_("Row index does not exist.")); + // initialize wxWidget event: + wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_DESELECTED,dataViewCtrlPtr->GetId()); // variable definition + + dataViewEvent.SetEventObject(dataViewCtrlPtr); + dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast(itemID))); + // finally send the equivalent wxWidget event: + dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent); } /* if */ - else + } /* block */ + break; + case kDataBrowserItemDoubleClicked: + { + // variable definitions: + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); + + wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data view control not set correctly.")); + // initialize wxWidget event: + wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED,dataViewCtrlPtr->GetId()); // variable definition + + dataViewEvent.SetEventObject(dataViewCtrlPtr); + dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast(itemID))); + // finally send the equivalent wxWidget event: + dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent); + } /* block */ + break; + case kDataBrowserItemRemoved: + { + // variable definitions: + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); + + if (dataViewCtrlPtr != NULL) // can become NULL when the window is being deleted (wxWidget has already disposed the data before receiving this event { - wxCHECK_RET(this->GetItemRow(itemID,&row) == noErr,_("Row index does not exist.")); + // initialize wxWidget event: + wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_DELETED,dataViewCtrlPtr->GetId()); // variable definition + + dataViewEvent.SetEventObject(dataViewCtrlPtr); + dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast(itemID))); + // finally send the equivalent wxWidget event: + dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent); } /* if */ + } /* block */ + break; + case kDataBrowserItemSelected: + { + // variable definitions: + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); + + wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data view control not set correctly.")); // initialize wxWidget event: - wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ROW_SELECTED,dataViewCtrlPtr->GetId()); // variable defintion + wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_ITEM_SELECTED,dataViewCtrlPtr->GetId()); // variable definition dataViewEvent.SetEventObject(dataViewCtrlPtr); - dataViewEvent.SetRow(row); - // finally sent the equivalent wxWidget event: + dataViewEvent.SetItem(wxDataViewItem(reinterpret_cast(itemID))); + // finally send the equivalent wxWidget event: dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent); } /* block */ break; + case kDataBrowserSelectionSetChanged: + break; case kDataBrowserUserStateChanged: { - DataBrowserPropertyID propertyId; + DataBrowserPropertyID propertyID; - if ((this->GetSortProperty(&propertyId) == noErr) && (propertyId >= kMinPropertyID)) + if ((this->GetSortProperty(&propertyID) == noErr) && (propertyID >= kMinPropertyID)) { - DataBrowserSortOrder sortOrder; - unsigned long column; + DataBrowserSortOrder sortOrder; + DataBrowserTableViewColumnIndex columnIndex; - if ((this->GetSortOrder(&sortOrder) == noErr) && (this->GetPropertyColumn(propertyId,&column) == noErr)) + if ((this->GetSortOrder(&sortOrder) == noErr) && (this->GetColumnIndex(propertyID,&columnIndex) == noErr)) { - wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); - - if ( dataViewCtrlPtr->GetColumn(column)->IsSortOrderAscending() && (sortOrder == kDataBrowserOrderDecreasing) || - !(dataViewCtrlPtr->GetColumn(column)->IsSortOrderAscending()) && (sortOrder == kDataBrowserOrderIncreasing)) + // variable definition and initialization: + wxDataViewColumn* columnPtr; + wxDataViewCtrl* dataViewCtrlPtr(dynamic_cast(this->GetPeer())); + + wxCHECK_RET(dataViewCtrlPtr != NULL,_("Pointer to data vie wcontrol not set correctly.")); + columnPtr = dataViewCtrlPtr->GetColumn(columnIndex); + // check if the sort order has changed: + if ( columnPtr->IsSortOrderAscending() && (sortOrder == kDataBrowserOrderDecreasing) || + !(columnPtr->IsSortOrderAscending()) && (sortOrder == kDataBrowserOrderIncreasing)) { + columnPtr->SetSortOrder(!(columnPtr->IsSortOrderAscending())); // initialize wxWidget event: wxDataViewEvent dataViewEvent(wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED,dataViewCtrlPtr->GetId()); // variable defintion dataViewEvent.SetEventObject(dataViewCtrlPtr); - dataViewEvent.SetColumn(column); - dataViewEvent.SetDataViewColumn(dataViewCtrlPtr->GetColumn(column)); - // finally sent the equivalent wxWidget event: + dataViewEvent.SetColumn(columnIndex); + dataViewEvent.SetDataViewColumn(columnPtr); + // finally send the equivalent wxWidget event: dataViewCtrlPtr->GetEventHandler()->ProcessEvent(dataViewEvent); } /* if */ } /* if */