X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/87f0efe2d7e053089507a4e76c26da516975f6cd..558820fd083635d3e1dc026a56b2f14870cb5c38:/include/wx/gtk/dataview.h?ds=inline diff --git a/include/wx/gtk/dataview.h b/include/wx/gtk/dataview.h index 78ddb1d55b..1b6ecf086c 100644 --- a/include/wx/gtk/dataview.h +++ b/include/wx/gtk/dataview.h @@ -19,43 +19,54 @@ // classes // --------------------------------------------------------- -class WXDLLIMPEXP_CORE wxDataViewCtrl; +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 ); + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); + + virtual void SetMode( wxDataViewCellMode mode ); + virtual wxDataViewCellMode GetMode() const; + + virtual void SetAlignment( int align ); + virtual int GetAlignment() const; // implementation - void* GetGtkHandle() { return m_renderer; } + GtkCellRenderer* GetGtkHandle() { return m_renderer; } + void GtkInitHandlers(); protected: - // holds the GTK handle - void* m_renderer; + GtkCellRenderer *m_renderer; protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewRenderer) }; - + // --------------------------------------------------------- // wxDataViewTextRenderer // --------------------------------------------------------- -class wxDataViewTextRenderer: public wxDataViewRenderer +class WXDLLIMPEXP_ADV wxDataViewTextRenderer: public wxDataViewRenderer { public: wxDataViewTextRenderer( const wxString &varianttype = wxT("string"), - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT ); bool SetValue( const wxVariant &value ); - bool GetValue( wxVariant &value ); - + bool GetValue( wxVariant &value ) const; + + void SetAlignment( int align ); + protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRenderer) }; @@ -64,14 +75,15 @@ protected: // wxDataViewBitmapRenderer // --------------------------------------------------------- -class wxDataViewBitmapRenderer: public wxDataViewRenderer +class WXDLLIMPEXP_ADV wxDataViewBitmapRenderer: public wxDataViewRenderer { public: wxDataViewBitmapRenderer( const wxString &varianttype = wxT("wxBitmap"), - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + 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(wxDataViewBitmapRenderer) @@ -81,14 +93,15 @@ protected: // wxDataViewToggleRenderer // --------------------------------------------------------- -class wxDataViewToggleRenderer: public wxDataViewRenderer +class WXDLLIMPEXP_ADV wxDataViewToggleRenderer: public wxDataViewRenderer { public: wxDataViewToggleRenderer( const wxString &varianttype = wxT("bool"), - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + 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(wxDataViewToggleRenderer) @@ -98,38 +111,57 @@ protected: // wxDataViewCustomRenderer // --------------------------------------------------------- -class wxDataViewCustomRenderer: public wxDataViewRenderer +class WXDLLIMPEXP_ADV wxDataViewCustomRenderer: public wxDataViewRenderer { public: wxDataViewCustomRenderer( const wxString &varianttype = wxT("string"), wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, + int align = wxDVR_DEFAULT_ALIGNMENT, bool no_init = false ); virtual ~wxDataViewCustomRenderer(); - bool Init(); - + + virtual bool Render( wxRect cell, wxDC *dc, int state ) = 0; - virtual wxSize GetSize() = 0; + void RenderText( const wxString &text, int xoffset, wxRect cell, wxDC *dc, int state ); + + 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 virtual wxDC *GetDC(); + +protected: + + bool Init(wxDataViewCellMode mode, int align); + 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) }; @@ -138,18 +170,20 @@ protected: // wxDataViewProgressRenderer // --------------------------------------------------------- -class wxDataViewProgressRenderer: public wxDataViewCustomRenderer +class WXDLLIMPEXP_ADV wxDataViewProgressRenderer: public wxDataViewCustomRenderer { public: wxDataViewProgressRenderer( const wxString &label = wxEmptyString, const wxString &varianttype = wxT("long"), - wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT ); + 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; @@ -159,22 +193,53 @@ 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"), - wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE ); + 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, unsigned int col, unsigned int row ); + wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ); private: wxDateTime m_date; @@ -187,7 +252,7 @@ protected: // wxDataViewColumn // --------------------------------------------------------- -class WXDLLIMPEXP_CORE wxDataViewColumn: public wxDataViewColumnBase +class WXDLLIMPEXP_ADV wxDataViewColumn: public wxDataViewColumnBase { public: wxDataViewColumn( const wxString &title, wxDataViewRenderer *renderer, @@ -201,6 +266,9 @@ public: virtual ~wxDataViewColumn(); + + // setters: + virtual void SetTitle( const wxString &title ); virtual void SetBitmap( const wxBitmap &bitmap ); @@ -211,35 +279,53 @@ public: 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 void SetFixedWidth( int width ); - virtual int GetFixedWidth() const; - + virtual int GetMinWidth() const; + // implementation - void* GetGtkHandle() { return m_column; } + GtkWidget* GetGtkHandle() { return m_column; } + GtkWidget* GetConstGtkHandle() const { 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; - + bool m_isConnected; + + void Init(wxAlignment align, int flags, int width); + 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() @@ -264,30 +350,65 @@ 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 PrependColumn( wxDataViewColumn *col ); + 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); + 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(); + void GtkEnableSelectionEvents(); + void GtkDisableSelectionEvents(); + private: DECLARE_DYNAMIC_CLASS(wxDataViewCtrl) DECLARE_NO_COPY_CLASS(wxDataViewCtrl)