v0.2.1 c0399be

gtkfilechooser.go RawHistoryFolder

1// Package gtk was automatically generated by github.com/bnema/puregotk DO NOT EDIT
2package gtk
3
4import (
5	"github.com/ebitengine/purego"
6
7	"github.com/bnema/puregotk/pkg/core"
8	"github.com/bnema/puregotk/v4/gio"
9	"github.com/bnema/puregotk/v4/glib"
10	"github.com/bnema/puregotk/v4/gobject"
11	"github.com/bnema/puregotk/v4/gobject/types"
12)
13
14// `GtkFileChooser` is an interface that can be implemented by file
15// selection widgets.
16//
17// In GTK, the main objects that implement this interface are
18// [class@Gtk.FileChooserWidget] and [class@Gtk.FileChooserDialog].
19//
20// You do not need to write an object that implements the `GtkFileChooser`
21// interface unless you are trying to adapt an existing file selector to
22// expose a standard programming interface.
23//
24// `GtkFileChooser` allows for shortcuts to various places in the filesystem.
25// In the default implementation these are displayed in the left pane. It
26// may be a bit confusing at first that these shortcuts come from various
27// sources and in various flavours, so lets explain the terminology here:
28//
29//   - Bookmarks: are created by the user, by dragging folders from the
30//     right pane to the left pane, or by using the “Add”. Bookmarks
31//     can be renamed and deleted by the user.
32//
33//   - Shortcuts: can be provided by the application. For example, a Paint
34//     program may want to add a shortcut for a Clipart folder. Shortcuts
35//     cannot be modified by the user.
36//
37//   - Volumes: are provided by the underlying filesystem abstraction. They are
38//     the “roots” of the filesystem.
39//
40// # File Names and Encodings
41//
42// When the user is finished selecting files in a `GtkFileChooser`, your
43// program can get the selected filenames as `GFile`s.
44//
45// # Adding options
46//
47// You can add extra widgets to a file chooser to provide options
48// that are not present in the default design, by using
49// [method@Gtk.FileChooser.add_choice]. Each choice has an identifier and
50// a user visible label; additionally, each choice can have multiple
51// options. If a choice has no option, it will be rendered as a
52// check button with the given label; if a choice has options, it will
53// be rendered as a combo box.
54type FileChooser interface {
55	GoPointer() uintptr
56	SetGoPointer(uintptr)
57	AddChoice(IdVar string, LabelVar string, OptionsVar []string, OptionLabelsVar []string)
58	AddFilter(FilterVar *FileFilter)
59	AddShortcutFolder(FolderVar gio.File) (bool, error)
60	GetAction() FileChooserAction
61	GetChoice(IdVar string) string
62	GetCreateFolders() bool
63	GetCurrentFolder() *gio.FileBase
64	GetCurrentName() string
65	GetFile() *gio.FileBase
66	GetFiles() *gio.ListModelBase
67	GetFilter() *FileFilter
68	GetFilters() *gio.ListModelBase
69	GetSelectMultiple() bool
70	GetShortcutFolders() *gio.ListModelBase
71	RemoveChoice(IdVar string)
72	RemoveFilter(FilterVar *FileFilter)
73	RemoveShortcutFolder(FolderVar gio.File) (bool, error)
74	SetAction(ActionVar FileChooserAction)
75	SetChoice(IdVar string, OptionVar string)
76	SetCreateFolders(CreateFoldersVar bool)
77	SetCurrentFolder(FileVar gio.File) (bool, error)
78	SetCurrentName(NameVar string)
79	SetFile(FileVar gio.File) (bool, error)
80	SetFilter(FilterVar *FileFilter)
81	SetSelectMultiple(SelectMultipleVar bool)
82}
83
84var xFileChooserGLibType func() types.GType
85
86func FileChooserGLibType() types.GType {
87	return xFileChooserGLibType()
88}
89
90type FileChooserBase struct {
91	Ptr uintptr
92}
93
94func (x *FileChooserBase) GoPointer() uintptr {
95	if x == nil {
96		return 0
97	}
98	return x.Ptr
99}
100
101func (x *FileChooserBase) SetGoPointer(ptr uintptr) {
102	x.Ptr = ptr
103}
104
105// Adds a 'choice' to the file chooser.
106//
107// This is typically implemented as a combobox or, for boolean choices,
108// as a checkbutton. You can select a value using
109// [method@Gtk.FileChooser.set_choice] before the dialog is shown,
110// and you can obtain the user-selected value in the
111// [signal@Gtk.Dialog::response] signal handler using
112// [method@Gtk.FileChooser.get_choice].
113func (x *FileChooserBase) AddChoice(IdVar string, LabelVar string, OptionsVar []string, OptionLabelsVar []string) {
114
115	XGtkFileChooserAddChoice(x.GoPointer(), IdVar, LabelVar, OptionsVar, OptionLabelsVar)
116
117}
118
119// Adds @filter to the list of filters that the user can select between.
120//
121// When a filter is selected, only files that are passed by that
122// filter are displayed.
123//
124// Note that the @chooser takes ownership of the filter if it is floating,
125// so you have to ref and sink it if you want to keep a reference.
126func (x *FileChooserBase) AddFilter(FilterVar *FileFilter) {
127
128	XGtkFileChooserAddFilter(x.GoPointer(), FilterVar.GoPointer())
129
130}
131
132// Adds a folder to be displayed with the shortcut folders
133// in a file chooser.
134func (x *FileChooserBase) AddShortcutFolder(FolderVar gio.File) (bool, error) {
135	var cerr *glib.Error
136
137	cret := XGtkFileChooserAddShortcutFolder(x.GoPointer(), FolderVar.GoPointer(), &cerr)
138	if cerr == nil {
139		return cret, nil
140	}
141	return cret, cerr
142
143}
144
145// Gets the type of operation that the file chooser is performing.
146func (x *FileChooserBase) GetAction() FileChooserAction {
147
148	cret := XGtkFileChooserGetAction(x.GoPointer())
149	return cret
150}
151
152// Gets the currently selected option in the 'choice' with the given ID.
153func (x *FileChooserBase) GetChoice(IdVar string) string {
154
155	cret := XGtkFileChooserGetChoice(x.GoPointer(), IdVar)
156	return cret
157}
158
159// Gets whether file chooser will offer to create new folders.
160func (x *FileChooserBase) GetCreateFolders() bool {
161
162	cret := XGtkFileChooserGetCreateFolders(x.GoPointer())
163	return cret
164}
165
166// Gets the current folder of @chooser as `GFile`.
167func (x *FileChooserBase) GetCurrentFolder() *gio.FileBase {
168	var cls *gio.FileBase
169
170	cret := XGtkFileChooserGetCurrentFolder(x.GoPointer())
171
172	if cret == 0 {
173		return nil
174	}
175	cls = &gio.FileBase{}
176	cls.Ptr = cret
177	return cls
178}
179
180// Gets the current name in the file selector, as entered by the user.
181//
182// This is meant to be used in save dialogs, to get the currently typed
183// filename when the file itself does not exist yet.
184func (x *FileChooserBase) GetCurrentName() string {
185
186	cret := XGtkFileChooserGetCurrentName(x.GoPointer())
187	return cret
188}
189
190// Gets the `GFile` for the currently selected file in
191// the file selector.
192//
193// If multiple files are selected, one of the files will be
194// returned at random.
195//
196// If the file chooser is in folder mode, this function returns
197// the selected folder.
198func (x *FileChooserBase) GetFile() *gio.FileBase {
199	var cls *gio.FileBase
200
201	cret := XGtkFileChooserGetFile(x.GoPointer())
202
203	if cret == 0 {
204		return nil
205	}
206	cls = &gio.FileBase{}
207	cls.Ptr = cret
208	return cls
209}
210
211// Lists all the selected files and subfolders in the current folder
212// of @chooser as `GFile`.
213func (x *FileChooserBase) GetFiles() *gio.ListModelBase {
214	var cls *gio.ListModelBase
215
216	cret := XGtkFileChooserGetFiles(x.GoPointer())
217
218	if cret == 0 {
219		return nil
220	}
221	cls = &gio.ListModelBase{}
222	cls.Ptr = cret
223	return cls
224}
225
226// Gets the current filter.
227func (x *FileChooserBase) GetFilter() *FileFilter {
228	var cls *FileFilter
229
230	cret := XGtkFileChooserGetFilter(x.GoPointer())
231
232	if cret == 0 {
233		return nil
234	}
235	gobject.IncreaseRef(cret)
236	cls = &FileFilter{}
237	cls.Ptr = cret
238	return cls
239}
240
241// Gets the current set of user-selectable filters, as a list model.
242//
243// See [method@Gtk.FileChooser.add_filter] and
244// [method@Gtk.FileChooser.remove_filter] for changing individual filters.
245//
246// You should not modify the returned list model. Future changes to
247// @chooser may or may not affect the returned model.
248func (x *FileChooserBase) GetFilters() *gio.ListModelBase {
249	var cls *gio.ListModelBase
250
251	cret := XGtkFileChooserGetFilters(x.GoPointer())
252
253	if cret == 0 {
254		return nil
255	}
256	cls = &gio.ListModelBase{}
257	cls.Ptr = cret
258	return cls
259}
260
261// Gets whether multiple files can be selected in the file
262// chooser.
263func (x *FileChooserBase) GetSelectMultiple() bool {
264
265	cret := XGtkFileChooserGetSelectMultiple(x.GoPointer())
266	return cret
267}
268
269// Queries the list of shortcut folders in the file chooser.
270//
271// You should not modify the returned list model. Future changes to
272// @chooser may or may not affect the returned model.
273func (x *FileChooserBase) GetShortcutFolders() *gio.ListModelBase {
274	var cls *gio.ListModelBase
275
276	cret := XGtkFileChooserGetShortcutFolders(x.GoPointer())
277
278	if cret == 0 {
279		return nil
280	}
281	cls = &gio.ListModelBase{}
282	cls.Ptr = cret
283	return cls
284}
285
286// Removes a 'choice' that has been added with gtk_file_chooser_add_choice().
287func (x *FileChooserBase) RemoveChoice(IdVar string) {
288
289	XGtkFileChooserRemoveChoice(x.GoPointer(), IdVar)
290
291}
292
293// Removes @filter from the list of filters that the user can select between.
294func (x *FileChooserBase) RemoveFilter(FilterVar *FileFilter) {
295
296	XGtkFileChooserRemoveFilter(x.GoPointer(), FilterVar.GoPointer())
297
298}
299
300// Removes a folder from the shortcut folders in a file chooser.
301func (x *FileChooserBase) RemoveShortcutFolder(FolderVar gio.File) (bool, error) {
302	var cerr *glib.Error
303
304	cret := XGtkFileChooserRemoveShortcutFolder(x.GoPointer(), FolderVar.GoPointer(), &cerr)
305	if cerr == nil {
306		return cret, nil
307	}
308	return cret, cerr
309
310}
311
312// Sets the type of operation that the chooser is performing.
313//
314// The user interface is adapted to suit the selected action.
315//
316// For example, an option to create a new folder might be shown
317// if the action is %GTK_FILE_CHOOSER_ACTION_SAVE but not if the
318// action is %GTK_FILE_CHOOSER_ACTION_OPEN.
319func (x *FileChooserBase) SetAction(ActionVar FileChooserAction) {
320
321	XGtkFileChooserSetAction(x.GoPointer(), ActionVar)
322
323}
324
325// Selects an option in a 'choice' that has been added with
326// gtk_file_chooser_add_choice().
327//
328// For a boolean choice, the possible options are "true" and "false".
329func (x *FileChooserBase) SetChoice(IdVar string, OptionVar string) {
330
331	XGtkFileChooserSetChoice(x.GoPointer(), IdVar, OptionVar)
332
333}
334
335// Sets whether file chooser will offer to create new folders.
336//
337// This is only relevant if the action is not set to be
338// %GTK_FILE_CHOOSER_ACTION_OPEN.
339func (x *FileChooserBase) SetCreateFolders(CreateFoldersVar bool) {
340
341	XGtkFileChooserSetCreateFolders(x.GoPointer(), CreateFoldersVar)
342
343}
344
345// Sets the current folder for @chooser from a `GFile`.
346func (x *FileChooserBase) SetCurrentFolder(FileVar gio.File) (bool, error) {
347	var cerr *glib.Error
348
349	cret := XGtkFileChooserSetCurrentFolder(x.GoPointer(), FileVar.GoPointer(), &cerr)
350	if cerr == nil {
351		return cret, nil
352	}
353	return cret, cerr
354
355}
356
357// Sets the current name in the file selector, as if entered
358// by the user.
359//
360// Note that the name passed in here is a UTF-8 string rather
361// than a filename. This function is meant for such uses as a
362// suggested name in a “Save As...” dialog.  You can pass
363// “Untitled.doc” or a similarly suitable suggestion for the @name.
364//
365// If you want to preselect a particular existing file, you should
366// use [method@Gtk.FileChooser.set_file] instead.
367//
368// Please see the documentation for those functions for an example
369// of using [method@Gtk.FileChooser.set_current_name] as well.
370func (x *FileChooserBase) SetCurrentName(NameVar string) {
371
372	XGtkFileChooserSetCurrentName(x.GoPointer(), NameVar)
373
374}
375
376// Sets @file as the current filename for the file chooser.
377//
378// This includes changing to the file’s parent folder and actually selecting
379// the file in list. If the @chooser is in %GTK_FILE_CHOOSER_ACTION_SAVE mode,
380// the file’s base name will also appear in the dialog’s file name entry.
381//
382// If the file name isn’t in the current folder of @chooser, then the current
383// folder of @chooser will be changed to the folder containing @file.
384//
385// Note that the file must exist, or nothing will be done except
386// for the directory change.
387//
388// If you are implementing a save dialog, you should use this function if
389// you already have a file name to which the user may save; for example,
390// when the user opens an existing file and then does “Save As…”. If you
391// don’t have a file name already — for example, if the user just created
392// a new file and is saving it for the first time, do not call this function.
393//
394// Instead, use something similar to this:
395//
396// ```c
397// static void
398// prepare_file_chooser (GtkFileChooser *chooser,
399//
400//	GFile          *existing_file)
401//
402//	{
403//	  gboolean document_is_new = (existing_file == NULL);
404//
405//	  if (document_is_new)
406//	    {
407//	      GFile *default_file_for_saving = g_file_new_for_path ("./out.txt");
408//	      // the user just created a new document
409//	      gtk_file_chooser_set_current_folder (chooser, default_file_for_saving, NULL);
410//	      gtk_file_chooser_set_current_name (chooser, "Untitled document");
411//	      g_object_unref (default_file_for_saving);
412//	    }
413//	  else
414//	    {
415//	      // the user edited an existing document
416//	      gtk_file_chooser_set_file (chooser, existing_file, NULL);
417//	    }
418//	}
419//
420// ```
421func (x *FileChooserBase) SetFile(FileVar gio.File) (bool, error) {
422	var cerr *glib.Error
423
424	cret := XGtkFileChooserSetFile(x.GoPointer(), FileVar.GoPointer(), &cerr)
425	if cerr == nil {
426		return cret, nil
427	}
428	return cret, cerr
429
430}
431
432// Sets the current filter.
433//
434// Only the files that pass the filter will be displayed.
435// If the user-selectable list of filters is non-empty, then
436// the filter should be one of the filters in that list.
437//
438// Setting the current filter when the list of filters is
439// empty is useful if you want to restrict the displayed
440// set of files without letting the user change it.
441func (x *FileChooserBase) SetFilter(FilterVar *FileFilter) {
442
443	XGtkFileChooserSetFilter(x.GoPointer(), FilterVar.GoPointer())
444
445}
446
447// Sets whether multiple files can be selected in the file chooser.
448//
449// This is only relevant if the action is set to be
450// %GTK_FILE_CHOOSER_ACTION_OPEN or
451// %GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER.
452func (x *FileChooserBase) SetSelectMultiple(SelectMultipleVar bool) {
453
454	XGtkFileChooserSetSelectMultiple(x.GoPointer(), SelectMultipleVar)
455
456}
457
458// SetPropertyCreateFolders sets the "create-folders" property.
459// Whether a file chooser not in %GTK_FILE_CHOOSER_ACTION_OPEN mode
460// will offer the user to create new folders.
461func (x *FileChooserBase) SetPropertyCreateFolders(value bool) {
462	obj := gobject.Object{}
463	obj.Ptr = x.GoPointer()
464	var v gobject.Value
465	v.Init(gobject.TypeBooleanVal)
466	v.SetBoolean(value)
467	obj.SetProperty("create-folders", &v)
468}
469
470// GetPropertyCreateFolders gets the "create-folders" property.
471// Whether a file chooser not in %GTK_FILE_CHOOSER_ACTION_OPEN mode
472// will offer the user to create new folders.
473func (x *FileChooserBase) GetPropertyCreateFolders() bool {
474	obj := gobject.Object{}
475	obj.Ptr = x.GoPointer()
476	var v gobject.Value
477	obj.GetProperty("create-folders", &v)
478	return v.GetBoolean()
479}
480
481// SetPropertySelectMultiple sets the "select-multiple" property.
482// Whether to allow multiple files to be selected.
483func (x *FileChooserBase) SetPropertySelectMultiple(value bool) {
484	obj := gobject.Object{}
485	obj.Ptr = x.GoPointer()
486	var v gobject.Value
487	v.Init(gobject.TypeBooleanVal)
488	v.SetBoolean(value)
489	obj.SetProperty("select-multiple", &v)
490}
491
492// GetPropertySelectMultiple gets the "select-multiple" property.
493// Whether to allow multiple files to be selected.
494func (x *FileChooserBase) GetPropertySelectMultiple() bool {
495	obj := gobject.Object{}
496	obj.Ptr = x.GoPointer()
497	var v gobject.Value
498	obj.GetProperty("select-multiple", &v)
499	return v.GetBoolean()
500}
501
502var XGtkFileChooserAddChoice func(uintptr, string, string, []string, []string)
503var XGtkFileChooserAddFilter func(uintptr, uintptr)
504var XGtkFileChooserAddShortcutFolder func(uintptr, uintptr, **glib.Error) bool
505var XGtkFileChooserGetAction func(uintptr) FileChooserAction
506var XGtkFileChooserGetChoice func(uintptr, string) string
507var XGtkFileChooserGetCreateFolders func(uintptr) bool
508var XGtkFileChooserGetCurrentFolder func(uintptr) uintptr
509var XGtkFileChooserGetCurrentName func(uintptr) string
510var XGtkFileChooserGetFile func(uintptr) uintptr
511var XGtkFileChooserGetFiles func(uintptr) uintptr
512var XGtkFileChooserGetFilter func(uintptr) uintptr
513var XGtkFileChooserGetFilters func(uintptr) uintptr
514var XGtkFileChooserGetSelectMultiple func(uintptr) bool
515var XGtkFileChooserGetShortcutFolders func(uintptr) uintptr
516var XGtkFileChooserRemoveChoice func(uintptr, string)
517var XGtkFileChooserRemoveFilter func(uintptr, uintptr)
518var XGtkFileChooserRemoveShortcutFolder func(uintptr, uintptr, **glib.Error) bool
519var XGtkFileChooserSetAction func(uintptr, FileChooserAction)
520var XGtkFileChooserSetChoice func(uintptr, string, string)
521var XGtkFileChooserSetCreateFolders func(uintptr, bool)
522var XGtkFileChooserSetCurrentFolder func(uintptr, uintptr, **glib.Error) bool
523var XGtkFileChooserSetCurrentName func(uintptr, string)
524var XGtkFileChooserSetFile func(uintptr, uintptr, **glib.Error) bool
525var XGtkFileChooserSetFilter func(uintptr, uintptr)
526var XGtkFileChooserSetSelectMultiple func(uintptr, bool)
527
528// Describes whether a `GtkFileChooser` is being used to open existing files
529// or to save to a possibly new file.
530type FileChooserAction int
531
532var xFileChooserActionGLibType func() types.GType
533
534func FileChooserActionGLibType() types.GType {
535	return xFileChooserActionGLibType()
536}
537
538const (
539
540	// Indicates open mode.  The file chooser
541	//  will only let the user pick an existing file.
542	FileChooserActionOpenValue FileChooserAction = 0
543	// Indicates save mode.  The file chooser
544	//  will let the user pick an existing file, or type in a new
545	//  filename.
546	FileChooserActionSaveValue FileChooserAction = 1
547	// Indicates an Open mode for
548	//  selecting folders.  The file chooser will let the user pick an
549	//  existing folder.
550	FileChooserActionSelectFolderValue FileChooserAction = 2
551)
552
553// These identify the various errors that can occur while calling
554// `GtkFileChooser` functions.
555type FileChooserError int
556
557var xFileChooserErrorGLibType func() types.GType
558
559func FileChooserErrorGLibType() types.GType {
560	return xFileChooserErrorGLibType()
561}
562
563const (
564
565	// Indicates that a file does not exist.
566	FileChooserErrorNonexistentValue FileChooserError = 0
567	// Indicates a malformed filename.
568	FileChooserErrorBadFilenameValue FileChooserError = 1
569	// Indicates a duplicate path (e.g. when
570	//  adding a bookmark).
571	FileChooserErrorAlreadyExistsValue FileChooserError = 2
572	// Indicates an incomplete hostname
573	//  (e.g. "http://foo" without a slash after that).
574	FileChooserErrorIncompleteHostnameValue FileChooserError = 3
575)
576
577var xFileChooserErrorQuark func() glib.Quark
578
579// Registers an error quark for `GtkFileChooser` errors.
580func FileChooserErrorQuark() glib.Quark {
581
582	cret := xFileChooserErrorQuark()
583	return cret
584}
585
586func init() {
587	core.SetPackageName("GTK", "gtk4")
588	core.SetSharedLibraries("GTK", []string{"libgtk-4.so.1"})
589	var libs []uintptr
590	for _, libPath := range core.GetPaths("GTK") {
591		lib, err := purego.Dlopen(libPath, purego.RTLD_NOW|purego.RTLD_GLOBAL)
592		if err != nil {
593			panic(err)
594		}
595		libs = append(libs, lib)
596	}
597
598	core.PuregoSafeRegister(&xFileChooserActionGLibType, libs, "gtk_file_chooser_action_get_type")
599
600	core.PuregoSafeRegister(&xFileChooserErrorGLibType, libs, "gtk_file_chooser_error_get_type")
601
602	core.PuregoSafeRegister(&xFileChooserErrorQuark, libs, "gtk_file_chooser_error_quark")
603
604	core.PuregoSafeRegister(&xFileChooserGLibType, libs, "gtk_file_chooser_get_type")
605
606	core.PuregoSafeRegister(&XGtkFileChooserAddChoice, libs, "gtk_file_chooser_add_choice")
607	core.PuregoSafeRegister(&XGtkFileChooserAddFilter, libs, "gtk_file_chooser_add_filter")
608	core.PuregoSafeRegister(&XGtkFileChooserAddShortcutFolder, libs, "gtk_file_chooser_add_shortcut_folder")
609	core.PuregoSafeRegister(&XGtkFileChooserGetAction, libs, "gtk_file_chooser_get_action")
610	core.PuregoSafeRegister(&XGtkFileChooserGetChoice, libs, "gtk_file_chooser_get_choice")
611	core.PuregoSafeRegister(&XGtkFileChooserGetCreateFolders, libs, "gtk_file_chooser_get_create_folders")
612	core.PuregoSafeRegister(&XGtkFileChooserGetCurrentFolder, libs, "gtk_file_chooser_get_current_folder")
613	core.PuregoSafeRegister(&XGtkFileChooserGetCurrentName, libs, "gtk_file_chooser_get_current_name")
614	core.PuregoSafeRegister(&XGtkFileChooserGetFile, libs, "gtk_file_chooser_get_file")
615	core.PuregoSafeRegister(&XGtkFileChooserGetFiles, libs, "gtk_file_chooser_get_files")
616	core.PuregoSafeRegister(&XGtkFileChooserGetFilter, libs, "gtk_file_chooser_get_filter")
617	core.PuregoSafeRegister(&XGtkFileChooserGetFilters, libs, "gtk_file_chooser_get_filters")
618	core.PuregoSafeRegister(&XGtkFileChooserGetSelectMultiple, libs, "gtk_file_chooser_get_select_multiple")
619	core.PuregoSafeRegister(&XGtkFileChooserGetShortcutFolders, libs, "gtk_file_chooser_get_shortcut_folders")
620	core.PuregoSafeRegister(&XGtkFileChooserRemoveChoice, libs, "gtk_file_chooser_remove_choice")
621	core.PuregoSafeRegister(&XGtkFileChooserRemoveFilter, libs, "gtk_file_chooser_remove_filter")
622	core.PuregoSafeRegister(&XGtkFileChooserRemoveShortcutFolder, libs, "gtk_file_chooser_remove_shortcut_folder")
623	core.PuregoSafeRegister(&XGtkFileChooserSetAction, libs, "gtk_file_chooser_set_action")
624	core.PuregoSafeRegister(&XGtkFileChooserSetChoice, libs, "gtk_file_chooser_set_choice")
625	core.PuregoSafeRegister(&XGtkFileChooserSetCreateFolders, libs, "gtk_file_chooser_set_create_folders")
626	core.PuregoSafeRegister(&XGtkFileChooserSetCurrentFolder, libs, "gtk_file_chooser_set_current_folder")
627	core.PuregoSafeRegister(&XGtkFileChooserSetCurrentName, libs, "gtk_file_chooser_set_current_name")
628	core.PuregoSafeRegister(&XGtkFileChooserSetFile, libs, "gtk_file_chooser_set_file")
629	core.PuregoSafeRegister(&XGtkFileChooserSetFilter, libs, "gtk_file_chooser_set_filter")
630	core.PuregoSafeRegister(&XGtkFileChooserSetSelectMultiple, libs, "gtk_file_chooser_set_select_multiple")
631
632}

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