X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b086d55fe11b8b7fc87b476e5cf57c9b403ec6bf..8e4b5265cdd7aeea67c85eb0f50186641f09f7d8:/include/wx/gtk/dataview.h diff --git a/include/wx/gtk/dataview.h b/include/wx/gtk/dataview.h index acef40fa2e..bbb7f6b7e8 100644 --- a/include/wx/gtk/dataview.h +++ b/include/wx/gtk/dataview.h @@ -19,7 +19,8 @@ // classes // --------------------------------------------------------- -class WXDLLIMPEXP_CORE wxDataViewCtrl; +class WXDLLIMPEXP_FWD_CORE wxDataViewCtrl; +class WXDLLIMPEXP_FWD_CORE wxDataViewCtrlInternal; // --------------------------------------------------------- @@ -33,15 +34,16 @@ public: wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int align = wxDVR_DEFAULT_ALIGNMENT ); - // implementation - GtkCellRenderer* GetGtkHandle() { return m_renderer; } - virtual void SetMode( wxDataViewCellMode mode ); virtual wxDataViewCellMode GetMode() const; virtual void SetAlignment( int align ); virtual int GetAlignment() const; + // implementation + GtkCellRenderer* GetGtkHandle() { return m_renderer; } + void GtkInitHandlers(); + protected: GtkCellRenderer *m_renderer; @@ -123,17 +125,17 @@ public: virtual wxSize GetSize() const = 0; virtual bool Activate( wxRect cell, - wxDataViewListModel *model, unsigned int col, unsigned int row ) + wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ) { return false; } virtual bool LeftClick( wxPoint cursor, wxRect cell, - wxDataViewListModel *model, unsigned int col, unsigned int row ) + wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ) { return false; } virtual bool RightClick( wxPoint cursor, wxRect cell, - wxDataViewListModel *model, unsigned int col, unsigned int row ) + wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ) { return false; } virtual bool StartDrag( wxPoint cursor, wxRect cell, - wxDataViewListModel *model, unsigned int col, unsigned int row ) + wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ) { return false; } // Create DC on request @@ -178,6 +180,35 @@ protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressRenderer) }; +// --------------------------------------------------------- +// wxDataViewIconTextRenderer +// --------------------------------------------------------- + +class wxDataViewIconTextRenderer: public wxDataViewCustomRenderer +{ +public: + wxDataViewIconTextRenderer( const wxString &varianttype = wxT("wxDataViewIconText"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); + virtual ~wxDataViewIconTextRenderer(); + + bool SetValue( const wxVariant &value ); + bool GetValue( wxVariant &value ) const; + + virtual bool Render( wxRect cell, wxDC *dc, int state ); + virtual wxSize GetSize() const; + + virtual bool HasEditorCtrl() { return true; } + virtual wxControl* CreateEditorCtrl( wxWindow *parent, wxRect labelRect, const wxVariant &value ); + virtual bool GetValueFromEditorCtrl( wxControl* editor, wxVariant &value ); + +private: + wxDataViewIconText m_value; + +protected: + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewIconTextRenderer) +}; + // --------------------------------------------------------- // wxDataViewDateRenderer // --------------------------------------------------------- @@ -195,7 +226,7 @@ public: virtual bool Render( wxRect cell, wxDC *dc, int state ); virtual wxSize GetSize() const; virtual bool Activate( wxRect cell, - wxDataViewListModel *model, unsigned int col, unsigned int row ); + wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ); private: wxDateTime m_date; @@ -257,6 +288,7 @@ public: // implementation GtkWidget* GetGtkHandle() { return m_column; } + GtkWidget* GetConstGtkHandle() const { return m_column; } private: // holds the GTK handle @@ -273,6 +305,8 @@ protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewColumn) }; +WX_DECLARE_LIST(wxDataViewColumn, wxDataViewColumnList ); + // --------------------------------------------------------- // wxDataViewCtrl // --------------------------------------------------------- @@ -302,30 +336,58 @@ public: const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator ); - virtual bool AssociateModel( wxDataViewListModel *model ); - virtual bool AppendColumn( wxDataViewColumn *col ); - - virtual void SetSelection( int row ); // -1 for unselect - virtual void SetSelectionRange( unsigned int from, unsigned int to ); - virtual void SetSelections( const wxArrayInt& aSelections); - virtual void Unselect( unsigned int row ); + virtual bool AssociateModel( wxDataViewModel *model ); - virtual bool IsSelected( unsigned int row ) const; - virtual int GetSelection() const; - virtual int GetSelections(wxArrayInt& aSelections) const; + virtual bool AppendColumn( wxDataViewColumn *col ); + virtual unsigned int GetColumnCount() const; + virtual wxDataViewColumn* GetColumn( unsigned int pos ) const; + virtual bool DeleteColumn( wxDataViewColumn *column ); + virtual bool ClearColumns(); + virtual int GetColumnPosition( const wxDataViewColumn *column ) const; + + virtual wxDataViewColumn *GetSortingColumn() const; + + virtual wxDataViewItem GetSelection() const; + virtual int GetSelections( wxDataViewItemArray & sel ) const; + virtual void SetSelections( const wxDataViewItemArray & sel ); + virtual void Select( const wxDataViewItem & item ); + virtual void Unselect( const wxDataViewItem & item ); + virtual bool IsSelected( const wxDataViewItem & item ) const; + virtual void SelectAll(); + virtual void UnselectAll(); + + virtual void EnsureVisible( const wxDataViewItem& item, + const wxDataViewColumn *column = NULL ); + virtual void HitTest( const wxPoint &point, + wxDataViewItem &item, + wxDataViewColumn *&column ) const; + virtual wxRect GetItemRect( const wxDataViewItem &item, + const wxDataViewColumn *column = NULL ) const; + + virtual void Expand( const wxDataViewItem & item ); + virtual void Collapse( const wxDataViewItem & item ); static wxVisualAttributes GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); - GtkWidget *GtkGetTreeView() { return m_treeview; } wxWindow *GetMainWindow() { return (wxWindow*) this; } + GtkWidget *GtkGetTreeView() { return m_treeview; } + wxDataViewCtrlInternal* GtkGetInternal() { return m_internal; } + +protected: + virtual void DoSetExpanderColumn(); + virtual void DoSetIndent(); + private: friend class wxDataViewCtrlDC; friend class wxDataViewColumn; - friend class wxGtkDataViewListModelNotifier; - GtkWidget *m_treeview; - wxDataViewListModelNotifier *m_notifier; + friend class wxGtkDataViewModelNotifier; + GtkWidget *m_treeview; + wxDataViewModelNotifier *m_notifier; + wxDataViewCtrlInternal *m_internal; + wxDataViewColumnList m_cols; + virtual void OnInternalIdle();