X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6154212e512945487e19c393fa3b9119c45bd801..80cc5fc7ad102221a1ce9e160eac3c29a0586664:/include/wx/gtk/dataview.h?ds=sidebyside diff --git a/include/wx/gtk/dataview.h b/include/wx/gtk/dataview.h index d98ec0fb10..32f1711c2e 100644 --- a/include/wx/gtk/dataview.h +++ b/include/wx/gtk/dataview.h @@ -7,44 +7,45 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifndef __GTKDATAVIEWCTRLH__ -#define __GTKDATAVIEWCTRLH__ +#ifndef _WX_GTKDATAVIEWCTRL_H_ +#define _WX_GTKDATAVIEWCTRL_H_ -#include "wx/defs.h" -#include "wx/object.h" #include "wx/list.h" -#include "wx/control.h" // --------------------------------------------------------- // classes // --------------------------------------------------------- -class WXDLLIMPEXP_FWD_CORE wxDataViewCtrl; -class WXDLLIMPEXP_FWD_CORE wxDataViewCtrlInternal; +class WXDLLIMPEXP_FWD_ADV wxDataViewCtrl; +class WXDLLIMPEXP_FWD_ADV wxDataViewCtrlInternal; // --------------------------------------------------------- // wxDataViewRenderer // --------------------------------------------------------- -class wxDataViewRenderer: public wxDataViewRendererBase +class WXDLLIMPEXP_ADV wxDataViewRenderer: public wxDataViewRendererBase { public: wxDataViewRenderer( const wxString &varianttype, 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(); + virtual bool GtkHasAttributes() { return false; } + void GtkUpdateAlignment(); + protected: GtkCellRenderer *m_renderer; + int m_alignment; protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewRenderer) @@ -54,7 +55,7 @@ protected: // wxDataViewTextRenderer // --------------------------------------------------------- -class wxDataViewTextRenderer: public wxDataViewRenderer +class WXDLLIMPEXP_ADV wxDataViewTextRenderer: public wxDataViewRenderer { public: wxDataViewTextRenderer( const wxString &varianttype = wxT("string"), @@ -70,11 +71,29 @@ protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRenderer) }; +// --------------------------------------------------------- +// wxDataViewTextRendererAttr +// --------------------------------------------------------- + +class WXDLLIMPEXP_ADV wxDataViewTextRendererAttr: public wxDataViewTextRenderer +{ +public: + wxDataViewTextRendererAttr( const wxString &varianttype = wxT("string"), + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); + + // implementation + bool GtkHasAttributes() { return true; } + +protected: + DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRendererAttr) +}; + // --------------------------------------------------------- // wxDataViewBitmapRenderer // --------------------------------------------------------- -class wxDataViewBitmapRenderer: public wxDataViewRenderer +class WXDLLIMPEXP_ADV wxDataViewBitmapRenderer: public wxDataViewRenderer { public: wxDataViewBitmapRenderer( const wxString &varianttype = wxT("wxBitmap"), @@ -92,7 +111,7 @@ protected: // wxDataViewToggleRenderer // --------------------------------------------------------- -class wxDataViewToggleRenderer: public wxDataViewRenderer +class WXDLLIMPEXP_ADV wxDataViewToggleRenderer: public wxDataViewRenderer { public: wxDataViewToggleRenderer( const wxString &varianttype = wxT("bool"), @@ -110,7 +129,7 @@ protected: // wxDataViewCustomRenderer // --------------------------------------------------------- -class wxDataViewCustomRenderer: public wxDataViewRenderer +class WXDLLIMPEXP_ADV wxDataViewCustomRenderer: public wxDataViewRenderer { public: wxDataViewCustomRenderer( const wxString &varianttype = wxT("string"), @@ -121,20 +140,20 @@ public: virtual bool Render( wxRect cell, wxDC *dc, int state ) = 0; + + void RenderText( const wxString &text, int xoffset, wxRect cell, wxDC *dc, int state ); + virtual wxSize GetSize() const = 0; - virtual bool Activate( wxRect cell, - wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ) + virtual bool Activate( wxRect WXUNUSED(cell), + wxDataViewModel *WXUNUSED(model), const wxDataViewItem &WXUNUSED(item), unsigned int WXUNUSED(col) ) { return false; } - virtual bool LeftClick( wxPoint cursor, wxRect cell, - wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ) - { return false; } - virtual bool RightClick( wxPoint cursor, wxRect cell, - wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ) + virtual bool LeftClick( wxPoint WXUNUSED(cursor), wxRect WXUNUSED(cell), + wxDataViewModel *WXUNUSED(model), const wxDataViewItem &WXUNUSED(item), unsigned int WXUNUSED(col) ) { return false; } - virtual bool StartDrag( wxPoint cursor, wxRect cell, - wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ) + virtual bool StartDrag( wxPoint WXUNUSED(cursor), wxRect WXUNUSED(cell), + wxDataViewModel *WXUNUSED(model), const wxDataViewItem &WXUNUSED(item), unsigned int WXUNUSED(col) ) { return false; } // Create DC on request @@ -147,7 +166,17 @@ protected: private: wxDC *m_dc; - + +public: + // Internal, temporay for RenderText. + GtkCellRenderer *m_text_renderer; + GdkWindow *window; + GtkWidget *widget; + void *background_area; + void *cell_area; + void *expose_area; + int flags; + protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer) }; @@ -156,7 +185,7 @@ protected: // wxDataViewProgressRenderer // --------------------------------------------------------- -class wxDataViewProgressRenderer: public wxDataViewCustomRenderer +class WXDLLIMPEXP_ADV wxDataViewProgressRenderer: public wxDataViewCustomRenderer { public: wxDataViewProgressRenderer( const wxString &label = wxEmptyString, @@ -179,11 +208,40 @@ protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressRenderer) }; +// --------------------------------------------------------- +// wxDataViewIconTextRenderer +// --------------------------------------------------------- + +class WXDLLIMPEXP_ADV 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 // --------------------------------------------------------- -class wxDataViewDateRenderer: public wxDataViewCustomRenderer +class WXDLLIMPEXP_ADV wxDataViewDateRenderer: public wxDataViewCustomRenderer { public: wxDataViewDateRenderer( const wxString &varianttype = wxT("datetime"), @@ -205,11 +263,32 @@ protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateRenderer) }; +// ------------------------------------- +// wxDataViewChoiceRenderer +// ------------------------------------- + +class WXDLLIMPEXP_ADV wxDataViewChoiceRenderer: public wxDataViewCustomRenderer +{ +public: + wxDataViewChoiceRenderer( const wxArrayString &choices, + wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE, + int alignment = wxDVR_DEFAULT_ALIGNMENT ); + virtual bool Render( wxRect rect, wxDC *dc, int state ); + virtual wxSize GetSize() const; + virtual bool SetValue( const wxVariant &value ); + virtual bool GetValue( wxVariant &value ) const; + + void SetAlignment( int align ); +private: + wxArrayString m_choices; + wxString m_data; +}; + // --------------------------------------------------------- // wxDataViewColumn // --------------------------------------------------------- -class WXDLLIMPEXP_CORE wxDataViewColumn: public wxDataViewColumnBase +class WXDLLIMPEXP_ADV wxDataViewColumn: public wxDataViewColumnBase { public: wxDataViewColumn( const wxString &title, wxDataViewRenderer *renderer, @@ -242,6 +321,7 @@ public: virtual void SetMinWidth( int minWidth ); virtual void SetWidth( int width ); + virtual void SetReorderable( bool reorderable ); // getters: @@ -255,14 +335,21 @@ public: virtual int GetWidth() const; virtual int GetMinWidth() const; + + virtual bool IsReorderable() const; // implementation GtkWidget* GetGtkHandle() { return m_column; } + GtkWidget* GetConstGtkHandle() const { return m_column; } private: // holds the GTK handle GtkWidget *m_column; + // holds GTK handles for title/bitmap in the header + GtkWidget *m_image; + GtkWidget *m_label; + // delayed connection to mouse events friend class wxDataViewCtrl; void OnInternalIdle(); @@ -274,11 +361,14 @@ protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewColumn) }; +WX_DECLARE_LIST_WITH_DECL(wxDataViewColumn, wxDataViewColumnList, + class WXDLLIMPEXP_ADV); + // --------------------------------------------------------- // wxDataViewCtrl // --------------------------------------------------------- -class WXDLLIMPEXP_CORE wxDataViewCtrl: public wxDataViewCtrlBase +class WXDLLIMPEXP_ADV wxDataViewCtrl: public wxDataViewCtrlBase { public: wxDataViewCtrl() @@ -304,9 +394,20 @@ public: const wxValidator& validator = wxDefaultValidator ); virtual bool AssociateModel( wxDataViewModel *model ); + + virtual bool PrependColumn( wxDataViewColumn *col ); virtual bool AppendColumn( wxDataViewColumn *col ); + virtual bool InsertColumn( unsigned int pos, 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(); + virtual wxDataViewItem GetSelection() const; virtual int GetSelections( wxDataViewItemArray & sel ) const; virtual void SetSelections( const wxDataViewItemArray & sel ); virtual void Select( const wxDataViewItem & item ); @@ -315,7 +416,16 @@ public: virtual void SelectAll(); virtual void UnselectAll(); - virtual void EnsureVisible( const wxDataViewItem & item, wxDataViewColumn *column = NULL ); + 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); @@ -325,28 +435,30 @@ public: GtkWidget *GtkGetTreeView() { return m_treeview; } wxDataViewCtrlInternal* GtkGetInternal() { return m_internal; } + virtual void OnInternalIdle(); + protected: virtual void DoSetExpanderColumn(); virtual void DoSetIndent(); private: - friend class wxDataViewCtrlDC; + friend class wxDataViewCtrlDCImpl; friend class wxDataViewColumn; friend class wxGtkDataViewModelNotifier; + friend class wxDataViewCtrlInternal; + GtkWidget *m_treeview; wxDataViewModelNotifier *m_notifier; wxDataViewCtrlInternal *m_internal; + wxDataViewColumnList m_cols; - - virtual void OnInternalIdle(); - + virtual void AddChildGTK(wxWindowGTK* child); void GtkEnableSelectionEvents(); void GtkDisableSelectionEvents(); -private: DECLARE_DYNAMIC_CLASS(wxDataViewCtrl) DECLARE_NO_COPY_CLASS(wxDataViewCtrl) }; -#endif // __GTKDATAVIEWCTRLH__ +#endif // _WX_GTKDATAVIEWCTRL_H_