virtual bool ValueChanged(const wxDataViewItem& item,
unsigned int col);
+
+ virtual bool IsListModel() const;
+ virtual bool IsVirtualListModel() const;
+
protected:
/**
/**
Destructor.
*/
- virtual ~wxDataViewIndexListModel();
+ virtual ~wxDataViewListModel();
/**
Compare method that sorts the items by their index.
/**
Returns the number of items (or rows) in the list.
*/
- unsigned int GetCount() const;
-
- /**
- Returns the wxDataViewItem at the given @e row.
- */
- wxDataViewItem GetItem(unsigned int row) const;
+ unsigned int GetCount() const = 0;
/**
Returns the position of given @e item.
*/
- unsigned int GetRow(const wxDataViewItem& item) const;
+ unsigned int GetRow(const wxDataViewItem& item) const = 0;
/**
Override this to allow getting values from the model.
*/
virtual void GetValueByRow(wxVariant& variant, unsigned int row,
- unsigned int col) const = 0;
+ unsigned int col) const = 0;
+
+ /**
+ Called in order to set a value in the model.
+ */
+ virtual bool SetValueByRow(const wxVariant& variant, unsigned int row,
+ unsigned int col) = 0;
+};
+
+
+/**
+ @class wxDataViewIndexListModel
+
+ 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.
+
+ @see wxDataViewListModel for the API.
+
+ @library{wxadv}
+ @category{dvc}
+*/
+
+class wxDataViewIndexListModel : public wxDataViewListModel
+{
+public:
+ /**
+ Constructor.
+ */
+ wxDataViewIndexListModel(unsigned int initial_size = 0);
+
+ /**
+ Returns the wxDataViewItem at the given @e row.
+ */
+ wxDataViewItem GetItem(unsigned int row) const;
/**
Call this after if the data has to be read again from the model.
*/
void RowsDeleted(const wxArrayInt& rows);
- /**
- Called in order to set a value in the model.
- */
- virtual bool SetValueByRow(const wxVariant& variant, unsigned int row,
- unsigned int col) = 0;
-};
-
-
-/**
- @class wxDataViewIndexListModel
-
- 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.
-
- @see wxDataViewListModel for the API.
-
- @library{wxadv}
- @category{dvc}
-*/
-
-class wxDataViewIndexListModel : public wxDataViewListModel
-{
-public:
- /**
- Constructor.
- */
- wxDataViewIndexListModel(unsigned int initial_size = 0);
-
};
/**
*/
wxDataViewVirtualListModel(unsigned int initial_size = 0);
+ /**
+ Returns the wxDataViewItem at the given @e row.
+ */
+ wxDataViewItem GetItem(unsigned int row) 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);
+
};
Call this to indicate that the item shall be displayed in italic text.
*/
void SetItalic(bool set);
+
+
+ /**
+ Returns true if the colour property has been set.
+ */
+ bool HasColour() const;
+
+ /**
+ Returns this attribute's colour.
+ */
+ const wxColour& GetColour() const;
+
+ /**
+ Returns true if any property affecting the font has been set.
+ */
+ bool HasFont() const;
+
+ /**
+ Returns value of the bold property.
+ */
+ bool GetBold() const;
+
+ /**
+ Returns value of the italics property.
+ */
+ bool GetItalic() const;
+
+ /**
+ Returns true if the background colour property has been set.
+ */
+ bool HasBackgroundColour() const;
+
+ /**
+ Returns the colour to be used for the background.
+ */
+ const wxColour& GetBackgroundColour() const;
+
+ /**
+ Returns true if none of the properties have been set.
+ */
+ bool IsDefault() const;
+
+ /**
+ Return the font based on the given one with this attribute applied to it.
+ */
+ wxFont GetEffectiveFont(const wxFont& font) const;
};
@event{EVT_DATAVIEW_SELECTION_CHANGED(id, func)}
Process a @c wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED event.
@event{EVT_DATAVIEW_ITEM_ACTIVATED(id, func)}
- Process a @c wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED event.
+ Process a @c wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED event. This event
+ is triggered by double clicking an item or pressing some special key
+ (usually "Enter") when it is focused.
@event{EVT_DATAVIEW_ITEM_START_EDITING(id, func)}
Process a @c wxEVT_COMMAND_DATAVIEW_ITEM_START_EDITING event. This
event can be vetoed in order to prevent editing on an item by item
Process a @c wxEVT_COMMAND_DATAVIEW_ITEM_DROP event.
@endEventTable
+ Notice that this control doesn't allow to process generic mouse events such
+ as @c wxEVT_LEFT_DOWN in all ports (notably it doesn't work in wxGTK). If
+ you need to handle any mouse events not covered by the ones above, consider
+ using a custom renderer for the cells that must handle them.
+
@library{wxadv}
@category{ctrl,dvc}
- @appearance{dataviewctrl.png}
+ @appearance{dataviewctrl}
*/
class wxDataViewCtrl : public wxControl
{
*/
virtual ~wxDataViewCtrl();
+ /**
+ Create the control. Useful for two step creation.
+ */
+ bool Create(wxWindow* parent, wxWindowID id,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxDataViewCtrlNameStr);
+
/**
Appends a wxDataViewColumn to the control. Returns @true on success.
int flags = wxDATAVIEW_COL_RESIZABLE);
//@}
+ //@{
+ /**
+ Prepends a column for rendering a bitmap. Returns the wxDataViewColumn
+ created in the function or @NULL on failure.
+ */
+ wxDataViewColumn* PrependBitmapColumn(const wxString& label,
+ unsigned int model_column,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+ int width = -1,
+ wxAlignment align = wxALIGN_CENTER,
+ int flags = wxDATAVIEW_COL_RESIZABLE);
+ wxDataViewColumn* PrependBitmapColumn(const wxBitmap& label,
+ unsigned int model_column,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+ int width = -1,
+ wxAlignment align = wxALIGN_CENTER,
+ int flags = wxDATAVIEW_COL_RESIZABLE);
+ //@}
+
//@{
/**
Appends a column for rendering a date. Returns the wxDataViewColumn
int flags = wxDATAVIEW_COL_RESIZABLE);
//@}
+ //@{
+ /**
+ Prepends a column for rendering a date. Returns the wxDataViewColumn
+ created in the function or @NULL on failure.
+
+ @note The @a align parameter is applied to both the column header and
+ the column renderer.
+ */
+ wxDataViewColumn* PrependDateColumn(const wxString& label,
+ unsigned int model_column,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE,
+ int width = -1,
+ wxAlignment align = wxALIGN_NOT,
+ int flags = wxDATAVIEW_COL_RESIZABLE);
+ wxDataViewColumn* PrependDateColumn(const wxBitmap& label,
+ unsigned int model_column,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE,
+ int width = -1,
+ wxAlignment align = wxALIGN_NOT,
+ int flags = wxDATAVIEW_COL_RESIZABLE);
+ //@}
+
//@{
/**
Appends a column for rendering text with an icon. Returns the wxDataViewColumn
int flags = wxDATAVIEW_COL_RESIZABLE);
//@}
+ //@{
+ /**
+ Prepends a column for rendering text with an icon. Returns the wxDataViewColumn
+ created in the function or @NULL on failure.
+ This method uses the wxDataViewIconTextRenderer class.
+
+ @note The @a align parameter is applied to both the column header and
+ the column renderer.
+ */
+ wxDataViewColumn* PrependIconTextColumn(const wxString& label,
+ unsigned int model_column,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+ int width = -1,
+ wxAlignment align = wxALIGN_NOT,
+ int flags = wxDATAVIEW_COL_RESIZABLE);
+ wxDataViewColumn* PrependIconTextColumn(const wxBitmap& label,
+ unsigned int model_column,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+ int width = -1,
+ wxAlignment align = wxALIGN_NOT,
+ int flags = wxDATAVIEW_COL_RESIZABLE);
+ //@}
+
//@{
/**
Appends a column for rendering a progress indicator. Returns the
int flags = wxDATAVIEW_COL_RESIZABLE);
//@}
+ //@{
+ /**
+ Prepends a column for rendering a progress indicator. Returns the
+ wxDataViewColumn created in the function or @NULL on failure.
+
+ @note The @a align parameter is applied to both the column header and
+ the column renderer.
+ */
+ wxDataViewColumn* PrependProgressColumn(const wxString& label,
+ unsigned int model_column,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+ int width = 80,
+ wxAlignment align = wxALIGN_CENTER,
+ int flags = wxDATAVIEW_COL_RESIZABLE);
+ wxDataViewColumn* PrependProgressColumn(const wxBitmap& label,
+ unsigned int model_column,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+ int width = 80,
+ wxAlignment align = wxALIGN_CENTER,
+ int flags = wxDATAVIEW_COL_RESIZABLE);
+ //@}
+
//@{
/**
Appends a column for rendering text. Returns the wxDataViewColumn
int flags = wxDATAVIEW_COL_RESIZABLE);
//@}
+ //@{
+ /**
+ Prepends a column for rendering text. Returns the wxDataViewColumn
+ created in the function or @NULL on failure.
+
+ @note The @a align parameter is applied to both the column header and
+ the column renderer.
+ */
+ wxDataViewColumn* PrependTextColumn(const wxString& label,
+ unsigned int model_column,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+ int width = -1,
+ wxAlignment align = wxALIGN_NOT,
+ int flags = wxDATAVIEW_COL_RESIZABLE);
+ wxDataViewColumn* PrependTextColumn(const wxBitmap& label,
+ unsigned int model_column,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+ int width = -1,
+ wxAlignment align = wxALIGN_NOT,
+ int flags = wxDATAVIEW_COL_RESIZABLE);
+ //@}
+
//@{
/**
Appends a column for rendering a toggle. Returns the wxDataViewColumn
int flags = wxDATAVIEW_COL_RESIZABLE);
//@}
+ //@{
+ /**
+ Prepends a column for rendering a toggle. Returns the wxDataViewColumn
+ created in the function or @NULL on failure.
+
+ @note The @a align parameter is applied to both the column header and
+ the column renderer.
+ */
+ wxDataViewColumn* PrependToggleColumn(const wxString& label,
+ unsigned int model_column,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+ int width = 30,
+ wxAlignment align = wxALIGN_CENTER,
+ int flags = wxDATAVIEW_COL_RESIZABLE);
+ wxDataViewColumn* PrependToggleColumn(const wxBitmap& label,
+ unsigned int model_column,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
+ int width = 30,
+ wxAlignment align = wxALIGN_CENTER,
+ int flags = wxDATAVIEW_COL_RESIZABLE);
+ //@}
+
/**
Associates a wxDataViewModel with the control.
This increases the reference count of the model by 1.
*/
virtual void Collapse(const wxDataViewItem& item);
- /**
- Create the control. Useful for two step creation.
- */
- bool Create(wxWindow* parent, wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxDataViewCtrlNameStr);
-
/**
Deletes given column.
*/
- wxDataViewSpinRenderer.
- wxDataViewChoiceRenderer.
- Additionally, the user can write own renderers by deriving from
+ Additionally, the user can write their own renderers by deriving from
wxDataViewCustomRenderer.
The ::wxDataViewCellMode and ::wxDataViewCellRenderState flags accepted
editing process finished.
*/
virtual bool Validate(wxVariant& value);
+
+
+ virtual bool HasEditorCtrl() const;
+ virtual wxWindow* CreateEditorCtrl(wxWindow * parent,
+ wxRect labelRect,
+ const wxVariant& value);
+ virtual bool GetValueFromEditorCtrl(wxWindow * editor,
+ wxVariant& value);
+ virtual bool StartEditing( const wxDataViewItem &item, wxRect labelRect );
+ virtual void CancelEditing();
+ virtual bool FinishEditing();
+ wxWindow *GetEditorCtrl();
+
+protected:
+ wxDataViewCtrl* GetView() const;
};
/**
- @class wxDataViewChoiceRenderer
+ A wxDataViewCtrl renderer using wxChoice control and values of strings in
+ it.
This class is used by wxDataViewCtrl to render choice controls.
It stores a string so that SetValue() and GetValue() operate
on a variant holding a string.
+ @see wxDataViewChoiceByIndexRenderer
+
@library{wxadv}
@category{dvc}
*/
Returns the choice referred to by index.
*/
wxString GetChoice(size_t index) const;
-
+
/**
Returns all choices.
*/
};
+/**
+ A wxDataViewCtrl renderer using wxChoice control and indexes into it.
+
+ Unlike its base wxDataViewChoiceRenderer class, this one stores the choice
+ index, i.e. an @c int, in the variant used by its SetValue() and
+ GetValue().
+
+ @library{wxadv}
+ @category{dvc}
+*/
+class wxDataViewChoiceByIndexRenderer : public wxDataViewChoiceRenderer
+{
+public:
+ /**
+ The ctor.
+ */
+ wxDataViewChoiceByIndexRenderer( const wxArrayString &choices,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE,
+ int alignment = wxDVR_DEFAULT_ALIGNMENT );
+};
+
+
/**
@class wxDataViewDateRenderer
*/
wxDataViewCustomRenderer(const wxString& varianttype = "string",
wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
- int align = -1, bool no_init = false);
+ int align = wxDVR_DEFAULT_ALIGNMENT);
/**
Destructor.
wxDataViewModel* model,
const wxDataViewItem & item,
unsigned int col);
+
+protected:
+ /**
+ Helper for GetSize() implementations, respects attributes.
+ */
+ wxSize GetTextExtent(const wxString& str) const;
};
/**
Appends an item (=row) to the control and store.
*/
- void AppendItem( const wxVector<wxVariant> &values, wxClientData *data = NULL );
+ void AppendItem( const wxVector<wxVariant> &values, wxUIntPtr data = NULL );
/**
Prepends an item (=row) to the control and store.
*/
- void PrependItem( const wxVector<wxVariant> &values, wxClientData *data = NULL );
+ void PrependItem( const wxVector<wxVariant> &values, wxUIntPtr data = NULL );
/**
Inserts an item (=row) to the control and store.
*/
- void InsertItem( unsigned int row, const wxVector<wxVariant> &values, wxClientData *data = NULL );
+ void InsertItem( unsigned int row, const wxVector<wxVariant> &values, wxUIntPtr data = NULL );
/**
Delete the row at position @a row.
*/
void DeleteAllItems();
+ /**
+ Returns the number of items (=rows) in the control
+
+ @since 2.9.4
+ */
+ unsigned int GetItemCount() const;
+
+ /**
+ Returns the client data associated with the item.
+
+ @see SetItemData()
+
+ @since 2.9.4
+ */
+ wxUIntPtr GetItemData(const wxDataViewItem& item) const;
+
/**
Sets the value in the store and update the control.
*/
*/
bool GetToggleValue( unsigned int row, unsigned int col ) const;
+ /**
+ Associates a client data pointer with the given item.
+
+ Notice that the control does @e not take ownership of the pointer for
+ compatibility with wxListCtrl. I.e. it will @e not delete the pointer
+ (if it is a pointer and not a number) itself, it is up to you to do it.
+
+ @see GetItemData()
+
+ @since 2.9.4
+ */
+ void SetItemData(const wxDataViewItem& item, wxUIntPtr data);
+
//@}
};
@library{wxadv}
@category{ctrl,dvc}
- @appearance{dataviewtreectrl.png}
+ @appearance{dataviewtreectrl}
*/
class wxDataViewTreeCtrl : public wxDataViewCtrl
{
in number and type. No (default) values are filled in
automatically.
*/
- void AppendItem( const wxVector<wxVariant> &values, wxClientData *data = NULL );
+ void AppendItem( const wxVector<wxVariant> &values, wxUIntPtr data = NULL );
/**
Prepends an item (=row) and fills it with @a values.
in number and type. No (default) values are filled in
automatically.
*/
- void PrependItem( const wxVector<wxVariant> &values, wxClientData *data = NULL );
+ void PrependItem( const wxVector<wxVariant> &values, wxUIntPtr data = NULL );
/**
Inserts an item (=row) and fills it with @a values.
in number and type. No (default) values are filled in
automatically.
*/
- void InsertItem( unsigned int row, const wxVector<wxVariant> &values, wxClientData *data = NULL );
+ void InsertItem( unsigned int row, const wxVector<wxVariant> &values, wxUIntPtr data = NULL );
/**
Delete the item (=row) at position @a pos.
*/
void DeleteAllItems();
+ /**
+ Returns the number of items (=rows) in the control
+
+ @since 2.9.4
+ */
+ unsigned int GetItemCount() const;
+
+ /**
+ Returns the client data associated with the item.
+
+ @see SetItemData()
+
+ @since 2.9.4
+ */
+ wxUIntPtr GetItemData(const wxDataViewItem& item) const;
+
/**
Overridden from wxDataViewModel
*/
*/
virtual wxString GetColumnType( unsigned int col ) const;
+ /**
+ Sets the client data associated with the item.
+
+ Notice that this class does @e not take ownership of the passed in
+ pointer and will not delete it.
+
+ @see GetItemData()
+
+ @since 2.9.4
+ */
+ void SetItemData(const wxDataViewItem& item, wxUIntPtr data);
+
/**
Overridden from wxDataViewIndexListModel
*/
Process a @c wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED event.
@event{EVT_DATAVIEW_COLUMN_REORDERED(id, func)}
Process a @c wxEVT_COMMAND_DATAVIEW_COLUMN_REORDERED event.
+ Currently this even is only generated when using the native OSX
+ version.
@event{EVT_DATAVIEW_ITEM_BEGIN_DRAG(id, func)}
Process a @c wxEVT_COMMAND_DATAVIEW_ITEM_BEGIN_DRAG event.
@event{EVT_DATAVIEW_ITEM_DROP_POSSIBLE(id, func)}
*/
void *GetDataBuffer() const;
+ /**
+ Specify the kind of the drag operation to perform.
+
+ This method can be used inside a wxEVT_COMMAND_DATAVIEW_ITEM_BEGIN_DRAG
+ handler in order to configure the drag operation. Valid values are
+ ::wxDrag_CopyOnly (default), ::wxDrag_AllowMove (allow the data to be
+ moved) and ::wxDrag_DefaultMove.
+
+ Currently it is only honoured by the generic version of wxDataViewCtrl
+ (used e.g. under MSW) and not supported by the native GTK and OS X
+ versions.
+
+ @see GetDropEffect()
+
+ @since 2.9.4
+ */
+ void SetDragFlags(int flags);
+
+ /**
+ Returns the effect the user requested to happen to the dropped data.
+
+ This function can be used inside
+ wxEVT_COMMAND_DATAVIEW_ITEM_DROP_POSSIBLE and
+ wxEVT_COMMAND_DATAVIEW_ITEM_DROP handlers and returns whether the user
+ is trying to copy (the return value is ::wxDragCopy) or move (if the
+ return value is ::wxDragMove) the data.
+
+ Currently this is only available when using the generic version of
+ wxDataViewCtrl (used e.g. under MSW) and always returns ::wxDragNone in
+ the GTK and OS X native versions.
+
+ @since 2.9.4
+ */
+ wxDragResult GetDropEffect() const;
+
/**
Return the first row that will be displayed.
*/
Return the last row that will be displayed.
*/
int GetCacheTo() const;
+
+
+
+
+ wxDataViewItem GetItem() const;
+ void SetItem( const wxDataViewItem &item );
+ void SetEditCanceled(bool editCancelled);
+ void SetPosition( int x, int y );
+ void SetCache(int from, int to);
+ wxDataObject *GetDataObject() const;
+ void SetDataFormat( const wxDataFormat &format );
+ void SetDataSize( size_t size );
+ void SetDataBuffer( void* buf );
+ int GetDragFlags() const;
+ void SetDropEffect( wxDragResult effect );
+
};