]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/dataview.h
remove MSVC solution files from svn
[wxWidgets.git] / interface / wx / dataview.h
index aa54468bcf36a662523c703c9a430a50fdf4f529..6e2272ddf6a4744a39c14dd0c1095e186ea4c48c 100644 (file)
@@ -58,7 +58,8 @@
     to the data in the list model.
 
     Currently wxWidgets provides the following models apart from the base model:
-    wxDataViewIndexListModel, wxDataViewVirtualListModel, wxDataViewTreeStore.
+    wxDataViewIndexListModel, wxDataViewVirtualListModel, wxDataViewTreeStore,
+    wxDataViewListStore.
 
     Note that wxDataViewModel is reference counted, derives from wxObjectRefData
     and cannot be deleted directly as it can be shared by several wxDataViewCtrls.
@@ -299,7 +300,7 @@ public:
 
         @see wxDataViewItemAttr.
     */
-    virtual bool GetAttr(unsigned int row, unsigned int col,
+    virtual bool GetAttrByRow(unsigned int row, unsigned int col,
                          wxDataViewItemAttr& attr);
 
     /**
@@ -315,7 +316,7 @@ public:
     /**
         Override this to allow getting values from the model.
     */
-    virtual void GetValue(wxVariant& variant, unsigned int row,
+    virtual void GetValueByRow(wxVariant& variant, unsigned int row,
                           unsigned int col) const = 0;
 
     /**
@@ -365,7 +366,7 @@ public:
     /**
         Called in order to set a value in the model.
     */
-    virtual bool SetValue(const wxVariant& variant, unsigned int row,
+    virtual bool SetValueByRow(const wxVariant& variant, unsigned int row,
                           unsigned int col) = 0;
 };
 
@@ -484,8 +485,12 @@ public:
 
     wxDataViewCtrl is a control to display data either in a tree like fashion or
     in a tabular form or both.
+    
     If you only need to display a simple tree structure with an API more like the
     older wxTreeCtrl class, then the specialized wxDataViewTreeCtrl can be used.
+    Likewise, if you only want to display simple table structure you can use 
+    the specialized wxDataViewListCtrl class. Both wxDataViewTreeCtrl and
+    wxDataViewListCtrl can be used without defining  your own wxDataViewModel.
 
     A wxDataViewItem is used to represent a (visible) item in the control.
 
@@ -1476,6 +1481,188 @@ public:
 
 
 
+/**
+    @class wxDataViewListCtrl
+
+    This class is a wxDataViewCtrl which internally uses a wxDataViewListStore
+    and forwards most of its API to that class.
+
+    The purpose of this class is to offer a simple way to display and
+    edit a small table of data without having to write your own wxDataViewModel.
+
+    @code
+       wxDataViewListCtrl *listctrl = new wxDataViewListCtrl( parent, -1 );
+        
+       listctrl->AppendToggleCol( "Toggle" );
+       listctrl->AppendTextCol( "Text" );
+    
+       wxVector<wxVariant> data;
+       data.push_back( true );
+       data.push_back( "row 1" );
+       listctrl->AppendItem( data );
+    
+       data.clear();
+       data.push_back( false );
+       data.push_back( "row 3" );
+       listctrl->AppendItem( data );
+    @endcode
+
+
+    @library{wxadv}
+    @category{ctrl,dvc}
+*/
+
+class wxDataViewListCtrl: public wxDataViewCtrl
+{
+    /**
+        Default ctor.
+    */
+    wxDataViewListCtrl();
+    
+    /**
+        Constructor. Calls Create().
+    */
+    wxDataViewListCtrl( wxWindow *parent, wxWindowID id,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = wxDV_ROW_LINES,
+           const wxValidator& validator = wxDefaultValidator );
+           
+    /**
+        Destructor. Deletes the image list if any.
+    */
+    ~wxDataViewListCtrl();
+
+    /**
+        Creates the control and a wxDataViewListStore as its internal model.
+    */
+    bool Create( wxWindow *parent, wxWindowID id,
+           const wxPoint& pos = wxDefaultPosition,
+           const wxSize& size = wxDefaultSize, long style = wxDV_ROW_LINES,
+           const wxValidator& validator = wxDefaultValidator );
+
+    //@{
+    /**
+        Returns the store.
+    */
+    wxDataViewListStore *GetStore();
+    const wxDataViewListStore *GetStore() const;
+    //@}
+
+    /**
+        Appends a column to the control and additonally appends a
+        column to the store with the type @a varianttype.
+    */
+    void AppendCol( wxDataViewColumn *column, const wxString &varianttype );
+    
+    /**
+        Prepends a column to the control and additonally prepends a
+        column to the store with the type @a varianttype.
+    */
+    void PrependCol( wxDataViewColumn *column, const wxString &varianttype );
+    
+    /**
+        Inserts a column to the control and additonally inserts a
+        column to the store with the type @a varianttype.
+    */
+    void InsertCol( unsigned int pos, wxDataViewColumn *column, const wxString &varianttype );
+                    
+    /**
+        Inserts a text column to the control and the store.
+    */
+    wxDataViewColumn *AppendTextCol( const wxString &label, 
+          wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, 
+          int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE );
+                    
+    /**
+        Inserts a toggle column to the control and the store.
+    */
+    wxDataViewColumn *AppendToggleCol( const wxString &label, 
+          wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE, 
+          int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE );
+                    
+    /**
+        Inserts a progress column to the control and the store.
+    */
+    wxDataViewColumn *AppendProgressCol( const wxString &label, 
+          wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, 
+          int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE );
+                    
+    /**
+        Inserts a icon and text column to the control and the store.
+    */
+    wxDataViewColumn *AppendIconTextCol( const wxString &label, 
+          wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, 
+          int width = -1, wxAlignment align = wxALIGN_LEFT, int flags = wxDATAVIEW_COL_RESIZABLE );
+
+    /**
+        Appends an item (=row) to the control and store.
+    */
+    void AppendItem( const wxVector<wxVariant> &values, wxClientData *data = NULL );
+
+    /**
+        Prepends an item (=row) to the control and store.
+    */
+    void PrependItem( const wxVector<wxVariant> &values, wxClientData *data = NULL );
+
+    /**
+        Inserts an item (=row) to the control and store.
+    */
+    void InsertItem(  unsigned int row, const wxVector<wxVariant> &values, wxClientData *data = NULL );
+    
+    /**
+        Delete the row at position @a row.
+    */
+    void DeleteItem( unsigned row );
+    
+    /**
+        Delete all items (= all rows).
+    */
+    void DeleteAllItems();
+    
+    /**
+         Sets the value in the store and update the control.
+    */
+    void SetValue( const wxVariant &value, unsigned int row, unsigned int col );
+    
+    /**
+         Returns the value from the store.
+    */
+    void GetValue( wxVariant &value, unsigned int row, unsigned int col );
+    
+    /**
+         Sets the value in the store and update the control. 
+         
+         This method assumes that the a string is stored in respective
+         column.
+    */
+    void SetTextValue( const wxString &value, unsigned int row, unsigned int col );
+    
+    /**
+         Returns the value from the store.
+         
+         This method assumes that the a string is stored in respective
+         column.
+    */
+    wxString GetTextValue( unsigned int row, unsigned int col ) const;
+    
+    /**
+         Sets the value in the store and update the control. 
+         
+         This method assumes that the a boolean value is stored in
+         respective column.
+    */
+    void SetToggleValue( bool value, unsigned int row, unsigned int col );
+    
+    /**
+         Returns the value from the store.
+         
+         This method assumes that the a boolean value is stored in
+         respective column.
+    */
+    bool GetToggleValue( unsigned int row, unsigned int col ) const;
+};
+
+
 /**
     @class wxDataViewTreeCtrl
 
@@ -1666,17 +1853,137 @@ public:
 };
 
 
+/**
+    @class wxDataViewListStore
+
+    wxDataViewListStore is a specialised wxDataViewModel for storing
+    a simple table of data. Since it derives from wxDataViewIndexListModel
+    its data is be accessed by row (i.e. by index) instead of only
+    by wxDataViewItem.
+
+    This class actually stores the values (therefore its name) 
+    and implements all virtual methods from the base classes so it can be
+    used directly without having to derive any class from it, but it is 
+    mostly used from within wxDataViewListCtrl.
+
+    @library{wxadv}
+    @category{dvc}
+*/
+
+class wxDataViewListStore: public wxDataViewIndexListModel
+{
+public:
+    /**
+       Constructor
+    */
+    wxDataViewListStore();
+    
+    /**
+       Destructor
+    */
+    ~wxDataViewListStore();
+
+    /**
+      Prepends a data column. 
+      
+      @a variantype indicates the type of values store in the column.
+      
+      This does not automatically fill in any (default) values in 
+      rows which exist in the store already.
+    */
+    void PrependColumn( const wxString &varianttype );
+
+    /**
+      Inserts a data column before @a pos.
+      
+      @a variantype indicates the type of values store in the column.
+      
+      This does not automatically fill in any (default) values in 
+      rows which exist in the store already.
+    */
+    void InsertColumn( unsigned int pos, const wxString &varianttype );
+
+    /**
+      Apppends a data column. 
+      
+      @a variantype indicates the type of values store in the column.
+      
+      This does not automatically fill in any (default) values in 
+      rows which exist in the store already.
+    */
+    void AppendColumn( const wxString &varianttype );
+    
+    /**
+        Appends an item (=row) and fills it with @a values.
+        
+        The values must match the values specifies in the column
+        in number and type. No (default) values are filled in
+        automatically.
+    */
+    void AppendItem( const wxVector<wxVariant> &values, wxClientData *data = NULL );
+    
+    /**
+        Prepends an item (=row) and fills it with @a values.
+        
+        The values must match the values specifies in the column
+        in number and type. No (default) values are filled in
+        automatically.
+    */
+    void PrependItem( const wxVector<wxVariant> &values, wxClientData *data = NULL );
+    
+    /**
+        Inserts an item (=row) and fills it with @a values.
+        
+        The values must match the values specifies in the column
+        in number and type. No (default) values are filled in
+        automatically.
+    */
+    void InsertItem(  unsigned int row, const wxVector<wxVariant> &values, wxClientData *data = NULL );
+    
+    /**
+        Delete the item (=row) at position @a pos.
+    */
+    void DeleteItem( unsigned pos );
+    
+    /**
+        Delete all item (=all rows) in the store.
+    */
+    void DeleteAllItems();
+
+    /**
+        Overriden from wxDataViewModel
+    */
+    virtual unsigned int GetColumnCount() const;
+
+    /**
+        Overriden from wxDataViewModel
+    */
+    virtual wxString GetColumnType( unsigned int col ) const;
+
+    /**
+        Overriden from wxDataViewIndexListModel
+    */
+    virtual void GetValueByRow( wxVariant &value,
+                           unsigned int row, unsigned int col ) const;
+
+    /**
+        Overriden from wxDataViewIndexListModel
+    */
+    virtual bool SetValueByRow( const wxVariant &value,
+                           unsigned int row, unsigned int col );
+};
+
 
 /**
     @class wxDataViewTreeStore
 
-    wxDataViewTreeStore is a specialised wxDataViewModel for displaying simple
+    wxDataViewTreeStore is a specialised wxDataViewModel for stroing simple
     trees very much like wxTreeCtrl does and it offers a similar API.
 
-    This class actually stores the entire tree (therefore its name) and implements
-    all virtual methods from the base class so it can be used directly without
-    having to derive any class from it.
-    This comes at the price of much reduced flexibility.
+    This class actually stores the entire tree and the values (therefore its name) 
+    and implements all virtual methods from the base class so it can be used directly
+    without having to derive any class from it, but it is mostly used from within
+    wxDataViewTreeCtrl.
 
     @library{wxadv}
     @category{dvc}