-
/////////////////////////////////////////////////////////////////////////////
// Name: wx/osx/dataview.h
// Purpose: wxDataViewCtrl native implementation header for OSX
// Author:
-// Id: $Id$
// Copyright: (c) 2009
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// 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();
-
-//
-// inherited methods from wxDataViewRendererBase
-//
- virtual int GetAlignment() const
- {
- return m_alignment;
- }
- virtual wxDataViewCellMode GetMode() const
- {
- return m_mode;
- }
- virtual bool GetValue(wxVariant& value) const
- {
- value = 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)
- {
- m_value = newValue;
- return true;
- }
-
-//
-// implementation
-//
- wxVariant const& GetValue() const
- {
- return m_value;
- }
-
- wxDataViewRendererNativeData* GetNativeData() const
- {
- return m_NativeDataPtr;
- }
-
- virtual bool MacRender() = 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 MacRender();
-
- 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 MacRender();
-
-protected:
-private:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRenderer)
-};
-
-// ---------------------------------------------------------
-// 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 MacRender();
-
-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 MacRender();
-
-//
-// implementation
-//
- wxString GetChoice(size_t index) const
- {
- return m_Choices[index];
- }
- wxArrayString const& GetChoices() const
- {
- return 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 MacRender();
-
-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 MacRender();
-
-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 MacRender();
-
-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 MacRender();
-
-protected:
-private:
- DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateRenderer)
-};
-
// ---------------------------------------------------------
// wxDataViewColumn
// ---------------------------------------------------------
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() const
}
void SetNativeData(wxDataViewColumnNativeData* newNativeDataPtr); // class takes ownership of pointer
+ int GetWidthVariable() const
+ {
+ return m_width;
+ }
void SetWidthVariable(int NewWidth)
{
m_width = NewWidth;
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
{
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 )
{
Init();
- Create(parent, id, pos, size, style, validator );
+ 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 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;
// 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
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)