]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/dataview.h
added support for wxCAL_SHOW_WEEK_NUMBERS to generic version of wxCalendarCtrl (...
[wxWidgets.git] / interface / wx / dataview.h
index aa54468bcf36a662523c703c9a430a50fdf4f529..c4ac26a10b3385d9e618a8027ec756d284bb3da4 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.
 
@@ -549,6 +554,12 @@ public:
            Process a wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED event.
     @event{EVT_DATAVIEW_COLUMN_REORDERED(id, func)}
            Process a wxEVT_COMMAND_DATAVIEW_COLUMN_REORDERED event.
+    @event{EVT_DATAVIEW_ITEM_BEGIN_DRAG(id, func)}
+           Process a wxEVT_COMMAND_DATAVIEW_ITEM_BEGIN_DRAG event.
+    @event{EVT_DATAVIEW_ITEM_DROP_POSSIBLE(id, func)}
+           Process a wxEVT_COMMAND_DATAVIEW_ITEM_DROP_POSSIBLE event.
+    @event{EVT_DATAVIEW_ITEM_DROP(id, func)}
+           Process a wxEVT_COMMAND_DATAVIEW_ITEM_DROP event.
     @endEventTable
 
     @library{wxadv}
@@ -758,6 +769,16 @@ public:
     */
     virtual bool DeleteColumn(wxDataViewColumn* column);
 
+    /**
+       Enable drag operations using the given @a format.
+    */
+    virtual bool EnableDragSource( const wxDataFormat &format );
+    
+    /**
+       Enable drop operations using the given @a format.
+    */
+    virtual bool EnableDropTarget( const wxDataFormat &format );
+    
     /**
         Call this to ensure that the given item is visible.
     */
@@ -1476,6 +1497,212 @@ 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->AppendToggleColumn( "Toggle" );
+       listctrl->AppendTextColumn( "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
+{
+public:
+    /**
+        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 AppendColumn( 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 PrependColumn( 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 InsertColumn( unsigned int pos, wxDataViewColumn *column, const wxString &varianttype );
+                    
+    /**
+        Overridden from wxDataViewCtrl
+        
+        Appends a column to the control and additonally appends a
+        column to the store with the type string.
+    */
+    virtual void AppendColumn( wxDataViewColumn *column );
+    
+    /**
+        Overridden from wxDataViewCtrl
+        
+        Prepends a column to the control and additonally prepends a
+        column to the store with the type string.
+    */
+    virtual void PrependColumn( wxDataViewColumn *column );
+    
+    /**
+        Overridden from wxDataViewCtrl
+        
+        Inserts a column to the control and additonally inserts a
+        column to the store with the type string.
+    */
+    virtual void InsertColumn( unsigned int pos, wxDataViewColumn *column );
+                    
+    /**
+        Inserts a text column to the control and the store.
+    */
+    wxDataViewColumn *AppendTextColumn( 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 *AppendToggleColumn( 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 *AppendProgressColumn( 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 *AppendIconTextColumn( 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
 
@@ -1513,7 +1740,7 @@ public:
     virtual ~wxDataViewTreeCtrl();
 
     /**
-        @todo docme
+        Appends a container to the given @a parent.
     */
     wxDataViewItem AppendContainer(const wxDataViewItem& parent,
                                    const wxString& text,
@@ -1522,7 +1749,7 @@ public:
                                    wxClientData* data = NULL);
 
     /**
-        @todo docme
+        Appends an item to the given @a parent.
     */
     wxDataViewItem AppendItem(const wxDataViewItem& parent,
                               const wxString& text,
@@ -1666,17 +1893,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}
@@ -1866,14 +2213,11 @@ public:
 class wxDataViewEvent : public wxNotifyEvent
 {
 public:
-    //@{
     /**
         Constructor. Typically used by wxWidgets internals only.
     */
     wxDataViewEvent(wxEventType commandType = wxEVT_NULL,
                     int winid = 0);
-    wxDataViewEvent(const wxDataViewEvent& event);
-    //@}
 
     /**
         Returns the position of the column in the control or -1
@@ -1921,5 +2265,46 @@ public:
         Sets the value associated with this event.
     */
     void SetValue(const wxVariant& value);
+    
+    /**
+        Set wxDataObject for data transfer within a drag operation.
+    */
+    void SetDataObject( wxDataObject *obj );
+            
+    /**
+        Used internally. Gets associated wxDataObject for data transfer
+        within a drag operation.
+    */
+    wxDataObject *GetDataObject() const;
+    
+    /**
+        Used internally. Sets the wxDataFormat during a drop operation.
+    */
+    void SetDataFormat( const wxDataFormat &format );
+    
+    /**
+        Gets the wxDataFormat during a drop operation.
+    */
+    wxDataFormat GetDataFormat() const;
+    
+    /**
+        Used internally. Sets the data size for a drop data transfer.
+    */
+    void SetDataSize( size_t size );
+    
+    /**
+        Gets the data size for a drop data transfer.
+    */
+    size_t GetDataSize() const;
+    
+    /**
+        Used internally. Sets the data buffer for a drop data transfer.
+    */
+    void SetDataBuffer( void* buf );
+    
+    /**
+        Gets the data buffer for a drop data transfer.
+    */
+    void *GetDataBuffer() const;
 };