Add methods doing the same thing for wxDataViewCtrl as the existing wxListBox methods. Closes #17498.
		
			
				
	
	
		
			559 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			559 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        wx/osx/cocoa/dataview.h
 | |
| // Purpose:     wxDataViewCtrl native implementation header for carbon
 | |
| // Author:
 | |
| // Copyright:   (c) 2009
 | |
| // Licence:     wxWindows licence
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _WX_DATAVIEWCTRL_COCOOA_H_
 | |
| #define _WX_DATAVIEWCTRL_COCOOA_H_
 | |
| 
 | |
| #include "wx/defs.h"
 | |
| 
 | |
| #import <Cocoa/Cocoa.h>
 | |
| 
 | |
| #include "wx/osx/core/dataview.h"
 | |
| #include "wx/osx/private.h"
 | |
| 
 | |
| // 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: simply stores a pointer, without taking its ownership
 | |
| // ============================================================================
 | |
| 
 | |
| // 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;
 | |
| }
 | |
| 
 | |
|     -(id) initWithPointer:(void*)initPointer;
 | |
| 
 | |
|     -(void*) pointer;
 | |
|     -(void)  setPointer:(void*)newPointer;
 | |
| @end
 | |
| 
 | |
| // ============================================================================
 | |
| // wxSortDescriptorObject: helper class to use native sorting facilities
 | |
| // ============================================================================
 | |
| 
 | |
| @interface wxSortDescriptorObject : NSSortDescriptor<NSCopying>
 | |
| {
 | |
|     wxDataViewColumn* columnPtr; // pointer to the sorting column
 | |
| 
 | |
|     wxDataViewModel* modelPtr; // pointer to model
 | |
| }
 | |
| 
 | |
|     -(id)
 | |
|     initWithModelPtr:(wxDataViewModel*)initModelPtr
 | |
|         sortingColumnPtr:(wxDataViewColumn*)initColumnPtr
 | |
|         ascending:(BOOL)sortAscending;
 | |
| 
 | |
|     -(wxDataViewColumn*) columnPtr;
 | |
|     -(wxDataViewModel*) modelPtr;
 | |
| 
 | |
|     -(void) setColumnPtr:(wxDataViewColumn*)newColumnPtr;
 | |
|     -(void) setModelPtr:(wxDataViewModel*)newModelPtr;
 | |
| @end
 | |
| 
 | |
| // ============================================================================
 | |
| // wxDataViewColumnNativeData: extra data for wxDataViewColumn
 | |
| // ============================================================================
 | |
| 
 | |
| class wxDataViewColumnNativeData
 | |
| {
 | |
| public:
 | |
|     wxDataViewColumnNativeData() : m_NativeColumnPtr(NULL)
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     wxDataViewColumnNativeData(NSTableColumn* initNativeColumnPtr)
 | |
|         : m_NativeColumnPtr(initNativeColumnPtr)
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     NSTableColumn* GetNativeColumnPtr() const
 | |
|     {
 | |
|         return m_NativeColumnPtr;
 | |
|     }
 | |
| 
 | |
|     void SetNativeColumnPtr(NSTableColumn* newNativeColumnPtr)
 | |
|     {
 | |
|         m_NativeColumnPtr = newNativeColumnPtr;
 | |
|     }
 | |
| 
 | |
| private:
 | |
|     // not owned by us
 | |
|     NSTableColumn* m_NativeColumnPtr;
 | |
| };
 | |
| 
 | |
| // ============================================================================
 | |
| // wxDataViewRendererNativeData: extra data for wxDataViewRenderer
 | |
| // ============================================================================
 | |
| 
 | |
| class wxDataViewRendererNativeData
 | |
| {
 | |
| public:
 | |
|     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);
 | |
| 
 | |
|     // Does the rendered use a font that the control can't override?
 | |
|     void SetHasCustomFont(bool has) { m_hasCustomFont = has; }
 | |
|     bool HasCustomFont() const { return m_hasCustomFont; }
 | |
| 
 | |
| private:
 | |
|     // common part of all ctors
 | |
|     void Init();
 | |
| 
 | |
|     id m_Item;   // item NOT 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
 | |
| 
 | |
|     NSTableColumn* m_TableColumnPtr; // column NOT owned by renderer
 | |
| 
 | |
|     // we own those if they're non-NULL
 | |
|     NSFont *m_origFont;
 | |
|     NSColor *m_origTextColour;
 | |
| 
 | |
|     wxEllipsizeMode m_ellipsizeMode;
 | |
| 
 | |
|     bool m_hasCustomFont;
 | |
| };
 | |
| 
 | |
| // ============================================================================
 | |
| // wxCocoaOutlineDataSource
 | |
| // ============================================================================
 | |
| 
 | |
| // This class implements the data source delegate for the outline view.
 | |
| // As only an informal protocol exists this class inherits from NSObject only.
 | |
| //
 | |
| // As mentioned in the documentation for NSOutlineView the native control does
 | |
| // not own any data. Therefore, it has to be done by the data source.
 | |
| // Unfortunately, wxWidget's data source is a C++ data source but
 | |
| // NSOutlineDataSource requires objects as data. Therefore, the data (or better
 | |
| // the native item objects) have to be stored additionally in the native data
 | |
| // source.
 | |
| // NSOutlineView requires quick access to the item objects and quick linear
 | |
| // access to an item's children. This requires normally a hash type of storage
 | |
| // for the item object itself and an array structure for each item's children.
 | |
| // This means that basically two times the whole structure of wxWidget's model
 | |
| // class has to be stored.
 | |
| // This implementation is using a compromise: all items that are in use by the
 | |
| // control are stored in a set (from there they can be easily retrieved) and
 | |
| // owned by the set. Furthermore, children of the last parent are stored
 | |
| // in a linear list.
 | |
| //
 | |
| @interface wxCocoaOutlineDataSource : NSObject <NSOutlineViewDataSource>
 | |
| {
 | |
|     // descriptors specifying the sorting (currently the array only holds one
 | |
|     // object only)
 | |
|     NSArray* sortDescriptors;
 | |
| 
 | |
|     NSMutableArray* children; // buffered children
 | |
| 
 | |
|     NSMutableSet* items; // stores all items that are in use by the control
 | |
| 
 | |
|     wxCocoaDataViewControl* implementation;
 | |
| 
 | |
|     wxDataViewModel* model;
 | |
| 
 | |
|     // parent of the buffered children; the object is owned
 | |
|     wxPointerObject* currentParentItem;
 | |
| }
 | |
| 
 | |
|     // methods of informal protocol:
 | |
|     -(BOOL)
 | |
|     outlineView:(NSOutlineView*)outlineView
 | |
|         acceptDrop:(id<NSDraggingInfo>)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<NSDraggingInfo>)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)             clearChildren;
 | |
|     -(wxPointerObject*) getChild:(NSUInteger)index;
 | |
|     -(NSUInteger)       getChildCount;
 | |
| 
 | |
|     // 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: used for custom renderers
 | |
| // ============================================================================
 | |
| 
 | |
| @interface wxCustomCell : NSTextFieldCell
 | |
| {
 | |
| }
 | |
| 
 | |
|     -(NSSize) cellSize;
 | |
| @end
 | |
| 
 | |
| // ============================================================================
 | |
| // wxImageCell: used for bitmap renderer
 | |
| // ============================================================================
 | |
| 
 | |
| @interface wxImageCell : NSImageCell
 | |
| {
 | |
| }
 | |
| 
 | |
|     -(NSSize) cellSize;
 | |
| @end
 | |
| 
 | |
| 
 | |
| // ============================================================================
 | |
| // NSTextFieldCell customized to allow vertical alignment
 | |
| // ============================================================================
 | |
| 
 | |
| @interface wxTextFieldCell : NSTextFieldCell
 | |
| {
 | |
| @private
 | |
|     int alignment_;
 | |
|     BOOL adjustRect_;
 | |
| }
 | |
| 
 | |
|     -(void) setWXAlignment:(int)alignment;
 | |
| @end
 | |
| 
 | |
| // ============================================================================
 | |
| // wxImageTextCell
 | |
| // ============================================================================
 | |
| //
 | |
| // As the native cocoa environment does not have a cell displaying an icon/
 | |
| // image and text at the same time, it has to be implemented by the user.
 | |
| // This implementation follows the implementation of Chuck Pisula in Apple's
 | |
| // DragNDropOutline sample application.
 | |
| // Although in wxDataViewCtrl icons are used on OSX icons do not exist for
 | |
| // display. Therefore, the cell is also called wxImageTextCell.
 | |
| // Instead of displaying images of any size (which is possible) this cell uses
 | |
| // a fixed size for displaying the image. Larger images are scaled to fit
 | |
| // into their reserved space. Smaller or not existing images use the fixed
 | |
| // reserved size and are scaled if necessary.
 | |
| //
 | |
| @interface wxImageTextCell : wxTextFieldCell
 | |
| {
 | |
| @private
 | |
|     CGFloat xImageShift;    // shift for the image in x-direction from border
 | |
|     CGFloat spaceImageText; // space between image and text
 | |
| 
 | |
|     NSImage* image; // the image itself
 | |
| 
 | |
|     NSSize imageSize; // largest size of the image; default size is (16, 16)
 | |
| 
 | |
|     // the text alignment is used to align the whole cell (image and text)
 | |
|     NSTextAlignment cellAlignment;
 | |
| }
 | |
| 
 | |
|     -(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 <NSOutlineViewDelegate>
 | |
| {
 | |
| @private
 | |
|     // column and row of the cell being edited or -1 if none
 | |
|     int currentlyEditedColumn,
 | |
|         currentlyEditedRow;
 | |
| 
 | |
|     wxCocoaDataViewControl* implementation;
 | |
| }
 | |
| 
 | |
|     -(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
 | |
| {
 | |
| public:
 | |
|     // constructors / destructor
 | |
|     wxCocoaDataViewControl(wxWindow* peer,
 | |
|                            const wxPoint& pos,
 | |
|                            const wxSize& size,
 | |
|                            long style);
 | |
|     virtual ~wxCocoaDataViewControl();
 | |
| 
 | |
|     wxDataViewCtrl* GetDataViewCtrl() const
 | |
|     {
 | |
|         return static_cast<wxDataViewCtrl*>(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 unsigned int GetCount() const;
 | |
|     virtual int GetCountPerPage() const;
 | |
|     virtual wxRect GetRectangle(const wxDataViewItem& item,
 | |
|                                 wxDataViewColumn const* columnPtr);
 | |
|     virtual wxDataViewItem GetTopItem() const;
 | |
|     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 DoExpand(const wxDataViewItem& item);
 | |
| 
 | |
|     virtual void HitTest(const wxPoint& point,
 | |
|                          wxDataViewItem& item,
 | |
|                          wxDataViewColumn*& columnPtr) const;
 | |
|     virtual void SetRowHeight(int height);
 | |
|     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;
 | |
| 
 | |
|     virtual void SetFont(const wxFont& font, const wxColour& foreground, long windowStyle, bool ignoreBlack = true);
 | |
| 
 | |
| private:
 | |
|     void InitOutlineView(long style);
 | |
|     int GetDefaultRowHeight() const;
 | |
| 
 | |
|     wxCocoaOutlineDataSource* m_DataSource;
 | |
| 
 | |
|     wxCocoaOutlineView* m_OutlineView;
 | |
| 
 | |
|     bool m_removeIndentIfNecessary;
 | |
| };
 | |
| 
 | |
| #endif // _WX_DATAVIEWCTRL_COCOOA_H_
 |