X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/328f5751e8a06727b137189fe04891a9f43bfc8b..7c0d297a1f761de31d3a4ac924fa2080b5bbaf41:/interface/dataview.h diff --git a/interface/dataview.h b/interface/dataview.h index 1dbf777cf1..e09f63f0ee 100644 --- a/interface/dataview.h +++ b/interface/dataview.h @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // Name: dataview.h -// Purpose: documentation for wxDataViewIconText class +// Purpose: interface of wxDataViewIconText // Author: wxWidgets team // RCS-ID: $Id$ // Licence: wxWindows license @@ -52,6 +52,7 @@ public: }; + /** @class wxDataViewEvent @wxheader{dataview.h} @@ -66,7 +67,7 @@ class wxDataViewEvent : public wxNotifyEvent public: //@{ /** - + */ wxDataViewEvent(wxEventType commandType = wxEVT_NULL, int winid = 0); @@ -106,7 +107,7 @@ public: const wxVariant GetValue() const; /** - + */ void SetColumn(int col); @@ -116,162 +117,15 @@ public: void SetDataViewColumn(wxDataViewColumn* col); /** - - */ - void SetModel(wxDataViewModel* model); - - /** - - */ - void SetValue(const wxVariant& value); -}; - - -/** - @class wxDataViewIconTextRenderer - @wxheader{dataview.h} - - The wxDataViewIconTextRenderer class is used to display text with - a small icon next to it as it is typically done in a file manager. - This classes uses the wxDataViewIconText - helper class to store its data. wxDataViewIonText can be converted - to a from a wxVariant using the left shift - operator. - - @library{wxadv} - @category{FIXME} -*/ -class wxDataViewIconTextRenderer : public wxDataViewRenderer -{ -public: - /** - - */ - wxDataViewIconTextRenderer(const wxString& varianttype = "wxDataViewIconText", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT); -}; - - -/** - @class wxDataViewIndexListModel - @wxheader{dataview.h} - - wxDataViewIndexListModel is a specialized data model which lets - you address an item by its position (row) rather than its - wxDataViewItem (which you can obtain from this class). - This model also provides its own - wxDataViewIndexListModel::Compare method - which sorts the model's data by the index. - - This model is special in the it is implemented differently under OS X - and other platforms. Under OS X a wxDataViewItem is always persistent - and this is also the case for this class. Under other platforms, the - meaning of a wxDataViewItem is changed to reflect a row number for - wxDataViewIndexListModel. The consequence of this is that - wxDataViewIndexListModel can be used as a virtual model with an - almost infinate number of items on platforms other than OS X. - - @library{wxbase} - @category{FIXME} -*/ -class wxDataViewIndexListModel : public wxDataViewModel -{ -public: - /** - Constructor. - */ - wxDataViewIndexListModel(unsigned int initial_size = 0); - - /** - Destructor. - */ - ~wxDataViewIndexListModel(); - - /** - Compare method that sorts the items by their index. - */ - int Compare(const wxDataViewItem& item1, - const wxDataViewItem& item2, - unsigned int column, bool ascending); - - /** - Oberride this to indicate that the row has special font attributes. - This only affects the - wxDataViewTextRendererText renderer. - See also wxDataViewItemAttr. - */ - bool GetAttr(unsigned int row, unsigned int col, - wxDataViewItemAttr& attr); - - /** - Returns the wxDataViewItem at the given @e row. - */ - wxDataViewItem GetItem(unsigned int row) const; - - /** - Returns the position of given @e item. - */ - unsigned int GetRow(const wxDataViewItem& item) const; - - /** - Override this to allow getting values from the model. - */ - void GetValue(wxVariant& variant, unsigned int row, - unsigned int col) const; - - /** - Call this after if the data has to be read again from - the model. This is useful after major changes when - calling the methods below (possibly thousands of times) - doesn't make sense. - */ - void Reset(unsigned int new_size); - - /** - Call this after a row has been appended to the model. - */ - void RowAppended(); - - /** - Call this after a row has been changed. - */ - void RowChanged(unsigned int row); - /** - Call this after a row has been deleted. - */ - void RowDeleted(unsigned int row); - - /** - Call this after a row has been inserted at the given position. - */ - void RowInserted(unsigned int before); - - /** - Call this after a row has been prepended to the model. - */ - void RowPrepended(); - - /** - Call this after a value has been changed. */ - void RowValueChanged(unsigned int row, unsigned int col); + void SetModel(wxDataViewModel* model); /** - Call this after rows have been deleted. The array will internally - get copied and sorted in descending order so that the rows with - the highest position will be deleted first. - */ - void RowsDeleted(const wxArrayInt& rows); - /** - Called in order to set a value in the model. */ - bool SetValue(const wxVariant& variant, unsigned int row, - unsigned int col); + void SetValue(const wxVariant& value); }; - - /** @class wxDataViewModel @wxheader{dataview.h} @@ -337,6 +191,7 @@ public: Currently wxWidgets provides the following models apart from the base model: wxDataViewIndexListModel, + wxDataViewVirtualListModel, wxDataViewTreeStore. Note that wxDataViewModel is reference counted, derives from @@ -396,7 +251,7 @@ public: /** Oberride this to indicate that the item has special font attributes. This only affects the - wxDataViewTextRendererText renderer. + wxDataViewTextRendererText() renderer. See also wxDataViewItemAttr. */ bool GetAttr(const wxDataViewItem& item, unsigned int col, @@ -536,144 +391,154 @@ public: }; + + /** - @class wxDataViewCustomRenderer + @class wxDataViewIndexListModel @wxheader{dataview.h} - You need to derive a new class from wxDataViewCustomRenderer in - order to write a new renderer. You need to override at least - wxDataViewRenderer::SetValue, - wxDataViewRenderer::GetValue, - wxDataViewCustomRenderer::GetSize - and wxDataViewCustomRenderer::Render. - - If you want your renderer to support in-place editing then you - also need to override - wxDataViewCustomRenderer::HasEditorCtrl, - wxDataViewCustomRenderer::CreateEditorCtrl - and wxDataViewCustomRenderer::GetValueFromEditorCtrl. - Note that a special event handler will be pushed onto that - editor control which handles ENTER and focus out events - in order to end the editing. + wxDataViewIndexListModel is a specialized data model which lets + you address an item by its position (row) rather than its + wxDataViewItem (which you can obtain from this class). + This model also provides its own wxDataViewIndexListModel::Compare + method which sorts the model's data by the index. + + This model is not a virtual model since the control stores + each wxDataViewItem. Use wxDataViewVirtualListModel if you + need to display millions of items or have other reason to + use a virtual control. - @library{wxadv} + @library{wxbase} @category{FIXME} */ -class wxDataViewCustomRenderer : public wxDataViewRenderer +class wxDataViewIndexListModel : public wxDataViewModel { public: /** Constructor. */ - wxDataViewCustomRenderer(const wxString& varianttype = "string", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, - bool no_init = false); + wxDataViewIndexListModel(unsigned int initial_size = 0); /** Destructor. */ - ~wxDataViewCustomRenderer(); + ~wxDataViewIndexListModel(); /** - Override this to react to double clicks or ENTER. + Compare method that sorts the items by their index. */ - virtual bool Activate(wxRect cell, wxDataViewModel* model, - unsigned int col, - unsigned int row); + int Compare(const wxDataViewItem& item1, + const wxDataViewItem& item2, + unsigned int column, bool ascending); /** - Override this to create the actual editor control once editing - is about to start. @a parent is the parent of the editor - control, @a labelRect indicates the position and - size of the editor control and @a value is its initial value: + Oberride this to indicate that the row has special font attributes. + This only affects the + wxDataViewTextRendererText() renderer. + See also wxDataViewItemAttr. */ - virtual wxControl* CreateEditorCtrl(wxWindow* parent, - wxRect labelRect, - const wxVariant& value); + bool GetAttr(unsigned int row, unsigned int col, + wxDataViewItemAttr& attr); /** - Create DC on request. Internal. + Returns the wxDataViewItem at the given @e row. */ - virtual wxDC* GetDC(); + wxDataViewItem GetItem(unsigned int row) const; /** - Return size required to show content. + Returns the position of given @e item. */ - virtual wxSize GetSize(); + unsigned int GetRow(const wxDataViewItem& item) const; /** - Overrride this so that the renderer can get the value - from the editor control (pointed to by @e editor): + Override this to allow getting values from the model. */ - virtual bool GetValueFromEditorCtrl(wxControl* editor, - wxVariant& value); + void GetValue(wxVariant& variant, unsigned int row, + unsigned int col) const; /** - Override this and make it return @e @true in order to - indicate that this renderer supports in-place editing. + Call this after if the data has to be read again from + the model. This is useful after major changes when + calling the methods below (possibly thousands of times) + doesn't make sense. */ - virtual bool HasEditorCtrl(); + void Reset(unsigned int new_size); /** - Overrride this to react to a left click. + Call this after a row has been appended to the model. */ - virtual bool LeftClick(wxPoint cursor, wxRect cell, - wxDataViewModel* model, - unsigned int col, - unsigned int row); + void RowAppended(); /** - Override this to render the cell. Before this is called, - wxDataViewRenderer::SetValue was called - so that this instance knows what to render. + Call this after a row has been changed. */ - virtual bool Render(wxRect cell, wxDC* dc, int state); + void RowChanged(unsigned int row); /** - This method should be called from within Render() - whenever you need to render simple text. This will ensure that the - correct colour, font and vertical alignment will be chosen so the - text will look the same as text drawn by native renderers. + Call this after a row has been deleted. */ - bool RenderText(const wxString& text, int xoffset, wxRect cell, - wxDC* dc, int state); + void RowDeleted(unsigned int row); + + /** + Call this after a row has been inserted at the given position. + */ + void RowInserted(unsigned int before); /** - Overrride this to react to a right click. + Call this after a row has been prepended to the model. */ - virtual bool RightClick(wxPoint cursor, wxRect cell, - wxDataViewModel* model, - unsigned int col, - unsigned int row); + void RowPrepended(); /** - Overrride this to start a drag operation. + Call this after a value has been changed. */ - virtual bool StartDrag(wxPoint cursor, wxRect cell, - wxDataViewModel* model, - unsigned int col, - unsigned int row); + void RowValueChanged(unsigned int row, unsigned int col); + + /** + Call this after rows have been deleted. The array will internally + get copied and sorted in descending order so that the rows with + the highest position will be deleted first. + */ + void RowsDeleted(const wxArrayInt& rows); + + /** + Called in order to set a value in the model. + */ + bool SetValue(const wxVariant& variant, unsigned int row, + unsigned int col); }; + /** - @class wxDataViewBitmapRenderer + @class wxDataViewVirtualListModel @wxheader{dataview.h} - wxDataViewBitmapRenderer + wxDataViewVirtualListModel is a specialized data model which lets + you address an item by its position (row) rather than its + wxDataViewItem and as such offers the exact same interface as + wxDataViewIndexListModel. The important difference is that under + platforms other than OS X, using this model will result in a + truely virtual control able to handle millions of items as the + control doesn't store any item (a feature not supported by the + Carbon API under OS X). - @library{wxadv} + @see wxDataViewIndexListModel for the API. + + @library{wxbase} @category{FIXME} */ -class wxDataViewBitmapRenderer : public wxDataViewRenderer +class wxDataViewVirtualListModel : public wxDataViewModel { public: /** - + Constructor. */ - wxDataViewBitmapRenderer(const wxString& varianttype = "wxBitmap", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT); -}; + wxDataViewVirtualListModel(unsigned int initial_size = 0); +} + + + /** @@ -681,12 +546,12 @@ public: @wxheader{dataview.h} This class is used to indicate to a wxDataViewCtrl - that a certain Item has extra font attributes + that a certain Item() has extra font attributes for its renderer. For this, it is required to override wxDataViewModel::GetAttr. Attributes are currently only supported by - wxDataViewTextRendererText. + wxDataViewTextRendererText(). @library{wxadv} @category{FIXME} @@ -717,6 +582,7 @@ public: }; + /** @class wxDataViewItem @wxheader{dataview.h} @@ -745,7 +611,7 @@ class wxDataViewItem public: //@{ /** - + */ wxDataViewItem(void* id = NULL); wxDataViewItem(const wxDataViewItem& item); @@ -763,6 +629,7 @@ public: }; + /** @class wxDataViewCtrl @wxheader{dataview.h} @@ -799,15 +666,15 @@ public: from wxVariant::GetType. @beginStyleTable - @style{wxDV_SINGLE}: + @style{wxDV_SINGLE} Single selection mode. This is the default. - @style{wxDV_MULTIPLE}: + @style{wxDV_MULTIPLE} Multiple selection mode. - @style{wxDV_ROW_LINES}: + @style{wxDV_ROW_LINES} Use alternating colours for rows if supported by platform and theme. - @style{wxDV_HORIZ_RULES}: + @style{wxDV_HORIZ_RULES} Display fine rules between row if supported. - @style{wxDV_VERT_RULES}: + @style{wxDV_VERT_RULES} Display fine rules between columns is supported. @endStyleTable @@ -835,6 +702,14 @@ public: */ ~wxDataViewCtrl(); + /** + Add a wxDataViewColumn to the control. Returns + @e @true on success. + Note that there is a number of short cut methods which implicitly create + a wxDataViewColumn and a wxDataViewRenderer for it (see below). + */ + virtual bool AppendColumn(wxDataViewColumn* col); + //@{ /** Appends a column for rendering a bitmap. Returns the wxDataViewColumn @@ -854,19 +729,13 @@ public: int flags = wxDATAVIEW_COL_RESIZABLE); //@} - /** - Add a wxDataViewColumn to the control. Returns - @e @true on success. - Note that there is a number of short cut methods which implicitly create - a wxDataViewColumn and a - wxDataViewRenderer for it (see below). - */ - virtual bool AppendColumn(wxDataViewColumn* col); - //@{ /** Appends a column for rendering a date. Returns the wxDataViewColumn created in the function or @NULL on failure. + + NB: The @e align parameter is applied to both the column header and + the column renderer. */ wxDataViewColumn* AppendDateColumn(const wxString& label, unsigned int model_column, @@ -885,8 +754,11 @@ public: //@{ /** Appends a column for rendering text with an icon. Returns the wxDataViewColumn - created in the function or @NULL on failure. This uses the - wxDataViewIconTextRenderer. + created in the function or @NULL on failure. This method uses the + wxDataViewIconTextRenderer class. + + NB: The @e align parameter is applied to both the column header and + the column renderer. */ wxDataViewColumn* AppendIconTextColumn(const wxString& label, unsigned int model_column, @@ -905,8 +777,10 @@ public: //@{ /** Appends a column for rendering a progress indicator. Returns the - wxDataViewColumn - created in the function or @NULL on failure. + wxDataViewColumn created in the function or @NULL on failure. + + NB: The @e align parameter is applied to both the column header and + the column renderer. */ wxDataViewColumn* AppendProgressColumn(const wxString& label, unsigned int model_column, @@ -926,6 +800,9 @@ public: /** Appends a column for rendering text. Returns the wxDataViewColumn created in the function or @NULL on failure. + + NB: The @e align parameter is applied to both the column header and + the column renderer. */ wxDataViewColumn* AppendTextColumn(const wxString& label, unsigned int model_column, @@ -945,6 +822,9 @@ public: /** Appends a column for rendering a toggle. Returns the wxDataViewColumn created in the function or @NULL on failure. + + NB: The @e align parameter is applied to both the column header and + the column renderer. */ wxDataViewColumn* AppendToggleColumn(const wxString& label, unsigned int model_column, @@ -961,8 +841,8 @@ public: //@} /** - Associates a wxDataViewModel with the - control. This increases the reference count of the model by 1. + Associates a wxDataViewModel with the control. This increases the reference + count of the model by 1. */ virtual bool AssociateModel(wxDataViewModel* model); @@ -1111,6 +991,7 @@ public: }; + /** @class wxDataViewModelNotifier @wxheader{dataview.h} @@ -1145,7 +1026,7 @@ public: /** Get owning wxDataViewModel. */ - wxDataViewModel* GetOwner(); + wxDataViewModel* GetOwner() const; /** Called by owning model. @@ -1198,14 +1079,14 @@ public: }; + /** @class wxDataViewRenderer @wxheader{dataview.h} - This class is used by wxDataViewCtrl to - render the individual cells. One instance of a renderer class is - owned by wxDataViewColumn. There is - a number of ready-to-use renderers provided: + This class is used by wxDataViewCtrl to render the individual cells. + One instance of a renderer class is owned by a wxDataViewColumn. There + is a number of ready-to-use renderers provided: wxDataViewTextRenderer, wxDataViewTextRendererAttr, wxDataViewIconTextRenderer, @@ -1259,11 +1140,16 @@ class wxDataViewRenderer : public wxObject { public: /** - Constructor. + Constructor. */ wxDataViewRenderer(const wxString& varianttype, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, - int alignment = wxALIGN_LEFT|wxALIGN_CENTRE_VERTICAL); + int align = wxDVR_DEFAULT_ALIGNMENT ); + + /** + Returns the alignment. See SetAlignment() + */ + virtual int GetAlignment() const; /** Returns the cell mode. @@ -1273,7 +1159,7 @@ public: /** Returns pointer to the owning wxDataViewColumn. */ - virtual wxDataViewColumn* GetOwner(); + virtual wxDataViewColumn* GetOwner() const; /** This methods retrieves the value from the renderer in order to @@ -1288,6 +1174,15 @@ public: */ virtual wxString GetVariantType(); + /** + Sets the alignment of the renderer's content. The default value + of wxDVR_DEFAULT_ALIGMENT indicates that the content should + have the same alignment as the column header. The method is + not implemented under OS X and the renderer always aligns its + contents as the column header on that platform. The other platforms + support both vertical and horizontal alignment. + */ + virtual void SetAlignment( int align ); /** Sets the owning wxDataViewColumn. This is usually called from within wxDataViewColumn. @@ -1315,6 +1210,7 @@ public: }; + /** @class wxDataViewTextRenderer @wxheader{dataview.h} @@ -1329,13 +1225,44 @@ class wxDataViewTextRenderer : public wxDataViewRenderer { public: /** - + */ wxDataViewTextRenderer(const wxString& varianttype = "string", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT); + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); +}; + + + +/** + @class wxDataViewIconTextRenderer + @wxheader{dataview.h} + + The wxDataViewIconTextRenderer class is used to display text with + a small icon next to it as it is typically done in a file manager. + This classes uses the wxDataViewIconText + helper class to store its data. wxDataViewIonText can be converted + to a from a wxVariant using the left shift + operator. + + @library{wxadv} + @category{FIXME} +*/ +class wxDataViewIconTextRenderer : public wxDataViewRenderer +{ +public: + /** + + */ + wxDataViewIconTextRenderer(const wxString& varianttype = "wxDataViewIconText", + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); }; + + + /** @class wxDataViewProgressRenderer @wxheader{dataview.h} @@ -1349,14 +1276,16 @@ class wxDataViewProgressRenderer : public wxDataViewRenderer { public: /** - + */ wxDataViewProgressRenderer(const wxString& label = wxEmptyString, const wxString& varianttype = "long", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT); + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); }; + /** @class wxDataViewSpinRenderer @wxheader{dataview.h} @@ -1377,10 +1306,11 @@ public: */ wxDataViewSpinRenderer(int min, int max, wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE, - int alignment = wxDVR_DEFAULT_ALIGNMENT); + int align = wxDVR_DEFAULT_ALIGNMENT); }; + /** @class wxDataViewToggleRenderer @wxheader{dataview.h} @@ -1394,143 +1324,460 @@ class wxDataViewToggleRenderer : public wxDataViewRenderer { public: /** - + */ wxDataViewToggleRenderer(const wxString& varianttype = "bool", wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT); }; + /** - @class wxDataViewTreeCtrl + @class wxDataViewDateRenderer @wxheader{dataview.h} - This class is a wxDataViewCtrl which internally - uses a wxDataViewTreeStore and forwards - most of its API to that class. Additionally, it uses a wxImageList - to store a list of icons. The main purpose of this class is to look - like a wxTreeCtrl to make a transition from it - to the wxDataViewCtrl class simpler. + wxDataViewDateRenderer - @library{wxbase} - @category{ctrl} - @appearance{dataviewtreectrl.png} + @library{wxadv} + @category{FIXME} */ -class wxDataViewTreeCtrl : public wxDataViewCtrl +class wxDataViewDateRenderer : public wxDataViewRenderer { public: - //@{ /** - Constructor. Calls Create(). - */ - wxDataViewTreeCtrl(); - wxDataViewTreeCtrl(wxWindow* parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDV_NO_HEADER, - const wxValidator& validator = wxDefaultValidator); - //@} - /** - Destructor. Deletes the image list if any. */ - ~wxDataViewTreeCtrl(); + wxDataViewDateRenderer(const wxString& varianttype = "datetime", + wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE); +}; - /** - - */ - wxDataViewItem AppendContainer(const wxDataViewItem& parent, - const wxString& text, - int icon = -1, - int expanded = -1, - wxClientData* data = NULL); - /** - - */ - wxDataViewItem AppendItem(const wxDataViewItem& parent, - const wxString& text, - int icon = -1, - wxClientData* data = NULL); +/** + @class wxDataViewTextRendererAttr + @wxheader{dataview.h} + + The same as wxDataViewTextRenderer but with + support for font attributes. Font attributes are currently only supported + under GTK+ and MSW. + + See also wxDataViewModel::GetAttr and + wxDataViewItemAttr. + + @library{wxadv} + @category{FIXME} +*/ +class wxDataViewTextRendererAttr : public wxDataViewTextRenderer +{ +public: /** - Creates the control and a wxDataViewTreeStore as - its internal model. + */ - bool Create(wxWindow* parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDV_NO_HEADER, - const wxValidator& validator = wxDefaultValidator); + wxDataViewTextRendererAttr(const wxString& varianttype = "string", + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT); +}; + + +/** + @class wxDataViewCustomRenderer + @wxheader{dataview.h} + + You need to derive a new class from wxDataViewCustomRenderer in + order to write a new renderer. You need to override at least + wxDataViewRenderer::SetValue, + wxDataViewRenderer::GetValue, + wxDataViewCustomRenderer::GetSize + and wxDataViewCustomRenderer::Render. + + If you want your renderer to support in-place editing then you + also need to override + wxDataViewCustomRenderer::HasEditorCtrl, + wxDataViewCustomRenderer::CreateEditorCtrl + and wxDataViewCustomRenderer::GetValueFromEditorCtrl. + Note that a special event handler will be pushed onto that + editor control which handles ENTER and focus out events + in order to end the editing. + @library{wxadv} + @category{FIXME} +*/ +class wxDataViewCustomRenderer : public wxDataViewRenderer +{ +public: /** - Calls the identical method from wxDataViewTreeStore. + Constructor. */ - void DeleteAllItems(); + wxDataViewCustomRenderer(const wxString& varianttype = "string", + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); /** - Calls the identical method from wxDataViewTreeStore. + Destructor. */ - void DeleteChildren(const wxDataViewItem& item); + ~wxDataViewCustomRenderer(); /** - Calls the identical method from wxDataViewTreeStore. + Override this to react to double clicks or ENTER. This method will + only be called in wxDATAVIEW_CELL_ACTIVATABLE mode. */ - void DeleteItem(const wxDataViewItem& item); + virtual bool Activate( wxRect cell, + wxDataViewModel* model, + const wxDataViewItem & item, + unsigned int col ); /** - Calls the identical method from wxDataViewTreeStore. + Override this to create the actual editor control once editing + is about to start. @a parent is the parent of the editor + control, @a labelRect indicates the position and + size of the editor control and @a value is its initial value: */ - int GetChildCount(const wxDataViewItem& parent) const; + virtual wxControl* CreateEditorCtrl(wxWindow* parent, + wxRect labelRect, + const wxVariant& value); /** - Returns the image list. + Create DC on request. Internal. */ - wxImageList* GetImageList(); + virtual wxDC* GetDC(); /** - Calls the identical method from wxDataViewTreeStore. + Return size required to show content. */ - wxClientData* GetItemData(const wxDataViewItem& item) const; + virtual wxSize GetSize(); /** - Calls the identical method from wxDataViewTreeStore. + Overrride this so that the renderer can get the value + from the editor control (pointed to by @e editor): */ - const wxIcon GetItemExpandedIcon(const wxDataViewItem& item) const; + virtual bool GetValueFromEditorCtrl(wxControl* editor, + wxVariant& value); /** - Calls the identical method from wxDataViewTreeStore. + Override this and make it return @e @true in order to + indicate that this renderer supports in-place editing. */ - const wxIcon GetItemIcon(const wxDataViewItem& item) const; + virtual bool HasEditorCtrl(); /** - Calls the identical method from wxDataViewTreeStore. + Overrride this to react to a left click. This method will + only be called in wxDATAVIEW_CELL_ACTIVATABLE mode. */ - wxString GetItemText(const wxDataViewItem& item) const; + virtual bool LeftClick( wxPoint cursor, + wxRect cell, + wxDataViewModel * model, + const wxDataViewItem & item, + unsigned int col ); /** - Calls the identical method from wxDataViewTreeStore. + Override this to render the cell. Before this is called, + wxDataViewRenderer::SetValue was called + so that this instance knows what to render. */ - wxDataViewItem GetNthChild(const wxDataViewItem& parent, - unsigned int pos) const; + virtual bool Render(wxRect cell, wxDC* dc, int state); - //@{ /** - Returns the store. + This method should be called from within Render() + whenever you need to render simple text. This will ensure that the + correct colour, font and vertical alignment will be chosen so the + text will look the same as text drawn by native renderers. */ - wxDataViewTreeStore* GetStore() const; - const wxDataViewTreeStore* GetStore() const; - //@} + bool RenderText(const wxString& text, int xoffset, wxRect cell, + wxDC* dc, int state); /** - Calls the same method from wxDataViewTreeStore but uess - and index position in the image list instead of a wxIcon. + Overrride this to start a drag operation. Not yet + supported */ - wxDataViewItem InsertContainer(const wxDataViewItem& parent, - const wxDataViewItem& previous, - const wxString& text, - int icon = -1, - int expanded = -1, + virtual bool StartDrag(wxPoint cursor, wxRect cell, + wxDataViewModel* model, + const wxDataViewItem & item, + unsigned int col); +}; + + + +/** + @class wxDataViewBitmapRenderer + @wxheader{dataview.h} + + wxDataViewBitmapRenderer + + @library{wxadv} + @category{FIXME} +*/ +class wxDataViewBitmapRenderer : public wxDataViewRenderer +{ +public: + /** + + */ + wxDataViewBitmapRenderer(const wxString& varianttype = "wxBitmap", + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT, +}; + + + + +/** + @class wxDataViewColumn + @wxheader{dataview.h} + + This class represents a column in a wxDataViewCtrl. + One wxDataViewColumn is bound to one column in the data model, + to which the wxDataViewCtrl has been associated. + + An instance of wxDataViewRenderer is used by + this class to render its data. + + @library{wxadv} + @category{FIXME} +*/ +class wxDataViewColumn : public wxObject +{ +public: + //@{ + /** + Constructors. + */ + wxDataViewColumn(const wxString& title, + wxDataViewRenderer* renderer, + unsigned int model_column, + int width = wxDVC_DEFAULT_WIDTH, + wxAlignment align = wxALIGN_CENTRE, + int flags = wxDATAVIEW_COL_RESIZABLE); + wxDataViewColumn(const wxBitmap& bitmap, + wxDataViewRenderer* renderer, + unsigned int model_column, + int width = wxDVC_DEFAULT_WIDTH, + wxAlignment align = wxALIGN_CENTRE, + int flags = wxDATAVIEW_COL_RESIZABLE); + //@} + + /** + Destructor. + */ + ~wxDataViewColumn(); + + /** + Returns the bitmap in the header of the column, if any. + */ + const wxBitmap GetBitmap(); + + /** + Returns the index of the column of the model, which this + wxDataViewColumn is displaying. + */ + unsigned int GetModelColumn(); + + /** + Returns the owning wxDataViewCtrl. + */ + wxDataViewCtrl* GetOwner() const; + + /** + Returns the renderer of this wxDataViewColumn. + See also wxDataViewRenderer. + */ + wxDataViewRenderer* GetRenderer(); + + /** + Returns @true if the column is reorderable. + */ + bool GetReorderable(); + + /** + Returns @true if the column is sortable. + See SetSortable() + */ + bool GetSortable(); + + /** + Returns the width of the column. + */ + int GetWidth(); + + /** + Returns @true, if the sort order is ascending. + See also SetSortOrder() + */ + bool IsSortOrderAscending(); + + /** + Set the alignment of the column header. + */ + void SetAlignment(wxAlignment align); + + /** + Set the bitmap of the column header. + */ + void SetBitmap(const wxBitmap& bitmap); + + /** + Indicate wether the column can be reordered by the + user using the mouse. This is typically implemented + visually by dragging the header button around. + */ + void SetReorderable(bool reorderable); + + /** + Indicate the sort order if the implementation of the + wxDataViewCtrl supports it, most commonly by showing + a little arrow. + */ + void SetSortOrder(bool ascending); + + /** + Indicate that the column is sortable. This does + not show any sorting indicate yet, but it does + make the column header clickable. Call + SetSortOrder() + afterwards to actually make the sort indicator appear. + If @a sortable is @false, the column header is + no longer clickable and the sort indicator (little + arrow) will disappear. + */ + void SetSortable(bool sortable); + + /** + Set the title of the column header to @e title. + */ + void SetTitle(const wxString& title); +}; + + + +/** + @class wxDataViewTreeCtrl + @wxheader{dataview.h} + + This class is a wxDataViewCtrl which internally + uses a wxDataViewTreeStore and forwards + most of its API to that class. Additionally, it uses a wxImageList + to store a list of icons. The main purpose of this class is to look + like a wxTreeCtrl to make a transition from it + to the wxDataViewCtrl class simpler. + + @library{wxbase} + @category{ctrl} + @appearance{dataviewtreectrl.png} +*/ +class wxDataViewTreeCtrl : public wxDataViewCtrl +{ +public: + //@{ + /** + Constructor. Calls Create(). + */ + wxDataViewTreeCtrl(); + wxDataViewTreeCtrl(wxWindow* parent, wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDV_NO_HEADER, + const wxValidator& validator = wxDefaultValidator); + //@} + + /** + Destructor. Deletes the image list if any. + */ + ~wxDataViewTreeCtrl(); + + /** + + */ + wxDataViewItem AppendContainer(const wxDataViewItem& parent, + const wxString& text, + int icon = -1, + int expanded = -1, + wxClientData* data = NULL); + + /** + + */ + wxDataViewItem AppendItem(const wxDataViewItem& parent, + const wxString& text, + int icon = -1, + wxClientData* data = NULL); + + /** + Creates the control and a wxDataViewTreeStore as + its internal model. + */ + bool Create(wxWindow* parent, wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDV_NO_HEADER, + const wxValidator& validator = wxDefaultValidator); + + /** + Calls the identical method from wxDataViewTreeStore. + */ + void DeleteAllItems(); + + /** + Calls the identical method from wxDataViewTreeStore. + */ + void DeleteChildren(const wxDataViewItem& item); + + /** + Calls the identical method from wxDataViewTreeStore. + */ + void DeleteItem(const wxDataViewItem& item); + + /** + Calls the identical method from wxDataViewTreeStore. + */ + int GetChildCount(const wxDataViewItem& parent) const; + + /** + Returns the image list. + */ + wxImageList* GetImageList(); + + /** + Calls the identical method from wxDataViewTreeStore. + */ + wxClientData* GetItemData(const wxDataViewItem& item) const; + + /** + Calls the identical method from wxDataViewTreeStore. + */ + const wxIcon GetItemExpandedIcon(const wxDataViewItem& item) const; + + /** + Calls the identical method from wxDataViewTreeStore. + */ + const wxIcon GetItemIcon(const wxDataViewItem& item) const; + + /** + Calls the identical method from wxDataViewTreeStore. + */ + wxString GetItemText(const wxDataViewItem& item) const; + + /** + Calls the identical method from wxDataViewTreeStore. + */ + wxDataViewItem GetNthChild(const wxDataViewItem& parent, + unsigned int pos) const; + + //@{ + /** + Returns the store. + */ + wxDataViewTreeStore* GetStore() const; + const wxDataViewTreeStore* GetStore() const; + //@} + + /** + Calls the same method from wxDataViewTreeStore but uess + and index position in the image list instead of a wxIcon. + */ + wxDataViewItem InsertContainer(const wxDataViewItem& parent, + const wxDataViewItem& previous, + const wxString& text, + int icon = -1, + int expanded = -1, wxClientData* data = NULL); /** @@ -1591,6 +1838,7 @@ public: }; + /** @class wxDataViewTreeStore @wxheader{dataview.h} @@ -1735,174 +1983,4 @@ public: }; -/** - @class wxDataViewDateRenderer - @wxheader{dataview.h} - - wxDataViewDateRenderer - - @library{wxadv} - @category{FIXME} -*/ -class wxDataViewDateRenderer : public wxDataViewRenderer -{ -public: - /** - - */ - wxDataViewDateRenderer(const wxString& varianttype = "datetime", - wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE); -}; - - -/** - @class wxDataViewTextRendererAttr - @wxheader{dataview.h} - - The same as wxDataViewTextRenderer but with - support for font attributes. Font attributes are currently only supported - under GTK+ and MSW. - - See also wxDataViewModel::GetAttr and - wxDataViewItemAttr. - - @library{wxadv} - @category{FIXME} -*/ -class wxDataViewTextRendererAttr : public wxDataViewTextRenderer -{ -public: - /** - - */ - wxDataViewTextRendererAttr(const wxString& varianttype = "string", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, - int align = wxDVR_DEFAULT_ALIGNMENT); -}; - - -/** - @class wxDataViewColumn - @wxheader{dataview.h} - - This class represents a column in a wxDataViewCtrl. - One wxDataViewColumn is bound to one column in the data model, - to which the wxDataViewCtrl has been associated. - - An instance of wxDataViewRenderer is used by - this class to render its data. - @library{wxadv} - @category{FIXME} -*/ -class wxDataViewColumn : public wxObject -{ -public: - //@{ - /** - Constructors. - */ - wxDataViewColumn(const wxString& title, - wxDataViewRenderer* renderer, - unsigned int model_column, - int width = wxDVC_DEFAULT_WIDTH, - wxAlignment align = wxALIGN_CENTRE, - int flags = wxDATAVIEW_COL_RESIZABLE); - wxDataViewColumn(const wxBitmap& bitmap, - wxDataViewRenderer* renderer, - unsigned int model_column, - int width = wxDVC_DEFAULT_WIDTH, - wxAlignment align = wxALIGN_CENTRE, - int flags = wxDATAVIEW_COL_RESIZABLE); - //@} - - /** - Destructor. - */ - ~wxDataViewColumn(); - - /** - Returns the bitmap in the header of the column, if any. - */ - const wxBitmap GetBitmap(); - - /** - Returns the index of the column of the model, which this - wxDataViewColumn is displaying. - */ - unsigned int GetModelColumn(); - - /** - Returns the owning wxDataViewCtrl. - */ - wxDataViewCtrl* GetOwner(); - - /** - Returns the renderer of this wxDataViewColumn. - See also wxDataViewRenderer. - */ - wxDataViewRenderer* GetRenderer(); - - /** - Returns @true if the column is reorderable. - */ - bool GetReorderable(); - - /** - Returns @true if the column is sortable. - See SetSortable() - */ - bool GetSortable(); - - /** - Returns the width of the column. - */ - int GetWidth(); - - /** - Returns @true, if the sort order is ascending. - See also SetSortOrder() - */ - bool IsSortOrderAscending(); - - /** - Set the alignment of the column header. - */ - void SetAlignment(wxAlignment align); - - /** - Set the bitmap of the column header. - */ - void SetBitmap(const wxBitmap& bitmap); - - /** - Indicate wether the column can be reordered by the - user using the mouse. This is typically implemented - visually by dragging the header button around. - */ - void SetReorderable(bool reorderable); - - /** - Indicate the sort order if the implementation of the - wxDataViewCtrl supports it, most commonly by showing - a little arrow. - */ - void SetSortOrder(bool ascending); - - /** - Indicate that the column is sortable. This does - not show any sorting indicate yet, but it does - make the column header clickable. Call - SetSortOrder() - afterwards to actually make the sort indicator appear. - If @a sortable is @false, the column header is - no longer clickable and the sort indicator (little - arrow) will disappear. - */ - void SetSortable(bool sortable); - - /** - Set the title of the column header to @e title. - */ - void SetTitle(const wxString& title); -};