]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/dataview.h
fix parent class and constant
[wxWidgets.git] / interface / wx / dataview.h
index 4947ed44ede781bb71ba7add6a72f31b057def62..e6260676f30936c8be1788899ad62ac2ceb48d79 100644 (file)
@@ -167,6 +167,33 @@ public:
     virtual bool GetAttr(const wxDataViewItem& item, unsigned int col,
                          wxDataViewItemAttr& attr) const;
 
     virtual bool GetAttr(const wxDataViewItem& item, unsigned int col,
                          wxDataViewItemAttr& attr) const;
 
+    /**
+        Override this to indicate that the item should be disabled.
+
+        Disabled items are displayed differently (e.g. grayed out) and cannot
+        be interacted with.
+
+        The base class version always returns @true, thus making all items
+        enabled by default.
+
+        @param item
+            The item whose enabled status is requested.
+        @param col
+            The column of the item whose enabled status is requested.
+        @return
+            @true if this item should be enabled, @false otherwise.
+
+        @note Currently disabling items is fully implemented only for the
+              native control implementation in wxOSX/Cocoa and wxGTK. 
+              This feature is only partially supported in the generic
+              version (used by wxMSW) and not supported by the wxOSX/Carbon
+              implementation.
+
+        @since 2.9.2
+    */
+    virtual bool IsEnabled(const wxDataViewItem &item,
+                           unsigned int col) const;
+
     /**
         Override this so the control can query the child items of an item.
         Returns the number of items.
     /**
         Override this so the control can query the child items of an item.
         Returns the number of items.
@@ -189,7 +216,7 @@ public:
 
     /**
         Override this to indicate which wxDataViewItem representing the parent
 
     /**
         Override this to indicate which wxDataViewItem representing the parent
-        of @a item or an invalid wxDataViewItem if the the root item is
+        of @a item or an invalid wxDataViewItem if the root item is
         the parent item.
     */
     virtual wxDataViewItem GetParent(const wxDataViewItem& item) const = 0;
         the parent item.
     */
     virtual wxDataViewItem GetParent(const wxDataViewItem& item) const = 0;
@@ -204,7 +231,7 @@ public:
     /**
         Override this method to indicate if a container item merely acts as a
         headline (or for categorisation) or if it also acts a normal item with
     /**
         Override this method to indicate if a container item merely acts as a
         headline (or for categorisation) or if it also acts a normal item with
-        entries for futher columns. By default returns @false.
+        entries for further columns. By default returns @false.
     */
     virtual bool HasContainerColumns(const wxDataViewItem& item) const;
 
     */
     virtual bool HasContainerColumns(const wxDataViewItem& item) const;
 
@@ -249,7 +276,7 @@ public:
     /**
         Call this to inform the model that an item has changed.
 
     /**
         Call this to inform the model that an item has changed.
 
-        This will eventually emit a wxEVT_DATAVIEW_ITEM_VALUE_CHANGED
+        This will eventually emit a @c wxEVT_DATAVIEW_ITEM_VALUE_CHANGED
         event (in which the column fields will not be set) to the user.
     */
     bool ItemChanged(const wxDataViewItem& item);
         event (in which the column fields will not be set) to the user.
     */
     bool ItemChanged(const wxDataViewItem& item);
@@ -269,7 +296,7 @@ public:
     /**
         Call this to inform the model that several items have changed.
 
     /**
         Call this to inform the model that several items have changed.
 
-        This will eventually emit wxEVT_DATAVIEW_ITEM_VALUE_CHANGED
+        This will eventually emit @c wxEVT_DATAVIEW_ITEM_VALUE_CHANGED
         events (in which the column fields will not be set) to the user.
     */
     bool ItemsChanged(const wxDataViewItemArray& items);
         events (in which the column fields will not be set) to the user.
     */
     bool ItemsChanged(const wxDataViewItemArray& items);
@@ -310,7 +337,7 @@ public:
         This is also called from wxDataViewCtrl's internal editing code, e.g. when
         editing a text field in the control.
 
         This is also called from wxDataViewCtrl's internal editing code, e.g. when
         editing a text field in the control.
 
-        This will eventually emit a wxEVT_DATAVIEW_ITEM_VALUE_CHANGED
+        This will eventually emit a @c wxEVT_DATAVIEW_ITEM_VALUE_CHANGED
         event to the user.
     */
     virtual bool ValueChanged(const wxDataViewItem& item,
         event to the user.
     */
     virtual bool ValueChanged(const wxDataViewItem& item,
@@ -327,28 +354,17 @@ protected:
 
 
 /**
 
 
 /**
-    @class wxDataViewIndexListModel
+    @class wxDataViewListModel
 
 
-    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.
+    Base class with abstract API for wxDataViewIndexListModel and
+    wxDataViewVirtualListModel.
 
     @library{wxadv}
     @category{dvc}
 */
 
     @library{wxadv}
     @category{dvc}
 */
-class wxDataViewIndexListModel : public wxDataViewModel
+class wxDataViewListModel : public wxDataViewModel
 {
 public:
 {
 public:
-    /**
-        Constructor.
-    */
-    wxDataViewIndexListModel(unsigned int initial_size = 0);
 
     /**
         Destructor.
 
     /**
         Destructor.
@@ -383,7 +399,29 @@ public:
                          wxDataViewItemAttr& attr) const;
 
     /**
                          wxDataViewItemAttr& attr) const;
 
     /**
-        Returns the number of items (i.e. rows) in the list.
+        Override this if you want to disable specific items.
+
+        The base class version always returns @true, thus making all items
+        enabled by default.
+
+        @param row
+            The row of the item whose enabled status is requested.
+        @param col
+            The column of the item whose enabled status is requested.
+        @return
+            @true if the item at this row and column should be enabled,
+            @false otherwise.
+
+        @note See wxDataViewModel::IsEnabled() for the current status of
+              support for disabling the items under different platforms.
+
+        @since 2.9.2
+    */
+    virtual bool IsEnabledByRow(unsigned int row,
+                                unsigned int col) const;
+
+    /**
+        Returns the number of items (or rows) in the list.
     */
     unsigned int GetCount() const;
 
     */
     unsigned int GetCount() const;
 
@@ -455,6 +493,34 @@ public:
 };
 
 
 };
 
 
+/**
+    @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);
+
+};
 
 /**
     @class wxDataViewVirtualListModel
 
 /**
     @class wxDataViewVirtualListModel
@@ -464,15 +530,15 @@ public:
     the exact same interface as wxDataViewIndexListModel.
     The important difference is that under platforms other than OS X, using this
     model will result in a truly virtual control able to handle millions of items
     the exact same interface as wxDataViewIndexListModel.
     The important difference is that under platforms other than OS X, using this
     model will result in a truly 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).
+    as the control doesn't store any item (a feature not supported by OS X).
 
 
-    @see wxDataViewIndexListModel for the API.
+    @see wxDataViewListModel for the API.
 
     @library{wxadv}
     @category{dvc}
 */
 
     @library{wxadv}
     @category{dvc}
 */
-class wxDataViewVirtualListModel : public wxDataViewModel
+
+class wxDataViewVirtualListModel : public wxDataViewListModel
 {
 public:
     /**
 {
 public:
     /**
@@ -480,10 +546,6 @@ public:
     */
     wxDataViewVirtualListModel(unsigned int initial_size = 0);
 
     */
     wxDataViewVirtualListModel(unsigned int initial_size = 0);
 
-    /**
-        Returns the number of virtual items (i.e. rows) in the list.
-    */
-    unsigned int GetCount() const;
 };
 
 
 };
 
 
@@ -552,8 +614,9 @@ public:
     /**
         Constructor.
     */
     /**
         Constructor.
     */
-    wxDataViewItem(void* id = NULL);
+    wxDataViewItem();
     wxDataViewItem(const wxDataViewItem& item);
     wxDataViewItem(const wxDataViewItem& item);
+    explicit wxDataViewItem(void* id);
     //@}
 
     /**
     //@}
 
     /**
@@ -568,6 +631,61 @@ public:
 };
 
 
 };
 
 
+// ----------------------------------------------------------------------------
+// wxDataViewCtrl flags
+// ----------------------------------------------------------------------------
+
+// size of a wxDataViewRenderer without contents:
+#define wxDVC_DEFAULT_RENDERER_SIZE     20
+
+// the default width of new (text) columns:
+#define wxDVC_DEFAULT_WIDTH             80
+
+// the default width of new toggle columns:
+#define wxDVC_TOGGLE_DEFAULT_WIDTH      30
+
+// the default minimal width of the columns:
+#define wxDVC_DEFAULT_MINWIDTH          30
+
+// The default alignment of wxDataViewRenderers is to take
+// the alignment from the column it owns.
+#define wxDVR_DEFAULT_ALIGNMENT         -1
+
+#define wxDV_SINGLE                  0x0000     // for convenience
+#define wxDV_MULTIPLE                0x0001     // can select multiple items
+
+#define wxDV_NO_HEADER               0x0002     // column titles not visible
+#define wxDV_HORIZ_RULES             0x0004     // light horizontal rules between rows
+#define wxDV_VERT_RULES              0x0008     // light vertical rules between columns
+
+#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
 
 /**
     @class wxDataViewCtrl
@@ -605,6 +723,8 @@ public:
            Multiple selection mode.
     @style{wxDV_ROW_LINES}
            Use alternating colours for rows if supported by platform and theme.
            Multiple selection mode.
     @style{wxDV_ROW_LINES}
            Use alternating colours for rows if supported by platform and theme.
+           Currently only supported by the native GTK and OS X implementations
+           but not by the generic one.
     @style{wxDV_HORIZ_RULES}
            Display fine rules between row if supported.
     @style{wxDV_VERT_RULES}
     @style{wxDV_HORIZ_RULES}
            Display fine rules between row if supported.
     @style{wxDV_VERT_RULES}
@@ -640,7 +760,11 @@ public:
     @event{EVT_DATAVIEW_ITEM_VALUE_CHANGED(id, func)}
            Process a @c wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED event.
     @event{EVT_DATAVIEW_ITEM_CONTEXT_MENU(id, func)}
     @event{EVT_DATAVIEW_ITEM_VALUE_CHANGED(id, func)}
            Process a @c wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED event.
     @event{EVT_DATAVIEW_ITEM_CONTEXT_MENU(id, func)}
-           Process a @c wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU event.
+           Process a @c wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU event
+           generated when the user right clicks inside the control. Notice that
+           this menu is generated even if the click didn't occur on any valid
+           item, in this case wxDataViewEvent::GetItem() simply returns an
+           invalid item.
     @event{EVT_DATAVIEW_COLUMN_HEADER_CLICK(id, func)}
            Process a @c wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICKED event.
     @event{EVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK(id, func)}
     @event{EVT_DATAVIEW_COLUMN_HEADER_CLICK(id, func)}
            Process a @c wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICKED event.
     @event{EVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK(id, func)}
@@ -951,13 +1075,35 @@ public:
     */
     wxDataViewModel* GetModel();
 
     */
     wxDataViewModel* GetModel();
 
+    /**
+        Returns the number of currently selected items.
+
+        This method may be called for both the controls with single and
+        multiple selections and returns the number of selected item, possibly
+        0, in any case.
+
+        @since 2.9.3
+     */
+    virtual int GetSelectedItemsCount() const;
+
     /**
         Returns first selected item or an invalid item if none is selected.
     /**
         Returns first selected item or an invalid item if none is selected.
+
+        This method may be called for both the controls with single and
+        multiple selections but returns an invalid item if more than one item
+        is selected in the latter case, use HasSelection() to determine if
+        there are any selected items when using multiple selection.
     */
     virtual wxDataViewItem GetSelection() const;
 
     /**
         Fills @a sel with currently selected items and returns their number.
     */
     virtual wxDataViewItem GetSelection() const;
 
     /**
         Fills @a sel with currently selected items and returns their number.
+
+        This method may be called for both the controls with single and
+        multiple selections. In the single selection case it returns the array
+        with at most one element in it.
+
+        @see GetSelectedItemsCount()
     */
     virtual int GetSelections(wxDataViewItemArray& sel) const;
 
     */
     virtual int GetSelections(wxDataViewItemArray& sel) const;
 
@@ -967,6 +1113,20 @@ public:
     */
     virtual wxDataViewColumn* GetSortingColumn() const;
 
     */
     virtual wxDataViewColumn* GetSortingColumn() const;
 
+    /**
+        Returns true if any items are currently selected.
+
+        This method may be called for both the controls with single and
+        multiple selections.
+
+        Calling this method is equivalent to calling GetSelectedItemsCount()
+        and comparing its result with 0 but is more clear and might also be
+        implemented more efficiently in the future.
+
+        @since 2.9.3
+     */
+    bool HasSelection() const;
+
     /**
         Hittest.
     */
     /**
         Hittest.
     */
@@ -1022,7 +1182,7 @@ public:
     void SetCurrentItem(const wxDataViewItem& item);
 
     /**
     void SetCurrentItem(const wxDataViewItem& item);
 
     /**
-        Sets the indendation.
+        Sets the indentation.
     */
     void SetIndent(int indent);
 
     */
     void SetIndent(int indent);
 
@@ -1031,6 +1191,14 @@ public:
     */
     virtual void SetSelections(const wxDataViewItemArray& sel);
 
     */
     virtual void SetSelections(const wxDataViewItemArray& sel);
 
+    /** 
+        Programmatically starts editing the given item on the given column.
+        Currently not implemented on wxOSX Carbon.
+        @since 2.9.2
+    */
+    
+    virtual void StartEditor(const wxDataViewItem & item, unsigned int column);
+
     /**
         Unselect the given item.
     */
     /**
         Unselect the given item.
     */
@@ -1041,6 +1209,26 @@ public:
         This method only has effect if multiple selections are allowed.
     */
     virtual void UnselectAll();
         This method only has effect if multiple selections are allowed.
     */
     virtual void UnselectAll();
+
+    /**
+        Sets the row height.
+
+        This function can only be used when all rows have the same height, i.e.
+        when wxDV_VARIABLE_LINE_HEIGHT flag is not used.
+
+        Currently this is implemented in the generic and native GTK versions
+        only and nothing is done (and @false returned) when using OS X port.
+
+        Also notice that this method can only be used to increase the row
+        height compared with the default one (as determined by the return value
+        of wxDataViewRenderer::GetSize()), if it is set to a too small value
+        then the minimum required by the renderers will be used.
+
+        @return @true if the line height was changed or @false otherwise.
+
+        @since 2.9.2
+    */
+    virtual bool SetRowHeight(int rowHeight);
 };
 
 
 };
 
 
@@ -1507,7 +1695,7 @@ public:
         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 double clicks or ENTER.
         This method will only be called in wxDATAVIEW_CELL_ACTIVATABLE mode.
     */
-    virtual bool Activate( wxRect cell,
+    virtual bool Activate( const wxRect& cell,
                            wxDataViewModel* model,
                            const wxDataViewItem & item,
                            unsigned int col );
                            wxDataViewModel* model,
                            const wxDataViewItem & item,
                            unsigned int col );
@@ -1526,9 +1714,9 @@ public:
         }
         @endcode
     */
         }
         @endcode
     */
-    virtual wxControl* CreateEditorCtrl(wxWindow* parent,
-                                        wxRect labelRect,
-                                        const wxVariant& value);
+    virtual wxWindow* CreateEditorCtrl(wxWindow* parent,
+                                       wxRect labelRect,
+                                       const wxVariant& value);
 
     /**
         Return the attribute to be used for rendering.
 
     /**
         Return the attribute to be used for rendering.
@@ -1563,7 +1751,7 @@ public:
         }
         @endcode
     */
         }
         @endcode
     */
-    virtual bool GetValueFromEditorCtrl(wxControl* editor,
+    virtual bool GetValueFromEditorCtrl(wxWindow* editor,
                                         wxVariant& value);
 
     /**
                                         wxVariant& value);
 
     /**
@@ -1576,8 +1764,8 @@ public:
         Override this to react to a left click.
         This method will only be called in @c wxDATAVIEW_CELL_ACTIVATABLE mode.
     */
         Override this to react to a left click.
         This method will only be called in @c wxDATAVIEW_CELL_ACTIVATABLE mode.
     */
-    virtual bool LeftClick( wxPoint cursor,
-                            wxRect cell,
+    virtual bool LeftClick( const wxPoint& cursor,
+                            const wxRect& cell,
                             wxDataViewModel * model,
                             const wxDataViewItem & item,
                             unsigned int col );
                             wxDataViewModel * model,
                             const wxDataViewItem & item,
                             unsigned int col );
@@ -1601,7 +1789,8 @@ public:
     /**
         Override this to start a drag operation. Not yet supported.
     */
     /**
         Override this to start a drag operation. Not yet supported.
     */
-    virtual bool StartDrag(wxPoint cursor, wxRect cell,
+    virtual bool StartDrag(const wxPoint& cursor,
+                           const wxRect& cell,
                            wxDataViewModel* model,
                            const wxDataViewItem & item,
                            unsigned int col);
                            wxDataViewModel* model,
                            const wxDataViewItem & item,
                            unsigned int col);
@@ -1989,7 +2178,7 @@ public:
     /**
          Sets the value in the store and update the control.
 
     /**
          Sets the value in the store and update the control.
 
-         This method assumes that the string is stored in respective
+         This method assumes that the string is stored in respective
          column.
     */
     void SetTextValue( const wxString &value, unsigned int row, unsigned int col );
          column.
     */
     void SetTextValue( const wxString &value, unsigned int row, unsigned int col );
@@ -1997,7 +2186,7 @@ public:
     /**
          Returns the value from the store.
 
     /**
          Returns the value from the store.
 
-         This method assumes that the string is stored in respective
+         This method assumes that the string is stored in respective
          column.
     */
     wxString GetTextValue( unsigned int row, unsigned int col ) const;
          column.
     */
     wxString GetTextValue( unsigned int row, unsigned int col ) const;
@@ -2005,7 +2194,7 @@ public:
     /**
          Sets the value in the store and update the control.
 
     /**
          Sets the value in the store and update the control.
 
-         This method assumes that the boolean value is stored in
+         This method assumes that the boolean value is stored in
          respective column.
     */
     void SetToggleValue( bool value, unsigned int row, unsigned int col );
          respective column.
     */
     void SetToggleValue( bool value, unsigned int row, unsigned int col );
@@ -2013,7 +2202,7 @@ public:
     /**
          Returns the value from the store.
 
     /**
          Returns the value from the store.
 
-         This method assumes that the boolean value is stored in
+         This method assumes that the boolean value is stored in
          respective column.
     */
     bool GetToggleValue( unsigned int row, unsigned int col ) const;
          respective column.
     */
     bool GetToggleValue( unsigned int row, unsigned int col ) const;
@@ -2328,23 +2517,23 @@ public:
     void DeleteAllItems();
 
     /**
     void DeleteAllItems();
 
     /**
-        Overriden from wxDataViewModel
+        Overridden from wxDataViewModel
     */
     virtual unsigned int GetColumnCount() const;
 
     /**
     */
     virtual unsigned int GetColumnCount() const;
 
     /**
-        Overriden from wxDataViewModel
+        Overridden from wxDataViewModel
     */
     virtual wxString GetColumnType( unsigned int col ) const;
 
     /**
     */
     virtual wxString GetColumnType( unsigned int col ) const;
 
     /**
-        Overriden from wxDataViewIndexListModel
+        Overridden from wxDataViewIndexListModel
     */
     virtual void GetValueByRow( wxVariant &value,
                            unsigned int row, unsigned int col ) const;
 
     /**
     */
     virtual void GetValueByRow( wxVariant &value,
                            unsigned int row, unsigned int col ) const;
 
     /**
-        Overriden from wxDataViewIndexListModel
+        Overridden from wxDataViewIndexListModel
     */
     virtual bool SetValueByRow( const wxVariant &value,
                            unsigned int row, unsigned int col );
     */
     virtual bool SetValueByRow( const wxVariant &value,
                            unsigned int row, unsigned int col );
@@ -2354,7 +2543,7 @@ public:
 /**
     @class wxDataViewTreeStore
 
 /**
     @class wxDataViewTreeStore
 
-    wxDataViewTreeStore is a specialised wxDataViewModel for stroing simple
+    wxDataViewTreeStore is a specialised wxDataViewModel for storing simple
     trees very much like wxTreeCtrl does and it offers a similar API.
 
     This class actually stores the entire tree and the values (therefore its name)
     trees very much like wxTreeCtrl does and it offers a similar API.
 
     This class actually stores the entire tree and the values (therefore its name)
@@ -2416,7 +2605,7 @@ public:
     int GetChildCount(const wxDataViewItem& parent) const;
 
     /**
     int GetChildCount(const wxDataViewItem& parent) const;
 
     /**
-        Returns the client data asoociated with the item.
+        Returns the client data associated with the item.
     */
     wxClientData* GetItemData(const wxDataViewItem& item) const;
 
     */
     wxClientData* GetItemData(const wxDataViewItem& item) const;
 
@@ -2613,7 +2802,7 @@ public:
     wxDataViewModel* GetModel() const;
 
     /**
     wxDataViewModel* GetModel() const;
 
     /**
-        Returns the position of a context menu event in screen coordinates.
+        Returns the position of a context menu event in screen coordinates.
     */
     wxPoint GetPosition() const;
 
     */
     wxPoint GetPosition() const;
 
@@ -2622,13 +2811,33 @@ public:
     */
     const wxVariant& GetValue() const;
 
     */
     const wxVariant& GetValue() const;
 
+    /**
+        Can be used to determine whether the new value is going to be accepted
+        in wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE handler.
+
+        Returns @true if editing the item was cancelled or if the user tried to
+        enter an invalid value (refused by wxDataViewRenderer::Validate()). If
+        this method returns @false, it means that the value in the model is
+        about to be changed to the new one.
+
+        Notice that wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE event handler can
+        call wxNotifyEvent::Veto() to prevent this from happening.
+
+        Currently support for setting this field and for vetoing the change is
+        only available in the generic version of wxDataViewCtrl, i.e. under MSW
+        but not GTK nor OS X.
+
+        @since 2.9.3
+     */
+    bool IsEditCancelled() const;
+
     /**
         Sets the column index associated with this event.
     */
     void SetColumn(int col);
 
     /**
     /**
         Sets the column index associated with this event.
     */
     void SetColumn(int col);
 
     /**
-        For wxEVT_DATAVIEW_COLUMN_HEADER_CLICKED only.
+        For @c wxEVT_DATAVIEW_COLUMN_HEADER_CLICKED only.
     */
     void SetDataViewColumn(wxDataViewColumn* col);
 
     */
     void SetDataViewColumn(wxDataViewColumn* col);