X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c4f71cc3d63fb7bdfbd6cec3e39c8a8679f3e60..bc60925fb3dbcd8011b82f019d71106b2f8dd64f:/interface/dataview.h diff --git a/interface/dataview.h b/interface/dataview.h index e32f513867..533e8ec36b 100644 --- a/interface/dataview.h +++ b/interface/dataview.h @@ -16,7 +16,7 @@ a wxVariant. @library{wxbase} - @category{FIXME} + @category{dvc} */ class wxDataViewIconText : public wxObject { @@ -60,7 +60,7 @@ public: wxDataViewEvent - the event class for the wxDataViewCtrl notifications @library{wxadv} - @category{FIXME} + @category{events,dvc} */ class wxDataViewEvent : public wxNotifyEvent { @@ -129,153 +129,6 @@ public: -/** - @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); - - /** - 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 wxDataViewModel @wxheader{dataview.h} @@ -341,6 +194,7 @@ public: Currently wxWidgets provides the following models apart from the base model: wxDataViewIndexListModel, + wxDataViewVirtualListModel, wxDataViewTreeStore. Note that wxDataViewModel is reference counted, derives from @@ -359,7 +213,7 @@ public: @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewModel : public wxObjectRefData { @@ -542,146 +396,147 @@ 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} - @category{FIXME} + @library{wxbase} + @category{dvc} */ -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, - const wxDataViewItem & item, - unsigned int col ); + 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, - const wxDataViewItem & item, - unsigned int col ); + 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); /** - Overrride this to react to a right click. + Call this after a row has been inserted at the given position. */ - virtual bool RightClick(wxPoint cursor, - wxRect cell, - wxDataViewModel* model, - const wxDataViewItem & item, - unsigned int col); + void RowInserted(unsigned int before); /** - Overrride this to start a drag operation. + Call this after a row has been prepended to the model. */ - virtual bool StartDrag(wxPoint cursor, wxRect cell, - wxDataViewModel* model, - const wxDataViewItem & item, - unsigned int col); + void RowPrepended(); + + /** + Call this after a value has been changed. + */ + 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} - @category{FIXME} + @see wxDataViewIndexListModel for the API. + + @library{wxbase} + @category{dvc} */ -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); }; @@ -699,7 +554,7 @@ public: wxDataViewTextRendererText(). @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewItemAttr { @@ -749,7 +604,7 @@ public: wxDataViewModel::GetChildren. @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewItem { @@ -811,42 +666,65 @@ 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. + @style{wxDV_VARIABLE_LINE_HEIGHT} + Allow variable line heights. This can be inefficient when displaying large number of items. @endStyleTable @library{wxadv} - @category{ctrl} - @appearance{dataviewctrl.png} + @category{ctrl,dvc} + */ class wxDataViewCtrl : public wxControl { public: - //@{ /** - Constructor. Calls Create(). + Default Constructor. */ wxDataViewCtrl(); + + /** + Constructor. Calls Create(). + */ wxDataViewCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator); - //@} /** Destructor. */ ~wxDataViewCtrl(); + /** + Appends a wxDataViewColumn to the control. Returns @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); + + /** + Prepends a wxDataViewColumn to the control. Returns @true on success. + Note that there is a number of short cut methods which implicitly create + a wxDataViewColumn and a wxDataViewRenderer for it. + */ + virtual bool PrependColumn(wxDataViewColumn* col); + + /** + Inserts a wxDataViewColumn to the control. Returns @true on success. + */ + virtual bool InsertColumn(unsigned int pos, wxDataViewColumn* col); + //@{ /** Appends a column for rendering a bitmap. Returns the wxDataViewColumn @@ -866,19 +744,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, @@ -897,8 +769,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, @@ -917,8 +792,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, @@ -938,6 +815,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, @@ -957,6 +837,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, @@ -973,8 +856,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); @@ -1135,7 +1018,7 @@ public: information. @library{wxbase} - @category{FIXME} + @category{dvc} */ class wxDataViewModelNotifier { @@ -1158,7 +1041,7 @@ public: /** Get owning wxDataViewModel. */ - wxDataViewModel* GetOwner(); + wxDataViewModel* GetOwner() const; /** Called by owning model. @@ -1216,10 +1099,9 @@ 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, @@ -1267,17 +1149,22 @@ public: @library{wxadv} - @category{FIXME} + @category{dvc} */ 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. @@ -1287,7 +1174,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 @@ -1302,6 +1189,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. @@ -1338,7 +1234,7 @@ public: in-place editing if desired. @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewTextRenderer : public wxDataViewRenderer { @@ -1347,7 +1243,35 @@ 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{dvc} +*/ +class wxDataViewIconTextRenderer : public wxDataViewRenderer +{ +public: + /** + + */ + wxDataViewIconTextRenderer(const wxString& varianttype = "wxDataViewIconText", + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); }; @@ -1359,7 +1283,7 @@ public: wxDataViewProgressRenderer @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewProgressRenderer : public wxDataViewRenderer { @@ -1367,55 +1291,372 @@ public: /** */ - wxDataViewProgressRenderer(const wxString& label = wxEmptyString, - const wxString& varianttype = "long", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT); -}; + wxDataViewProgressRenderer(const wxString& label = wxEmptyString, + const wxString& varianttype = "long", + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); +}; + + + +/** + @class wxDataViewSpinRenderer + @wxheader{dataview.h} + + This is a specialized renderer for rendering integer values. It + supports modifying the values in-place by using a wxSpinCtrl. + The renderer only support variants of type @e long. + + @library{wxbase} + @category{dvc} +*/ +class wxDataViewSpinRenderer : public wxDataViewCustomRenderer +{ +public: + /** + Constructor. @a min and @a max indicate the minimum und + maximum values of for the wxSpinCtrl. + */ + wxDataViewSpinRenderer(int min, int max, + wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE, + int align = wxDVR_DEFAULT_ALIGNMENT); +}; + + + +/** + @class wxDataViewToggleRenderer + @wxheader{dataview.h} + + wxDataViewToggleRenderer + + @library{wxadv} + @category{dvc} +*/ +class wxDataViewToggleRenderer : public wxDataViewRenderer +{ +public: + /** + + */ + wxDataViewToggleRenderer(const wxString& varianttype = "bool", + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT); +}; + + + +/** + @class wxDataViewDateRenderer + @wxheader{dataview.h} + + wxDataViewDateRenderer + + @library{wxadv} + @category{dvc} +*/ +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{dvc} +*/ +class wxDataViewTextRendererAttr : public wxDataViewTextRenderer +{ +public: + /** + + */ + 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{dvc} +*/ +class wxDataViewCustomRenderer : public wxDataViewRenderer +{ +public: + /** + Constructor. + */ + wxDataViewCustomRenderer(const wxString& varianttype = "string", + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); + + /** + Destructor. + */ + ~wxDataViewCustomRenderer(); + + /** + Override this to react to double clicks or ENTER. This method will + only be called in wxDATAVIEW_CELL_ACTIVATABLE mode. + */ + virtual bool Activate( wxRect cell, + wxDataViewModel* model, + const wxDataViewItem & item, + unsigned int col ); + + /** + 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: + */ + virtual wxControl* CreateEditorCtrl(wxWindow* parent, + wxRect labelRect, + const wxVariant& value); + + /** + Create DC on request. Internal. + */ + virtual wxDC* GetDC(); + + /** + Return size required to show content. + */ + virtual wxSize GetSize(); + + /** + Overrride this so that the renderer can get the value + from the editor control (pointed to by @e editor): + */ + virtual bool GetValueFromEditorCtrl(wxControl* editor, + wxVariant& value); + + /** + Override this and make it return @e @true in order to + indicate that this renderer supports in-place editing. + */ + virtual bool HasEditorCtrl(); + + /** + Overrride this to react to a left click. This method will + only be called in wxDATAVIEW_CELL_ACTIVATABLE mode. + */ + virtual bool LeftClick( wxPoint cursor, + wxRect cell, + wxDataViewModel * model, + const wxDataViewItem & item, + unsigned int col ); + + /** + Override this to render the cell. Before this is called, + wxDataViewRenderer::SetValue was called + so that this instance knows what to render. + */ + virtual bool Render(wxRect cell, wxDC* dc, int state); + + /** + 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. + */ + bool RenderText(const wxString& text, int xoffset, wxRect cell, + wxDC* dc, int state); + + /** + Overrride this to start a drag operation. Not yet + supported + */ + virtual bool StartDrag(wxPoint cursor, wxRect cell, + wxDataViewModel* model, + const wxDataViewItem & item, + unsigned int col); +}; + + + +/** + @class wxDataViewBitmapRenderer + @wxheader{dataview.h} + + wxDataViewBitmapRenderer + + @library{wxadv} + @category{dvc} +*/ +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{dvc} +*/ +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(); -/** - @class wxDataViewSpinRenderer - @wxheader{dataview.h} + /** + Returns @true if the column is sortable. + See SetSortable() + */ + bool GetSortable(); - This is a specialized renderer for rendering integer values. It - supports modifying the values in-place by using a wxSpinCtrl. - The renderer only support variants of type @e long. + /** + Returns the width of the column. + */ + int GetWidth(); - @library{wxbase} - @category{FIXME} -*/ -class wxDataViewSpinRenderer : public wxDataViewCustomRenderer -{ -public: /** - Constructor. @a min and @a max indicate the minimum und - maximum values of for the wxSpinCtrl. + Returns @true, if the sort order is ascending. + See also SetSortOrder() */ - wxDataViewSpinRenderer(int min, int max, - wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE, - int alignment = wxDVR_DEFAULT_ALIGNMENT); -}; + 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); -/** - @class wxDataViewToggleRenderer - @wxheader{dataview.h} + /** + 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); - wxDataViewToggleRenderer + /** + Indicate the sort order if the implementation of the + wxDataViewCtrl supports it, most commonly by showing + a little arrow. + */ + void SetSortOrder(bool ascending); - @library{wxadv} - @category{FIXME} -*/ -class wxDataViewToggleRenderer : public wxDataViewRenderer -{ -public: /** + 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. */ - wxDataViewToggleRenderer(const wxString& varianttype = "bool", - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT); + void SetTitle(const wxString& title); }; @@ -1432,8 +1673,8 @@ public: to the wxDataViewCtrl class simpler. @library{wxbase} - @category{ctrl} - @appearance{dataviewtreectrl.png} + @category{ctrl,dvc} + */ class wxDataViewTreeCtrl : public wxDataViewCtrl { @@ -1623,7 +1864,7 @@ public: This comes at the price of much reduced flexibility. @library{wxadv} - @category{FIXME} + @category{dvc} */ class wxDataViewTreeStore : public wxDataViewModel { @@ -1754,179 +1995,3 @@ public: void SetItemIcon(const wxDataViewItem& item, const wxIcon& icon); }; - - -/** - @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); -}; -