X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f32eb96401af815f5662b715330802c2e6bfa452..ec2df34e27ba41f202ecbf096cdfed082a9ddb8f:/include/wx/osx/cocoa/dataview.h diff --git a/include/wx/osx/cocoa/dataview.h b/include/wx/osx/cocoa/dataview.h index 6efca71daf..0859b2dbae 100644 --- a/include/wx/osx/cocoa/dataview.h +++ b/include/wx/osx/cocoa/dataview.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wx/osx/carbon/dataview.h +// Name: wx/osx/cocoa/dataview.h // Purpose: wxDataViewCtrl native implementation header for carbon // Author: // Id: $Id: dataview.h 57374 2009-01-27 @@ -12,11 +12,7 @@ #include "wx/defs.h" -#if wxUSE_GUI - -#ifdef __OBJC__ - #import -#endif +#import #include "wx/osx/core/dataview.h" #include "wx/osx/private.h" @@ -24,231 +20,217 @@ // Forward declaration class wxCocoaDataViewControl; +/* + Dramatis personae: + + [vertical arrows indicate inheritance, horizontal -- aggregation] + + + wxWindow ---> wxWidgetCocoaImpl wxDataViewWidgetImpl NSOutlineView + | \ / | + | \ / | + | \ / | + v \/ \/ v + wxDataViewCtrl -------> wxCocoaDataViewControl <-------> wxCocoaOutlineView + + + The right most classes are Objective-C only and can't be used from (pure) + C++ code. + */ + // ============================================================================ -// wxPointerObject +// wxPointerObject: simply stores a pointer, without taking its ownership // ============================================================================ -// -// This is a helper class to store a pointer in an object. This object just -// stores the pointer but does not take any ownership. -// To pointer objects are equal if the containing pointers are equal. This + +// Two pointer objects are equal if the containing pointers are equal. This // means also that the hash value of a pointer object depends only on the // stored pointer. -// + @interface wxPointerObject : NSObject { - void* pointer; + void* pointer; } - // - // object initialization - // - -(id) initWithPointer:(void*)initPointer; - - // - // access to pointer - // - -(void*) pointer; - -(void) setPointer:(void*)newPointer; + -(id) initWithPointer:(void*)initPointer; + -(void*) pointer; + -(void) setPointer:(void*)newPointer; @end // ============================================================================ -// wxSortDescriptorObject +// wxSortDescriptorObject: helper class to use native sorting facilities // ============================================================================ -// -// This is a helper class to use native sorting facilities. -// + @interface wxSortDescriptorObject : NSSortDescriptor { - wxDataViewColumn* columnPtr; // pointer to the sorting column + wxDataViewColumn* columnPtr; // pointer to the sorting column - wxDataViewModel* modelPtr; // pointer to model + wxDataViewModel* modelPtr; // pointer to model } - // - // initialization - // - -(id) initWithModelPtr:(wxDataViewModel*)initModelPtr sortingColumnPtr:(wxDataViewColumn*)initColumnPtr ascending:(BOOL)sortAscending; - - // - // access to variables - // - -(wxDataViewColumn*) columnPtr; - -(wxDataViewModel*) modelPtr; + -(id) + initWithModelPtr:(wxDataViewModel*)initModelPtr + sortingColumnPtr:(wxDataViewColumn*)initColumnPtr + ascending:(BOOL)sortAscending; - -(void) setColumnPtr:(wxDataViewColumn*)newColumnPtr; - -(void) setModelPtr:(wxDataViewModel*)newModelPtr; + -(wxDataViewColumn*) columnPtr; + -(wxDataViewModel*) modelPtr; + -(void) setColumnPtr:(wxDataViewColumn*)newColumnPtr; + -(void) setModelPtr:(wxDataViewModel*)newModelPtr; @end // ============================================================================ -// wxDataViewColumnNativeData +// wxDataViewColumnNativeData: extra data for wxDataViewColumn // ============================================================================ + class wxDataViewColumnNativeData { public: -// -// constructors / destructor -// - wxDataViewColumnNativeData(void) : m_NativeColumnPtr(NULL) - { - } - wxDataViewColumnNativeData(NSTableColumn* initNativeColumnPtr) : m_NativeColumnPtr(initNativeColumnPtr) - { - } + wxDataViewColumnNativeData() : m_NativeColumnPtr(NULL) + { + } -// -// data access methods -// - NSTableColumn* GetNativeColumnPtr() const - { - return m_NativeColumnPtr; - } + wxDataViewColumnNativeData(NSTableColumn* initNativeColumnPtr) + : m_NativeColumnPtr(initNativeColumnPtr) + { + } + + NSTableColumn* GetNativeColumnPtr() const + { + return m_NativeColumnPtr; + } - void SetNativeColumnPtr(NSTableColumn* newNativeColumnPtr) - { - m_NativeColumnPtr = newNativeColumnPtr; - } + void SetNativeColumnPtr(NSTableColumn* newNativeColumnPtr) + { + m_NativeColumnPtr = newNativeColumnPtr; + } -protected: private: -// -// variables -// - NSTableColumn* m_NativeColumnPtr; // this class does not take over ownership of the pointer nor retains it + // not owned by us + NSTableColumn* m_NativeColumnPtr; }; // ============================================================================ -// wxDataViewRendererNativeData +// wxDataViewRendererNativeData: extra data for wxDataViewRenderer // ============================================================================ + class wxDataViewRendererNativeData { public: -// -// constructors / destructor -// - wxDataViewRendererNativeData(void) : m_Object(NULL), m_ColumnCell(NULL) - { - Init(); - } - wxDataViewRendererNativeData(NSCell* initColumnCell) : m_Object(NULL), m_ColumnCell([initColumnCell retain]) - { - Init(); - } - wxDataViewRendererNativeData(NSCell* initColumnCell, id initObject) : m_Object([initObject retain]), m_ColumnCell([initColumnCell retain]) - { - Init(); - } - - ~wxDataViewRendererNativeData() - { - [m_ColumnCell release]; - [m_Object release]; - - [m_origFont release]; - [m_origTextColour release]; - } - - // - // data access methods - // - NSCell* GetColumnCell() const - { - return m_ColumnCell; - } - NSTableColumn* GetColumnPtr() const - { - return m_TableColumnPtr; - } - id GetItem() const - { - return m_Item; - } - NSCell* GetItemCell() const - { - return m_ItemCell; - } - id GetObject() const - { - return m_Object; - } - - void SetColumnCell(NSCell* newCell) - { - [newCell retain]; - [m_ColumnCell release]; - m_ColumnCell = newCell; - } - void SetColumnPtr(NSTableColumn* newColumnPtr) - { - m_TableColumnPtr = newColumnPtr; - } - void SetItem(id newItem) - { - m_Item = newItem; - } - void SetItemCell(NSCell* newCell) - { - m_ItemCell = newCell; - } - void SetObject(id newObject) - { - [newObject retain]; - [m_Object release]; - m_Object = newObject; - } - - // The original cell font and text colour stored here are NULL by default and - // are only initialized to the values retrieved from the cell when we change - // them from wxCocoaOutlineView:willDisplayCell:forTableColumn:item: which - // calls our SaveOriginalXXX() methods before changing the cell attributes. - // - // This allows us to avoid doing anything for the columns without any - // attributes but still be able to restore the correct attributes for the - // ones that do. - NSFont *GetOriginalFont() const { return m_origFont; } - NSColor *GetOriginalTextColour() const { return m_origTextColour; } - - void SaveOriginalFont(NSFont *font) - { - m_origFont = [font retain]; - } - - void SaveOriginalTextColour(NSColor *textColour) - { - m_origTextColour = [textColour retain]; - } - - // The ellipsization mode which we need to set for each cell being rendered. - void SetEllipsizeMode(wxEllipsizeMode mode) { m_ellipsizeMode = mode; } - wxEllipsizeMode GetEllipsizeMode() const { return m_ellipsizeMode; } - - // Set the line break mode for the given cell using our m_ellipsizeMode - void ApplyLineBreakMode(NSCell *cell); + wxDataViewRendererNativeData() + : m_Object(NULL), m_ColumnCell(NULL) + { + Init(); + } + + wxDataViewRendererNativeData(NSCell* initColumnCell) + : m_Object(NULL), m_ColumnCell([initColumnCell retain]) + { + Init(); + } + + wxDataViewRendererNativeData(NSCell* initColumnCell, id initObject) + : m_Object([initObject retain]), m_ColumnCell([initColumnCell retain]) + { + Init(); + } + + ~wxDataViewRendererNativeData() + { + [m_ColumnCell release]; + [m_Object release]; + + [m_origFont release]; + [m_origTextColour release]; + } + + NSCell* GetColumnCell() const { return m_ColumnCell; } + NSTableColumn* GetColumnPtr() const { return m_TableColumnPtr; } + id GetItem() const { return m_Item; } + NSCell* GetItemCell() const { return m_ItemCell; } + id GetObject() const { return m_Object; } + + void SetColumnCell(NSCell* newCell) + { + [newCell retain]; + [m_ColumnCell release]; + m_ColumnCell = newCell; + } + void SetColumnPtr(NSTableColumn* newColumnPtr) + { + m_TableColumnPtr = newColumnPtr; + } + void SetItem(id newItem) + { + m_Item = newItem; + } + void SetItemCell(NSCell* newCell) + { + m_ItemCell = newCell; + } + void SetObject(id newObject) + { + [newObject retain]; + [m_Object release]; + m_Object = newObject; + } + + // The original cell font and text colour stored here are NULL by default + // and are only initialized to the values retrieved from the cell when we + // change them from wxCocoaOutlineView:willDisplayCell:forTableColumn:item: + // which calls our SaveOriginalXXX() methods before changing the cell + // attributes. + // + // This allows us to avoid doing anything for the columns without any + // attributes but still be able to restore the correct attributes for the + // ones that do. + NSFont *GetOriginalFont() const { return m_origFont; } + NSColor *GetOriginalTextColour() const { return m_origTextColour; } + + void SaveOriginalFont(NSFont *font) + { + m_origFont = [font retain]; + } + + void SaveOriginalTextColour(NSColor *textColour) + { + m_origTextColour = [textColour retain]; + } + + // The ellipsization mode which we need to set for each cell being rendered. + void SetEllipsizeMode(wxEllipsizeMode mode) { m_ellipsizeMode = mode; } + wxEllipsizeMode GetEllipsizeMode() const { return m_ellipsizeMode; } + + // Set the line break mode for the given cell using our m_ellipsizeMode + void ApplyLineBreakMode(NSCell *cell); private: - // common part of all ctors - void Init(); + // common part of all ctors + void Init(); + + id m_Item; // item NOT owned by renderer - id m_Item; // item NOT owned by renderer - id m_Object; // object that can be used by renderer for storing special data (owned by renderer) + // object that can be used by renderer for storing special data (owned by + // renderer) + id m_Object; - NSCell* m_ColumnCell; // column's cell is owned by renderer - NSCell* m_ItemCell; // item's cell is NOT owned by renderer + NSCell* m_ColumnCell; // column's cell is owned by renderer + NSCell* m_ItemCell; // item's cell is NOT owned by renderer - NSTableColumn* m_TableColumnPtr; // column NOT owned by renderer + NSTableColumn* m_TableColumnPtr; // column NOT owned by renderer - // we own those if they're non-NULL - NSFont *m_origFont; - NSColor *m_origTextColour; + // we own those if they're non-NULL + NSFont *m_origFont; + NSColor *m_origTextColour; - wxEllipsizeMode m_ellipsizeMode; + wxEllipsizeMode m_ellipsizeMode; }; // ============================================================================ // wxCocoaOutlineDataSource // ============================================================================ -// + // This class implements the data source delegate for the outline view. // As only an informal protocol exists this class inherits from NSObject only. // @@ -268,94 +250,107 @@ private: // owned by the set. Furthermore, children of the last parent are stored // in a linear list. // -@interface wxCocoaOutlineDataSource : NSObject +@interface wxCocoaOutlineDataSource : NSObject wxOSX_10_6_AND_LATER() { - NSArray* sortDescriptors; // descriptors specifying the sorting (currently the array only holds one object only) + // descriptors specifying the sorting (currently the array only holds one + // object only) + NSArray* sortDescriptors; - NSMutableArray* children; // buffered children + NSMutableArray* children; // buffered children - NSMutableSet* items; // stores all items that are in use by the control + NSMutableSet* items; // stores all items that are in use by the control - wxCocoaDataViewControl* implementation; + wxCocoaDataViewControl* implementation; - wxDataViewModel* model; + wxDataViewModel* model; - wxPointerObject* currentParentItem; // parent of the buffered children; the object is owned + // parent of the buffered children; the object is owned + wxPointerObject* currentParentItem; } - // - // methods of informal protocol: - // - -(BOOL) outlineView:(NSOutlineView*)outlineView acceptDrop:(id)info item:(id)item childIndex:(NSInteger)index; - -(id) outlineView:(NSOutlineView*)outlineView child:(NSInteger)index ofItem:(id)item; - -(id) outlineView:(NSOutlineView*)outlineView objectValueForTableColumn:(NSTableColumn*)tableColumn byItem:(id)item; - -(BOOL) outlineView:(NSOutlineView*)outlineView isItemExpandable:(id)item; - -(NSInteger) outlineView:(NSOutlineView*)outlineView numberOfChildrenOfItem:(id)item; - -(NSDragOperation) outlineView:(NSOutlineView*)outlineView validateDrop:(id)info proposedItem:(id)item proposedChildIndex:(NSInteger)index; - -(BOOL) outlineView:(NSOutlineView*)outlineView writeItems:(NSArray*)items toPasteboard:(NSPasteboard*)pasteboard; - - // - // buffer for items handling - // - -(void) addToBuffer:(wxPointerObject*)item; - -(void) clearBuffer; - -(wxPointerObject*) getDataViewItemFromBuffer:(wxDataViewItem const&)item; // returns the item in the buffer that has got the same pointer as "item", - -(wxPointerObject*) getItemFromBuffer:(wxPointerObject*)item; // if such an item does not exist nil is returned - -(BOOL) isInBuffer:(wxPointerObject*)item; - -(void) removeFromBuffer:(wxPointerObject*)item; - - // - // buffered children handling - // - -(void) appendChild:(wxPointerObject*)item; - -(void) clearChildren; - -(wxPointerObject*) getChild:(NSUInteger)index; - -(NSUInteger) getChildCount; - -(void) removeChild:(NSUInteger)index; - - // - // buffer handling - // - -(void) clearBuffers; - - // - // sorting - // - -(NSArray*) sortDescriptors; - -(void) setSortDescriptors:(NSArray*)newSortDescriptors; - - // - // access to wxWidget's variables - // - -(wxPointerObject*) currentParentItem; - -(wxCocoaDataViewControl*) implementation; - -(wxDataViewModel*) model; - -(void) setCurrentParentItem:(wxPointerObject*)newCurrentParentItem; - -(void) setImplementation:(wxCocoaDataViewControl*)newImplementation; - -(void) setModel:(wxDataViewModel*)newModel; - - // - // other methods - // - -(void) bufferItem:(wxPointerObject*)parentItem withChildren:(wxDataViewItemArray*)dataViewChildrenPtr; - + // methods of informal protocol: + -(BOOL) + outlineView:(NSOutlineView*)outlineView + acceptDrop:(id)info + item:(id)item + childIndex:(NSInteger)index; + + -(id) + outlineView:(NSOutlineView*)outlineView + child:(NSInteger)index + ofItem:(id)item; + + -(id) + outlineView:(NSOutlineView*)outlineView + objectValueForTableColumn:(NSTableColumn*)tableColumn + byItem:(id)item; + + -(BOOL) + outlineView:(NSOutlineView*)outlineView + isItemExpandable:(id)item; + + -(NSInteger) + outlineView:(NSOutlineView*)outlineView + numberOfChildrenOfItem:(id)item; + + -(NSDragOperation) + outlineView:(NSOutlineView*)outlineView + validateDrop:(id)info + proposedItem:(id)item + proposedChildIndex:(NSInteger)index; + + -(BOOL) + outlineView:(NSOutlineView*)outlineView + writeItems:(NSArray*)items + toPasteboard:(NSPasteboard*)pasteboard; + + // buffer for items handling + -(void) addToBuffer:(wxPointerObject*)item; + -(void) clearBuffer; + // returns the item in the buffer that has got the same pointer as "item", + // if such an item does not exist nil is returned + -(wxPointerObject*) getDataViewItemFromBuffer:(const wxDataViewItem&)item; + -(wxPointerObject*) getItemFromBuffer:(wxPointerObject*)item; + -(BOOL) isInBuffer:(wxPointerObject*)item; + -(void) removeFromBuffer:(wxPointerObject*)item; + + // buffered children handling + -(void) appendChild:(wxPointerObject*)item; + -(void) clearChildren; + -(wxPointerObject*) getChild:(NSUInteger)index; + -(NSUInteger) getChildCount; + -(void) removeChild:(NSUInteger)index; + + // buffer handling + -(void) clearBuffers; + + // sorting + -(NSArray*) sortDescriptors; + -(void) setSortDescriptors:(NSArray*)newSortDescriptors; + + // access to wxWidgets variables + -(wxPointerObject*) currentParentItem; + -(wxCocoaDataViewControl*) implementation; + -(wxDataViewModel*) model; + -(void) setCurrentParentItem:(wxPointerObject*)newCurrentParentItem; + -(void) setImplementation:(wxCocoaDataViewControl*)newImplementation; + -(void) setModel:(wxDataViewModel*)newModel; + + // other methods + -(void) + bufferItem:(wxPointerObject*)parentItem + withChildren:(wxDataViewItemArray*)dataViewChildrenPtr; @end // ============================================================================ -// wxCustomCell +// wxCustomCell: used for custom renderers // ============================================================================ -// -// This is a cell that is used for custom renderers. -// + @interface wxCustomCell : NSTextFieldCell { } - // - // other methods - // - -(NSSize) cellSize; - + -(NSSize) cellSize; @end // ============================================================================ @@ -376,161 +371,149 @@ private: @interface wxImageTextCell : NSTextFieldCell { @private - CGFloat xImageShift; // shift for the image in x-direction from border - CGFloat spaceImageText; // space between image and text ("belongs" to the image) + CGFloat xImageShift; // shift for the image in x-direction from border + CGFloat spaceImageText; // space between image and text - NSImage* image; // the image itself + NSImage* image; // the image itself - NSSize imageSize; // largest size of the image; default size is (16, 16) + NSSize imageSize; // largest size of the image; default size is (16, 16) - NSTextAlignment cellAlignment; // the text alignment is used to align the whole - // cell (image and text) + // the text alignment is used to align the whole cell (image and text) + NSTextAlignment cellAlignment; } - // - // alignment - // - -(NSTextAlignment) alignment; - -(void) setAlignment:(NSTextAlignment)newAlignment; - - // - // image access - // - -(NSImage*) image; - -(void) setImage:(NSImage*)newImage; - - // - // size access - // - -(NSSize) imageSize; - -(void) setImageSize:(NSSize) newImageSize; - - // - // other methods - // - -(NSSize) cellSize; + -(NSTextAlignment) alignment; + -(void) setAlignment:(NSTextAlignment)newAlignment; + + -(NSImage*) image; + -(void) setImage:(NSImage*)newImage; + + -(NSSize) imageSize; + -(void) setImageSize:(NSSize) newImageSize; + -(NSSize) cellSize; @end // ============================================================================ // wxCocoaOutlineView // ============================================================================ -@interface wxCocoaOutlineView : NSOutlineView + +@interface wxCocoaOutlineView : NSOutlineView wxOSX_10_6_AND_LATER() { @private - // column and row of the cell being edited or -1 if none - int currentlyEditedColumn, - currentlyEditedRow; + // column and row of the cell being edited or -1 if none + int currentlyEditedColumn, + currentlyEditedRow; - wxCocoaDataViewControl* implementation; + wxCocoaDataViewControl* implementation; } - // - // access to wxWidget's implementation - // - -(wxCocoaDataViewControl*) implementation; - -(void) setImplementation:(wxCocoaDataViewControl*) newImplementation; - + -(wxCocoaDataViewControl*) implementation; + -(void) setImplementation:(wxCocoaDataViewControl*) newImplementation; @end // ============================================================================ // wxCocoaDataViewControl // ============================================================================ -// + // This is the internal interface class between wxDataViewCtrl (wxWidget) and // the native source view (Mac OS X cocoa). -// -class wxCocoaDataViewControl : public wxWidgetCocoaImpl, public wxDataViewWidgetImpl +class wxCocoaDataViewControl : public wxWidgetCocoaImpl, + public wxDataViewWidgetImpl { public: - // - // constructors / destructor - // - wxCocoaDataViewControl(wxWindow* peer, wxPoint const& pos, wxSize const& size, long style); - ~wxCocoaDataViewControl(); - - // - // column related methods (inherited from wxDataViewWidgetImpl) - // - virtual bool ClearColumns (); - virtual bool DeleteColumn (wxDataViewColumn* columnPtr); - virtual void DoSetExpanderColumn(wxDataViewColumn const* columnPtr); - virtual wxDataViewColumn* GetColumn (unsigned int pos) const; - virtual int GetColumnPosition (wxDataViewColumn const* columnPtr) const; - virtual bool InsertColumn (unsigned int pos, wxDataViewColumn* columnPtr); - - // - // item related methods (inherited from wxDataViewWidgetImpl) - // - virtual bool Add (wxDataViewItem const& parent, wxDataViewItem const& item); - virtual bool Add (wxDataViewItem const& parent, wxDataViewItemArray const& items); - virtual void Collapse (wxDataViewItem const& item); - virtual void EnsureVisible(wxDataViewItem const& item, wxDataViewColumn const* columnPtr); - virtual void Expand (wxDataViewItem const& item); - virtual unsigned int GetCount () const; - virtual wxRect GetRectangle (wxDataViewItem const& item, wxDataViewColumn const* columnPtr); - virtual bool IsExpanded (wxDataViewItem const& item) const; - virtual bool Reload (); - virtual bool Remove (wxDataViewItem const& parent, wxDataViewItem const& item); - virtual bool Remove (wxDataViewItem const& parent, wxDataViewItemArray const& item); - virtual bool Update (wxDataViewColumn const* columnPtr); - virtual bool Update (wxDataViewItem const& parent, wxDataViewItem const& item); - virtual bool Update (wxDataViewItem const& parent, wxDataViewItemArray const& items); - - // - // model related methods - // - virtual bool AssociateModel(wxDataViewModel* model); // informs the native control that a model is present - - // - // selection related methods (inherited from wxDataViewWidgetImpl) - // - virtual int GetSelections(wxDataViewItemArray& sel) const; - virtual bool IsSelected (wxDataViewItem const& item) const; - virtual void Select (wxDataViewItem const& item); - virtual void SelectAll (); - virtual void Unselect (wxDataViewItem const& item); - virtual void UnselectAll (); - - // - // sorting related methods - // - virtual wxDataViewColumn* GetSortingColumn () const; - virtual void Resort (); - - // - // other methods (inherited from wxDataViewWidgetImpl) - // - virtual void DoSetIndent (int indent); - virtual void HitTest (wxPoint const& point, wxDataViewItem& item, wxDataViewColumn*& columnPtr) const; - virtual void SetRowHeight(wxDataViewItem const& item, unsigned int height); - virtual void OnSize (); - - // - // other methods - // - wxDataViewCtrl* GetDataViewCtrl() const - { - return dynamic_cast(GetWXPeer()); - } + // constructors / destructor + wxCocoaDataViewControl(wxWindow* peer, + const wxPoint& pos, + const wxSize& size, + long style); + virtual ~wxCocoaDataViewControl(); + + wxDataViewCtrl* GetDataViewCtrl() const + { + return static_cast(GetWXPeer()); + } + + // column related methods (inherited from wxDataViewWidgetImpl) + virtual bool ClearColumns(); + virtual bool DeleteColumn(wxDataViewColumn* columnPtr); + virtual void DoSetExpanderColumn(wxDataViewColumn const* columnPtr); + virtual wxDataViewColumn* GetColumn(unsigned int pos) const; + virtual int GetColumnPosition(wxDataViewColumn const* columnPtr) const; + virtual bool InsertColumn(unsigned int pos, wxDataViewColumn* columnPtr); + virtual void FitColumnWidthToContent(unsigned int pos); + + // item related methods (inherited from wxDataViewWidgetImpl) + virtual bool Add(const wxDataViewItem& parent, const wxDataViewItem& item); + virtual bool Add(const wxDataViewItem& parent, + const wxDataViewItemArray& items); + virtual void Collapse(const wxDataViewItem& item); + virtual void EnsureVisible(const wxDataViewItem& item, + wxDataViewColumn const* columnPtr); + virtual void Expand(const wxDataViewItem& item); + virtual unsigned int GetCount() const; + virtual wxRect GetRectangle(const wxDataViewItem& item, + wxDataViewColumn const* columnPtr); + virtual bool IsExpanded(const wxDataViewItem& item) const; + virtual bool Reload(); + virtual bool Remove(const wxDataViewItem& parent, + const wxDataViewItem& item); + virtual bool Remove(const wxDataViewItem& parent, + const wxDataViewItemArray& item); + virtual bool Update(const wxDataViewColumn* columnPtr); + virtual bool Update(const wxDataViewItem& parent, + const wxDataViewItem& item); + virtual bool Update(const wxDataViewItem& parent, + const wxDataViewItemArray& items); + + // model related methods + virtual bool AssociateModel(wxDataViewModel* model); + + // + // selection related methods (inherited from wxDataViewWidgetImpl) + // + virtual wxDataViewItem GetCurrentItem() const; + virtual void SetCurrentItem(const wxDataViewItem& item); + virtual wxDataViewColumn *GetCurrentColumn() const; + virtual int GetSelectedItemsCount() const; + virtual int GetSelections(wxDataViewItemArray& sel) const; + virtual bool IsSelected(const wxDataViewItem& item) const; + virtual void Select(const wxDataViewItem& item); + virtual void SelectAll(); + virtual void Unselect(const wxDataViewItem& item); + virtual void UnselectAll(); + + // + // sorting related methods + // + virtual wxDataViewColumn* GetSortingColumn () const; + virtual void Resort(); + + // + // other methods (inherited from wxDataViewWidgetImpl) + // + virtual void DoSetIndent(int indent); + virtual void HitTest(const wxPoint& point, + wxDataViewItem& item, + wxDataViewColumn*& columnPtr) const; + virtual void SetRowHeight(const wxDataViewItem& item, unsigned int height); + virtual void OnSize(); + + virtual void StartEditor( const wxDataViewItem & item, unsigned int column ); + + // drag & drop helper methods + wxDataFormat GetDnDDataFormat(wxDataObjectComposite* dataObjects); + wxDataObjectComposite* GetDnDDataObjects(NSData* dataObject) const; + + // Cocoa-specific helpers + id GetItemAtRow(int row) const; -// -// drag & drop helper methods -// - wxDataFormat GetDnDDataFormat(wxDataObjectComposite* dataObjects); - wxDataObjectComposite* GetDnDDataObjects(NSData* dataObject) const; // create the data objects from the native dragged object -protected: private: -// -// variables -// - wxCocoaOutlineDataSource* m_DataSource; + void InitOutlineView(long style); - wxCocoaOutlineView* m_OutlineView; -}; - -typedef wxCocoaDataViewControl* wxCocoaDataViewControlPointer; + wxCocoaOutlineDataSource* m_DataSource; + wxCocoaOutlineView* m_OutlineView; +}; -#endif // wxUSE_GUI #endif // _WX_DATAVIEWCTRL_COCOOA_H_