]> git.saurik.com Git - wxWidgets.git/blame - include/wx/gtk/dataview.h
Instead of just deleting m_popupInterface, call Destroy() of its wxWindow-based popup...
[wxWidgets.git] / include / wx / gtk / dataview.h
CommitLineData
239eaa41
RR
1/////////////////////////////////////////////////////////////////////////////
2// Name: wx/gtk/dataview.h
3// Purpose: wxDataViewCtrl GTK+2 implementation header
4// Author: Robert Roebling
5// Id: $Id$
6// Copyright: (c) 1998 Robert Roebling
7// Licence: wxWindows licence
8/////////////////////////////////////////////////////////////////////////////
9
901a462f
PC
10#ifndef _WX_GTKDATAVIEWCTRL_H_
11#define _WX_GTKDATAVIEWCTRL_H_
239eaa41 12
239eaa41 13#include "wx/list.h"
239eaa41 14
d350fbec 15class WXDLLIMPEXP_FWD_ADV wxDataViewCtrlInternal;
239eaa41 16
17d98558
VZ
17struct _GtkTreePath;
18
bc0289bf 19// ---------------------------------------------------------
fa28826d 20// wxDataViewColumn
bc0289bf 21// ---------------------------------------------------------
fa28826d 22
d350fbec 23class WXDLLIMPEXP_ADV wxDataViewColumn: public wxDataViewColumnBase
fa28826d
RR
24{
25public:
87f0efe2
RR
26 wxDataViewColumn( const wxString &title, wxDataViewRenderer *renderer,
27 unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH,
28 wxAlignment align = wxALIGN_CENTER,
29 int flags = wxDATAVIEW_COL_RESIZABLE );
30 wxDataViewColumn( const wxBitmap &bitmap, wxDataViewRenderer *renderer,
31 unsigned int model_column, int width = wxDVC_DEFAULT_WIDTH,
32 wxAlignment align = wxALIGN_CENTER,
33 int flags = wxDATAVIEW_COL_RESIZABLE );
34
9861f022
RR
35
36 // setters:
37
fa28826d 38 virtual void SetTitle( const wxString &title );
07a84e7b 39 virtual void SetBitmap( const wxBitmap &bitmap );
47cef10f 40
b94db696
RR
41 virtual void SetOwner( wxDataViewCtrl *owner );
42
47cef10f 43 virtual void SetAlignment( wxAlignment align );
bc0289bf 44
31fb32e1 45 virtual void SetSortable( bool sortable );
47cef10f 46 virtual void SetSortOrder( bool ascending );
e2bfe673 47 virtual void SetAsSortKey(bool sort = true);
47cef10f 48
9861f022
RR
49 virtual void SetResizeable( bool resizeable );
50 virtual void SetHidden( bool hidden );
51
52 virtual void SetMinWidth( int minWidth );
53 virtual void SetWidth( int width );
54
99c75ebc 55 virtual void SetReorderable( bool reorderable );
9861f022 56
56873923
VZ
57 virtual void SetFlags(int flags) { SetIndividualFlags(flags); }
58
9861f022
RR
59 // getters:
60
61 virtual wxString GetTitle() const;
62 virtual wxAlignment GetAlignment() const;
63
87f0efe2
RR
64 virtual bool IsSortable() const;
65 virtual bool IsSortOrderAscending() const;
3cbd3136 66 virtual bool IsSortKey() const;
e2bfe673 67
9861f022
RR
68 virtual bool IsResizeable() const;
69 virtual bool IsHidden() const;
87f0efe2
RR
70
71 virtual int GetWidth() const;
9861f022 72 virtual int GetMinWidth() const;
bc0289bf 73
99c75ebc 74 virtual bool IsReorderable() const;
9861f022 75
56873923
VZ
76 virtual int GetFlags() const { return GetFromIndividualFlags(); }
77
fa28826d 78 // implementation
9861f022 79 GtkWidget* GetGtkHandle() { return m_column; }
aed836f3 80 GtkWidget* GetConstGtkHandle() const { return m_column; }
fa28826d
RR
81
82private:
6842a71a 83 // holds the GTK handle
9861f022 84 GtkWidget *m_column;
bc0289bf 85
419a3607
RR
86 // holds GTK handles for title/bitmap in the header
87 GtkWidget *m_image;
88 GtkWidget *m_label;
bc0289bf 89
31fb32e1
RR
90 // delayed connection to mouse events
91 friend class wxDataViewCtrl;
92 void OnInternalIdle();
9861f022
RR
93 bool m_isConnected;
94
95 void Init(wxAlignment align, int flags, int width);
fa28826d
RR
96};
97
d350fbec
VS
98WX_DECLARE_LIST_WITH_DECL(wxDataViewColumn, wxDataViewColumnList,
99 class WXDLLIMPEXP_ADV);
91a6c655 100
bc0289bf 101// ---------------------------------------------------------
239eaa41 102// wxDataViewCtrl
bc0289bf 103// ---------------------------------------------------------
239eaa41 104
d350fbec 105class WXDLLIMPEXP_ADV wxDataViewCtrl: public wxDataViewCtrlBase
239eaa41
RR
106{
107public:
bc0289bf 108 wxDataViewCtrl()
239eaa41
RR
109 {
110 Init();
111 }
bc0289bf 112
239eaa41
RR
113 wxDataViewCtrl( wxWindow *parent, wxWindowID id,
114 const wxPoint& pos = wxDefaultPosition,
115 const wxSize& size = wxDefaultSize, long style = 0,
62e9285a
VZ
116 const wxValidator& validator = wxDefaultValidator,
117 const wxString& name = wxDataViewCtrlNameStr )
239eaa41 118 {
bf68a18d
VZ
119 Init();
120
62e9285a 121 Create(parent, id, pos, size, style, validator, name);
239eaa41
RR
122 }
123
239eaa41
RR
124 bool Create(wxWindow *parent, wxWindowID id,
125 const wxPoint& pos = wxDefaultPosition,
126 const wxSize& size = wxDefaultSize, long style = 0,
62e9285a
VZ
127 const wxValidator& validator = wxDefaultValidator,
128 const wxString& name = wxDataViewCtrlNameStr);
239eaa41 129
bf68a18d
VZ
130 virtual ~wxDataViewCtrl();
131
e0062c04 132 virtual bool AssociateModel( wxDataViewModel *model );
bc0289bf 133
736fe67c 134 virtual bool PrependColumn( wxDataViewColumn *col );
1a367564 135 virtual bool AppendColumn( wxDataViewColumn *col );
19723525 136 virtual bool InsertColumn( unsigned int pos, wxDataViewColumn *col );
bc0289bf 137
91a6c655
RR
138 virtual unsigned int GetColumnCount() const;
139 virtual wxDataViewColumn* GetColumn( unsigned int pos ) const;
140 virtual bool DeleteColumn( wxDataViewColumn *column );
141 virtual bool ClearColumns();
453091c2 142 virtual int GetColumnPosition( const wxDataViewColumn *column ) const;
1e08ad10 143
21f47fb9
RR
144 virtual wxDataViewColumn *GetSortingColumn() const;
145
fbda518c 146 virtual wxDataViewItem GetSelection() const;
e98351ec
RR
147 virtual int GetSelections( wxDataViewItemArray & sel ) const;
148 virtual void SetSelections( const wxDataViewItemArray & sel );
149 virtual void Select( const wxDataViewItem & item );
150 virtual void Unselect( const wxDataViewItem & item );
151 virtual bool IsSelected( const wxDataViewItem & item ) const;
152 virtual void SelectAll();
153 virtual void UnselectAll();
154
bc0289bf 155 virtual void EnsureVisible( const wxDataViewItem& item,
fbda518c 156 const wxDataViewColumn *column = NULL );
bc0289bf
VZ
157 virtual void HitTest( const wxPoint &point,
158 wxDataViewItem &item,
a87b466d 159 wxDataViewColumn *&column ) const;
bc0289bf 160 virtual wxRect GetItemRect( const wxDataViewItem &item,
fbda518c 161 const wxDataViewColumn *column = NULL ) const;
66e09788 162
f71d3ba4
RR
163 virtual void Expand( const wxDataViewItem & item );
164 virtual void Collapse( const wxDataViewItem & item );
739a8399
RR
165 virtual bool IsExpanded( const wxDataViewItem & item ) const;
166
15cac64f 167 virtual bool EnableDragSource( const wxDataFormat &format );
8c2654ce 168 virtual bool EnableDropTarget( const wxDataFormat &format );
15cac64f 169
b94db696
RR
170 static wxVisualAttributes
171 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
bc0289bf 172
1e510b1e 173 wxWindow *GetMainWindow() { return (wxWindow*) this; }
bc0289bf 174
55fbde12
RR
175 GtkWidget *GtkGetTreeView() { return m_treeview; }
176 wxDataViewCtrlInternal* GtkGetInternal() { return m_internal; }
3b6280be 177
17d98558
VZ
178 // Convert GTK path to our item. Returned item may be invalid if get_iter()
179 // failed.
180 wxDataViewItem GTKPathToItem(struct _GtkTreePath *path) const;
181
901a462f
PC
182 virtual void OnInternalIdle();
183
3b6280be
RR
184protected:
185 virtual void DoSetExpanderColumn();
186 virtual void DoSetIndent();
187
ddb44248
VZ
188 virtual void DoApplyWidgetStyle(GtkRcStyle *style);
189
1a367564 190private:
bf68a18d
VZ
191 void Init();
192
80ce465c
VZ
193 virtual wxDataViewItem DoGetCurrentItem() const;
194 virtual void DoSetCurrentItem(const wxDataViewItem& item);
195
888dde65 196 friend class wxDataViewCtrlDCImpl;
31fb32e1 197 friend class wxDataViewColumn;
33ba5a05 198 friend class wxDataViewCtrlInternal;
bc0289bf 199
e0062c04 200 GtkWidget *m_treeview;
55fbde12 201 wxDataViewCtrlInternal *m_internal;
91a6c655 202 wxDataViewColumnList m_cols;
3f53dd3a 203 wxDataViewItem m_ensureVisibleDefered;
3b6280be 204
48200154 205 virtual void AddChildGTK(wxWindowGTK* child);
b086d55f
RR
206 void GtkEnableSelectionEvents();
207 void GtkDisableSelectionEvents();
bc0289bf 208
239eaa41 209 DECLARE_DYNAMIC_CLASS(wxDataViewCtrl)
c0c133e1 210 wxDECLARE_NO_COPY_CLASS(wxDataViewCtrl);
239eaa41
RR
211};
212
213
901a462f 214#endif // _WX_GTKDATAVIEWCTRL_H_