-
/////////////////////////////////////////////////////////////////////////////
// Name: wx/osx/dataview.h
// Purpose: wxDataViewCtrl native implementation header for OSX
// Class declarations to mask native types
// --------------------------------------------------------
class wxDataViewColumnNativeData; // class storing environment dependent data for the native implementation
-class wxDataViewRendererNativeData; // class storing environment dependent data for the native renderer
class wxDataViewWidgetImpl; // class used as a common interface for carbon and cocoa implementation
-// ---------------------------------------------------------
-// wxDataViewRenderer
-// ---------------------------------------------------------
-class WXDLLIMPEXP_ADV wxDataViewRenderer : public wxDataViewRendererBase
-{
-public:
-//
-// constructors / destructor
-//
- wxDataViewRenderer(wxString const& varianttype, wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
- virtual ~wxDataViewRenderer(void);
-
-//
-// inherited methods from wxDataViewRendererBase
-//
- virtual int GetAlignment() const
- {
- return this->m_alignment;
- }
- virtual wxDataViewCellMode GetMode() const
- {
- return this->m_mode;
- }
- virtual bool GetValue(wxVariant& value) const
- {
- value = this->m_value;
- return true;
- }
-
- virtual void SetAlignment(int align); // carbon: is always identical to the header alignment;
- // cocoa: cell alignment is independent from header alignment
- virtual void SetMode(wxDataViewCellMode mode);
- virtual bool SetValue(wxVariant const& newValue)
- {
- this->m_value = newValue;
- return true;
- }
-
-//
-// implementation
-//
- wxVariant const& GetValue() const
- {
- return this->m_value;
- }
-
- wxDataViewRendererNativeData* GetNativeData() const
- {
- return this->m_NativeDataPtr;
- }
-
- virtual bool Render() = 0; // a call to the native data browser function to render the data;
- // returns true if the data value could be rendered, false otherwise
-
- void SetNativeData(wxDataViewRendererNativeData* newNativeDataPtr);
-
-private:
-//
-// variables
-//
- int m_alignment; // contains the alignment flags
-
- wxDataViewCellMode m_mode; // storing the mode that determines how the cell is going to be shown
-
- wxDataViewRendererNativeData* m_NativeDataPtr; // data used by implementation of the native renderer
-
- wxVariant m_value; // value that is going to be rendered
-
-//
-// wxWidget internal stuff
-//
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewRenderer)
-};
-
-// ---------------------------------------------------------
-// wxDataViewCustomRenderer
-// ---------------------------------------------------------
-class WXDLLIMPEXP_ADV wxDataViewCustomRenderer: public wxDataViewRenderer
-{
-public:
-//
-// constructors / destructor
-//
- wxDataViewCustomRenderer(wxString const& varianttype=wxT("string"), wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
- virtual ~wxDataViewCustomRenderer();
-
- void RenderText( const wxString &text, int xoffset, wxRect cell, wxDC *dc, int state );
-
-//
-// methods handling render space
-//
- virtual wxSize GetSize() const = 0;
-
-//
-// methods handling user actions
-//
- virtual bool Render(wxRect cell, wxDC* dc, int state) = 0;
-
- virtual bool Activate( wxRect WXUNUSED(cell),
- wxDataViewModel *WXUNUSED(model),
- const wxDataViewItem & WXUNUSED(item),
- unsigned int WXUNUSED(col) )
- { return false; }
-
- virtual bool LeftClick( wxPoint WXUNUSED(cursor),
- wxRect WXUNUSED(cell),
- wxDataViewModel *WXUNUSED(model),
- const wxDataViewItem & WXUNUSED(item),
- unsigned int WXUNUSED(col) )
- { return false; }
-
- virtual bool StartDrag( wxPoint WXUNUSED(cursor),
- wxRect WXUNUSED(cell),
- wxDataViewModel *WXUNUSED(model),
- const wxDataViewItem & WXUNUSED(item),
- unsigned int WXUNUSED(col) )
- { return false; }
-
-//
-// device context handling
-//
- virtual wxDC* GetDC(); // creates a device context and keeps it
-
-//
-// implementation
-//
- virtual bool Render();
-
- void SetDC(wxDC* newDCPtr); // this method takes ownership of the pointer
-
-protected:
-private:
-//
-// variables
-//
- wxControl* m_editorCtrlPtr; // pointer to an in-place editor control
-
- wxDC* m_DCPtr;
-
-//
-// wxWidget internal stuff
-//
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer)
-};
-
-// ---------------------------------------------------------
-// wxDataViewTextRenderer
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewTextRenderer: public wxDataViewRenderer
-{
-public:
-//
-// constructors / destructor
-//
- wxDataViewTextRenderer(wxString const& varianttype=wxT("string"), wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-//
-// inherited functions from wxDataViewRenderer
-//
- virtual bool Render();
-
-protected:
-private:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRenderer)
-};
-
-// ---------------------------------------------------------
-// wxDataViewTextRendererAttr
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewTextRendererAttr: public wxDataViewTextRenderer
-{
-public:
-//
-// constructors / destructor
-//
- wxDataViewTextRendererAttr(wxString const& varianttype=wxT("string"), wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-private:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRendererAttr)
-};
-
-// ---------------------------------------------------------
-// wxDataViewBitmapRenderer
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewBitmapRenderer: public wxDataViewRenderer
-{
-public:
-//
-// constructors / destructor
-//
- wxDataViewBitmapRenderer(wxString const& varianttype=wxT("wxBitmap"), wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-//
-// inherited functions from wxDataViewRenderer
-//
- virtual bool Render();
-
-protected:
-private:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewBitmapRenderer)
-};
-
-#if !defined(wxUSE_GENERICDATAVIEWCTRL) && defined(__WXOSX_COCOA__)
-
-// -------------------------------------
-// wxDataViewChoiceRenderer
-// -------------------------------------
-class WXDLLIMPEXP_ADV wxDataViewChoiceRenderer: public wxDataViewRenderer
-{
-public:
-//
-// constructors / destructor
-//
- wxDataViewChoiceRenderer(wxArrayString const& choices,
- wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE,
- int alignment = wxDVR_DEFAULT_ALIGNMENT );
-
-//
-// inherited functions from wxDataViewRenderer
-//
- virtual bool Render();
-
-//
-// implementation
-//
- wxString GetChoice(size_t index) const
- {
- return this->m_Choices[index];
- }
- wxArrayString const& GetChoices(void) const
- {
- return this->m_Choices;
- }
-
-private:
-//
-// variables
-//
- wxArrayString m_Choices;
-
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewChoiceRenderer)
-};
-
-#endif
-
-// ---------------------------------------------------------
-// wxDataViewIconTextRenderer
-// ---------------------------------------------------------
-class WXDLLIMPEXP_ADV wxDataViewIconTextRenderer: public wxDataViewRenderer
-{
-public:
- wxDataViewIconTextRenderer(wxString const& varianttype = wxT("wxDataViewIconText"), wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-//
-// inherited functions from wxDataViewRenderer
-//
- virtual bool Render();
-
-protected:
-private:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewIconTextRenderer)
-};
-
-// ---------------------------------------------------------
-// wxDataViewToggleRenderer
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewToggleRenderer: public wxDataViewRenderer
-{
-public:
- wxDataViewToggleRenderer(wxString const& varianttype = wxT("bool"), wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-//
-// inherited functions from wxDataViewRenderer
-//
- virtual bool Render();
-
-protected:
-private:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleRenderer)
-};
-
-// ---------------------------------------------------------
-// wxDataViewProgressRenderer
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewProgressRenderer: public wxDataViewRenderer
-{
-public:
- wxDataViewProgressRenderer(wxString const& label = wxEmptyString, wxString const& varianttype=wxT("long"),
- wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-//
-// inherited functions from wxDataViewRenderer
-//
- virtual bool Render();
-
-protected:
-private:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressRenderer)
-};
-
-// ---------------------------------------------------------
-// wxDataViewDateRenderer
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewDateRenderer: public wxDataViewRenderer
-{
-public:
- wxDataViewDateRenderer(wxString const& varianttype=wxT("datetime"), wxDataViewCellMode mode=wxDATAVIEW_CELL_ACTIVATABLE, int align=wxDVR_DEFAULT_ALIGNMENT);
-
-//
-// inherited functions from wxDataViewRenderer
-//
- virtual bool Render();
-
-protected:
-private:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateRenderer)
-};
-
// ---------------------------------------------------------
// wxDataViewColumn
// ---------------------------------------------------------
int width = wxDVC_DEFAULT_WIDTH,
wxAlignment align = wxALIGN_CENTER,
int flags = wxDATAVIEW_COL_RESIZABLE);
- virtual ~wxDataViewColumn(void);
+ virtual ~wxDataViewColumn();
// implement wxHeaderColumnBase pure virtual methods
virtual wxAlignment GetAlignment() const { return m_alignment; }
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 { return m_width; }
- virtual bool IsHidden() const { return false; } // TODO
+ 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) { SetIndividualFlags(flags); }
- virtual void SetHidden (bool WXUNUSED(hidden)) { } // TODO
+ virtual void SetHidden (bool hidden);
virtual void SetMaxWidth (int maxWidth);
virtual void SetMinWidth (int minWidth);
virtual void SetReorderable(bool reorderable);
- virtual void SetResizeable (bool resizeable);
+ 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);
- virtual void SetAsSortKey (bool sort = true);
// implementation only
- wxDataViewColumnNativeData* GetNativeData(void) const
+ wxDataViewColumnNativeData* GetNativeData() const
{
- return this->m_NativeDataPtr;
+ 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
m_flags = flags & ~wxDATAVIEW_COL_HIDDEN; // TODO
m_maxWidth = 30000;
m_minWidth = 0;
- m_width = width >= 0 ? width : wxDVC_DEFAULT_WIDTH;
m_alignment = align;
+ SetWidth(width);
}
bool m_ascending; // sorting order
// Constructors / destructor:
wxDataViewCtrl()
{
- this->Init();
+ Init();
}
- wxDataViewCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0,
- const wxValidator& validator = wxDefaultValidator)
+ wxDataViewCtrl(wxWindow *parent,
+ wxWindowID winid,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxDataViewCtrlNameStr )
{
- this->Init();
- this->Create(parent, id, pos, size, style, validator );
+ Init();
+ Create(parent, winid, pos, size, style, validator, name);
}
~wxDataViewCtrl();
- // explicit control creation
- bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos=wxDefaultPosition, const wxSize& size=wxDefaultSize, long style=0,
- const wxValidator& validator=wxDefaultValidator);
+ 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 wxControl* GetMainWindow() // not used for the native implementation
+ virtual wxWindow* GetMainWindow() // not used for the native implementation
{
return this;
}
virtual bool AssociateModel(wxDataViewModel* model);
virtual bool AppendColumn (wxDataViewColumn* columnPtr);
- virtual bool ClearColumns (void);
+ virtual bool ClearColumns ();
virtual bool DeleteColumn (wxDataViewColumn* columnPtr);
virtual wxDataViewColumn* GetColumn (unsigned int pos) const;
- virtual unsigned int GetColumnCount (void) const;
+ virtual unsigned int GetColumnCount () const;
virtual int GetColumnPosition(const wxDataViewColumn* columnPtr) const;
- virtual wxDataViewColumn* GetSortingColumn (void) const;
+ virtual wxDataViewColumn* GetSortingColumn () const;
virtual bool InsertColumn (unsigned int pos, wxDataViewColumn *col);
virtual bool PrependColumn (wxDataViewColumn* columnPtr);
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) const;
- virtual wxDataViewItem GetSelection() 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;
// implementation
//
// returns a pointer to the native implementation
- wxDataViewWidgetImpl* GetDataViewPeer(void) const;
+ 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(void);
+ 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 this->m_ColumnPtrs[n];
+ 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 this->m_CustomRendererItem;
+ return m_CustomRendererItem;
}
// returns a pointer to a customized renderer (this pointer is only valid during editing)
wxDataViewCustomRenderer* GetCustomRendererPtr() const
{
- return this->m_CustomRendererPtr;
+ return m_CustomRendererPtr;
}
// checks if currently a delete process is running
bool IsDeleting() const
{
- return this->m_Deleting;
+ return m_Deleting;
}
// with CG, we need to get the context from an kEventControlDraw event
// events so we can access it in the callbacks.
void MacSetDrawingContext(void* context)
{
- this->m_cgContext = context;
+ m_cgContext = context;
}
void* MacGetDrawingContext() const
{
- return this->m_cgContext;
+ return m_cgContext;
}
// sets the currently being edited item of the custom renderer
void SetCustomRendererItem(wxDataViewItem const& NewItem)
{
- this->m_CustomRendererItem = NewItem;
+ m_CustomRendererItem = NewItem;
}
// sets the custom renderer
void SetCustomRendererPtr(wxDataViewCustomRenderer* NewCustomRendererPtr)
{
- this->m_CustomRendererPtr = NewCustomRendererPtr;
+ m_CustomRendererPtr = NewCustomRendererPtr;
}
// sets the flag indicating a deletion process:
void SetDeleting(bool deleting)
{
- this->m_Deleting = deleting;
+ m_Deleting = deleting;
}
+ virtual wxDataViewColumn *GetCurrentColumn() const;
+
virtual wxVisualAttributes GetDefaultAttributes() const
{
return GetClassDefaultAttributes(GetWindowVariant());
// initializing of local variables:
void Init();
+ virtual wxDataViewItem DoGetCurrentItem() const;
+ virtual void DoSetCurrentItem(const wxDataViewItem& item);
+
//
// variables
//
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)