X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7ed24cb652413094e211940d7177d89e9fc805f5..fceac6bbfe23180d460ef62dac83c591d9e0f941:/interface/wx/dataview.h diff --git a/interface/wx/dataview.h b/interface/wx/dataview.h index 83aaa4779e..1acce35939 100644 --- a/interface/wx/dataview.h +++ b/interface/wx/dataview.h @@ -580,6 +580,16 @@ public: */ void SetColour(const wxColour& colour); + /** + Call this to set the background colour to use. + + Currently this attribute is only supported in the generic version of + wxDataViewCtrl and ignored by the native GTK+ and OS X implementations. + + @since 2.9.4 + */ + void SetBackgroundColour(const wxColour& colour); + /** Call this to indicate that the item shall be displayed in italic text. */ @@ -661,6 +671,31 @@ public: #define wxDV_ROW_LINES 0x0010 // alternating colour in rows #define wxDV_VARIABLE_LINE_HEIGHT 0x0020 // variable line height +// events + +wxEventType wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED; + +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED; +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING; +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED; +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING; +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED; +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_START_EDITING; +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED; +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE; +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED; + +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU; + +wxEventType wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK; +wxEventType wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK; +wxEventType wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED; +wxEventType wxEVT_COMMAND_DATAVIEW_COLUMN_REORDERED; +wxEventType wxEVT_COMMAND_DATAVIEW_CACHE_HINT; + +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_BEGIN_DRAG; +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_DROP_POSSIBLE; +wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_DROP; /** @class wxDataViewCtrl @@ -717,9 +752,9 @@ public: @event{EVT_DATAVIEW_ITEM_ACTIVATED(id, func)} Process a @c wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED event. @event{EVT_DATAVIEW_ITEM_START_EDITING(id, func)} - Process a @c wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED event. This + 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 - basis. Still experimental. + basis. @event{EVT_DATAVIEW_ITEM_EDITING_STARTED(id, func)} Process a @c wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED event. @event{EVT_DATAVIEW_ITEM_EDITING_DONE(id, func)} @@ -1243,34 +1278,46 @@ public: /** Called by owning model. + + @return Always return @true from this function in derived classes. */ virtual bool ItemAdded(const wxDataViewItem& parent, const wxDataViewItem& item) = 0; /** Called by owning model. + + @return Always return @true from this function in derived classes. */ virtual bool ItemChanged(const wxDataViewItem& item) = 0; /** Called by owning model. + + @return Always return @true from this function in derived classes. */ virtual bool ItemDeleted(const wxDataViewItem& parent, const wxDataViewItem& item) = 0; /** Called by owning model. + + @return Always return @true from this function in derived classes. */ virtual bool ItemsAdded(const wxDataViewItem& parent, const wxDataViewItemArray& items); /** Called by owning model. + + @return Always return @true from this function in derived classes. */ virtual bool ItemsChanged(const wxDataViewItemArray& items); /** Called by owning model. + + @return Always return @true from this function in derived classes. */ virtual bool ItemsDeleted(const wxDataViewItem& parent, const wxDataViewItemArray& items); @@ -1287,6 +1334,8 @@ public: /** Called by owning model. + + @return Always return @true from this function in derived classes. */ virtual bool ValueChanged(const wxDataViewItem& item, unsigned int col) = 0; }; @@ -1297,18 +1346,54 @@ public: */ enum wxDataViewCellMode { + /** + The cell only displays information and cannot be manipulated or + otherwise interacted with in any way. + + Note that this doesn't mean that the row being drawn can't be selected, + just that a particular element of it cannot be individually modified. + */ wxDATAVIEW_CELL_INERT, /** - Indicates that the user can double click the cell and something will - happen (e.g. a window for editing a date will pop up). + Indicates that the cell can be @em activated by clicking it or using + keyboard. + + Activating a cell is an alternative to showing inline editor when the + value can be edited in a simple way that doesn't warrant full editor + control. The most typical use of cell activation is toggling the + checkbox in wxDataViewToggleRenderer; others would be e.g. an embedded + volume slider or a five-star rating column. + + The exact means of activating a cell are platform-dependent, but they + are usually similar to those used for inline editing of values. + Typically, a cell would be activated by Space or Enter keys or by left + mouse click. + + @note Do not confuse this with item activation in wxDataViewCtrl + and the wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED event. That one is + used for activating the item (or, to put it differently, the + entire row) similarly to analogous messages in wxTreeCtrl and + wxListCtrl, and the effect differs (play a song, open a file + etc.). Cell activation, on the other hand, is all about + interacting with the individual cell. + + @see wxDataViewCustomRenderer::ActivateCell() */ wxDATAVIEW_CELL_ACTIVATABLE, /** - Indicates that the user can edit the data in-place, i.e. an control - will show up after a slow click on the cell. This behaviour is best - known from changing the filename in most file managers etc. + Indicates that the user can edit the data in-place in an inline editor + control that will show up when the user wants to edit the cell. + + A typical example of this behaviour is changing the filename in a file + managers. + + Editing is typically triggered by slowly double-clicking the cell or by + a platform-dependent keyboard shortcut (F2 is typical on Windows, Space + and/or Enter is common elsewhere and supported on Windows too). + + @see wxDataViewCustomRenderer::CreateEditorCtrl() */ wxDATAVIEW_CELL_EDITABLE }; @@ -1667,20 +1752,72 @@ public: virtual ~wxDataViewCustomRenderer(); /** - Override this to react to double clicks or ENTER. - This method will only be called in wxDATAVIEW_CELL_ACTIVATABLE mode. + Override this to react to cell @em activation. Activating a cell is an + alternative to showing inline editor when the value can be edited in a + simple way that doesn't warrant full editor control. The most typical + use of cell activation is toggling the checkbox in + wxDataViewToggleRenderer; others would be e.g. an embedded volume + slider or a five-star rating column. + + The exact means of activating a cell are platform-dependent, but they + are usually similar to those used for inline editing of values. + Typically, a cell would be activated by Space or Enter keys or by left + mouse click. + + This method will only be called if the cell has the + wxDATAVIEW_CELL_ACTIVATABLE mode. + + @param cell + Coordinates of the activated cell's area. + @param model + The model to manipulate in response. + @param item + Activated item. + @param col + Activated column of @a item. + @param mouseEvent + If the activation was triggered by mouse click, contains the + corresponding event. Is @NULL otherwise (for keyboard activation). + Mouse coordinates are adjusted to be relative to the cell. + + @since 2.9.3 + + @note Do not confuse this method with item activation in wxDataViewCtrl + and the wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED event. That one is + used for activating the item (or, to put it differently, the + entire row) similarly to analogous messages in wxTreeCtrl and + wxListCtrl, and the effect differs (play a song, open a file + etc.). Cell activation, on the other hand, is all about + interacting with the individual cell. + + @see CreateEditorCtrl() */ - virtual bool Activate( const wxRect& cell, - wxDataViewModel* model, - const wxDataViewItem & item, - unsigned int col ); + virtual bool ActivateCell(const wxRect& cell, + wxDataViewModel* model, + const wxDataViewItem & item, + unsigned int col, + const wxMouseEvent *mouseEvent); /** 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: + This method will only be called if the cell has the + wxDATAVIEW_CELL_EDITABLE mode. Editing is typically triggered by slowly + double-clicking the cell or by a platform-dependent keyboard shortcut + (F2 is typical on Windows, Space and/or Enter is common elsewhere and + supported on Windows too). + + @param parent + The parent of the editor control. + @param labelRect + Indicates the position and size of the editor control. The control + should be created in place of the cell and @a labelRect should be + respected as much as possible. + @param value + Initial value of the editor. + + An example: @code { long l = value; @@ -1688,6 +1825,8 @@ public: labelRect.GetTopLeft(), labelRect.GetSize(), 0, 0, 100, l ); } @endcode + + @see ActivateCell() */ virtual wxWindow* CreateEditorCtrl(wxWindow* parent, wxRect labelRect,