v0.2.1 c0399be

gtkcelllayout.go RawHistoryFolder

1// Package gtk was automatically generated by github.com/bnema/puregotk DO NOT EDIT
2package gtk
3
4import (
5	"structs"
6	"unsafe"
7
8	"github.com/ebitengine/purego"
9
10	"github.com/bnema/puregotk/pkg/core"
11	"github.com/bnema/puregotk/v4/glib"
12	"github.com/bnema/puregotk/v4/gobject"
13	"github.com/bnema/puregotk/v4/gobject/types"
14)
15
16// A function which should set the value of @cell_layout’s cell renderer(s)
17// as appropriate.
18type CellLayoutDataFunc func(uintptr, uintptr, uintptr, *TreeIter, uintptr)
19
20type CellLayoutIface struct {
21	_ structs.HostLayout
22
23	GIface uintptr
24
25	xPackStart uintptr
26
27	xPackEnd uintptr
28
29	xClear uintptr
30
31	xAddAttribute uintptr
32
33	xSetCellDataFunc uintptr
34
35	xClearAttributes uintptr
36
37	xReorder uintptr
38
39	xGetCells uintptr
40
41	xGetArea uintptr
42}
43
44func (x *CellLayoutIface) GoPointer() uintptr {
45	return uintptr(unsafe.Pointer(x))
46}
47
48// OverridePackStart sets the "pack_start" callback function.
49// Packs the cell into the beginning of cell_layout.
50func (x *CellLayoutIface) OverridePackStart(cb func(CellLayout, *CellRenderer, bool)) {
51	if cb == nil {
52		x.xPackStart = 0
53	} else {
54		x.xPackStart = purego.NewCallback(func(CellLayoutVarp uintptr, CellVarp uintptr, ExpandVarp bool) {
55			cb(&CellLayoutBase{Ptr: CellLayoutVarp}, CellRendererNewFromInternalPtr(CellVarp), ExpandVarp)
56		})
57	}
58}
59
60// GetPackStart gets the "pack_start" callback function.
61// Packs the cell into the beginning of cell_layout.
62func (x *CellLayoutIface) GetPackStart() func(CellLayout, *CellRenderer, bool) {
63	if x.xPackStart == 0 {
64		return nil
65	}
66	var rawCallback func(CellLayoutVarp uintptr, CellVarp uintptr, ExpandVarp bool)
67	purego.RegisterFunc(&rawCallback, x.xPackStart)
68	return func(CellLayoutVar CellLayout, CellVar *CellRenderer, ExpandVar bool) {
69		rawCallback(CellLayoutVar.GoPointer(), CellVar.GoPointer(), ExpandVar)
70	}
71}
72
73// OverridePackEnd sets the "pack_end" callback function.
74// Adds the cell to the end of cell_layout.
75func (x *CellLayoutIface) OverridePackEnd(cb func(CellLayout, *CellRenderer, bool)) {
76	if cb == nil {
77		x.xPackEnd = 0
78	} else {
79		x.xPackEnd = purego.NewCallback(func(CellLayoutVarp uintptr, CellVarp uintptr, ExpandVarp bool) {
80			cb(&CellLayoutBase{Ptr: CellLayoutVarp}, CellRendererNewFromInternalPtr(CellVarp), ExpandVarp)
81		})
82	}
83}
84
85// GetPackEnd gets the "pack_end" callback function.
86// Adds the cell to the end of cell_layout.
87func (x *CellLayoutIface) GetPackEnd() func(CellLayout, *CellRenderer, bool) {
88	if x.xPackEnd == 0 {
89		return nil
90	}
91	var rawCallback func(CellLayoutVarp uintptr, CellVarp uintptr, ExpandVarp bool)
92	purego.RegisterFunc(&rawCallback, x.xPackEnd)
93	return func(CellLayoutVar CellLayout, CellVar *CellRenderer, ExpandVar bool) {
94		rawCallback(CellLayoutVar.GoPointer(), CellVar.GoPointer(), ExpandVar)
95	}
96}
97
98// OverrideClear sets the "clear" callback function.
99// Unsets all the mappings on all renderers on cell_layout and
100//
101//	removes all renderers from cell_layout.
102func (x *CellLayoutIface) OverrideClear(cb func(CellLayout)) {
103	if cb == nil {
104		x.xClear = 0
105	} else {
106		x.xClear = purego.NewCallback(func(CellLayoutVarp uintptr) {
107			cb(&CellLayoutBase{Ptr: CellLayoutVarp})
108		})
109	}
110}
111
112// GetClear gets the "clear" callback function.
113// Unsets all the mappings on all renderers on cell_layout and
114//
115//	removes all renderers from cell_layout.
116func (x *CellLayoutIface) GetClear() func(CellLayout) {
117	if x.xClear == 0 {
118		return nil
119	}
120	var rawCallback func(CellLayoutVarp uintptr)
121	purego.RegisterFunc(&rawCallback, x.xClear)
122	return func(CellLayoutVar CellLayout) {
123		rawCallback(CellLayoutVar.GoPointer())
124	}
125}
126
127// OverrideAddAttribute sets the "add_attribute" callback function.
128// Adds an attribute mapping to the list in
129//
130//	cell_layout.
131func (x *CellLayoutIface) OverrideAddAttribute(cb func(CellLayout, *CellRenderer, string, int)) {
132	if cb == nil {
133		x.xAddAttribute = 0
134	} else {
135		x.xAddAttribute = purego.NewCallback(func(CellLayoutVarp uintptr, CellVarp uintptr, AttributeVarp string, ColumnVarp int) {
136			cb(&CellLayoutBase{Ptr: CellLayoutVarp}, CellRendererNewFromInternalPtr(CellVarp), AttributeVarp, ColumnVarp)
137		})
138	}
139}
140
141// GetAddAttribute gets the "add_attribute" callback function.
142// Adds an attribute mapping to the list in
143//
144//	cell_layout.
145func (x *CellLayoutIface) GetAddAttribute() func(CellLayout, *CellRenderer, string, int) {
146	if x.xAddAttribute == 0 {
147		return nil
148	}
149	var rawCallback func(CellLayoutVarp uintptr, CellVarp uintptr, AttributeVarp string, ColumnVarp int)
150	purego.RegisterFunc(&rawCallback, x.xAddAttribute)
151	return func(CellLayoutVar CellLayout, CellVar *CellRenderer, AttributeVar string, ColumnVar int) {
152		rawCallback(CellLayoutVar.GoPointer(), CellVar.GoPointer(), AttributeVar, ColumnVar)
153	}
154}
155
156// OverrideSetCellDataFunc sets the "set_cell_data_func" callback function.
157// Sets the `GtkCellLayout`DataFunc to use for
158//
159//	cell_layout.
160func (x *CellLayoutIface) OverrideSetCellDataFunc(cb func(CellLayout, *CellRenderer, *CellLayoutDataFunc, uintptr, *glib.DestroyNotify)) {
161	if cb == nil {
162		x.xSetCellDataFunc = 0
163	} else {
164		x.xSetCellDataFunc = purego.NewCallback(func(CellLayoutVarp uintptr, CellVarp uintptr, FuncVarp uintptr, FuncDataVarp uintptr, DestroyVarp uintptr) {
165			cb(&CellLayoutBase{Ptr: CellLayoutVarp}, CellRendererNewFromInternalPtr(CellVarp), (*CellLayoutDataFunc)(unsafe.Pointer(FuncVarp)), FuncDataVarp, (*glib.DestroyNotify)(unsafe.Pointer(DestroyVarp)))
166		})
167	}
168}
169
170// GetSetCellDataFunc gets the "set_cell_data_func" callback function.
171// Sets the `GtkCellLayout`DataFunc to use for
172//
173//	cell_layout.
174func (x *CellLayoutIface) GetSetCellDataFunc() func(CellLayout, *CellRenderer, *CellLayoutDataFunc, uintptr, *glib.DestroyNotify) {
175	if x.xSetCellDataFunc == 0 {
176		return nil
177	}
178	var rawCallback func(CellLayoutVarp uintptr, CellVarp uintptr, FuncVarp uintptr, FuncDataVarp uintptr, DestroyVarp uintptr)
179	purego.RegisterFunc(&rawCallback, x.xSetCellDataFunc)
180	return func(CellLayoutVar CellLayout, CellVar *CellRenderer, FuncVar *CellLayoutDataFunc, FuncDataVar uintptr, DestroyVar *glib.DestroyNotify) {
181		rawCallback(CellLayoutVar.GoPointer(), CellVar.GoPointer(), glib.NewCallbackNullable(FuncVar), FuncDataVar, glib.NewCallback(DestroyVar))
182	}
183}
184
185// OverrideClearAttributes sets the "clear_attributes" callback function.
186// Clears all existing attributes previously set
187//
188//	with gtk_cell_layout_set_attributes().
189func (x *CellLayoutIface) OverrideClearAttributes(cb func(CellLayout, *CellRenderer)) {
190	if cb == nil {
191		x.xClearAttributes = 0
192	} else {
193		x.xClearAttributes = purego.NewCallback(func(CellLayoutVarp uintptr, CellVarp uintptr) {
194			cb(&CellLayoutBase{Ptr: CellLayoutVarp}, CellRendererNewFromInternalPtr(CellVarp))
195		})
196	}
197}
198
199// GetClearAttributes gets the "clear_attributes" callback function.
200// Clears all existing attributes previously set
201//
202//	with gtk_cell_layout_set_attributes().
203func (x *CellLayoutIface) GetClearAttributes() func(CellLayout, *CellRenderer) {
204	if x.xClearAttributes == 0 {
205		return nil
206	}
207	var rawCallback func(CellLayoutVarp uintptr, CellVarp uintptr)
208	purego.RegisterFunc(&rawCallback, x.xClearAttributes)
209	return func(CellLayoutVar CellLayout, CellVar *CellRenderer) {
210		rawCallback(CellLayoutVar.GoPointer(), CellVar.GoPointer())
211	}
212}
213
214// OverrideReorder sets the "reorder" callback function.
215// Re-inserts cell at position.
216func (x *CellLayoutIface) OverrideReorder(cb func(CellLayout, *CellRenderer, int)) {
217	if cb == nil {
218		x.xReorder = 0
219	} else {
220		x.xReorder = purego.NewCallback(func(CellLayoutVarp uintptr, CellVarp uintptr, PositionVarp int) {
221			cb(&CellLayoutBase{Ptr: CellLayoutVarp}, CellRendererNewFromInternalPtr(CellVarp), PositionVarp)
222		})
223	}
224}
225
226// GetReorder gets the "reorder" callback function.
227// Re-inserts cell at position.
228func (x *CellLayoutIface) GetReorder() func(CellLayout, *CellRenderer, int) {
229	if x.xReorder == 0 {
230		return nil
231	}
232	var rawCallback func(CellLayoutVarp uintptr, CellVarp uintptr, PositionVarp int)
233	purego.RegisterFunc(&rawCallback, x.xReorder)
234	return func(CellLayoutVar CellLayout, CellVar *CellRenderer, PositionVar int) {
235		rawCallback(CellLayoutVar.GoPointer(), CellVar.GoPointer(), PositionVar)
236	}
237}
238
239// OverrideGetCells sets the "get_cells" callback function.
240// Get the cell renderers which have been added to
241//
242//	cell_layout.
243func (x *CellLayoutIface) OverrideGetCells(cb func(CellLayout) *glib.List) {
244	if cb == nil {
245		x.xGetCells = 0
246	} else {
247		x.xGetCells = purego.NewCallback(func(CellLayoutVarp uintptr) *glib.List {
248			return cb(&CellLayoutBase{Ptr: CellLayoutVarp})
249		})
250	}
251}
252
253// GetGetCells gets the "get_cells" callback function.
254// Get the cell renderers which have been added to
255//
256//	cell_layout.
257func (x *CellLayoutIface) GetGetCells() func(CellLayout) *glib.List {
258	if x.xGetCells == 0 {
259		return nil
260	}
261	var rawCallback func(CellLayoutVarp uintptr) *glib.List
262	purego.RegisterFunc(&rawCallback, x.xGetCells)
263	return func(CellLayoutVar CellLayout) *glib.List {
264		return rawCallback(CellLayoutVar.GoPointer())
265	}
266}
267
268// OverrideGetArea sets the "get_area" callback function.
269// Get the underlying `GtkCellArea` which might be
270//
271//	cell_layout if called on a `GtkCellArea` or might be NULL if no
272//	`GtkCellArea` is used by cell_layout.
273func (x *CellLayoutIface) OverrideGetArea(cb func(CellLayout) *CellArea) {
274	if cb == nil {
275		x.xGetArea = 0
276	} else {
277		x.xGetArea = purego.NewCallback(func(CellLayoutVarp uintptr) uintptr {
278			ret := cb(&CellLayoutBase{Ptr: CellLayoutVarp})
279			if ret == nil {
280				return 0
281			}
282			return ret.GoPointer()
283		})
284	}
285}
286
287// GetGetArea gets the "get_area" callback function.
288// Get the underlying `GtkCellArea` which might be
289//
290//	cell_layout if called on a `GtkCellArea` or might be NULL if no
291//	`GtkCellArea` is used by cell_layout.
292func (x *CellLayoutIface) GetGetArea() func(CellLayout) *CellArea {
293	if x.xGetArea == 0 {
294		return nil
295	}
296	var rawCallback func(CellLayoutVarp uintptr) uintptr
297	purego.RegisterFunc(&rawCallback, x.xGetArea)
298	return func(CellLayoutVar CellLayout) *CellArea {
299		rawRet := rawCallback(CellLayoutVar.GoPointer())
300		if rawRet == 0 {
301			return nil
302		}
303		ret := &CellArea{}
304		ret.Ptr = rawRet
305		return ret
306	}
307}
308
309// An interface for packing cells
310//
311// `GtkCellLayout` is an interface to be implemented by all objects which
312// want to provide a `GtkTreeViewColumn` like API for packing cells,
313// setting attributes and data funcs.
314//
315// One of the notable features provided by implementations of
316// `GtkCellLayout` are attributes. Attributes let you set the properties
317// in flexible ways. They can just be set to constant values like regular
318// properties. But they can also be mapped to a column of the underlying
319// tree model with gtk_cell_layout_set_attributes(), which means that the value
320// of the attribute can change from cell to cell as they are rendered by
321// the cell renderer. Finally, it is possible to specify a function with
322// gtk_cell_layout_set_cell_data_func() that is called to determine the
323// value of the attribute for each cell that is rendered.
324//
325// ## GtkCellLayouts as GtkBuildable
326//
327// Implementations of GtkCellLayout which also implement the GtkBuildable
328// interface (`GtkCellView`, `GtkIconView`, `GtkComboBox`,
329// `GtkEntryCompletion`, `GtkTreeViewColumn`) accept `GtkCellRenderer` objects
330// as `<child>` elements in UI definitions. They support a custom `<attributes>`
331// element for their children, which can contain multiple `<attribute>`
332// elements. Each `<attribute>` element has a name attribute which specifies
333// a property of the cell renderer; the content of the element is the
334// attribute value.
335//
336// This is an example of a UI definition fragment specifying attributes:
337//
338// ```xml
339// <object class="GtkCellView">
340//
341//	<child>
342//	  <object class="GtkCellRendererText"/>
343//	  <attributes>
344//	    <attribute name="text">0</attribute>
345//	  </attributes>
346//	</child>
347//
348// </object>
349// ```
350//
351// Furthermore for implementations of `GtkCellLayout` that use a `GtkCellArea`
352// to lay out cells (all `GtkCellLayout`s in GTK use a `GtkCellArea`)
353// [cell properties](class.CellArea.html#cell-properties) can also be defined
354// in the format by specifying the custom `<cell-packing>` attribute which can
355// contain multiple `<property>` elements.
356//
357// Here is a UI definition fragment specifying cell properties:
358//
359// ```xml
360// <object class="GtkTreeViewColumn">
361//
362//	<child>
363//	  <object class="GtkCellRendererText"/>
364//	  <cell-packing>
365//	    <property name="align">True</property>
366//	    <property name="expand">False</property>
367//	  </cell-packing>
368//	</child>
369//
370// </object>
371// ```
372//
373// ## Subclassing GtkCellLayout implementations
374//
375// When subclassing a widget that implements `GtkCellLayout` like
376// `GtkIconView` or `GtkComboBox`, there are some considerations related
377// to the fact that these widgets internally use a `GtkCellArea`.
378// The cell area is exposed as a construct-only property by these
379// widgets. This means that it is possible to e.g. do
380//
381// ```c
382// GtkWIdget *combo =
383//
384//	g_object_new (GTK_TYPE_COMBO_BOX, "cell-area", my_cell_area, NULL);
385//
386// ```
387//
388// to use a custom cell area with a combo box. But construct properties
389// are only initialized after instance `init()`
390// functions have run, which means that using functions which rely on
391// the existence of the cell area in your subclass `init()` function will
392// cause the default cell area to be instantiated. In this case, a provided
393// construct property value will be ignored (with a warning, to alert
394// you to the problem).
395//
396// ```c
397// static void
398// my_combo_box_init (MyComboBox *b)
399//
400//	{
401//	  GtkCellRenderer *cell;
402//
403//	  cell = gtk_cell_renderer_pixbuf_new ();
404//
405//	  // The following call causes the default cell area for combo boxes,
406//	  // a GtkCellAreaBox, to be instantiated
407//	  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (b), cell, FALSE);
408//	  ...
409//	}
410//
411// GtkWidget *
412// my_combo_box_new (GtkCellArea *area)
413//
414//	{
415//	  // This call is going to cause a warning about area being ignored
416//	  return g_object_new (MY_TYPE_COMBO_BOX, "cell-area", area, NULL);
417//	}
418//
419// ```
420//
421// If supporting alternative cell areas with your derived widget is
422// not important, then this does not have to concern you. If you want
423// to support alternative cell areas, you can do so by moving the
424// problematic calls out of `init()` and into a `constructor()`
425// for your class.
426type CellLayout interface {
427	GoPointer() uintptr
428	SetGoPointer(uintptr)
429	AddAttribute(CellVar *CellRenderer, AttributeVar string, ColumnVar int)
430	Clear()
431	ClearAttributes(CellVar *CellRenderer)
432	GetArea() *CellArea
433	GetCells() *glib.List
434	PackEnd(CellVar *CellRenderer, ExpandVar bool)
435	PackStart(CellVar *CellRenderer, ExpandVar bool)
436	Reorder(CellVar *CellRenderer, PositionVar int)
437	SetAttributes(CellVar *CellRenderer, varArgs ...interface{})
438	SetCellDataFunc(CellVar *CellRenderer, FuncVar *CellLayoutDataFunc, FuncDataVar uintptr, DestroyVar *glib.DestroyNotify)
439}
440
441var xCellLayoutGLibType func() types.GType
442
443func CellLayoutGLibType() types.GType {
444	return xCellLayoutGLibType()
445}
446
447type CellLayoutBase struct {
448	Ptr uintptr
449}
450
451func (x *CellLayoutBase) GoPointer() uintptr {
452	if x == nil {
453		return 0
454	}
455	return x.Ptr
456}
457
458func (x *CellLayoutBase) SetGoPointer(ptr uintptr) {
459	x.Ptr = ptr
460}
461
462// Adds an attribute mapping to the list in @cell_layout.
463//
464// The @column is the column of the model to get a value from, and the
465// @attribute is the property on @cell to be set from that value. So for
466// example if column 2 of the model contains strings, you could have the
467// “text” attribute of a `GtkCellRendererText` get its values from column 2.
468// In this context "attribute" and "property" are used interchangeably.
469func (x *CellLayoutBase) AddAttribute(CellVar *CellRenderer, AttributeVar string, ColumnVar int) {
470
471	XGtkCellLayoutAddAttribute(x.GoPointer(), CellVar.GoPointer(), AttributeVar, ColumnVar)
472
473}
474
475// Unsets all the mappings on all renderers on @cell_layout and
476// removes all renderers from @cell_layout.
477func (x *CellLayoutBase) Clear() {
478
479	XGtkCellLayoutClear(x.GoPointer())
480
481}
482
483// Clears all existing attributes previously set with
484// gtk_cell_layout_set_attributes().
485func (x *CellLayoutBase) ClearAttributes(CellVar *CellRenderer) {
486
487	XGtkCellLayoutClearAttributes(x.GoPointer(), CellVar.GoPointer())
488
489}
490
491// Returns the underlying `GtkCellArea` which might be @cell_layout
492// if called on a `GtkCellArea` or might be %NULL if no `GtkCellArea`
493// is used by @cell_layout.
494func (x *CellLayoutBase) GetArea() *CellArea {
495	var cls *CellArea
496
497	cret := XGtkCellLayoutGetArea(x.GoPointer())
498
499	if cret == 0 {
500		return nil
501	}
502	gobject.IncreaseRef(cret)
503	cls = &CellArea{}
504	cls.Ptr = cret
505	return cls
506}
507
508// Returns the cell renderers which have been added to @cell_layout.
509func (x *CellLayoutBase) GetCells() *glib.List {
510
511	cret := XGtkCellLayoutGetCells(x.GoPointer())
512	return cret
513}
514
515// Adds the @cell to the end of @cell_layout. If @expand is %FALSE, then the
516// @cell is allocated no more space than it needs. Any unused space is
517// divided evenly between cells for which @expand is %TRUE.
518//
519// Note that reusing the same cell renderer is not supported.
520func (x *CellLayoutBase) PackEnd(CellVar *CellRenderer, ExpandVar bool) {
521
522	XGtkCellLayoutPackEnd(x.GoPointer(), CellVar.GoPointer(), ExpandVar)
523
524}
525
526// Packs the @cell into the beginning of @cell_layout. If @expand is %FALSE,
527// then the @cell is allocated no more space than it needs. Any unused space
528// is divided evenly between cells for which @expand is %TRUE.
529//
530// Note that reusing the same cell renderer is not supported.
531func (x *CellLayoutBase) PackStart(CellVar *CellRenderer, ExpandVar bool) {
532
533	XGtkCellLayoutPackStart(x.GoPointer(), CellVar.GoPointer(), ExpandVar)
534
535}
536
537// Re-inserts @cell at @position.
538//
539// Note that @cell has already to be packed into @cell_layout
540// for this to function properly.
541func (x *CellLayoutBase) Reorder(CellVar *CellRenderer, PositionVar int) {
542
543	XGtkCellLayoutReorder(x.GoPointer(), CellVar.GoPointer(), PositionVar)
544
545}
546
547// Sets the attributes in the parameter list as the attributes
548// of @cell_layout.
549//
550// See [method@Gtk.CellLayout.add_attribute] for more details.
551//
552// The attributes should be in attribute/column order, as in
553// gtk_cell_layout_add_attribute(). All existing attributes are
554// removed, and replaced with the new attributes.
555func (x *CellLayoutBase) SetAttributes(CellVar *CellRenderer, varArgs ...interface{}) {
556
557	XGtkCellLayoutSetAttributes(x.GoPointer(), CellVar.GoPointer(), varArgs...)
558
559}
560
561// Sets the `GtkCellLayout`DataFunc to use for @cell_layout.
562//
563// This function is used instead of the standard attributes mapping
564// for setting the column value, and should set the value of @cell_layout’s
565// cell renderer(s) as appropriate.
566//
567// @func may be %NULL to remove a previously set function.
568func (x *CellLayoutBase) SetCellDataFunc(CellVar *CellRenderer, FuncVar *CellLayoutDataFunc, FuncDataVar uintptr, DestroyVar *glib.DestroyNotify) {
569
570	XGtkCellLayoutSetCellDataFunc(x.GoPointer(), CellVar.GoPointer(), glib.NewCallbackNullable(FuncVar), FuncDataVar, glib.NewCallback(DestroyVar))
571
572}
573
574var XGtkCellLayoutAddAttribute func(uintptr, uintptr, string, int)
575var XGtkCellLayoutClear func(uintptr)
576var XGtkCellLayoutClearAttributes func(uintptr, uintptr)
577var XGtkCellLayoutGetArea func(uintptr) uintptr
578var XGtkCellLayoutGetCells func(uintptr) *glib.List
579var XGtkCellLayoutPackEnd func(uintptr, uintptr, bool)
580var XGtkCellLayoutPackStart func(uintptr, uintptr, bool)
581var XGtkCellLayoutReorder func(uintptr, uintptr, int)
582var XGtkCellLayoutSetAttributes func(uintptr, uintptr, ...interface{})
583var XGtkCellLayoutSetCellDataFunc func(uintptr, uintptr, uintptr, uintptr, uintptr)
584
585func init() {
586	core.SetPackageName("GTK", "gtk4")
587	core.SetSharedLibraries("GTK", []string{"libgtk-4.so.1"})
588	var libs []uintptr
589	for _, libPath := range core.GetPaths("GTK") {
590		lib, err := purego.Dlopen(libPath, purego.RTLD_NOW|purego.RTLD_GLOBAL)
591		if err != nil {
592			panic(err)
593		}
594		libs = append(libs, lib)
595	}
596
597	core.PuregoSafeRegister(&xCellLayoutGLibType, libs, "gtk_cell_layout_get_type")
598
599	core.PuregoSafeRegister(&XGtkCellLayoutAddAttribute, libs, "gtk_cell_layout_add_attribute")
600	core.PuregoSafeRegister(&XGtkCellLayoutClear, libs, "gtk_cell_layout_clear")
601	core.PuregoSafeRegister(&XGtkCellLayoutClearAttributes, libs, "gtk_cell_layout_clear_attributes")
602	core.PuregoSafeRegister(&XGtkCellLayoutGetArea, libs, "gtk_cell_layout_get_area")
603	core.PuregoSafeRegister(&XGtkCellLayoutGetCells, libs, "gtk_cell_layout_get_cells")
604	core.PuregoSafeRegister(&XGtkCellLayoutPackEnd, libs, "gtk_cell_layout_pack_end")
605	core.PuregoSafeRegister(&XGtkCellLayoutPackStart, libs, "gtk_cell_layout_pack_start")
606	core.PuregoSafeRegister(&XGtkCellLayoutReorder, libs, "gtk_cell_layout_reorder")
607	core.PuregoSafeRegister(&XGtkCellLayoutSetAttributes, libs, "gtk_cell_layout_set_attributes")
608	core.PuregoSafeRegister(&XGtkCellLayoutSetCellDataFunc, libs, "gtk_cell_layout_set_cell_data_func")
609
610}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 102

↑↓ moveenter openesc close