X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/239eaa415414c5d978072af89772b12e74309e1d..ecdbd5b0374d4771f2b011cb65978fb8f8a5cce5:/include/wx/gtk/dataview.h?ds=sidebyside diff --git a/include/wx/gtk/dataview.h b/include/wx/gtk/dataview.h index a9dc8f2d2a..e01b0ece10 100644 --- a/include/wx/gtk/dataview.h +++ b/include/wx/gtk/dataview.h @@ -7,58 +7,198 @@ // 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_ADV wxDataViewCtrlInternal; -class WXDLLIMPEXP_CORE wxDataViewCtrl; +// --------------------------------------------------------- +// wxDataViewColumn +// --------------------------------------------------------- -// --------------------------------------------------------- +class WXDLLIMPEXP_ADV wxDataViewColumn: public wxDataViewColumnBase +{ +public: + 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 ); + + + // setters: + + virtual void SetTitle( const wxString &title ); + virtual void SetBitmap( const wxBitmap &bitmap ); + + virtual void SetOwner( wxDataViewCtrl *owner ); + + virtual void SetAlignment( wxAlignment align ); + + virtual void SetSortable( bool sortable ); + virtual void SetSortOrder( bool ascending ); + virtual void SetAsSortKey(bool sort = true); + + virtual void SetResizeable( bool resizeable ); + virtual void SetHidden( bool hidden ); + + virtual void SetMinWidth( int minWidth ); + virtual void SetWidth( int width ); + + virtual void SetReorderable( bool reorderable ); + + virtual void SetFlags(int flags) { SetIndividualFlags(flags); } + + // getters: + + virtual wxString GetTitle() const; + virtual wxAlignment GetAlignment() const; + + virtual bool IsSortable() const; + virtual bool IsSortOrderAscending() const; + virtual bool IsSortKey() const; + + virtual bool IsResizeable() const; + virtual bool IsHidden() const; + + virtual int GetWidth() const; + virtual int GetMinWidth() const; + + virtual bool IsReorderable() const; + + virtual int GetFlags() const { return GetFromIndividualFlags(); } + + // 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(); + bool m_isConnected; + + void Init(wxAlignment align, int flags, int width); +}; + +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() + wxDataViewCtrl() { Init(); } - + wxDataViewCtrl( wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator ) { + Init(); + Create(parent, id, pos, size, style, validator ); } - virtual ~wxDataViewCtrl(); - - void Init(); - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator ); - virtual bool AppendStringColumn( const wxString &label ); + virtual ~wxDataViewCtrl(); + + 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() 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 ); + virtual bool IsExpanded( const wxDataViewItem & item ) const; + + virtual bool EnableDragSource( const wxDataFormat &format ); + virtual bool EnableDropTarget( const wxDataFormat &format ); + + static wxVisualAttributes + GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); + + wxWindow *GetMainWindow() { return (wxWindow*) this; } + + GtkWidget *GtkGetTreeView() { return m_treeview; } + wxDataViewCtrlInternal* GtkGetInternal() { return m_internal; } + + virtual void OnInternalIdle(); + +protected: + virtual void DoSetExpanderColumn(); + virtual void DoSetIndent(); + + virtual void DoApplyWidgetStyle(GtkRcStyle *style); - virtual bool AssociateModel( wxDataViewStore *model ); - - private: + void Init(); + + 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 AddChildGTK(wxWindowGTK* child); + void GtkEnableSelectionEvents(); + void GtkDisableSelectionEvents(); + DECLARE_DYNAMIC_CLASS(wxDataViewCtrl) - DECLARE_NO_COPY_CLASS(wxDataViewCtrl) + wxDECLARE_NO_COPY_CLASS(wxDataViewCtrl); }; -#endif // __GTKDATAVIEWCTRLH__ +#endif // _WX_GTKDATAVIEWCTRL_H_