X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fa28826dd3836d6d50c92ca8de1e97dd4c8cf3bc..84c3e788d6200d68384852e4c4785c09922ec499:/include/wx/gtk/dataview.h?ds=sidebyside diff --git a/include/wx/gtk/dataview.h b/include/wx/gtk/dataview.h index e9a485ea30..9afb521ac9 100644 --- a/include/wx/gtk/dataview.h +++ b/include/wx/gtk/dataview.h @@ -21,6 +21,149 @@ class WXDLLIMPEXP_CORE wxDataViewCtrl; +// --------------------------------------------------------- +// wxDataViewCell +// --------------------------------------------------------- + +class wxDataViewCell: public wxDataViewCellBase +{ +public: + wxDataViewCell( const wxString &varianttype, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + + // implementation + void* GetGtkHandle() { return m_renderer; } + +protected: + // holds the GTK handle + void* m_renderer; + +protected: + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCell) +}; + +// --------------------------------------------------------- +// wxDataViewTextCell +// --------------------------------------------------------- + +class wxDataViewTextCell: public wxDataViewCell +{ +public: + wxDataViewTextCell( const wxString &varianttype = wxT("string"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + + bool SetValue( const wxVariant &value ); + bool GetValue( wxVariant &value ); + +protected: + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextCell) +}; + +// --------------------------------------------------------- +// wxDataViewToggleCell +// --------------------------------------------------------- + +class wxDataViewToggleCell: public wxDataViewCell +{ +public: + wxDataViewToggleCell( const wxString &varianttype = wxT("bool"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + + bool SetValue( const wxVariant &value ); + bool GetValue( wxVariant &value ); + +protected: + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleCell) +}; + +// --------------------------------------------------------- +// wxDataViewCustomCell +// --------------------------------------------------------- + +class wxDataViewCustomCell: public wxDataViewCell +{ +public: + wxDataViewCustomCell( const wxString &varianttype = wxT("string"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + bool no_init = false ); + ~wxDataViewCustomCell(); + bool Init(); + + virtual bool Render( wxRect cell, wxDC *dc, int state ) = 0; + virtual wxSize GetSize() = 0; + + virtual bool Activate( wxRect cell, + wxDataViewListModel *model, size_t col, size_t row ) + { return false; } + + virtual bool LeftClick( wxPoint cursor, wxRect cell, + wxDataViewListModel *model, size_t col, size_t row ) + { return false; } + virtual bool RightClick( wxPoint cursor, wxRect cell, + wxDataViewListModel *model, size_t col, size_t row ) + { return false; } + virtual bool StartDrag( wxPoint cursor, wxRect cell, + wxDataViewListModel *model, size_t col, size_t row ) + { return false; } + + // Create DC on request + virtual wxDC *GetDC(); + +private: + wxDC *m_dc; + +protected: + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomCell) +}; + +// --------------------------------------------------------- +// wxDataViewProgressCell +// --------------------------------------------------------- + +class wxDataViewProgressCell: public wxDataViewCustomCell +{ +public: + wxDataViewProgressCell( const wxString &label = wxEmptyString, + const wxString &varianttype = wxT("long"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + ~wxDataViewProgressCell(); + + bool SetValue( const wxVariant &value ); + + virtual bool Render( wxRect cell, wxDC *dc, int state ); + virtual wxSize GetSize(); + +private: + wxString m_label; + int m_value; + +protected: + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressCell) +}; + +// --------------------------------------------------------- +// wxDataViewDateCell +// --------------------------------------------------------- + +class wxDataViewDateCell: public wxDataViewCustomCell +{ +public: + wxDataViewDateCell( const wxString &varianttype = wxT("datetime"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE ); + + bool SetValue( const wxVariant &value ); + + virtual bool Render( wxRect cell, wxDC *dc, int state ); + virtual wxSize GetSize(); + virtual bool Activate( wxRect cell, + wxDataViewListModel *model, size_t col, size_t row ); + +private: + wxDateTime m_date; + +protected: + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateCell) +}; + // --------------------------------------------------------- // wxDataViewColumn // --------------------------------------------------------- @@ -28,16 +171,22 @@ class WXDLLIMPEXP_CORE wxDataViewCtrl; class WXDLLIMPEXP_CORE wxDataViewColumn: public wxDataViewColumnBase { public: - wxDataViewColumn( const wxString &title, wxDataViewCtrl *ctrl, - wxDataViewColumnType kind, int flags = 0 ); + wxDataViewColumn( const wxString &title, wxDataViewCell *cell, size_t model_column, + int fixed_width = 80, wxDataViewColumnSizing sizing = wxDATAVIEW_COL_WIDTH_FIXED, int flags = 0 ); virtual ~wxDataViewColumn(); virtual void SetTitle( const wxString &title ); + virtual int GetWidth(); + + virtual void SetFixedWidth( int width ); + virtual int GetFixedWidth(); + // implementation void* GetGtkHandle() { return m_column; } private: + // holds the GTK handle void* m_column; protected: @@ -74,7 +223,13 @@ public: const wxValidator& validator = wxDefaultValidator ); virtual bool AssociateModel( wxDataViewListModel *model ); - virtual bool AppendColumn( wxDataViewColumn *col ); + virtual bool AppendColumn( wxDataViewColumn *col ); + +private: + friend class wxDataViewCtrlDC; + friend class wxGtkDataViewListModelNotifier; + GtkWidget *m_treeview; + wxDataViewListModelNotifier *m_notifier; private: DECLARE_DYNAMIC_CLASS(wxDataViewCtrl)