]> 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:
     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.
 
     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.
     */
 
         @see wxDataViewItemAttr.
     */
-    virtual bool GetAttr(unsigned int row, unsigned int col,
+    virtual bool GetAttrByRow(unsigned int row, unsigned int col,
                          wxDataViewItemAttr& attr);
 
     /**
                          wxDataViewItemAttr& attr);
 
     /**
@@ -315,7 +316,7 @@ public:
     /**
         Override this to allow getting values from the model.
     */
     /**
         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;
 
     /**
                           unsigned int col) const = 0;
 
     /**
@@ -365,7 +366,7 @@ public:
     /**
         Called in order to set a value in the model.
     */
     /**
         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;
 };
 
                           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.
 
     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.
     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.
 
 
     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.
            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}
     @endEventTable
 
     @library{wxadv}
@@ -758,6 +769,16 @@ public:
     */
     virtual bool DeleteColumn(wxDataViewColumn* column);
 
     */
     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.
     */
     /**
         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
 
 /**
     @class wxDataViewTreeCtrl
 
@@ -1513,7 +1740,7 @@ public:
     virtual ~wxDataViewTreeCtrl();
 
     /**
     virtual ~wxDataViewTreeCtrl();
 
     /**
-        @todo docme
+        Appends a container to the given @a parent.
     */
     wxDataViewItem AppendContainer(const wxDataViewItem& parent,
                                    const wxString& text,
     */
     wxDataViewItem AppendContainer(const wxDataViewItem& parent,
                                    const wxString& text,
@@ -1522,7 +1749,7 @@ public:
                                    wxClientData* data = NULL);
 
     /**
                                    wxClientData* data = NULL);
 
     /**
-        @todo docme
+        Appends an item to the given @a parent.
     */
     wxDataViewItem AppendItem(const wxDataViewItem& parent,
                               const wxString& text,
     */
     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
 
 
 /**
     @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.
 
     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}
 
     @library{wxadv}
     @category{dvc}
@@ -1866,14 +2213,11 @@ public:
 class wxDataViewEvent : public wxNotifyEvent
 {
 public:
 class wxDataViewEvent : public wxNotifyEvent
 {
 public:
-    //@{
     /**
         Constructor. Typically used by wxWidgets internals only.
     */
     wxDataViewEvent(wxEventType commandType = wxEVT_NULL,
                     int winid = 0);
     /**
         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
 
     /**
         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);
         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;
 };
 
 };