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/gio"
12 "github.com/bnema/puregotk/v4/glib"
13 "github.com/bnema/puregotk/v4/gobject"
14 "github.com/bnema/puregotk/v4/gobject/types"
15)
16
17type FileLauncherClass struct {
18 _ structs.HostLayout
19
20 ParentClass gobject.ObjectClass
21}
22
23func (x *FileLauncherClass) GoPointer() uintptr {
24 return uintptr(unsafe.Pointer(x))
25}
26
27// Asynchronous API to open a file with an application.
28//
29// `GtkFileLauncher` collects the arguments that are needed to open the file.
30//
31// Depending on system configuration, user preferences and available APIs, this
32// may or may not show an app chooser dialog or launch the default application
33// right away.
34//
35// The operation is started with the [method@Gtk.FileLauncher.launch] function.
36//
37// To launch uris that don't represent files, use [class@Gtk.UriLauncher].
38type FileLauncher struct {
39 gobject.Object
40}
41
42var xFileLauncherGLibType func() types.GType
43
44func FileLauncherGLibType() types.GType {
45 return xFileLauncherGLibType()
46}
47
48func FileLauncherNewFromInternalPtr(ptr uintptr) *FileLauncher {
49 cls := &FileLauncher{}
50 cls.Ptr = ptr
51 return cls
52}
53
54var xNewFileLauncher func(uintptr) uintptr
55
56// Creates a new `GtkFileLauncher` object.
57func NewFileLauncher(FileVar gio.File) *FileLauncher {
58 var cls *FileLauncher
59
60 cret := xNewFileLauncher(FileVar.GoPointer())
61
62 if cret == 0 {
63 return nil
64 }
65 cls = &FileLauncher{}
66 cls.Ptr = cret
67 return cls
68}
69
70var xFileLauncherGetAlwaysAsk func(uintptr) bool
71
72// Returns whether to ask the user which app to use.
73func (x *FileLauncher) GetAlwaysAsk() bool {
74
75 cret := xFileLauncherGetAlwaysAsk(x.GoPointer())
76 return cret
77}
78
79var xFileLauncherGetFile func(uintptr) uintptr
80
81// Gets the file that will be opened.
82func (x *FileLauncher) GetFile() *gio.FileBase {
83 var cls *gio.FileBase
84
85 cret := xFileLauncherGetFile(x.GoPointer())
86
87 if cret == 0 {
88 return nil
89 }
90 gobject.IncreaseRef(cret)
91 cls = &gio.FileBase{}
92 cls.Ptr = cret
93 return cls
94}
95
96var xFileLauncherGetWritable func(uintptr) bool
97
98// Returns whether to make the file writable for the handler.
99func (x *FileLauncher) GetWritable() bool {
100
101 cret := xFileLauncherGetWritable(x.GoPointer())
102 return cret
103}
104
105var xFileLauncherLaunch func(uintptr, uintptr, uintptr, uintptr, uintptr)
106
107// Launches an application to open the file.
108//
109// This may present an app chooser dialog to the user.
110func (x *FileLauncher) Launch(ParentVar *Window, CancellableVar *gio.Cancellable, CallbackVar *gio.AsyncReadyCallback, UserDataVar uintptr) {
111
112 var CallbackVarRef uintptr
113 if CallbackVar != nil {
114 CallbackVarPtr := uintptr(unsafe.Pointer(CallbackVar))
115 if cbRefPtr, ok := glib.GetCallback(CallbackVarPtr); ok {
116 CallbackVarRef = cbRefPtr
117 } else {
118 fcb := func(arg0 uintptr, arg1 uintptr, arg2 uintptr) {
119 cbFn := *CallbackVar
120 cbFn(arg0, arg1, arg2)
121 }
122 CallbackVarRef = purego.NewCallback(fcb)
123 glib.SaveCallbackWithClosure(CallbackVarPtr, CallbackVarRef, CallbackVar)
124 }
125 }
126
127 xFileLauncherLaunch(x.GoPointer(), ParentVar.GoPointer(), CancellableVar.GoPointer(), CallbackVarRef, UserDataVar)
128
129}
130
131var xFileLauncherLaunchFinish func(uintptr, uintptr, **glib.Error) bool
132
133// Finishes the [method@Gtk.FileLauncher.launch] call and
134// returns the result.
135func (x *FileLauncher) LaunchFinish(ResultVar gio.AsyncResult) (bool, error) {
136 var cerr *glib.Error
137
138 cret := xFileLauncherLaunchFinish(x.GoPointer(), ResultVar.GoPointer(), &cerr)
139 if cerr == nil {
140 return cret, nil
141 }
142 return cret, cerr
143
144}
145
146var xFileLauncherOpenContainingFolder func(uintptr, uintptr, uintptr, uintptr, uintptr)
147
148// Launches a file manager to show the file in its parent directory.
149//
150// This is only supported for native files. It will fail if @file
151// is e.g. a http:// uri.
152func (x *FileLauncher) OpenContainingFolder(ParentVar *Window, CancellableVar *gio.Cancellable, CallbackVar *gio.AsyncReadyCallback, UserDataVar uintptr) {
153
154 var CallbackVarRef uintptr
155 if CallbackVar != nil {
156 CallbackVarPtr := uintptr(unsafe.Pointer(CallbackVar))
157 if cbRefPtr, ok := glib.GetCallback(CallbackVarPtr); ok {
158 CallbackVarRef = cbRefPtr
159 } else {
160 fcb := func(arg0 uintptr, arg1 uintptr, arg2 uintptr) {
161 cbFn := *CallbackVar
162 cbFn(arg0, arg1, arg2)
163 }
164 CallbackVarRef = purego.NewCallback(fcb)
165 glib.SaveCallbackWithClosure(CallbackVarPtr, CallbackVarRef, CallbackVar)
166 }
167 }
168
169 xFileLauncherOpenContainingFolder(x.GoPointer(), ParentVar.GoPointer(), CancellableVar.GoPointer(), CallbackVarRef, UserDataVar)
170
171}
172
173var xFileLauncherOpenContainingFolderFinish func(uintptr, uintptr, **glib.Error) bool
174
175// Finishes the [method@Gtk.FileLauncher.open_containing_folder]
176// call and returns the result.
177func (x *FileLauncher) OpenContainingFolderFinish(ResultVar gio.AsyncResult) (bool, error) {
178 var cerr *glib.Error
179
180 cret := xFileLauncherOpenContainingFolderFinish(x.GoPointer(), ResultVar.GoPointer(), &cerr)
181 if cerr == nil {
182 return cret, nil
183 }
184 return cret, cerr
185
186}
187
188var xFileLauncherSetAlwaysAsk func(uintptr, bool)
189
190// Sets whether to always ask the user which app to use.
191//
192// If false, the file might be opened with a default app
193// or the previous choice.
194func (x *FileLauncher) SetAlwaysAsk(AlwaysAskVar bool) {
195
196 xFileLauncherSetAlwaysAsk(x.GoPointer(), AlwaysAskVar)
197
198}
199
200var xFileLauncherSetFile func(uintptr, uintptr)
201
202// Sets the file that will be opened.
203func (x *FileLauncher) SetFile(FileVar gio.File) {
204
205 xFileLauncherSetFile(x.GoPointer(), FileVar.GoPointer())
206
207}
208
209var xFileLauncherSetWritable func(uintptr, bool)
210
211// Sets whether to make the file writable for the handler.
212func (x *FileLauncher) SetWritable(WritableVar bool) {
213
214 xFileLauncherSetWritable(x.GoPointer(), WritableVar)
215
216}
217
218func (c *FileLauncher) GoPointer() uintptr {
219 if c == nil {
220 return 0
221 }
222 return c.Ptr
223}
224
225func (c *FileLauncher) SetGoPointer(ptr uintptr) {
226 c.Ptr = ptr
227}
228
229// SetPropertyAlwaysAsk sets the "always-ask" property.
230// Whether to ask the user to choose an app for opening the file. If `FALSE`,
231// the file might be opened with a default app or the previous choice.
232func (x *FileLauncher) SetPropertyAlwaysAsk(value bool) {
233 var v gobject.Value
234 v.Init(gobject.TypeBooleanVal)
235 v.SetBoolean(value)
236 x.SetProperty("always-ask", &v)
237}
238
239// GetPropertyAlwaysAsk gets the "always-ask" property.
240// Whether to ask the user to choose an app for opening the file. If `FALSE`,
241// the file might be opened with a default app or the previous choice.
242func (x *FileLauncher) GetPropertyAlwaysAsk() bool {
243 var v gobject.Value
244 x.GetProperty("always-ask", &v)
245 return v.GetBoolean()
246}
247
248// SetPropertyWritable sets the "writable" property.
249// Whether to make the file writable for the handler.
250func (x *FileLauncher) SetPropertyWritable(value bool) {
251 var v gobject.Value
252 v.Init(gobject.TypeBooleanVal)
253 v.SetBoolean(value)
254 x.SetProperty("writable", &v)
255}
256
257// GetPropertyWritable gets the "writable" property.
258// Whether to make the file writable for the handler.
259func (x *FileLauncher) GetPropertyWritable() bool {
260 var v gobject.Value
261 x.GetProperty("writable", &v)
262 return v.GetBoolean()
263}
264
265func init() {
266 core.SetPackageName("GTK", "gtk4")
267 core.SetSharedLibraries("GTK", []string{"libgtk-4.so.1"})
268 var libs []uintptr
269 for _, libPath := range core.GetPaths("GTK") {
270 lib, err := purego.Dlopen(libPath, purego.RTLD_NOW|purego.RTLD_GLOBAL)
271 if err != nil {
272 panic(err)
273 }
274 libs = append(libs, lib)
275 }
276
277 core.PuregoSafeRegister(&xFileLauncherGLibType, libs, "gtk_file_launcher_get_type")
278
279 core.PuregoSafeRegister(&xNewFileLauncher, libs, "gtk_file_launcher_new")
280
281 core.PuregoSafeRegister(&xFileLauncherGetAlwaysAsk, libs, "gtk_file_launcher_get_always_ask")
282 core.PuregoSafeRegister(&xFileLauncherGetFile, libs, "gtk_file_launcher_get_file")
283 core.PuregoSafeRegister(&xFileLauncherGetWritable, libs, "gtk_file_launcher_get_writable")
284 core.PuregoSafeRegister(&xFileLauncherLaunch, libs, "gtk_file_launcher_launch")
285 core.PuregoSafeRegister(&xFileLauncherLaunchFinish, libs, "gtk_file_launcher_launch_finish")
286 core.PuregoSafeRegister(&xFileLauncherOpenContainingFolder, libs, "gtk_file_launcher_open_containing_folder")
287 core.PuregoSafeRegister(&xFileLauncherOpenContainingFolderFinish, libs, "gtk_file_launcher_open_containing_folder_finish")
288 core.PuregoSafeRegister(&xFileLauncherSetAlwaysAsk, libs, "gtk_file_launcher_set_always_ask")
289 core.PuregoSafeRegister(&xFileLauncherSetFile, libs, "gtk_file_launcher_set_file")
290 core.PuregoSafeRegister(&xFileLauncherSetWritable, libs, "gtk_file_launcher_set_writable")
291
292}