X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d3c7fc996a73e9f6a83067bc28a3c5581a3fee65..333e57d578e9e0fb6555452b5a53698ffd85ee69:/include/wx/gtk/dataview.h diff --git a/include/wx/gtk/dataview.h b/include/wx/gtk/dataview.h index 3d650b3cac..197a8e713d 100644 --- a/include/wx/gtk/dataview.h +++ b/include/wx/gtk/dataview.h @@ -19,149 +19,190 @@ // classes // --------------------------------------------------------- -class WXDLLIMPEXP_CORE wxDataViewCtrl; +class WXDLLIMPEXP_FWD_CORE wxDataViewCtrl; +class WXDLLIMPEXP_FWD_CORE wxDataViewCtrlInternal; + // --------------------------------------------------------- -// wxDataViewCell +// wxDataViewRenderer // --------------------------------------------------------- -class wxDataViewCell: public wxDataViewCellBase +class wxDataViewRenderer: public wxDataViewRendererBase { public: - wxDataViewCell( const wxString &varianttype, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + wxDataViewRenderer( const wxString &varianttype, + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); // implementation - void* GetGtkHandle() { return m_renderer; } + GtkCellRenderer* GetGtkHandle() { return m_renderer; } + + virtual void SetMode( wxDataViewCellMode mode ); + virtual wxDataViewCellMode GetMode() const; + + virtual void SetAlignment( int align ); + virtual int GetAlignment() const; protected: - // holds the GTK handle - void* m_renderer; + GtkCellRenderer *m_renderer; + +protected: + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewRenderer) +}; + +// --------------------------------------------------------- +// wxDataViewTextRenderer +// --------------------------------------------------------- + +class wxDataViewTextRenderer: public wxDataViewRenderer +{ +public: + wxDataViewTextRenderer( const wxString &varianttype = wxT("string"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); + + bool SetValue( const wxVariant &value ); + bool GetValue( wxVariant &value ) const; + + void SetAlignment( int align ); protected: - DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCell) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRenderer) }; // --------------------------------------------------------- -// wxDataViewTextCell +// wxDataViewBitmapRenderer // --------------------------------------------------------- -class wxDataViewTextCell: public wxDataViewCell +class wxDataViewBitmapRenderer: public wxDataViewRenderer { public: - wxDataViewTextCell( const wxString &varianttype = wxT("string"), - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + wxDataViewBitmapRenderer( const wxString &varianttype = wxT("wxBitmap"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); bool SetValue( const wxVariant &value ); - bool GetValue( wxVariant &value ); + bool GetValue( wxVariant &value ) const; protected: - DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextCell) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewBitmapRenderer) }; // --------------------------------------------------------- -// wxDataViewToggleCell +// wxDataViewToggleRenderer // --------------------------------------------------------- -class wxDataViewToggleCell: public wxDataViewCell +class wxDataViewToggleRenderer: public wxDataViewRenderer { public: - wxDataViewToggleCell( const wxString &varianttype = wxT("bool"), - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + wxDataViewToggleRenderer( const wxString &varianttype = wxT("bool"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); bool SetValue( const wxVariant &value ); - bool GetValue( wxVariant &value ); + bool GetValue( wxVariant &value ) const; protected: - DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleCell) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleRenderer) }; // --------------------------------------------------------- -// wxDataViewCustomCell +// wxDataViewCustomRenderer // --------------------------------------------------------- -class wxDataViewCustomCell: public wxDataViewCell +class wxDataViewCustomRenderer: public wxDataViewRenderer { public: - wxDataViewCustomCell( const wxString &varianttype = wxT("string"), - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, - bool no_init = false ); - virtual ~wxDataViewCustomCell(); - bool Init(); - + wxDataViewCustomRenderer( const wxString &varianttype = wxT("string"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT, + bool no_init = false ); + virtual ~wxDataViewCustomRenderer(); + + virtual bool Render( wxRect cell, wxDC *dc, int state ) = 0; - virtual wxSize GetSize() = 0; - + virtual wxSize GetSize() const = 0; + virtual bool Activate( wxRect cell, - wxDataViewListModel *model, size_t col, size_t row ) + wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ) { return false; } - + virtual bool LeftClick( wxPoint cursor, wxRect cell, - wxDataViewListModel *model, size_t col, size_t row ) + wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ) { return false; } virtual bool RightClick( wxPoint cursor, wxRect cell, - wxDataViewListModel *model, size_t col, size_t row ) + wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ) { return false; } virtual bool StartDrag( wxPoint cursor, wxRect cell, - wxDataViewListModel *model, size_t col, size_t row ) + wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ) { return false; } // Create DC on request virtual wxDC *GetDC(); + +protected: + + bool Init(wxDataViewCellMode mode, int align); + private: wxDC *m_dc; protected: - DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomCell) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer) }; // --------------------------------------------------------- -// wxDataViewProgressCell +// wxDataViewProgressRenderer // --------------------------------------------------------- -class wxDataViewProgressCell: public wxDataViewCustomCell +class wxDataViewProgressRenderer: public wxDataViewCustomRenderer { public: - wxDataViewProgressCell( const wxString &label = wxEmptyString, - const wxString &varianttype = wxT("long"), - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); - virtual ~wxDataViewProgressCell(); + wxDataViewProgressRenderer( const wxString &label = wxEmptyString, + const wxString &varianttype = wxT("long"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); + virtual ~wxDataViewProgressRenderer(); bool SetValue( const wxVariant &value ); + bool GetValue( wxVariant &value ) const; virtual bool Render( wxRect cell, wxDC *dc, int state ); - virtual wxSize GetSize(); + virtual wxSize GetSize() const; private: wxString m_label; int m_value; protected: - DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressCell) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressRenderer) }; // --------------------------------------------------------- -// wxDataViewDateCell +// wxDataViewDateRenderer // --------------------------------------------------------- -class wxDataViewDateCell: public wxDataViewCustomCell +class wxDataViewDateRenderer: public wxDataViewCustomRenderer { public: - wxDataViewDateCell( const wxString &varianttype = wxT("datetime"), - wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE ); + wxDataViewDateRenderer( const wxString &varianttype = wxT("datetime"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE, + int align = wxDVR_DEFAULT_ALIGNMENT ); bool SetValue( const wxVariant &value ); + bool GetValue( wxVariant &value ) const; virtual bool Render( wxRect cell, wxDC *dc, int state ); - virtual wxSize GetSize(); + virtual wxSize GetSize() const; virtual bool Activate( wxRect cell, - wxDataViewListModel *model, size_t col, size_t row ); + wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ); private: wxDateTime m_date; protected: - DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateCell) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateRenderer) }; // --------------------------------------------------------- @@ -171,23 +212,63 @@ protected: class WXDLLIMPEXP_CORE wxDataViewColumn: public wxDataViewColumnBase { public: - wxDataViewColumn( const wxString &title, wxDataViewCell *cell, size_t model_column, - int fixed_width = 80, wxDataViewColumnSizing sizing = wxDATAVIEW_COL_WIDTH_FIXED, int flags = 0 ); + wxDataViewColumn( const wxString &title, wxDataViewRenderer *renderer, + unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH, + wxAlignment align = wxALIGN_CENTER, + int flags = wxDATAVIEW_COL_RESIZABLE ); + wxDataViewColumn( const wxBitmap &bitmap, wxDataViewRenderer *renderer, + unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH, + wxAlignment align = wxALIGN_CENTER, + int flags = wxDATAVIEW_COL_RESIZABLE ); + virtual ~wxDataViewColumn(); + + // setters: + virtual void SetTitle( const wxString &title ); + virtual void SetBitmap( const wxBitmap &bitmap ); - virtual int GetWidth(); - - virtual void SetFixedWidth( int width ); - virtual int GetFixedWidth(); + virtual void SetOwner( wxDataViewCtrl *owner ); + + virtual void SetAlignment( wxAlignment align ); + virtual void SetSortable( bool sortable ); + virtual void SetSortOrder( bool ascending ); + + virtual void SetResizeable( bool resizeable ); + virtual void SetHidden( bool hidden ); + + virtual void SetMinWidth( int minWidth ); + virtual void SetWidth( int width ); + + + // getters: + + virtual wxString GetTitle() const; + virtual wxAlignment GetAlignment() const; + + virtual bool IsSortable() const; + virtual bool IsSortOrderAscending() const; + virtual bool IsResizeable() const; + virtual bool IsHidden() const; + + virtual int GetWidth() const; + virtual int GetMinWidth() const; + // implementation - void* GetGtkHandle() { return m_column; } + GtkWidget* GetGtkHandle() { return m_column; } private: // holds the GTK handle - void* m_column; + GtkWidget *m_column; + + // delayed connection to mouse events + friend class wxDataViewCtrl; + void OnInternalIdle(); + bool m_isConnected; + + void Init(wxAlignment align, int flags, int width); protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewColumn) @@ -222,14 +303,38 @@ public: const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator ); - virtual bool AssociateModel( wxDataViewListModel *model ); + virtual bool AssociateModel( wxDataViewModel *model ); virtual bool AppendColumn( wxDataViewColumn *col ); + + // selection code + virtual wxDataViewItem GetSelection(); + + + static wxVisualAttributes + GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); + + 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 wxGtkDataViewListModelNotifier; - GtkWidget *m_treeview; - wxDataViewListModelNotifier *m_notifier; + friend class wxDataViewColumn; + friend class wxGtkDataViewModelNotifier; + GtkWidget *m_treeview; + wxDataViewModelNotifier *m_notifier; + wxDataViewCtrlInternal *m_internal; + + + virtual void OnInternalIdle(); + + void GtkEnableSelectionEvents(); + void GtkDisableSelectionEvents(); private: DECLARE_DYNAMIC_CLASS(wxDataViewCtrl)