| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/osx/dataview.h
 
- // Purpose:     wxDataViewCtrl native implementation header for OSX
 
- // Author:
 
- // Copyright:   (c) 2009
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_DATAVIEWCTRL_OSX_H_
 
- #define _WX_DATAVIEWCTRL_OSX_H_
 
- #ifdef __WXMAC_CLASSIC__
 
- #  error "Native wxDataViewCtrl for classic environment not defined. Please use generic control."
 
- #endif
 
- // --------------------------------------------------------
 
- // Class declarations to mask native types
 
- // --------------------------------------------------------
 
- class wxDataViewColumnNativeData;   // class storing environment dependent data for the native implementation
 
- class wxDataViewWidgetImpl;         // class used as a common interface for carbon and cocoa implementation
 
- // ---------------------------------------------------------
 
- // wxDataViewColumn
 
- // ---------------------------------------------------------
 
- class WXDLLIMPEXP_ADV wxDataViewColumn: public wxDataViewColumnBase
 
- {
 
- public:
 
-     // constructors / destructor
 
-     wxDataViewColumn(const wxString& title,
 
-                      wxDataViewRenderer* renderer,
 
-                      unsigned int model_column,
 
-                      int width = wxDVC_DEFAULT_WIDTH,
 
-                      wxAlignment align = wxALIGN_CENTER,
 
-                      int flags = wxDATAVIEW_COL_RESIZABLE);
 
-     wxDataViewColumn(const wxBitmap& bitmap,
 
-                      wxDataViewRenderer* renderer,
 
-                      unsigned int model_column,
 
-                      int width = wxDVC_DEFAULT_WIDTH,
 
-                      wxAlignment align = wxALIGN_CENTER,
 
-                      int flags = wxDATAVIEW_COL_RESIZABLE);
 
-     virtual ~wxDataViewColumn();
 
-     // implement wxHeaderColumnBase pure virtual methods
 
-     virtual wxAlignment GetAlignment() const { return m_alignment; }
 
-     virtual int GetFlags() const { return m_flags; }
 
-     virtual int GetMaxWidth() const { return m_maxWidth; }
 
-     virtual int GetMinWidth() const { return m_minWidth; }
 
-     virtual wxString GetTitle() const { return m_title; }
 
-     virtual int GetWidth() const;
 
-     virtual bool IsSortOrderAscending() const { return m_ascending; }
 
-     virtual bool IsSortKey() const;
 
-     virtual bool IsHidden() const;
 
-     virtual void SetAlignment  (wxAlignment align);
 
-     virtual void SetBitmap     (wxBitmap const& bitmap);
 
-     virtual void SetFlags      (int flags) { m_flags = flags; /*SetIndividualFlags(flags); */ }
 
-     virtual void SetHidden     (bool hidden);
 
-     virtual void SetMaxWidth   (int maxWidth);
 
-     virtual void SetMinWidth   (int minWidth);
 
-     virtual void SetReorderable(bool reorderable);
 
-     virtual void SetResizeable (bool resizable);
 
-     virtual void SetSortable   (bool sortable);
 
-     virtual void SetSortOrder  (bool ascending);
 
-     virtual void SetTitle      (wxString const& title);
 
-     virtual void SetWidth      (int  width);
 
-    // implementation only
 
-     wxDataViewColumnNativeData* GetNativeData() const
 
-     {
 
-       return m_NativeDataPtr;
 
-     }
 
-     void SetNativeData(wxDataViewColumnNativeData* newNativeDataPtr); // class takes ownership of pointer
 
-     int GetWidthVariable() const
 
-     {
 
-         return m_width;
 
-     }
 
-     void SetWidthVariable(int NewWidth)
 
-     {
 
-         m_width = NewWidth;
 
-     }
 
-     void SetSortOrderVariable(bool NewOrder)
 
-     {
 
-         m_ascending = NewOrder;
 
-     }
 
- private:
 
-     // common part of all ctors
 
-     void InitCommon(int width, wxAlignment align, int flags)
 
-     {
 
-         m_ascending = true;
 
-         m_flags = flags & ~wxDATAVIEW_COL_HIDDEN; // TODO
 
-         m_maxWidth = 30000;
 
-         m_minWidth = 0;
 
-         m_alignment = align;
 
-         SetWidth(width);
 
-     }
 
-     bool m_ascending; // sorting order
 
-     int m_flags;    // flags for the column
 
-     int m_maxWidth; // maximum width for the column
 
-     int m_minWidth; // minimum width for the column
 
-     int m_width;    // column width
 
-     wxAlignment m_alignment; // column header alignment
 
-     wxDataViewColumnNativeData* m_NativeDataPtr; // storing environment dependent data for the native implementation
 
-     wxString m_title; // column title
 
- };
 
- //
 
- // type definitions related to wxDataViewColumn
 
- //
 
- WX_DEFINE_ARRAY(wxDataViewColumn*,wxDataViewColumnPtrArrayType);
 
- // ---------------------------------------------------------
 
- // wxDataViewCtrl
 
- // ---------------------------------------------------------
 
- class WXDLLIMPEXP_ADV wxDataViewCtrl: public wxDataViewCtrlBase
 
- {
 
- public:
 
-  // Constructors / destructor:
 
-   wxDataViewCtrl()
 
-   {
 
-     Init();
 
-   }
 
-   wxDataViewCtrl(wxWindow *parent,
 
-                  wxWindowID winid,
 
-                  const wxPoint& pos = wxDefaultPosition,
 
-                  const wxSize& size = wxDefaultSize,
 
-                  long style = 0,
 
-                  const wxValidator& validator = wxDefaultValidator,
 
-                  const wxString& name = wxDataViewCtrlNameStr )
 
-   {
 
-     Init();
 
-     Create(parent, winid, pos, size, style, validator, name);
 
-   }
 
-   ~wxDataViewCtrl();
 
-   bool Create(wxWindow *parent,
 
-               wxWindowID winid,
 
-               const wxPoint& pos = wxDefaultPosition,
 
-               const wxSize& size = wxDefaultSize,
 
-               long style = 0,
 
-               const wxValidator& validator = wxDefaultValidator,
 
-               const wxString& name = wxDataViewCtrlNameStr);
 
-   virtual wxWindow* GetMainWindow() // not used for the native implementation
 
-   {
 
-     return this;
 
-   }
 
-  // inherited methods from wxDataViewCtrlBase:
 
-   virtual bool AssociateModel(wxDataViewModel* model);
 
-   virtual bool              AppendColumn     (wxDataViewColumn* columnPtr);
 
-   virtual bool              ClearColumns     ();
 
-   virtual bool              DeleteColumn     (wxDataViewColumn* columnPtr);
 
-   virtual wxDataViewColumn* GetColumn        (unsigned int pos) const;
 
-   virtual unsigned int      GetColumnCount   () const;
 
-   virtual int               GetColumnPosition(const wxDataViewColumn* columnPtr) const;
 
-   virtual wxDataViewColumn* GetSortingColumn () const;
 
-   virtual bool              InsertColumn     (unsigned int pos, wxDataViewColumn *col);
 
-   virtual bool              PrependColumn    (wxDataViewColumn* columnPtr);
 
-   virtual void Collapse( const wxDataViewItem& item);
 
-   virtual void EnsureVisible(const wxDataViewItem& item, const wxDataViewColumn* columnPtr=NULL);
 
-   virtual void Expand(const wxDataViewItem& item);
 
-   virtual bool IsExpanded(const wxDataViewItem & item) const;
 
-   virtual unsigned int GetCount() const;
 
-   virtual wxRect GetItemRect(const wxDataViewItem& item,
 
-                              const wxDataViewColumn* columnPtr = NULL) const;
 
-   virtual int GetSelectedItemsCount() const;
 
-   virtual int GetSelections(wxDataViewItemArray& sel) const;
 
-   virtual void HitTest(const wxPoint& point, wxDataViewItem& item, wxDataViewColumn*& columnPtr) const;
 
-   virtual bool IsSelected(const wxDataViewItem& item) const;
 
-   virtual void SelectAll();
 
-   virtual void Select(const wxDataViewItem& item);
 
-   virtual void SetSelections(const wxDataViewItemArray& sel);
 
-   virtual void Unselect(const wxDataViewItem& item);
 
-   virtual void UnselectAll();
 
- //
 
- // implementation
 
- //
 
-  // returns a pointer to the native implementation
 
-   wxDataViewWidgetImpl* GetDataViewPeer() const;
 
-  // adds all children of the passed parent to the control; if 'parentItem' is invalid the root(s) is/are added:
 
-   void AddChildren(wxDataViewItem const& parentItem);
 
-  // finishes editing of custom items; if no custom item is currently edited the method does nothing
 
-   void FinishCustomItemEditing();
 
-   
 
-   virtual void EditItem(const wxDataViewItem& item, const wxDataViewColumn *column);
 
-  // returns the n-th pointer to a column;
 
-  // this method is different from GetColumn(unsigned int pos) because here 'n' is not a position in the control but the n-th
 
-  // position in the internal list/array of column pointers
 
-   wxDataViewColumn* GetColumnPtr(size_t n) const
 
-   {
 
-     return m_ColumnPtrs[n];
 
-   }
 
-  // returns the current being rendered item of the customized renderer (this item is only valid during editing)
 
-   wxDataViewItem const& GetCustomRendererItem() const
 
-   {
 
-     return m_CustomRendererItem;
 
-   }
 
-  // returns a pointer to a customized renderer (this pointer is only valid during editing)
 
-   wxDataViewCustomRenderer* GetCustomRendererPtr() const
 
-   {
 
-     return m_CustomRendererPtr;
 
-   }
 
-  // checks if currently a delete process is running
 
-   bool IsDeleting() const
 
-   {
 
-     return m_Deleting;
 
-   }
 
-  // with CG, we need to get the context from an kEventControlDraw event
 
-  // unfortunately, the DataBrowser callbacks don't provide the context
 
-  // and we need it, so we need to set/remove it before and after draw
 
-  // events so we can access it in the callbacks.
 
-   void MacSetDrawingContext(void* context)
 
-   {
 
-     m_cgContext = context;
 
-   }
 
-   void* MacGetDrawingContext() const
 
-   {
 
-     return m_cgContext;
 
-   }
 
-  // sets the currently being edited item of the custom renderer
 
-   void SetCustomRendererItem(wxDataViewItem const& NewItem)
 
-   {
 
-     m_CustomRendererItem = NewItem;
 
-   }
 
-  // sets the custom renderer
 
-   void SetCustomRendererPtr(wxDataViewCustomRenderer* NewCustomRendererPtr)
 
-   {
 
-     m_CustomRendererPtr = NewCustomRendererPtr;
 
-   }
 
-  // sets the flag indicating a deletion process:
 
-   void SetDeleting(bool deleting)
 
-   {
 
-     m_Deleting = deleting;
 
-   }
 
-   virtual wxDataViewColumn *GetCurrentColumn() const;
 
-   virtual wxVisualAttributes GetDefaultAttributes() const
 
-   {
 
-       return GetClassDefaultAttributes(GetWindowVariant());
 
-   }
 
-   static wxVisualAttributes
 
-   GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 
- protected:
 
-  // inherited methods from wxDataViewCtrlBase
 
-   virtual void DoSetExpanderColumn();
 
-   virtual void DoSetIndent();
 
-   virtual wxSize DoGetBestSize() const;
 
-  // event handling
 
-   void OnSize(wxSizeEvent &event);
 
-   void OnMouse(wxMouseEvent &event);
 
- private:
 
-  // initializing of local variables:
 
-   void Init();
 
-   virtual wxDataViewItem DoGetCurrentItem() const;
 
-   virtual void DoSetCurrentItem(const wxDataViewItem& item);
 
-  //
 
-  // variables
 
-  //
 
-   bool m_Deleting; // flag indicating if a delete process is running; this flag is necessary because the notifier indicating an item deletion in the model may be called
 
-                    // after the actual deletion of the item; then, native callback functions/delegates may try to update data of variables that are already deleted;
 
-                    // if this flag is set all native variable update requests will be ignored
 
-   void* m_cgContext; // pointer to core graphics context
 
-   wxDataViewCustomRenderer* m_CustomRendererPtr; // pointer to a valid custom renderer while editing; this class does NOT own the pointer
 
-   wxDataViewItem m_CustomRendererItem; // currently edited item by the customrenderer; it is invalid while not editing a custom item
 
-   wxDataViewColumnPtrArrayType m_ColumnPtrs; // all column pointers are stored in an array
 
-   wxDataViewModelNotifier* m_ModelNotifier; // stores the model notifier for the control (does not own the notifier)
 
-  // wxWidget internal stuff:
 
-   DECLARE_DYNAMIC_CLASS(wxDataViewCtrl)
 
-   DECLARE_NO_COPY_CLASS(wxDataViewCtrl)
 
-   DECLARE_EVENT_TABLE()
 
- };
 
- #endif // _WX_DATAVIEWCTRL_OSX_H_
 
 
  |