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	return &TreeViewColumn{glib.InitiallyUnowned{obj}}
41}
42
43// TreeViewColumnNew() is a wrapper around gtk_tree_view_column_new().
44func TreeViewColumnNew() (*TreeViewColumn, error) {
45	c := C.gtk_tree_view_column_new()
46	if c == nil {
47		return nil, nilPtrErr
48	}
49	return wrapTreeViewColumn(glib.Take(unsafe.Pointer(c))), nil
50}
51
52// TreeViewColumnNewWithAttribute() is a wrapper around
53// gtk_tree_view_column_new_with_attributes() that only sets one
54// attribute for one column.
55func TreeViewColumnNewWithAttribute(title string, renderer ICellRenderer, attribute string, column int) (*TreeViewColumn, error) {
56	t_cstr := C.CString(title)
57	defer C.free(unsafe.Pointer(t_cstr))
58	a_cstr := C.CString(attribute)
59	defer C.free(unsafe.Pointer(a_cstr))
60	c := C._gtk_tree_view_column_new_with_attributes_one((*C.gchar)(t_cstr),
61		renderer.toCellRenderer(), (*C.gchar)(a_cstr), C.gint(column))
62	if c == nil {
63		return nil, nilPtrErr
64	}
65	return wrapTreeViewColumn(glib.Take(unsafe.Pointer(c))), nil
66}
67
68// AddAttribute() is a wrapper around gtk_tree_view_column_add_attribute().
69func (v *TreeViewColumn) AddAttribute(renderer ICellRenderer, attribute string, column int) {
70	cstr := C.CString(attribute)
71	defer C.free(unsafe.Pointer(cstr))
72	C.gtk_tree_view_column_add_attribute(v.native(),
73		renderer.toCellRenderer(), (*C.gchar)(cstr), C.gint(column))
74}
75
76// SetExpand() is a wrapper around gtk_tree_view_column_set_expand().
77func (v *TreeViewColumn) SetExpand(expand bool) {
78	C.gtk_tree_view_column_set_expand(v.native(), gbool(expand))
79}
80
81// GetExpand() is a wrapper around gtk_tree_view_column_get_expand().
82func (v *TreeViewColumn) GetExpand() bool {
83	c := C.gtk_tree_view_column_get_expand(v.native())
84	return gobool(c)
85}
86
87// SetMinWidth() is a wrapper around gtk_tree_view_column_set_min_width().
88func (v *TreeViewColumn) SetMinWidth(minWidth int) {
89	C.gtk_tree_view_column_set_min_width(v.native(), C.gint(minWidth))
90}
91
92// GetMinWidth() is a wrapper around gtk_tree_view_column_get_min_width().
93func (v *TreeViewColumn) GetMinWidth() int {
94	c := C.gtk_tree_view_column_get_min_width(v.native())
95	return int(c)
96}
97
98// PackStart() is a wrapper around gtk_tree_view_column_pack_start().
99func (v *TreeViewColumn) PackStart(cell ICellRenderer, expand bool) {
100	C.gtk_tree_view_column_pack_start(v.native(), cell.toCellRenderer(), gbool(expand))
101}
102
103// PackEnd() is a wrapper around gtk_tree_view_column_pack_end().
104func (v *TreeViewColumn) PackEnd(cell ICellRenderer, expand bool) {
105	C.gtk_tree_view_column_pack_end(v.native(), cell.toCellRenderer(), gbool(expand))
106}
107
108// Clear() is a wrapper around gtk_tree_view_column_clear().
109func (v *TreeViewColumn) Clear() {
110	C.gtk_tree_view_column_clear(v.native())
111}
112
113// ClearAttributes() is a wrapper around gtk_tree_view_column_clear_attributes().
114func (v *TreeViewColumn) ClearAttributes(cell *CellRenderer) {
115	C.gtk_tree_view_column_clear_attributes(v.native(), cell.native())
116}
117
118// SetSpacing() is a wrapper around gtk_tree_view_column_set_spacing().
119func (v *TreeViewColumn) SetSpacing(spacing int) {
120	C.gtk_tree_view_column_set_spacing(v.native(), C.gint(spacing))
121}
122
123// GetSpacing() is a wrapper around gtk_tree_view_column_get_spacing().
124func (v *TreeViewColumn) GetSpacing() int {
125	return int(C.gtk_tree_view_column_get_spacing(v.native()))
126}
127
128// SetVisible() is a wrapper around gtk_tree_view_column_set_visible().
129func (v *TreeViewColumn) SetVisible(visible bool) {
130	C.gtk_tree_view_column_set_visible(v.native(), gbool(visible))
131}
132
133// GetVisible() is a wrapper around gtk_tree_view_column_get_visible().
134func (v *TreeViewColumn) GetVisible() bool {
135	return gobool(C.gtk_tree_view_column_get_visible(v.native()))
136}
137
138// SetResizable() is a wrapper around gtk_tree_view_column_set_resizable().
139func (v *TreeViewColumn) SetResizable(resizable bool) {
140	C.gtk_tree_view_column_set_resizable(v.native(), gbool(resizable))
141}
142
143// GetResizable() is a wrapper around gtk_tree_view_column_get_resizable().
144func (v *TreeViewColumn) GetResizable() bool {
145	return gobool(C.gtk_tree_view_column_get_resizable(v.native()))
146}
147
148// GetWidth() is a wrapper around gtk_tree_view_column_get_width().
149func (v *TreeViewColumn) GetWidth() int {
150	return int(C.gtk_tree_view_column_get_width(v.native()))
151}
152
153// SetFixedWidth() is a wrapper around gtk_tree_view_column_set_fixed_width().
154func (v *TreeViewColumn) SetFixedWidth(w int) {
155	C.gtk_tree_view_column_set_fixed_width(v.native(), C.gint(w))
156}
157
158// GetFixedWidth() is a wrapper around gtk_tree_view_column_get_fixed_width().
159func (v *TreeViewColumn) GetFixedWidth() int {
160	return int(C.gtk_tree_view_column_get_fixed_width(v.native()))
161}
162
163// SetMaxWidth() is a wrapper around gtk_tree_view_column_set_max_width().
164func (v *TreeViewColumn) SetMaxWidth(w int) {
165	C.gtk_tree_view_column_set_max_width(v.native(), C.gint(w))
166}
167
168// GetMaxWidth() is a wrapper around gtk_tree_view_column_get_max_width().
169func (v *TreeViewColumn) GetMaxWidth() int {
170	return int(C.gtk_tree_view_column_get_max_width(v.native()))
171}
172
173// Clicked() is a wrapper around gtk_tree_view_column_clicked().
174func (v *TreeViewColumn) Clicked() {
175	C.gtk_tree_view_column_clicked(v.native())
176}
177
178// SetTitle() is a wrapper around gtk_tree_view_column_set_title().
179func (v *TreeViewColumn) SetTitle(t string) {
180	cstr := (*C.gchar)(C.CString(t))
181	defer C.free(unsafe.Pointer(cstr))
182	C.gtk_tree_view_column_set_title(v.native(), cstr)
183}
184
185// GetTitle() is a wrapper around gtk_tree_view_column_get_title().
186func (v *TreeViewColumn) GetTitle() string {
187	return C.GoString((*C.char)(C.gtk_tree_view_column_get_title(v.native())))
188}
189
190// SetClickable() is a wrapper around gtk_tree_view_column_set_clickable().
191func (v *TreeViewColumn) SetClickable(clickable bool) {
192	C.gtk_tree_view_column_set_clickable(v.native(), gbool(clickable))
193}
194
195// GetClickable() is a wrapper around gtk_tree_view_column_get_clickable().
196func (v *TreeViewColumn) GetClickable() bool {
197	return gobool(C.gtk_tree_view_column_get_clickable(v.native()))
198}
199
200// SetReorderable() is a wrapper around gtk_tree_view_column_set_reorderable().
201func (v *TreeViewColumn) SetReorderable(reorderable bool) {
202	C.gtk_tree_view_column_set_reorderable(v.native(), gbool(reorderable))
203}
204
205// GetReorderable() is a wrapper around gtk_tree_view_column_get_reorderable().
206func (v *TreeViewColumn) GetReorderable() bool {
207	return gobool(C.gtk_tree_view_column_get_reorderable(v.native()))
208}
209
210// SetSortIndicator() is a wrapper around gtk_tree_view_column_set_sort_indicator().
211func (v *TreeViewColumn) SetSortIndicator(reorderable bool) {
212	C.gtk_tree_view_column_set_sort_indicator(v.native(), gbool(reorderable))
213}
214
215// GetSortIndicator() is a wrapper around gtk_tree_view_column_get_sort_indicator().
216func (v *TreeViewColumn) GetSortIndicator() bool {
217	return gobool(C.gtk_tree_view_column_get_sort_indicator(v.native()))
218}
219
220// SetSortColumnID() is a wrapper around gtk_tree_view_column_set_sort_column_id().
221func (v *TreeViewColumn) SetSortColumnID(w int) {
222	C.gtk_tree_view_column_set_sort_column_id(v.native(), C.gint(w))
223}
224
225// GetSortColumnID() is a wrapper around gtk_tree_view_column_get_sort_column_id().
226func (v *TreeViewColumn) GetSortColumnID() int {
227	return int(C.gtk_tree_view_column_get_sort_column_id(v.native()))
228}
229
230// CellIsVisible() is a wrapper around gtk_tree_view_column_cell_is_visible().
231func (v *TreeViewColumn) CellIsVisible() bool {
232	return gobool(C.gtk_tree_view_column_cell_is_visible(v.native()))
233}
234
235// FocusCell() is a wrapper around gtk_tree_view_column_focus_cell().
236func (v *TreeViewColumn) FocusCell(cell *CellRenderer) {
237	C.gtk_tree_view_column_focus_cell(v.native(), cell.native())
238}
239
240// QueueResize() is a wrapper around gtk_tree_view_column_queue_resize().
241func (v *TreeViewColumn) QueueResize() {
242	C.gtk_tree_view_column_queue_resize(v.native())
243}
244
245// GetXOffset() is a wrapper around gtk_tree_view_column_get_x_offset().
246func (v *TreeViewColumn) GetXOffset() int {
247	return int(C.gtk_tree_view_column_get_x_offset(v.native()))
248}
249
250// GtkTreeViewColumn * 	gtk_tree_view_column_new_with_area ()
251// void 	gtk_tree_view_column_set_attributes ()
252// void 	gtk_tree_view_column_set_cell_data_func ()
253
254type TreeViewColumnSizing int
255
256const (
257	TREE_VIEW_COLUMN_GROW_ONLY TreeViewColumnSizing = C.GTK_TREE_VIEW_COLUMN_GROW_ONLY
258	TREE_VIEW_COLUMN_AUTOSIZE                       = C.GTK_TREE_VIEW_COLUMN_AUTOSIZE
259	TREE_VIEW_COLUMN_FIXED                          = C.GTK_TREE_VIEW_COLUMN_FIXED
260)
261
262// void 	gtk_tree_view_column_set_sizing ()
263func (v *TreeViewColumn) SetSizing(sizing TreeViewColumnSizing) {
264	C.gtk_tree_view_column_set_sizing(v.native(), C.GtkTreeViewColumnSizing(sizing))
265}
266
267// GtkTreeViewColumnSizing 	gtk_tree_view_column_get_sizing ()
268func (v *TreeViewColumn) GetSizing() TreeViewColumnSizing {
269	return TreeViewColumnSizing(C.gtk_tree_view_column_get_sizing(v.native()))
270}
271
272// void 	gtk_tree_view_column_set_widget ()
273// GtkWidget * 	gtk_tree_view_column_get_widget ()
274// GtkWidget * 	gtk_tree_view_column_get_button ()
275// void 	gtk_tree_view_column_set_alignment ()
276// gfloat 	gtk_tree_view_column_get_alignment ()
277
278// void 	gtk_tree_view_column_set_sort_order ()
279func (v *TreeViewColumn) SetSortOrder(order SortType) {
280	C.gtk_tree_view_column_set_sort_order(v.native(), C.GtkSortType(order))
281}
282
283// GtkSortType 	gtk_tree_view_column_get_sort_order ()
284func (v *TreeViewColumn) GetSortOrder() SortType {
285	return SortType(C.gtk_tree_view_column_get_sort_order(v.native()))
286}
287
288// void 	gtk_tree_view_column_cell_set_cell_data ()
289// void 	gtk_tree_view_column_cell_get_size ()
290// gboolean 	gtk_tree_view_column_cell_get_position ()
291// GtkWidget * 	gtk_tree_view_column_get_tree_view ()
292