1// Same copyright and license as the rest of the files in this project
2// This file contains accelerator related functions and structures
3
4package gtk
5
6// #include <gtk/gtk.h>
7// #include "gtk.go.h"
8import "C"
9import (
10	"unsafe"
11
12	"github.com/gotk3/gotk3/glib"
13)
14
15/*
16 * GtkTreeViewColumn
17 */
18
19// TreeViewColumns is a representation of GTK's GtkTreeViewColumn.
20type TreeViewColumn struct {
21	glib.InitiallyUnowned
22}
23
24// native returns a pointer to the underlying GtkTreeViewColumn.
25func (v *TreeViewColumn) native() *C.GtkTreeViewColumn {
26	if v == nil || v.GObject == nil {
27		return nil
28	}
29	p := unsafe.Pointer(v.GObject)
30	return C.toGtkTreeViewColumn(p)
31}
32
33func marshalTreeViewColumn(p uintptr) (interface{}, error) {
34	c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
35	obj := glib.Take(unsafe.Pointer(c))
36	return wrapTreeViewColumn(obj), nil
37}
38
39func wrapTreeViewColumn(obj *glib.Object) *TreeViewColumn {
40	if obj == nil {
41		return nil
42	}
43
44	return &TreeViewColumn{glib.InitiallyUnowned{obj}}
45}
46
47// TreeViewColumnNew() is a wrapper around gtk_tree_view_column_new().
48func TreeViewColumnNew() (*TreeViewColumn, error) {
49	c := C.gtk_tree_view_column_new()
50	if c == nil {
51		return nil, nilPtrErr
52	}
53	return wrapTreeViewColumn(glib.Take(unsafe.Pointer(c))), nil
54}
55
56// TreeViewColumnNewWithArea is a wrapper around gtk_tree_view_column_new_with_area().
57func TreeViewColumnNewWithArea(area ICellArea) (*TreeViewColumn, error) {
58	c := C.gtk_tree_view_column_new_with_area(area.toCellArea())
59	if c == nil {
60		return nil, nilPtrErr
61	}
62	return wrapTreeViewColumn(glib.Take(unsafe.Pointer(c))), nil
63}
64
65// TreeViewColumnNewWithAttribute() is a wrapper around
66// gtk_tree_view_column_new_with_attributes() that only sets one
67// attribute for one column.
68func TreeViewColumnNewWithAttribute(title string, renderer ICellRenderer, attribute string, column int) (*TreeViewColumn, error) {
69	t_cstr := C.CString(title)
70	defer C.free(unsafe.Pointer(t_cstr))
71	a_cstr := C.CString(attribute)
72	defer C.free(unsafe.Pointer(a_cstr))
73	c := C._gtk_tree_view_column_new_with_attributes_one((*C.gchar)(t_cstr),
74		renderer.toCellRenderer(), (*C.gchar)(a_cstr), C.gint(column))
75	if c == nil {
76		return nil, nilPtrErr
77	}
78	return wrapTreeViewColumn(glib.Take(unsafe.Pointer(c))), nil
79}
80
81// AddAttribute() is a wrapper around gtk_tree_view_column_add_attribute().
82func (v *TreeViewColumn) AddAttribute(renderer ICellRenderer, attribute string, column int) {
83	cstr := C.CString(attribute)
84	defer C.free(unsafe.Pointer(cstr))
85	C.gtk_tree_view_column_add_attribute(v.native(),
86		renderer.toCellRenderer(), (*C.gchar)(cstr), C.gint(column))
87}
88
89// SetExpand() is a wrapper around gtk_tree_view_column_set_expand().
90func (v *TreeViewColumn) SetExpand(expand bool) {
91	C.gtk_tree_view_column_set_expand(v.native(), gbool(expand))
92}
93
94// GetExpand() is a wrapper around gtk_tree_view_column_get_expand().
95func (v *TreeViewColumn) GetExpand() bool {
96	c := C.gtk_tree_view_column_get_expand(v.native())
97	return gobool(c)
98}
99
100// SetMinWidth() is a wrapper around gtk_tree_view_column_set_min_width().
101func (v *TreeViewColumn) SetMinWidth(minWidth int) {
102	C.gtk_tree_view_column_set_min_width(v.native(), C.gint(minWidth))
103}
104
105// GetMinWidth() is a wrapper around gtk_tree_view_column_get_min_width().
106func (v *TreeViewColumn) GetMinWidth() int {
107	c := C.gtk_tree_view_column_get_min_width(v.native())
108	return int(c)
109}
110
111// PackStart() is a wrapper around gtk_tree_view_column_pack_start().
112func (v *TreeViewColumn) PackStart(cell ICellRenderer, expand bool) {
113	C.gtk_tree_view_column_pack_start(v.native(), cell.toCellRenderer(), gbool(expand))
114}
115
116// PackEnd() is a wrapper around gtk_tree_view_column_pack_end().
117func (v *TreeViewColumn) PackEnd(cell ICellRenderer, expand bool) {
118	C.gtk_tree_view_column_pack_end(v.native(), cell.toCellRenderer(), gbool(expand))
119}
120
121// Clear() is a wrapper around gtk_tree_view_column_clear().
122func (v *TreeViewColumn) Clear() {
123	C.gtk_tree_view_column_clear(v.native())
124}
125
126// ClearAttributes() is a wrapper around gtk_tree_view_column_clear_attributes().
127func (v *TreeViewColumn) ClearAttributes(cell *CellRenderer) {
128	C.gtk_tree_view_column_clear_attributes(v.native(), cell.native())
129}
130
131// SetSpacing() is a wrapper around gtk_tree_view_column_set_spacing().
132func (v *TreeViewColumn) SetSpacing(spacing int) {
133	C.gtk_tree_view_column_set_spacing(v.native(), C.gint(spacing))
134}
135
136// GetSpacing() is a wrapper around gtk_tree_view_column_get_spacing().
137func (v *TreeViewColumn) GetSpacing() int {
138	return int(C.gtk_tree_view_column_get_spacing(v.native()))
139}
140
141// SetVisible() is a wrapper around gtk_tree_view_column_set_visible().
142func (v *TreeViewColumn) SetVisible(visible bool) {
143	C.gtk_tree_view_column_set_visible(v.native(), gbool(visible))
144}
145
146// GetVisible() is a wrapper around gtk_tree_view_column_get_visible().
147func (v *TreeViewColumn) GetVisible() bool {
148	return gobool(C.gtk_tree_view_column_get_visible(v.native()))
149}
150
151// SetResizable() is a wrapper around gtk_tree_view_column_set_resizable().
152func (v *TreeViewColumn) SetResizable(resizable bool) {
153	C.gtk_tree_view_column_set_resizable(v.native(), gbool(resizable))
154}
155
156// GetResizable() is a wrapper around gtk_tree_view_column_get_resizable().
157func (v *TreeViewColumn) GetResizable() bool {
158	return gobool(C.gtk_tree_view_column_get_resizable(v.native()))
159}
160
161// GetWidth() is a wrapper around gtk_tree_view_column_get_width().
162func (v *TreeViewColumn) GetWidth() int {
163	return int(C.gtk_tree_view_column_get_width(v.native()))
164}
165
166// SetFixedWidth() is a wrapper around gtk_tree_view_column_set_fixed_width().
167func (v *TreeViewColumn) SetFixedWidth(w int) {
168	C.gtk_tree_view_column_set_fixed_width(v.native(), C.gint(w))
169}
170
171// GetFixedWidth() is a wrapper around gtk_tree_view_column_get_fixed_width().
172func (v *TreeViewColumn) GetFixedWidth() int {
173	return int(C.gtk_tree_view_column_get_fixed_width(v.native()))
174}
175
176// SetMaxWidth() is a wrapper around gtk_tree_view_column_set_max_width().
177func (v *TreeViewColumn) SetMaxWidth(w int) {
178	C.gtk_tree_view_column_set_max_width(v.native(), C.gint(w))
179}
180
181// GetMaxWidth() is a wrapper around gtk_tree_view_column_get_max_width().
182func (v *TreeViewColumn) GetMaxWidth() int {
183	return int(C.gtk_tree_view_column_get_max_width(v.native()))
184}
185
186// Clicked() is a wrapper around gtk_tree_view_column_clicked().
187func (v *TreeViewColumn) Clicked() {
188	C.gtk_tree_view_column_clicked(v.native())
189}
190
191// SetTitle() is a wrapper around gtk_tree_view_column_set_title().
192func (v *TreeViewColumn) SetTitle(t string) {
193	cstr := (*C.gchar)(C.CString(t))
194	defer C.free(unsafe.Pointer(cstr))
195	C.gtk_tree_view_column_set_title(v.native(), cstr)
196}
197
198// GetTitle() is a wrapper around gtk_tree_view_column_get_title().
199func (v *TreeViewColumn) GetTitle() string {
200	return C.GoString((*C.char)(C.gtk_tree_view_column_get_title(v.native())))
201}
202
203// SetClickable() is a wrapper around gtk_tree_view_column_set_clickable().
204func (v *TreeViewColumn) SetClickable(clickable bool) {
205	C.gtk_tree_view_column_set_clickable(v.native(), gbool(clickable))
206}
207
208// GetClickable() is a wrapper around gtk_tree_view_column_get_clickable().
209func (v *TreeViewColumn) GetClickable() bool {
210	return gobool(C.gtk_tree_view_column_get_clickable(v.native()))
211}
212
213// SetReorderable() is a wrapper around gtk_tree_view_column_set_reorderable().
214func (v *TreeViewColumn) SetReorderable(reorderable bool) {
215	C.gtk_tree_view_column_set_reorderable(v.native(), gbool(reorderable))
216}
217
218// GetReorderable() is a wrapper around gtk_tree_view_column_get_reorderable().
219func (v *TreeViewColumn) GetReorderable() bool {
220	return gobool(C.gtk_tree_view_column_get_reorderable(v.native()))
221}
222
223// SetSortIndicator() is a wrapper around gtk_tree_view_column_set_sort_indicator().
224func (v *TreeViewColumn) SetSortIndicator(reorderable bool) {
225	C.gtk_tree_view_column_set_sort_indicator(v.native(), gbool(reorderable))
226}
227
228// GetSortIndicator() is a wrapper around gtk_tree_view_column_get_sort_indicator().
229func (v *TreeViewColumn) GetSortIndicator() bool {
230	return gobool(C.gtk_tree_view_column_get_sort_indicator(v.native()))
231}
232
233// SetSortColumnID() is a wrapper around gtk_tree_view_column_set_sort_column_id().
234func (v *TreeViewColumn) SetSortColumnID(w int) {
235	C.gtk_tree_view_column_set_sort_column_id(v.native(), C.gint(w))
236}
237
238// GetSortColumnID() is a wrapper around gtk_tree_view_column_get_sort_column_id().
239func (v *TreeViewColumn) GetSortColumnID() int {
240	return int(C.gtk_tree_view_column_get_sort_column_id(v.native()))
241}
242
243// CellIsVisible() is a wrapper around gtk_tree_view_column_cell_is_visible().
244func (v *TreeViewColumn) CellIsVisible() bool {
245	return gobool(C.gtk_tree_view_column_cell_is_visible(v.native()))
246}
247
248// FocusCell() is a wrapper around gtk_tree_view_column_focus_cell().
249func (v *TreeViewColumn) FocusCell(cell *CellRenderer) {
250	C.gtk_tree_view_column_focus_cell(v.native(), cell.native())
251}
252
253// QueueResize() is a wrapper around gtk_tree_view_column_queue_resize().
254func (v *TreeViewColumn) QueueResize() {
255	C.gtk_tree_view_column_queue_resize(v.native())
256}
257
258// GetXOffset() is a wrapper around gtk_tree_view_column_get_x_offset().
259func (v *TreeViewColumn) GetXOffset() int {
260	return int(C.gtk_tree_view_column_get_x_offset(v.native()))
261}
262
263// void 	gtk_tree_view_column_set_attributes ()
264// void 	gtk_tree_view_column_set_cell_data_func ()
265
266type TreeViewColumnSizing int
267
268const (
269	TREE_VIEW_COLUMN_GROW_ONLY TreeViewColumnSizing = C.GTK_TREE_VIEW_COLUMN_GROW_ONLY
270	TREE_VIEW_COLUMN_AUTOSIZE                       = C.GTK_TREE_VIEW_COLUMN_AUTOSIZE
271	TREE_VIEW_COLUMN_FIXED                          = C.GTK_TREE_VIEW_COLUMN_FIXED
272)
273
274// void 	gtk_tree_view_column_set_sizing ()
275func (v *TreeViewColumn) SetSizing(sizing TreeViewColumnSizing) {
276	C.gtk_tree_view_column_set_sizing(v.native(), C.GtkTreeViewColumnSizing(sizing))
277}
278
279// GtkTreeViewColumnSizing 	gtk_tree_view_column_get_sizing ()
280func (v *TreeViewColumn) GetSizing() TreeViewColumnSizing {
281	return TreeViewColumnSizing(C.gtk_tree_view_column_get_sizing(v.native()))
282}
283
284// SetWidget() is a wrapper around gtk_tree_view_column_set_widget().
285func (v *TreeViewColumn) SetWidget(widget IWidget) {
286	C.gtk_tree_view_column_set_widget(v.native(), widget.toWidget())
287}
288
289// GetButton() is a wrapper around gtk_tree_view_column_get_button().
290func (v *TreeViewColumn) GetButton() (IWidget, error) {
291	widget := C.gtk_tree_view_column_get_button(v.native())
292	if widget == nil {
293		return nil, nilPtrErr
294	}
295	return castWidget(widget)
296}
297
298// GetWidget() is a wrapper around gtk_tree_view_column_get_widget().
299func (v *TreeViewColumn) GetWidget() (IWidget, error) {
300	widget := C.gtk_tree_view_column_get_widget(v.native())
301	if widget == nil {
302		return nil, nil
303	}
304	return castWidget(widget)
305}
306
307// void 	gtk_tree_view_column_set_alignment ()
308// gfloat 	gtk_tree_view_column_get_alignment ()
309
310// void 	gtk_tree_view_column_set_sort_order ()
311func (v *TreeViewColumn) SetSortOrder(order SortType) {
312	C.gtk_tree_view_column_set_sort_order(v.native(), C.GtkSortType(order))
313}
314
315// GtkSortType 	gtk_tree_view_column_get_sort_order ()
316func (v *TreeViewColumn) GetSortOrder() SortType {
317	return SortType(C.gtk_tree_view_column_get_sort_order(v.native()))
318}
319
320// void 	gtk_tree_view_column_cell_set_cell_data ()
321// void 	gtk_tree_view_column_cell_get_size ()
322// gboolean 	gtk_tree_view_column_cell_get_position ()
323// GtkWidget * 	gtk_tree_view_column_get_tree_view ()
324