]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/dataview.h
avoid infinite recursion for richtooltops, (hopefully) fixes #15070
[wxWidgets.git] / interface / wx / dataview.h
index a491490c40a5e6f4acd66abc3bb0b2bbdabcaede..e650262bf2aa6642ec57617bbcac14eb292b488a 100644 (file)
@@ -259,7 +259,7 @@ public:
     bool HasValue(const wxDataViewItem& item, unsigned col) const;
 
     /**
-        Override this to indicate of @a item is a container, i.e. if
+        Override this to indicate of @a item is a container, i.e.\ if
         it can have child items.
     */
     virtual bool IsContainer(const wxDataViewItem& item) const = 0;
@@ -340,6 +340,10 @@ public:
     virtual bool ValueChanged(const wxDataViewItem& item,
                               unsigned int col);
 
+    
+    virtual bool IsListModel() const;
+    virtual bool IsVirtualListModel() const;
+
 protected:
 
     /**
@@ -366,7 +370,7 @@ public:
     /**
         Destructor.
     */
-    virtual ~wxDataViewIndexListModel();
+    virtual ~wxDataViewListModel();
 
     /**
         Compare method that sorts the items by their index.
@@ -420,23 +424,58 @@ public:
     /**
         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.
@@ -482,41 +521,6 @@ public:
     */
     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);
-
 };
 
 /**
@@ -543,6 +547,55 @@ public:
     */
     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);
+
 };
 
 
@@ -591,6 +644,52 @@ public:
         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;
 };
 
 
@@ -797,7 +896,7 @@ wxEventType wxEVT_COMMAND_DATAVIEW_ITEM_DROP;
 
     @library{wxadv}
     @category{ctrl,dvc}
-    @appearance{dataviewctrl.png}
+    @appearance{dataviewctrl}
 */
 class wxDataViewCtrl : public wxControl
 {
@@ -822,6 +921,16 @@ public:
     */
     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.
 
@@ -862,6 +971,25 @@ public:
                                          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
@@ -884,6 +1012,28 @@ public:
                                        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
@@ -907,6 +1057,29 @@ public:
                                            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
@@ -929,6 +1102,28 @@ public:
                                            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
@@ -951,6 +1146,28 @@ public:
                                        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
@@ -973,6 +1190,28 @@ public:
                                          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.
@@ -989,16 +1228,6 @@ public:
     */
     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.
     */
@@ -1458,7 +1687,7 @@ enum wxDataViewCellRenderState
     - 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
@@ -1578,6 +1807,21 @@ public:
         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;
 };
 
 
@@ -1802,7 +2046,7 @@ public:
     */
     wxDataViewCustomRenderer(const wxString& varianttype = "string",
                              wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
-                             int align = -1, bool no_init = false);
+                             int align = wxDVR_DEFAULT_ALIGNMENT);
 
     /**
         Destructor.
@@ -1933,15 +2177,26 @@ public:
     virtual bool HasEditorCtrl() const;
 
     /**
-        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.  This method is
+        deprecated, please use ActivateCell instead.
     */
-    virtual bool LeftClick( const wxPoint& cursor,
-                            const wxRect& cell,
+    virtual bool LeftClick( wxPoint cursor,
+                            wxRect cell,
                             wxDataViewModel * model,
                             const wxDataViewItem & item,
                             unsigned int col );
 
+    /**
+       Override this to react to the activation of a cell.  This method is
+       deprecated, please use ActivateCell instead.
+    */
+    virtual bool Activate(wxRect cell,
+                          wxDataViewModel * model,
+                          const wxDataViewItem & item,
+                          unsigned int col);
+
+
     /**
         Override this to render the cell.
         Before this is called, wxDataViewRenderer::SetValue was called
@@ -1966,6 +2221,12 @@ public:
                            wxDataViewModel* model,
                            const wxDataViewItem & item,
                            unsigned int col);
+
+protected:
+    /**
+       Helper for GetSize() implementations, respects attributes.
+    */
+    wxSize GetTextExtent(const wxString& str) const;
 };
 
 
@@ -2337,6 +2598,13 @@ public:
     */
     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.
 
@@ -2425,7 +2693,7 @@ public:
 
     @library{wxadv}
     @category{ctrl,dvc}
-    @appearance{dataviewtreectrl.png}
+    @appearance{dataviewtreectrl}
 */
 class wxDataViewTreeCtrl : public wxDataViewCtrl
 {
@@ -2710,6 +2978,13 @@ public:
     */
     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.
 
@@ -3132,5 +3407,21 @@ public:
         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 );
+
 };