detached 7d292f2

initial commit

commit
7d292f29a68fd087b8058504ca73618ab33315eb
author
jwijenbergh · · 2023-06-17 08:52 UTC
committer
jwijenbergh · · 2023-08-15 10:50 UTC
parent
none (root commit)
signature
GPG Unverified1A2298F6C34F96E5 The key is unknown
696 files · +745353 -0
A LICENSE +21 -0
@@ -0,0 +1,21 @@
1+MIT License
2+
3+Copyright (c) 2023 Jeroen Wijenbergh
4+
5+Permission is hereby granted, free of charge, to any person obtaining a copy
6+of this software and associated documentation files (the "Software"), to deal
7+in the Software without restriction, including without limitation the rights
8+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+copies of the Software, and to permit persons to whom the Software is
10+furnished to do so, subject to the following conditions:
11+
12+The above copyright notice and this permission notice shall be included in all
13+copies or substantial portions of the Software.
14+
15+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+SOFTWARE.
A README.md +95 -0
@@ -0,0 +1,95 @@
1+# Puregotk
2+
3+> **_NOTE:_** This library is currently expiremental and needs thorough testing. Some APIs might be incorrectly exposed
4+
5+Autogenerated GTK4+Adwaita bindings for Go leveraging [purego](https://github.com/ebitengine/purego)
6+
7+# Motivation
8+I created this library because I found that alternative libraries using Cgo had much too slow compilation speed. For my laptop around 15 minutes to build a simple example for [gotk3](https://github.com/gotk3/gotk3) and also [gotk4](https://github.com/diamondburned/gotk4).
9+This is not a fault for these libraries as CGo compilation is just inherently slow in Go. In this project I want to test a new approach by levering purego which allows you to load libraries using dlopen without needing cgo.
10+
11+Compilation speed currently is around 40 seconds for me on basic examples.
12+
13+## Advantages
14+
15+No Cgo needed, thus:
16+* Easy cross compilation
17+* No C toolchain needed
18+* Much faster compile times than alternatives like [gotk3](https://github.com/gotk3/gotk3) & [gotk4](https://github.com/diamondburned/gotk4)
19+
20+## Disadvantages
21+
22+Limitations of this library as compared to the alternatives using cgo:
23+* Some APIs are not possible due to purego not currently supporting struct arguments (that are not pointers)
24+* Currently only support for x86, for ARM I need to figure out how to get callbacks working in purego and contribute to purego
25+
26+# Planned features
27+In order of priority:
28+* General code cleanup
29+* ARM support
30+* Support for OS other than Linux (I only test on Linux currently)
31+* GTK 3 support
32+
33+# Basic example
34+
35+```go
36+package main
37+
38+import (
39+ "os"
40+ "github.com/jwijenbergh/puregotk/v4/gtk"
41+ "github.com/jwijenbergh/puregotk/v4/gio"
42+)
43+
44+func main() {
45+ app := gtk.NewApplication("com.github.jwijenbergh.puregotk.gtk4.hello", gio.GApplicationFlagsNoneValue)
46+ defer app.Unref()
47+ app.ConnectActivate(func (_ gio.Application) {
48+ activate(app)
49+ })
50+
51+ if code := app.Run(len(os.Args), os.Args); code > 0 {
52+ os.Exit(code)
53+ }
54+}
55+
56+func activate(app gtk.Application) {
57+ var window gtk.ApplicationWindow
58+ gtk.NewApplicationWindow(app).Cast(&window)
59+ window.SetTitle("purego")
60+ window.SetChild(gtk.NewLabel("Hello, World!"))
61+ window.SetDefaultSize(500, 500)
62+ window.Show()
63+}
64+```
65+
66+Save this to a main.go and then build & run with
67+
68+```bash
69+CGO_ENABLED=0 go run main.go
70+```
71+
72+> **_NOTE:_** Passing CGO_ENABLED=0 is currently required
73+
74+# Generating the library
75+This library is automatically generated by reading GIR files.
76+
77+To generate the library, run:
78+
79+```bash
80+./gen.sh
81+```
82+
83+In the root of the project. This needs:
84+
85+- Go >= 1.20
86+- [goimports](https://pkg.go.dev/golang.org/x/tools/cmd/goimports)
87+
88+# License
89+
90+[MIT](./LICENSE)
91+
92+# Acknowledgements
93+* [Purego](https://github.com/ebitengine/purego) and the ebitengine team for their great work
94+* [gotk4](https://github.com/diamondburned/gotk4) for some GIR type definitions
95+* [gtk](https://gitlab.com/gnome/gtk) of course
A gen.go +47 -0
@@ -0,0 +1,47 @@
1+package main
2+
3+import (
4+ "os"
5+ "path/filepath"
6+ "strings"
7+ "text/template"
8+
9+ "github.com/jwijenbergh/puregotk/internal/gir/pass"
10+ "github.com/jwijenbergh/puregotk/internal/gir/util"
11+)
12+
13+//go:generate go run gen.go
14+
15+func main() {
16+ dir := "v4"
17+ os.RemoveAll(dir)
18+ var girs []string
19+ filepath.Walk("internal/gir/spec", func(path string, f os.FileInfo, err error) error {
20+ if !strings.HasSuffix(path, ".gir") {
21+ return nil
22+ }
23+ girs = append(girs, path)
24+ return nil
25+ })
26+ p, err := pass.New(girs)
27+ if err != nil {
28+ panic(err)
29+ }
30+ // collect basic type info
31+ p.First()
32+
33+ // Create the template
34+ gotemp, err := template.New("go").Funcs(template.FuncMap{"conv": util.ConvertArgs, "convc": util.ConvertArgsComma}).ParseFiles("templates/go")
35+ if err != nil {
36+ panic(err)
37+ }
38+
39+ // Write go files by making the second pass
40+ p.Second(dir, gotemp)
41+
42+ // Finally copy some extra code that we want in the API
43+ data, err := os.ReadFile("templates/gobject")
44+ if err == nil {
45+ os.WriteFile("v4/gobject/more.go", data, 0o644)
46+ }
47+}
A gen.sh +18 -0
@@ -0,0 +1,18 @@
1+#!/usr/bin/env bash
2+
3+set -e
4+
5+echo "generating go files..."
6+go generate
7+
8+tmp=$(mktemp -d)
9+
10+echo "making sure imports are correct..."
11+GOPATH="$tmp" goimports --srcdir . -w v4 || { rm -r "$tmp"; exit 1; }
12+rm -r "$tmp"
13+
14+echo "formatting files..."
15+go fmt "github.com/jwijenbergh/puregotk/v4/..."
16+
17+echo "running go vet..."
18+go vet ./v4/...
A go.mod +7 -0
@@ -0,0 +1,7 @@
1+module github.com/jwijenbergh/puregotk
2+
3+go 1.20
4+
5+require github.com/jwijenbergh/purego v0.0.0-20230815104821-b26146068cfb
6+
7+require golang.org/x/sys v0.11.0 // indirect
A go.sum +4 -0 generated file: collapsed
A internal/core/core.go +138 -0
@@ -0,0 +1,138 @@
1+// package core implements core functionality for the generated files
2+// this core lib is imported by the generated code
3+package core
4+
5+import (
6+ "bytes"
7+ "fmt"
8+ "os"
9+ "os/exec"
10+ "path/filepath"
11+ "strings"
12+
13+ "github.com/jwijenbergh/purego"
14+)
15+
16+func PuregoSafeRegister(fptr interface{}, handle uintptr, name string) error {
17+ sym, err := purego.Dlsym(handle, name)
18+ if err != nil {
19+ return err
20+ }
21+ purego.RegisterFunc(fptr, sym)
22+ return nil
23+}
24+
25+// paths to where the shared object files should be located
26+// TODO: This needs to be split in architecture and more paths should be added
27+var paths = []string{
28+ "/usr/lib/x86_64-linux-gnu/",
29+}
30+
31+// names is a lookup from library names to shared object filenames
32+var names = map[string][]string{
33+ "ADW": {"libadwaita-1.so"},
34+ "CAIRO": {"libcairo.so"},
35+ "GDK": {"libgtk-4.so"},
36+ "GDKPIXBUF": {"libgdk_pixbuf-2.0.so"},
37+ "GIO": {"libgio-2.0.so"},
38+ "GLIB": {"libglib-2.0.so"},
39+ "GMODULE": {"libgmodule-2.0.so"},
40+ "GOBJECT": {"libgobject-2.0.so"},
41+ "GRAPHENE": {"libgraphene-1.0.so"},
42+ "GSK": {"libgtk-4.so"},
43+ "GTK": {"libgtk-4.so"},
44+ "PANGO": {"libpango-1.0.so"},
45+ "PANGOCAIRO": {"libpangocairo-1.0.so"},
46+}
47+
48+// pkgConfNames is a lookup from library names to pkg-config library names
49+// TODO: Get this from the package name in the gir files with a fallback to gtk's package name
50+var pkgConfNames = map[string]string{
51+ "ADW": "libadwaita-1",
52+ "CAIRO": "cairo",
53+ "GDK": "gtk4",
54+ "GDKPIXBUF": "gdk-pixbuf-2.0",
55+ "GIO": "gio-2.0",
56+ "GLIB": "glib-2.0",
57+ "GMODULE": "gmodule-2.0",
58+ "GOBJECT": "gobject-2.0",
59+ "GRAPHENE": "graphene-gobject-1.0",
60+ "GSK": "gtk4",
61+ "GTK": "gtk4",
62+ "PANGO": "pango",
63+ "PANGOCAIRO": "pangocairo",
64+}
65+
66+// findSo tries to find a shared object from a path and a library name
67+// It does this by mapping the library name to a suitable shared object filename and then trying some suffixes
68+func findSo(path string, name string) string {
69+ for _, n := range names[name] {
70+ suffixes := []string{"", ".0", ".1", ".2"}
71+ fn := filepath.Join(path, n)
72+ for _, s := range suffixes {
73+ if _, err := os.Stat(fn + s); err == nil {
74+ return fn
75+ }
76+ }
77+ }
78+ return ""
79+}
80+
81+// findPkgConf finds a shared object file with pkg-config
82+// it does this by running pkg-config --libs-only-L libname
83+// and then it loops over the directories returned and finds a suitable one
84+func findPkgConf(name string) string {
85+ // try to get with pkg-config
86+ cmd := exec.Command("pkg-config", "--libs-only-L", pkgConfNames[name])
87+ var out, outerr bytes.Buffer
88+ cmd.Stdout = &out
89+ cmd.Stderr = &outerr
90+ err := cmd.Run()
91+ if err != nil {
92+ fmt.Fprintf(os.Stderr, "pkg-config, failed with: %v and stderr: %s\n", err, outerr.String())
93+ return ""
94+ }
95+ outs := strings.Split(out.String(), "-L")
96+ for _, v := range outs {
97+ c := strings.TrimSpace(v)
98+ if c == "" {
99+ continue
100+ }
101+ g := findSo(c, name)
102+ if g != "" {
103+ return g
104+ }
105+ }
106+ return ""
107+}
108+
109+// GetPath gets a shared object file from a library name
110+// it does it in the following order
111+// see if PUREGOTK_LIBNAME_PATH is set
112+// go over the hardcoded paths
113+// find a library name with pkg-config
114+// panic if failed
115+// TODO: Hardcore a library shared object with linker -X flag
116+// This is useful for packaging
117+func GetPath(name string) string {
118+ // try to get from env var
119+ ev := fmt.Sprintf("PUREGOTK_%s_PATH", name)
120+ if v := os.Getenv(ev); v != "" {
121+ return v
122+ }
123+
124+ // try to loop over paths
125+ for _, p := range paths {
126+ g := findSo(p, name)
127+ if g != "" {
128+ return g
129+ }
130+
131+ }
132+ g := findPkgConf(name)
133+ if g != "" {
134+ return g
135+ }
136+
137+ panic(fmt.Sprintf("Path for library: %s not found. Please set the path to this library shared object file manually with env variable: %s. Or make sure pkg-config is setup correctly", strings.ToLower(name), ev))
138+}
A internal/gir/pass/pass.go +303 -0
@@ -0,0 +1,303 @@
1+// package pass implements the first and second pass to go from gir files to go files
2+// the first pass collects basic type information
3+// the second pass uses the basic type information to go over the gir files again and convert it to go files
4+package pass
5+
6+import (
7+ "encoding/xml"
8+ "fmt"
9+ "os"
10+ "strings"
11+ "text/template"
12+
13+ "github.com/jwijenbergh/puregotk/internal/gir/types"
14+ "github.com/jwijenbergh/puregotk/internal/gir/util"
15+)
16+
17+type Pass struct {
18+ Parsed []types.Repository
19+ Types types.KindMap
20+}
21+
22+// New creates a new pass struct by parsing gir files in the string slice
23+// This pass object will then be used to go over these files multiple times up until we have the full info to convert it to go files
24+func New(files []string) (*Pass, error) {
25+ p := Pass{
26+ Parsed: make([]types.Repository, len(files)),
27+ Types: make(types.KindMap),
28+ }
29+ for i, f := range files {
30+ b, err := os.ReadFile(f)
31+ if err != nil {
32+ return nil, err
33+ }
34+ var r types.Repository
35+ err = xml.Unmarshal(b, &r)
36+ if err != nil {
37+ return nil, err
38+ }
39+ p.Parsed[i] = r
40+ }
41+ return &p, nil
42+}
43+
44+func (p *Pass) collectTypes(r types.Repository) {
45+ ns := r.Namespaces[0]
46+ for _, cls := range ns.Classes {
47+ p.Types.Add(ns.Name, cls.Name, types.ClassesType, cls)
48+ }
49+ for _, rec := range ns.Records {
50+ p.Types.Add(ns.Name, rec.Name, types.RecordsType, rec)
51+ }
52+ for _, en := range ns.Enums {
53+ // TODO: This probably shouldn't be aliastype, but we should make dedicated types
54+ p.Types.Add(ns.Name, en.Name, types.AliasType, en)
55+ }
56+ for _, cb := range ns.Callbacks {
57+ p.Types.Add(ns.Name, cb.Name, types.CallbackType, cb)
58+ }
59+ for _, b := range ns.Bitfields {
60+ // TODO: This probably shouldn't be aliastype, but we should make dedicated types
61+ p.Types.Add(ns.Name, b.Name, types.AliasType, b)
62+ }
63+ for _, inter := range ns.Interfaces {
64+ p.Types.Add(ns.Name, inter.Name, types.InterfacesType, inter)
65+ }
66+}
67+
68+// First does a "first pass" meaning it collects basic type information for all the repositories
69+func (p *Pass) First() {
70+ for _, r := range p.Parsed {
71+ p.collectTypes(r)
72+ }
73+}
74+
75+func (p *Pass) writeGo(r types.Repository, gotemp *template.Template, dir string) {
76+ ns := r.Namespaces[0]
77+
78+ aliases := make(map[string][]types.AliasTemplate)
79+ enums := make(map[string][]types.EnumTemplate)
80+ var files []string
81+ for _, el := range ns.Bitfields {
82+ temp := el.Template(ns.Name)
83+ fn := el.FilenameSafe()
84+ files = append(files, fn)
85+ enums[fn] = append(enums[fn], temp)
86+ }
87+
88+ for _, el := range ns.Enums {
89+ temp := el.Template(ns.Name)
90+ fn := el.FilenameSafe()
91+ files = append(files, fn)
92+ enums[fn] = append(enums[fn], temp)
93+ }
94+
95+ records := make(map[string][]types.RecordTemplate)
96+ recordLookup := make(map[string]bool)
97+ for _, rec := range ns.Records {
98+ name := util.SnakeToCamel(rec.Name)
99+ fields := make([]types.RecordField, len(rec.Fields))
100+ fn := rec.FilenameSafe()
101+ files = append(files, fn)
102+ for _, f := range rec.Fields {
103+ _type := f.Translate(ns.Name, p.Types)
104+ if _type == "" {
105+ continue
106+ }
107+ fields = append(fields, types.RecordField{
108+ Name: util.SnakeToCamel(f.Name),
109+ Type: _type,
110+ })
111+ }
112+ records[fn] = append(records[fn], types.RecordTemplate{
113+ Name: name,
114+ Doc: rec.Doc.StringSafe(),
115+ Fields: fields,
116+ })
117+ recordLookup[name] = true
118+ }
119+
120+ callbacks := make(map[string][]types.CallbackTemplate)
121+ // set every callback equal to uintptr as well
122+ for _, cb := range ns.Callbacks {
123+ fn := cb.FilenameSafe()
124+ files = append(files, fn)
125+ cbT := types.CallbackTemplate{
126+ Doc: cb.Doc.StringSafe(),
127+ Name: cb.Name,
128+ Args: cb.Parameters.Template(ns.Name, "", p.Types),
129+ Ret: cb.ReturnValue.Template(ns.Name, "", p.Types),
130+ }
131+ callbacks[fn] = append(callbacks[fn], cbT)
132+ }
133+
134+ interfaces := make(map[string][]types.InterfaceTemplate)
135+ for _, inter := range ns.Interfaces {
136+ fn := inter.FilenameSafe()
137+ files = append(files, fn)
138+ interfaces[fn] = append(interfaces[fn], types.ConvertInterface(ns.Name, "", inter, nil, p.Types))
139+ }
140+
141+ for _, union := range ns.Unions {
142+ fn := union.FilenameSafe()
143+ files = append(files, fn)
144+ name := util.SnakeToCamel(union.Name)
145+ interT := types.AliasTemplate{
146+ Doc: union.Doc.StringSafe(),
147+ Name: name,
148+ // structs are not yet supported in CGO
149+ Value: "uintptr",
150+ }
151+ aliases[fn] = append(aliases[fn], interT)
152+ }
153+
154+ for _, alias := range ns.Aliases {
155+ fn := alias.FilenameSafe()
156+ files = append(files, fn)
157+ typeName := alias.Type.Template(ns.Name, p.Types)
158+ if typeName == "" {
159+ typeName = "uintptr"
160+ }
161+ name := util.SnakeToCamel(alias.Name)
162+ aliasT := types.AliasTemplate{
163+ Doc: alias.Doc.StringSafe(),
164+ Name: name,
165+ // structs are not yet supported in CGO
166+ Value: typeName,
167+ }
168+ aliases[fn] = append(aliases[fn], aliasT)
169+ }
170+
171+ functions := make(map[string][]types.FuncTemplate)
172+ for _, f := range ns.Functions {
173+ name := util.SnakeToCamel(f.Name)
174+ if p.Types.Kind(ns.Name, name) != types.UnknownType {
175+ name = "New" + name
176+ }
177+ fn := f.FilenameSafe()
178+ files = append(files, fn)
179+ functions[fn] = append(functions[fn], types.FuncTemplate{
180+ Name: name,
181+ CName: f.CIdentifier,
182+ Doc: f.Doc.StringSafe(),
183+ Args: f.Parameters.Template(ns.Name, "", p.Types),
184+ Ret: f.ReturnValue.Template(ns.Name, "", p.Types),
185+ })
186+ }
187+
188+ classes := make(map[string][]types.ClassTemplate)
189+ for _, cls := range ns.Classes {
190+ implemented := make(map[string]bool)
191+ constructors := make([]types.FuncTemplate, len(cls.Constructors))
192+ fn := cls.FilenameSafe()
193+ files = append(files, fn)
194+
195+ for i, c := range cls.Constructors {
196+ name := util.SnakeToCamel(c.Name)
197+ constructors[i] = types.FuncTemplate{
198+ Name: name,
199+ CName: c.CIdentifier,
200+ Doc: c.Doc.StringSafe(),
201+ Args: c.Parameters.Template(ns.Name, "", p.Types),
202+ Ret: c.ReturnValue.Template(ns.Name, "", p.Types),
203+ }
204+ }
205+ signals := make([]types.SignalsTemplate, len(cls.Signals))
206+ for i, s := range cls.Signals {
207+ signals[i] = types.SignalsTemplate{
208+ Doc: s.Doc.StringSafe(),
209+ Name: util.DashToCamel(s.Name),
210+ CName: s.Name,
211+ Args: s.Parameters.Template(ns.Name, "", p.Types),
212+ Ret: s.ReturnValue.Template(ns.Name, "", p.Types),
213+ }
214+ }
215+ receivers := make([]types.FuncTemplate, len(cls.Methods))
216+ for i, f := range cls.Methods {
217+ name := util.SnakeToCamel(f.Name)
218+ implemented[name] = true
219+ receivers[i] = types.FuncTemplate{
220+ Doc: f.Doc.StringSafe(),
221+ Name: name,
222+ CName: f.CIdentifier,
223+ Args: f.Parameters.Template(ns.Name, "", p.Types),
224+ Ret: f.ReturnValue.Template(ns.Name, "", p.Types),
225+ }
226+ }
227+ var interfaces []types.InterfaceTemplate
228+ for _, impl := range cls.Implements {
229+ interfaces = append(interfaces, types.GetInterfaceFuncs(ns.Name, impl.Name, implemented, p.Types))
230+ }
231+ classes[fn] = append(classes[fn], types.ClassTemplate{
232+ Doc: cls.Doc.StringSafe(),
233+ Name: cls.Name,
234+ Parent: util.NormalizeNamespace(ns.Name, cls.Parent, true),
235+ Constructors: constructors,
236+ Receivers: receivers,
237+ Interfaces: interfaces,
238+ Signals: signals,
239+ })
240+ }
241+
242+ pkgName := strings.ToLower(ns.Name)
243+ for _, fn := range files {
244+ var includesSlice []string
245+ //includesSlice := make([]string, len(includes[fn]))
246+ //i := 0
247+ //for k, v := range includes[fn] {
248+ // if v {
249+ // includesSlice[i] = k
250+ // }
251+ // i++
252+ //}
253+ methods := 0
254+ for _, i := range interfaces[fn] {
255+ for range i.Methods {
256+ methods += 1
257+ }
258+ }
259+ for _, i := range classes[fn] {
260+ for range i.Constructors {
261+ methods += 1
262+ }
263+ for range i.Receivers {
264+ methods += 1
265+ }
266+ }
267+ // we do not need to add the length of interfaces in here
268+ // as they should only be loaded when there are classes
269+ needsInit := (len(functions[fn]) + methods) > 0
270+
271+ args := types.TemplateArg{
272+ PkgName: pkgName,
273+ PkgEnv: strings.ToUpper(pkgName),
274+ NeedsInit: needsInit,
275+ Imports: includesSlice,
276+ Aliases: aliases[fn],
277+ Callbacks: callbacks[fn],
278+ Records: records[fn],
279+ Enums: enums[fn],
280+ Functions: functions[fn],
281+ Interfaces: interfaces[fn],
282+ Classes: classes[fn],
283+ }
284+
285+ os.MkdirAll(fmt.Sprintf(dir+"/%s", pkgName), 0o755)
286+
287+ f, err := os.Create(fmt.Sprintf(dir+"/%s/%s", pkgName, fn))
288+ if err != nil {
289+ panic(err)
290+ }
291+ err = gotemp.Execute(f, args)
292+ if err != nil {
293+ panic(err)
294+ }
295+
296+ }
297+}
298+
299+func (p *Pass) Second(dir string, gotemp *template.Template) {
300+ for _, r := range p.Parsed {
301+ p.writeGo(r, gotemp, dir)
302+ }
303+}
A internal/gir/spec/Adw-1.gir +29130 -0 large diff (29130 lines changed): collapsed
A internal/gir/spec/GLib-2.0.gir +83214 -0 large diff (83214 lines changed): collapsed
A internal/gir/spec/GModule-2.0.gir +522 -0
@@ -0,0 +1,522 @@
1+<?xml version="1.0"?>
2+<!-- This file was automatically generated from C sources - DO NOT EDIT!
3+To affect the contents of this file, edit the original C definitions,
4+and/or use gtk-doc annotations. -->
5+<repository version="1.2"
6+ xmlns="http://www.gtk.org/introspection/core/1.0"
7+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
8+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
9+ <include name="GLib" version="2.0"/>
10+ <package name="gmodule-2.0"/>
11+ <c:include name="gmodule.h"/>
12+ <namespace name="GModule"
13+ version="2.0"
14+ shared-library="libgmodule-2.0.so.0"
15+ c:identifier-prefixes="G"
16+ c:symbol-prefixes="g">
17+ <record name="Module" c:type="GModule" disguised="1">
18+ <doc xml:space="preserve"
19+ filename="gmodule-2.0.c"
20+ line="5">The #GModule struct is an opaque data structure to represent a
21+[dynamically-loaded module][glib-Dynamic-Loading-of-Modules].
22+It should only be accessed via the following functions.</doc>
23+ <source-position filename="gmodule.h" line="65"/>
24+ <method name="close" c:identifier="g_module_close">
25+ <doc xml:space="preserve"
26+ filename="gmodule-2.0.c"
27+ line="185">Closes a module.</doc>
28+ <source-position filename="gmodule.h" line="105"/>
29+ <return-value transfer-ownership="none">
30+ <doc xml:space="preserve"
31+ filename="gmodule-2.0.c"
32+ line="191">%TRUE on success</doc>
33+ <type name="gboolean" c:type="gboolean"/>
34+ </return-value>
35+ <parameters>
36+ <instance-parameter name="module" transfer-ownership="none">
37+ <doc xml:space="preserve"
38+ filename="gmodule-2.0.c"
39+ line="187">a #GModule to close</doc>
40+ <type name="Module" c:type="GModule*"/>
41+ </instance-parameter>
42+ </parameters>
43+ </method>
44+ <method name="make_resident" c:identifier="g_module_make_resident">
45+ <doc xml:space="preserve"
46+ filename="gmodule-2.0.c"
47+ line="204">Ensures that a module will never be unloaded.
48+Any future g_module_close() calls on the module will be ignored.</doc>
49+ <source-position filename="gmodule.h" line="109"/>
50+ <return-value transfer-ownership="none">
51+ <type name="none" c:type="void"/>
52+ </return-value>
53+ <parameters>
54+ <instance-parameter name="module" transfer-ownership="none">
55+ <doc xml:space="preserve"
56+ filename="gmodule-2.0.c"
57+ line="206">a #GModule to make permanently resident</doc>
58+ <type name="Module" c:type="GModule*"/>
59+ </instance-parameter>
60+ </parameters>
61+ </method>
62+ <method name="name" c:identifier="g_module_name">
63+ <doc xml:space="preserve"
64+ filename="gmodule-2.0.c"
65+ line="213">Returns the filename that the module was opened with.
66+
67+If @module refers to the application itself, "main" is returned.</doc>
68+ <source-position filename="gmodule.h" line="123"/>
69+ <return-value transfer-ownership="none">
70+ <doc xml:space="preserve"
71+ filename="gmodule-2.0.c"
72+ line="221">the filename of the module</doc>
73+ <type name="utf8" c:type="const gchar*"/>
74+ </return-value>
75+ <parameters>
76+ <instance-parameter name="module" transfer-ownership="none">
77+ <doc xml:space="preserve"
78+ filename="gmodule-2.0.c"
79+ line="215">a #GModule</doc>
80+ <type name="Module" c:type="GModule*"/>
81+ </instance-parameter>
82+ </parameters>
83+ </method>
84+ <method name="symbol" c:identifier="g_module_symbol">
85+ <doc xml:space="preserve"
86+ filename="gmodule-2.0.c"
87+ line="273">Gets a symbol pointer from a module, such as one exported
88+by %G_MODULE_EXPORT. Note that a valid symbol can be %NULL.</doc>
89+ <source-position filename="gmodule.h" line="117"/>
90+ <return-value transfer-ownership="none">
91+ <doc xml:space="preserve"
92+ filename="gmodule-2.0.c"
93+ line="282">%TRUE on success</doc>
94+ <type name="gboolean" c:type="gboolean"/>
95+ </return-value>
96+ <parameters>
97+ <instance-parameter name="module" transfer-ownership="none">
98+ <doc xml:space="preserve"
99+ filename="gmodule-2.0.c"
100+ line="275">a #GModule</doc>
101+ <type name="Module" c:type="GModule*"/>
102+ </instance-parameter>
103+ <parameter name="symbol_name" transfer-ownership="none">
104+ <doc xml:space="preserve"
105+ filename="gmodule-2.0.c"
106+ line="276">the name of the symbol to find</doc>
107+ <type name="utf8" c:type="const gchar*"/>
108+ </parameter>
109+ <parameter name="symbol"
110+ direction="out"
111+ caller-allocates="0"
112+ transfer-ownership="full"
113+ nullable="1">
114+ <doc xml:space="preserve"
115+ filename="gmodule-2.0.c"
116+ line="277">returns the pointer to the symbol value</doc>
117+ <type name="gpointer" c:type="gpointer*"/>
118+ </parameter>
119+ </parameters>
120+ </method>
121+ <function name="build_path" c:identifier="g_module_build_path">
122+ <doc xml:space="preserve"
123+ filename="gmodule-2.0.c"
124+ line="159">A portable way to build the filename of a module. The platform-specific
125+prefix and suffix are added to the filename, if needed, and the result
126+is added to the directory, using the correct separator character.
127+
128+The directory should specify the directory where the module can be found.
129+It can be %NULL or an empty string to indicate that the module is in a
130+standard platform-specific directory, though this is not recommended
131+since the wrong module may be found.
132+
133+For example, calling g_module_build_path() on a Linux system with a
134+@directory of `/lib` and a @module_name of "mylibrary" will return
135+`/lib/libmylibrary.so`. On a Windows system, using `\Windows` as the
136+directory it will return `\Windows\mylibrary.dll`.</doc>
137+ <source-position filename="gmodule.h" line="137"/>
138+ <return-value transfer-ownership="full">
139+ <doc xml:space="preserve"
140+ filename="gmodule-2.0.c"
141+ line="180">the complete path of the module, including the standard library
142+ prefix and suffix. This should be freed when no longer needed</doc>
143+ <type name="utf8" c:type="gchar*"/>
144+ </return-value>
145+ <parameters>
146+ <parameter name="directory"
147+ transfer-ownership="none"
148+ nullable="1"
149+ allow-none="1">
150+ <doc xml:space="preserve"
151+ filename="gmodule-2.0.c"
152+ line="161">the directory where the module is. This can be
153+ %NULL or the empty string to indicate that the standard platform-specific
154+ directories will be used, though that is not recommended</doc>
155+ <type name="utf8" c:type="const gchar*"/>
156+ </parameter>
157+ <parameter name="module_name" transfer-ownership="none">
158+ <doc xml:space="preserve"
159+ filename="gmodule-2.0.c"
160+ line="164">the name of the module</doc>
161+ <type name="utf8" c:type="const gchar*"/>
162+ </parameter>
163+ </parameters>
164+ </function>
165+ <function name="error" c:identifier="g_module_error">
166+ <doc xml:space="preserve"
167+ filename="gmodule-2.0.c"
168+ line="195">Gets a string describing the last module error.</doc>
169+ <source-position filename="gmodule.h" line="113"/>
170+ <return-value transfer-ownership="none">
171+ <doc xml:space="preserve"
172+ filename="gmodule-2.0.c"
173+ line="200">a string describing the last module error</doc>
174+ <type name="utf8" c:type="const gchar*"/>
175+ </return-value>
176+ </function>
177+ <function name="error_quark" c:identifier="g_module_error_quark">
178+ <return-value transfer-ownership="none">
179+ <type name="GLib.Quark" c:type="GQuark"/>
180+ </return-value>
181+ </function>
182+ <function name="open" c:identifier="g_module_open" introspectable="0">
183+ <doc xml:space="preserve"
184+ filename="gmodule-2.0.c"
185+ line="225">A thin wrapper function around g_module_open_full()</doc>
186+ <source-position filename="gmodule.h" line="95"/>
187+ <return-value>
188+ <doc xml:space="preserve"
189+ filename="gmodule-2.0.c"
190+ line="234">a #GModule on success, or %NULL on failure</doc>
191+ <type name="Module" c:type="GModule*"/>
192+ </return-value>
193+ <parameters>
194+ <parameter name="file_name"
195+ transfer-ownership="none"
196+ nullable="1"
197+ allow-none="1">
198+ <doc xml:space="preserve"
199+ filename="gmodule-2.0.c"
200+ line="227">the name of the file containing the module, or %NULL
201+ to obtain a #GModule representing the main program itself</doc>
202+ <type name="utf8" c:type="const gchar*"/>
203+ </parameter>
204+ <parameter name="flags" transfer-ownership="none">
205+ <doc xml:space="preserve"
206+ filename="gmodule-2.0.c"
207+ line="229">the flags used for opening the module. This can be the
208+ logical OR of any of the #GModuleFlags.</doc>
209+ <type name="ModuleFlags" c:type="GModuleFlags"/>
210+ </parameter>
211+ </parameters>
212+ </function>
213+ <function name="open_full"
214+ c:identifier="g_module_open_full"
215+ version="2.70"
216+ introspectable="0"
217+ throws="1">
218+ <doc xml:space="preserve"
219+ filename="gmodule-2.0.c"
220+ line="238">Opens a module. If the module has already been opened,
221+its reference count is incremented.
222+
223+First of all g_module_open_full() tries to open @file_name as a module.
224+If that fails and @file_name has the ".la"-suffix (and is a libtool
225+archive) it tries to open the corresponding module. If that fails
226+and it doesn't have the proper module suffix for the platform
227+(%G_MODULE_SUFFIX), this suffix will be appended and the corresponding
228+module will be opened. If that fails and @file_name doesn't have the
229+".la"-suffix, this suffix is appended and g_module_open_full() tries to open
230+the corresponding module. If eventually that fails as well, %NULL is
231+returned.</doc>
232+ <source-position filename="gmodule.h" line="99"/>
233+ <return-value>
234+ <doc xml:space="preserve"
235+ filename="gmodule-2.0.c"
236+ line="259">a #GModule on success, or %NULL on failure</doc>
237+ <type name="Module" c:type="GModule*"/>
238+ </return-value>
239+ <parameters>
240+ <parameter name="file_name"
241+ transfer-ownership="none"
242+ nullable="1"
243+ allow-none="1">
244+ <doc xml:space="preserve"
245+ filename="gmodule-2.0.c"
246+ line="240">the name of the file containing the module, or %NULL
247+ to obtain a #GModule representing the main program itself</doc>
248+ <type name="utf8" c:type="const gchar*"/>
249+ </parameter>
250+ <parameter name="flags" transfer-ownership="none">
251+ <doc xml:space="preserve"
252+ filename="gmodule-2.0.c"
253+ line="242">the flags used for opening the module. This can be the
254+ logical OR of any of the #GModuleFlags</doc>
255+ <type name="ModuleFlags" c:type="GModuleFlags"/>
256+ </parameter>
257+ </parameters>
258+ </function>
259+ <function name="supported" c:identifier="g_module_supported">
260+ <doc xml:space="preserve"
261+ filename="gmodule-2.0.c"
262+ line="264">Checks if modules are supported on the current platform.</doc>
263+ <source-position filename="gmodule.h" line="91"/>
264+ <return-value transfer-ownership="none">
265+ <doc xml:space="preserve"
266+ filename="gmodule-2.0.c"
267+ line="269">%TRUE if modules are supported</doc>
268+ <type name="gboolean" c:type="gboolean"/>
269+ </return-value>
270+ </function>
271+ </record>
272+ <callback name="ModuleCheckInit" c:type="GModuleCheckInit">
273+ <doc xml:space="preserve"
274+ filename="gmodule-2.0.c"
275+ line="14">Specifies the type of the module initialization function.
276+If a module contains a function named g_module_check_init() it is called
277+automatically when the module is loaded. It is passed the #GModule structure
278+and should return %NULL on success or a string describing the initialization
279+error.</doc>
280+ <source-position filename="gmodule.h" line="66"/>
281+ <return-value transfer-ownership="none">
282+ <doc xml:space="preserve"
283+ filename="gmodule-2.0.c"
284+ line="24">%NULL on success, or a string describing the initialization error</doc>
285+ <type name="utf8" c:type="const gchar*"/>
286+ </return-value>
287+ <parameters>
288+ <parameter name="module" transfer-ownership="none">
289+ <doc xml:space="preserve"
290+ filename="gmodule-2.0.c"
291+ line="16">the #GModule corresponding to the module which has just been loaded</doc>
292+ <type name="Module" c:type="GModule*"/>
293+ </parameter>
294+ </parameters>
295+ </callback>
296+ <enumeration name="ModuleError"
297+ version="2.70"
298+ c:type="GModuleError"
299+ glib:error-domain="g-module-error-quark">
300+ <doc xml:space="preserve"
301+ filename="gmodule.h"
302+ line="73">Errors returned by g_module_open_full().</doc>
303+ <source-position filename="gmodule.h" line="86"/>
304+ <member name="failed" value="0" c:identifier="G_MODULE_ERROR_FAILED">
305+ <doc xml:space="preserve"
306+ filename="gmodule.h"
307+ line="75">there was an error loading or opening a module file</doc>
308+ </member>
309+ <member name="check_failed"
310+ value="1"
311+ c:identifier="G_MODULE_ERROR_CHECK_FAILED">
312+ <doc xml:space="preserve"
313+ filename="gmodule.h"
314+ line="76">a module returned an error from its `g_module_check_init()` function</doc>
315+ </member>
316+ </enumeration>
317+ <bitfield name="ModuleFlags" c:type="GModuleFlags">
318+ <doc xml:space="preserve"
319+ filename="gmodule.h"
320+ line="44">Flags passed to g_module_open().
321+Note that these flags are not supported on all platforms.</doc>
322+ <source-position filename="gmodule.h" line="63"/>
323+ <member name="lazy" value="1" c:identifier="G_MODULE_BIND_LAZY">
324+ <doc xml:space="preserve"
325+ filename="gmodule.h"
326+ line="46">specifies that symbols are only resolved when
327+ needed. The default action is to bind all symbols when the module
328+ is loaded.</doc>
329+ </member>
330+ <member name="local" value="2" c:identifier="G_MODULE_BIND_LOCAL">
331+ <doc xml:space="preserve"
332+ filename="gmodule.h"
333+ line="49">specifies that symbols in the module should
334+ not be added to the global name space. The default action on most
335+ platforms is to place symbols in the module in the global name space,
336+ which may cause conflicts with existing symbols.</doc>
337+ </member>
338+ <member name="mask" value="3" c:identifier="G_MODULE_BIND_MASK">
339+ <doc xml:space="preserve"
340+ filename="gmodule.h"
341+ line="53">mask for all flags.</doc>
342+ </member>
343+ </bitfield>
344+ <callback name="ModuleUnload" c:type="GModuleUnload">
345+ <doc xml:space="preserve"
346+ filename="gmodule-2.0.c"
347+ line="28">Specifies the type of the module function called when it is unloaded.
348+If a module contains a function named g_module_unload() it is called
349+automatically when the module is unloaded.
350+It is passed the #GModule structure.</doc>
351+ <source-position filename="gmodule.h" line="67"/>
352+ <return-value transfer-ownership="none">
353+ <type name="none" c:type="void"/>
354+ </return-value>
355+ <parameters>
356+ <parameter name="module" transfer-ownership="none">
357+ <doc xml:space="preserve"
358+ filename="gmodule-2.0.c"
359+ line="30">the #GModule about to be unloaded</doc>
360+ <type name="Module" c:type="GModule*"/>
361+ </parameter>
362+ </parameters>
363+ </callback>
364+ <function name="module_build_path"
365+ c:identifier="g_module_build_path"
366+ moved-to="Module.build_path">
367+ <doc xml:space="preserve"
368+ filename="gmodule-2.0.c"
369+ line="159">A portable way to build the filename of a module. The platform-specific
370+prefix and suffix are added to the filename, if needed, and the result
371+is added to the directory, using the correct separator character.
372+
373+The directory should specify the directory where the module can be found.
374+It can be %NULL or an empty string to indicate that the module is in a
375+standard platform-specific directory, though this is not recommended
376+since the wrong module may be found.
377+
378+For example, calling g_module_build_path() on a Linux system with a
379+@directory of `/lib` and a @module_name of "mylibrary" will return
380+`/lib/libmylibrary.so`. On a Windows system, using `\Windows` as the
381+directory it will return `\Windows\mylibrary.dll`.</doc>
382+ <source-position filename="gmodule.h" line="137"/>
383+ <return-value transfer-ownership="full">
384+ <doc xml:space="preserve"
385+ filename="gmodule-2.0.c"
386+ line="180">the complete path of the module, including the standard library
387+ prefix and suffix. This should be freed when no longer needed</doc>
388+ <type name="utf8" c:type="gchar*"/>
389+ </return-value>
390+ <parameters>
391+ <parameter name="directory"
392+ transfer-ownership="none"
393+ nullable="1"
394+ allow-none="1">
395+ <doc xml:space="preserve"
396+ filename="gmodule-2.0.c"
397+ line="161">the directory where the module is. This can be
398+ %NULL or the empty string to indicate that the standard platform-specific
399+ directories will be used, though that is not recommended</doc>
400+ <type name="utf8" c:type="const gchar*"/>
401+ </parameter>
402+ <parameter name="module_name" transfer-ownership="none">
403+ <doc xml:space="preserve"
404+ filename="gmodule-2.0.c"
405+ line="164">the name of the module</doc>
406+ <type name="utf8" c:type="const gchar*"/>
407+ </parameter>
408+ </parameters>
409+ </function>
410+ <function name="module_error"
411+ c:identifier="g_module_error"
412+ moved-to="Module.error">
413+ <doc xml:space="preserve"
414+ filename="gmodule-2.0.c"
415+ line="195">Gets a string describing the last module error.</doc>
416+ <source-position filename="gmodule.h" line="113"/>
417+ <return-value transfer-ownership="none">
418+ <doc xml:space="preserve"
419+ filename="gmodule-2.0.c"
420+ line="200">a string describing the last module error</doc>
421+ <type name="utf8" c:type="const gchar*"/>
422+ </return-value>
423+ </function>
424+ <function name="module_error_quark"
425+ c:identifier="g_module_error_quark"
426+ moved-to="Module.error_quark">
427+ <return-value transfer-ownership="none">
428+ <type name="GLib.Quark" c:type="GQuark"/>
429+ </return-value>
430+ </function>
431+ <function name="module_supported"
432+ c:identifier="g_module_supported"
433+ moved-to="Module.supported">
434+ <doc xml:space="preserve"
435+ filename="gmodule-2.0.c"
436+ line="264">Checks if modules are supported on the current platform.</doc>
437+ <source-position filename="gmodule.h" line="91"/>
438+ <return-value transfer-ownership="none">
439+ <doc xml:space="preserve"
440+ filename="gmodule-2.0.c"
441+ line="269">%TRUE if modules are supported</doc>
442+ <type name="gboolean" c:type="gboolean"/>
443+ </return-value>
444+ </function>
445+ <docsection name="modules">
446+ <doc xml:space="preserve"
447+ filename="gmodule-2.0.c"
448+ line="79">These functions provide a portable way to dynamically load object files
449+(commonly known as 'plug-ins'). The current implementation supports all
450+systems that provide an implementation of dlopen() (e.g. Linux/Sun), as
451+well as Windows platforms via DLLs.
452+
453+A program which wants to use these functions must be linked to the
454+libraries output by the command `pkg-config --libs gmodule-2.0`.
455+
456+To use them you must first determine whether dynamic loading
457+is supported on the platform by calling g_module_supported().
458+If it is, you can open a module with g_module_open(),
459+find the module's symbols (e.g. function names) with g_module_symbol(),
460+and later close the module with g_module_close().
461+g_module_name() will return the file name of a currently opened module.
462+
463+If any of the above functions fail, the error status can be found with
464+g_module_error().
465+
466+The #GModule implementation features reference counting for opened modules,
467+and supports hook functions within a module which are called when the
468+module is loaded and unloaded (see #GModuleCheckInit and #GModuleUnload).
469+
470+If your module introduces static data to common subsystems in the running
471+program, e.g. through calling
472+`g_quark_from_static_string ("my-module-stuff")`,
473+it must ensure that it is never unloaded, by calling g_module_make_resident().
474+
475+Example: Calling a function defined in a GModule
476+|[&lt;!-- language="C" --&gt;
477+// the function signature for 'say_hello'
478+typedef void (* SayHelloFunc) (const char *message);
479+
480+gboolean
481+just_say_hello (const char *filename, GError **error)
482+{
483+ SayHelloFunc say_hello;
484+ GModule *module;
485+
486+ module = g_module_open (filename, G_MODULE_BIND_LAZY);
487+ if (!module)
488+ {
489+ g_set_error (error, FOO_ERROR, FOO_ERROR_BLAH,
490+ "%s", g_module_error ());
491+ return FALSE;
492+ }
493+
494+ if (!g_module_symbol (module, "say_hello", (gpointer *)&amp;say_hello))
495+ {
496+ g_set_error (error, SAY_ERROR, SAY_ERROR_OPEN,
497+ "%s: %s", filename, g_module_error ());
498+ if (!g_module_close (module))
499+ g_warning ("%s: %s", filename, g_module_error ());
500+ return FALSE;
501+ }
502+
503+ if (say_hello == NULL)
504+ {
505+ g_set_error (error, SAY_ERROR, SAY_ERROR_OPEN,
506+ "symbol say_hello is NULL");
507+ if (!g_module_close (module))
508+ g_warning ("%s: %s", filename, g_module_error ());
509+ return FALSE;
510+ }
511+
512+ // call our function in the module
513+ say_hello ("Hello world!");
514+
515+ if (!g_module_close (module))
516+ g_warning ("%s: %s", filename, g_module_error ());
517+ return TRUE;
518+ }
519+]|</doc>
520+ </docsection>
521+ </namespace>
522+</repository>
A internal/gir/spec/GObject-2.0.gir +27133 -0 large diff (27133 lines changed): collapsed
A internal/gir/spec/Gdk-4.0.gir +31079 -0 large diff (31079 lines changed): collapsed
A internal/gir/spec/GdkPixbuf-2.0.gir +7353 -0 large diff (7353 lines changed): collapsed
A internal/gir/spec/Gio-2.0.gir +134893 -0 large diff (134893 lines changed): collapsed
A internal/gir/spec/Graphene-1.0.gir +13375 -0 large diff (13375 lines changed): collapsed
A internal/gir/spec/Gsk-4.0.gir +7181 -0 large diff (7181 lines changed): collapsed
A internal/gir/spec/Gtk-4.0.gir +167916 -0 large diff (167916 lines changed): collapsed
A internal/gir/spec/Pango-1.0.gir +22709 -0 large diff (22709 lines changed): collapsed
A internal/gir/spec/PangoCairo-1.0.gir +1136 -0
@@ -0,0 +1,1136 @@
1+<?xml version="1.0"?>
2+<!-- This file was automatically generated from C sources - DO NOT EDIT!
3+To affect the contents of this file, edit the original C definitions,
4+and/or use gtk-doc annotations. -->
5+<repository version="1.2"
6+ xmlns="http://www.gtk.org/introspection/core/1.0"
7+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
8+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
9+ <include name="GObject" version="2.0"/>
10+ <include name="Pango" version="1.0"/>
11+ <include name="cairo" version="1.0"/>
12+ <package name="pangocairo"/>
13+ <c:include name="pango/pangocairo.h"/>
14+ <namespace name="PangoCairo"
15+ version="1.0"
16+ shared-library="libpangocairo-1.0.so.0"
17+ c:identifier-prefixes="PangoCairo"
18+ c:symbol-prefixes="pango_cairo">
19+ <function-macro name="FONT"
20+ c:identifier="PANGO_CAIRO_FONT"
21+ introspectable="0">
22+ <source-position filename="../pango/pangocairo.h" line="49"/>
23+ <parameters>
24+ <parameter name="obj">
25+ </parameter>
26+ </parameters>
27+ </function-macro>
28+ <function-macro name="FONT_MAP"
29+ c:identifier="PANGO_CAIRO_FONT_MAP"
30+ introspectable="0">
31+ <source-position filename="../pango/pangocairo.h" line="72"/>
32+ <parameters>
33+ <parameter name="obj">
34+ </parameter>
35+ </parameters>
36+ </function-macro>
37+ <interface name="Font"
38+ c:symbol-prefix="font"
39+ c:type="PangoCairoFont"
40+ version="1.18"
41+ glib:type-name="PangoCairoFont"
42+ glib:get-type="pango_cairo_font_get_type">
43+ <doc xml:space="preserve"
44+ filename="../pango/pangocairo.h"
45+ line="30">`PangoCairoFont` is an interface exported by fonts for
46+use with Cairo.
47+
48+The actual type of the font will depend on the particular
49+font technology Cairo was compiled to use.</doc>
50+ <prerequisite name="Pango.Font"/>
51+ <method name="get_scaled_font"
52+ c:identifier="pango_cairo_font_get_scaled_font"
53+ version="1.18">
54+ <doc xml:space="preserve"
55+ filename="../pango/pangocairo-font.c"
56+ line="138">Gets the `cairo_scaled_font_t` used by @font.
57+The scaled font can be referenced and kept using
58+cairo_scaled_font_reference().</doc>
59+ <source-position filename="../pango/pangocairo.h" line="133"/>
60+ <return-value transfer-ownership="none" nullable="1">
61+ <doc xml:space="preserve"
62+ filename="../pango/pangocairo-font.c"
63+ line="146">the `cairo_scaled_font_t`
64+ used by @font</doc>
65+ <type name="cairo.ScaledFont" c:type="cairo_scaled_font_t*"/>
66+ </return-value>
67+ <parameters>
68+ <instance-parameter name="font"
69+ transfer-ownership="none"
70+ nullable="1"
71+ allow-none="1">
72+ <doc xml:space="preserve"
73+ filename="../pango/pangocairo-font.c"
74+ line="140">a `PangoFont` from a `PangoCairoFontMap`</doc>
75+ <type name="Font" c:type="PangoCairoFont*"/>
76+ </instance-parameter>
77+ </parameters>
78+ </method>
79+ </interface>
80+ <interface name="FontMap"
81+ c:symbol-prefix="font_map"
82+ c:type="PangoCairoFontMap"
83+ version="1.10"
84+ glib:type-name="PangoCairoFontMap"
85+ glib:get-type="pango_cairo_font_map_get_type">
86+ <doc xml:space="preserve"
87+ filename="../pango/pangocairo.h"
88+ line="57">`PangoCairoFontMap` is an interface exported by font maps for
89+use with Cairo.
90+
91+The actual type of the font map will depend on the particular
92+font technology Cairo was compiled to use.</doc>
93+ <prerequisite name="Pango.FontMap"/>
94+ <function name="get_default"
95+ c:identifier="pango_cairo_font_map_get_default"
96+ version="1.10">
97+ <doc xml:space="preserve"
98+ filename="../pango/pangocairo-fontmap.c"
99+ line="151">Gets a default `PangoCairoFontMap` to use with Cairo.
100+
101+Note that the type of the returned object will depend on the
102+particular font backend Cairo was compiled to use; you generally
103+should only use the `PangoFontMap` and `PangoCairoFontMap`
104+interfaces on the returned object.
105+
106+The default Cairo fontmap can be changed by using
107+[method@PangoCairo.FontMap.set_default]. This can be used to
108+change the Cairo font backend that the default fontmap uses
109+for example.
110+
111+Note that since Pango 1.32.6, the default fontmap is per-thread.
112+Each thread gets its own default fontmap. In this way, PangoCairo
113+can be used safely from multiple threads.</doc>
114+ <source-position filename="../pango/pangocairo.h" line="110"/>
115+ <return-value transfer-ownership="none">
116+ <doc xml:space="preserve"
117+ filename="../pango/pangocairo-fontmap.c"
118+ line="170">the default PangoCairo fontmap
119+ for the current thread. This object is owned by Pango and must
120+ not be freed.</doc>
121+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
122+ </return-value>
123+ </function>
124+ <function name="new"
125+ c:identifier="pango_cairo_font_map_new"
126+ version="1.10">
127+ <doc xml:space="preserve"
128+ filename="../pango/pangocairo-fontmap.c"
129+ line="47">Creates a new `PangoCairoFontMap` object.
130+
131+A fontmap is used to cache information about available fonts,
132+and holds certain global parameters such as the resolution.
133+In most cases, you can use `func@PangoCairo.font_map_get_default]
134+instead.
135+
136+Note that the type of the returned object will depend
137+on the particular font backend Cairo was compiled to use;
138+You generally should only use the `PangoFontMap` and
139+`PangoCairoFontMap` interfaces on the returned object.
140+
141+You can override the type of backend returned by using an
142+environment variable %PANGOCAIRO_BACKEND. Supported types,
143+based on your build, are fc (fontconfig), win32, and coretext.
144+If requested type is not available, NULL is returned. Ie.
145+this is only useful for testing, when at least two backends
146+are compiled in.</doc>
147+ <source-position filename="../pango/pangocairo.h" line="106"/>
148+ <return-value transfer-ownership="full">
149+ <doc xml:space="preserve"
150+ filename="../pango/pangocairo-fontmap.c"
151+ line="69">the newly allocated `PangoFontMap`,
152+ which should be freed with g_object_unref().</doc>
153+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
154+ </return-value>
155+ </function>
156+ <function name="new_for_font_type"
157+ c:identifier="pango_cairo_font_map_new_for_font_type"
158+ version="1.18">
159+ <doc xml:space="preserve"
160+ filename="../pango/pangocairo-fontmap.c"
161+ line="110">Creates a new `PangoCairoFontMap` object of the type suitable
162+to be used with cairo font backend of type @fonttype.
163+
164+In most cases one should simply use [func@PangoCairo.FontMap.new], or
165+in fact in most of those cases, just use [func@PangoCairo.FontMap.get_default].</doc>
166+ <source-position filename="../pango/pangocairo.h" line="108"/>
167+ <return-value transfer-ownership="full" nullable="1">
168+ <doc xml:space="preserve"
169+ filename="../pango/pangocairo-fontmap.c"
170+ line="120">the newly allocated
171+ `PangoFontMap` of suitable type which should be freed with
172+ g_object_unref(), or %NULL if the requested cairo font backend
173+ is not supported / compiled in.</doc>
174+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
175+ </return-value>
176+ <parameters>
177+ <parameter name="fonttype" transfer-ownership="none">
178+ <doc xml:space="preserve"
179+ filename="../pango/pangocairo-fontmap.c"
180+ line="112">desired #cairo_font_type_t</doc>
181+ <type name="cairo.FontType" c:type="cairo_font_type_t"/>
182+ </parameter>
183+ </parameters>
184+ </function>
185+ <method name="create_context"
186+ c:identifier="pango_cairo_font_map_create_context"
187+ version="1.10"
188+ introspectable="0"
189+ deprecated="1"
190+ deprecated-version="1.22">
191+ <doc xml:space="preserve"
192+ filename="../pango/pangocairo-fontmap.c"
193+ line="267">Create a `PangoContext` for the given fontmap.</doc>
194+ <doc-deprecated xml:space="preserve">Use pango_font_map_create_context() instead.</doc-deprecated>
195+ <source-position filename="../pango/pangocairo.h" line="123"/>
196+ <return-value>
197+ <doc xml:space="preserve"
198+ filename="../pango/pangocairo-fontmap.c"
199+ line="273">the newly created context; free with g_object_unref().</doc>
200+ <type name="Pango.Context" c:type="PangoContext*"/>
201+ </return-value>
202+ <parameters>
203+ <instance-parameter name="fontmap" transfer-ownership="none">
204+ <doc xml:space="preserve"
205+ filename="../pango/pangocairo-fontmap.c"
206+ line="269">a `PangoCairoFontMap`</doc>
207+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
208+ </instance-parameter>
209+ </parameters>
210+ </method>
211+ <method name="get_font_type"
212+ c:identifier="pango_cairo_font_map_get_font_type"
213+ version="1.18">
214+ <doc xml:space="preserve"
215+ filename="../pango/pangocairo-fontmap.c"
216+ line="287">Gets the type of Cairo font backend that @fontmap uses.</doc>
217+ <source-position filename="../pango/pangocairo.h" line="114"/>
218+ <return-value transfer-ownership="none">
219+ <doc xml:space="preserve"
220+ filename="../pango/pangocairo-fontmap.c"
221+ line="293">the `cairo_font_type_t` cairo font backend type</doc>
222+ <type name="cairo.FontType" c:type="cairo_font_type_t"/>
223+ </return-value>
224+ <parameters>
225+ <instance-parameter name="fontmap" transfer-ownership="none">
226+ <doc xml:space="preserve"
227+ filename="../pango/pangocairo-fontmap.c"
228+ line="289">a `PangoCairoFontMap`</doc>
229+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
230+ </instance-parameter>
231+ </parameters>
232+ </method>
233+ <method name="get_resolution"
234+ c:identifier="pango_cairo_font_map_get_resolution"
235+ version="1.10">
236+ <doc xml:space="preserve"
237+ filename="../pango/pangocairo-fontmap.c"
238+ line="247">Gets the resolution for the fontmap.
239+
240+See [method@PangoCairo.FontMap.set_resolution].</doc>
241+ <source-position filename="../pango/pangocairo.h" line="120"/>
242+ <return-value transfer-ownership="none">
243+ <doc xml:space="preserve"
244+ filename="../pango/pangocairo-fontmap.c"
245+ line="255">the resolution in "dots per inch"</doc>
246+ <type name="gdouble" c:type="double"/>
247+ </return-value>
248+ <parameters>
249+ <instance-parameter name="fontmap" transfer-ownership="none">
250+ <doc xml:space="preserve"
251+ filename="../pango/pangocairo-fontmap.c"
252+ line="249">a `PangoCairoFontMap`</doc>
253+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
254+ </instance-parameter>
255+ </parameters>
256+ </method>
257+ <method name="set_default"
258+ c:identifier="pango_cairo_font_map_set_default"
259+ version="1.22">
260+ <doc xml:space="preserve"
261+ filename="../pango/pangocairo-fontmap.c"
262+ line="190">Sets a default `PangoCairoFontMap` to use with Cairo.
263+
264+This can be used to change the Cairo font backend that the
265+default fontmap uses for example. The old default font map
266+is unreffed and the new font map referenced.
267+
268+Note that since Pango 1.32.6, the default fontmap is per-thread.
269+This function only changes the default fontmap for
270+the current thread. Default fontmaps of existing threads
271+are not changed. Default fontmaps of any new threads will
272+still be created using [func@PangoCairo.FontMap.new].
273+
274+A value of %NULL for @fontmap will cause the current default
275+font map to be released and a new default font map to be created
276+on demand, using [func@PangoCairo.FontMap.new].</doc>
277+ <source-position filename="../pango/pangocairo.h" line="112"/>
278+ <return-value transfer-ownership="none">
279+ <type name="none" c:type="void"/>
280+ </return-value>
281+ <parameters>
282+ <instance-parameter name="fontmap"
283+ transfer-ownership="none"
284+ nullable="1"
285+ allow-none="1">
286+ <doc xml:space="preserve"
287+ filename="../pango/pangocairo-fontmap.c"
288+ line="192">The new default font map</doc>
289+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
290+ </instance-parameter>
291+ </parameters>
292+ </method>
293+ <method name="set_resolution"
294+ c:identifier="pango_cairo_font_map_set_resolution"
295+ version="1.10">
296+ <doc xml:space="preserve"
297+ filename="../pango/pangocairo-fontmap.c"
298+ line="223">Sets the resolution for the fontmap.
299+
300+This is a scale factor between
301+points specified in a `PangoFontDescription` and Cairo units. The
302+default value is 96, meaning that a 10 point font will be 13
303+units high. (10 * 96. / 72. = 13.3).</doc>
304+ <source-position filename="../pango/pangocairo.h" line="117"/>
305+ <return-value transfer-ownership="none">
306+ <type name="none" c:type="void"/>
307+ </return-value>
308+ <parameters>
309+ <instance-parameter name="fontmap" transfer-ownership="none">
310+ <doc xml:space="preserve"
311+ filename="../pango/pangocairo-fontmap.c"
312+ line="225">a `PangoCairoFontMap`</doc>
313+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
314+ </instance-parameter>
315+ <parameter name="dpi" transfer-ownership="none">
316+ <doc xml:space="preserve"
317+ filename="../pango/pangocairo-fontmap.c"
318+ line="226">the resolution in "dots per inch". (Physical inches aren't actually
319+ involved; the terminology is conventional.)</doc>
320+ <type name="gdouble" c:type="double"/>
321+ </parameter>
322+ </parameters>
323+ </method>
324+ </interface>
325+ <function-macro name="IS_FONT"
326+ c:identifier="PANGO_CAIRO_IS_FONT"
327+ introspectable="0">
328+ <source-position filename="../pango/pangocairo.h" line="50"/>
329+ <parameters>
330+ <parameter name="obj">
331+ </parameter>
332+ </parameters>
333+ </function-macro>
334+ <function-macro name="IS_FONT_MAP"
335+ c:identifier="PANGO_CAIRO_IS_FONT_MAP"
336+ introspectable="0">
337+ <source-position filename="../pango/pangocairo.h" line="73"/>
338+ <parameters>
339+ <parameter name="obj">
340+ </parameter>
341+ </parameters>
342+ </function-macro>
343+ <callback name="ShapeRendererFunc" c:type="PangoCairoShapeRendererFunc">
344+ <doc xml:space="preserve"
345+ filename="../pango/pangocairo.h"
346+ line="80">Function type for rendering attributes of type %PANGO_ATTR_SHAPE
347+with Pango's Cairo renderer.</doc>
348+ <source-position filename="../pango/pangocairo.h" line="94"/>
349+ <return-value transfer-ownership="none">
350+ <type name="none" c:type="void"/>
351+ </return-value>
352+ <parameters>
353+ <parameter name="cr" transfer-ownership="none">
354+ <doc xml:space="preserve"
355+ filename="../pango/pangocairo.h"
356+ line="82">a Cairo context with current point set to where the shape should
357+be rendered</doc>
358+ <type name="cairo.Context" c:type="cairo_t*"/>
359+ </parameter>
360+ <parameter name="attr" transfer-ownership="none">
361+ <doc xml:space="preserve"
362+ filename="../pango/pangocairo.h"
363+ line="84">the %PANGO_ATTR_SHAPE to render</doc>
364+ <type name="Pango.AttrShape" c:type="PangoAttrShape*"/>
365+ </parameter>
366+ <parameter name="do_path" transfer-ownership="none">
367+ <doc xml:space="preserve"
368+ filename="../pango/pangocairo.h"
369+ line="85">whether only the shape path should be appended to current
370+path of @cr and no filling/stroking done. This will be set
371+to %TRUE when called from pango_cairo_layout_path() and
372+pango_cairo_layout_line_path() rendering functions.</doc>
373+ <type name="gboolean" c:type="gboolean"/>
374+ </parameter>
375+ <parameter name="data"
376+ transfer-ownership="none"
377+ nullable="1"
378+ allow-none="1"
379+ closure="3">
380+ <doc xml:space="preserve"
381+ filename="../pango/pangocairo.h"
382+ line="89">user data passed to pango_cairo_context_set_shape_renderer()</doc>
383+ <type name="gpointer" c:type="gpointer"/>
384+ </parameter>
385+ </parameters>
386+ </callback>
387+ <function name="context_get_font_options"
388+ c:identifier="pango_cairo_context_get_font_options"
389+ version="1.10">
390+ <doc xml:space="preserve"
391+ filename="../pango/pangocairo-context.c"
392+ line="284">Retrieves any font rendering options previously set with
393+[func@PangoCairo.context_set_font_options].
394+
395+This function does not report options that are derived from
396+the target surface by [func@update_context].</doc>
397+ <source-position filename="../pango/pangocairo.h" line="145"/>
398+ <return-value transfer-ownership="none" nullable="1">
399+ <doc xml:space="preserve"
400+ filename="../pango/pangocairo-context.c"
401+ line="294">the font options previously set on the
402+ context, or %NULL if no options have been set. This value is
403+ owned by the context and must not be modified or freed.</doc>
404+ <type name="cairo.FontOptions" c:type="const cairo_font_options_t*"/>
405+ </return-value>
406+ <parameters>
407+ <parameter name="context" transfer-ownership="none">
408+ <doc xml:space="preserve"
409+ filename="../pango/pangocairo-context.c"
410+ line="286">a `PangoContext`, from a pangocairo font map</doc>
411+ <type name="Pango.Context" c:type="PangoContext*"/>
412+ </parameter>
413+ </parameters>
414+ </function>
415+ <function name="context_get_resolution"
416+ c:identifier="pango_cairo_context_get_resolution"
417+ version="1.10">
418+ <doc xml:space="preserve"
419+ filename="../pango/pangocairo-context.c"
420+ line="205">Gets the resolution for the context.
421+
422+See [func@PangoCairo.context_set_resolution]</doc>
423+ <source-position filename="../pango/pangocairo.h" line="151"/>
424+ <return-value transfer-ownership="none">
425+ <doc xml:space="preserve"
426+ filename="../pango/pangocairo-context.c"
427+ line="213">the resolution in "dots per inch". A negative value will
428+ be returned if no resolution has previously been set.</doc>
429+ <type name="gdouble" c:type="double"/>
430+ </return-value>
431+ <parameters>
432+ <parameter name="context" transfer-ownership="none">
433+ <doc xml:space="preserve"
434+ filename="../pango/pangocairo-context.c"
435+ line="207">a `PangoContext`, from a pangocairo font map</doc>
436+ <type name="Pango.Context" c:type="PangoContext*"/>
437+ </parameter>
438+ </parameters>
439+ </function>
440+ <function name="context_get_shape_renderer"
441+ c:identifier="pango_cairo_context_get_shape_renderer"
442+ version="1.18"
443+ introspectable="0">
444+ <doc xml:space="preserve"
445+ filename="../pango/pangocairo-context.c"
446+ line="380">Sets callback function for context to use for rendering attributes
447+of type %PANGO_ATTR_SHAPE.
448+
449+See `PangoCairoShapeRendererFunc` for details.
450+
451+Retrieves callback function and associated user data for rendering
452+attributes of type %PANGO_ATTR_SHAPE as set by
453+[func@PangoCairo.context_set_shape_renderer], if any.</doc>
454+ <source-position filename="../pango/pangocairo.h" line="159"/>
455+ <return-value transfer-ownership="none" nullable="1">
456+ <doc xml:space="preserve"
457+ filename="../pango/pangocairo-context.c"
458+ line="394">the shape rendering callback
459+ previously set on the context, or %NULL if no shape rendering callback
460+ have been set.</doc>
461+ <type name="ShapeRendererFunc" c:type="PangoCairoShapeRendererFunc"/>
462+ </return-value>
463+ <parameters>
464+ <parameter name="context" transfer-ownership="none">
465+ <doc xml:space="preserve"
466+ filename="../pango/pangocairo-context.c"
467+ line="382">a `PangoContext`, from a pangocairo font map</doc>
468+ <type name="Pango.Context" c:type="PangoContext*"/>
469+ </parameter>
470+ <parameter name="data"
471+ transfer-ownership="none"
472+ nullable="1"
473+ allow-none="1">
474+ <doc xml:space="preserve"
475+ filename="../pango/pangocairo-context.c"
476+ line="383">Pointer to `gpointer` to return user data</doc>
477+ <type name="gpointer" c:type="gpointer*"/>
478+ </parameter>
479+ </parameters>
480+ </function>
481+ <function name="context_set_font_options"
482+ c:identifier="pango_cairo_context_set_font_options"
483+ version="1.10">
484+ <doc xml:space="preserve"
485+ filename="../pango/pangocairo-context.c"
486+ line="229">Sets the font options used when rendering text with this context.
487+
488+These options override any options that [func@update_context]
489+derives from the target surface.</doc>
490+ <source-position filename="../pango/pangocairo.h" line="142"/>
491+ <return-value transfer-ownership="none">
492+ <type name="none" c:type="void"/>
493+ </return-value>
494+ <parameters>
495+ <parameter name="context" transfer-ownership="none">
496+ <doc xml:space="preserve"
497+ filename="../pango/pangocairo-context.c"
498+ line="231">a `PangoContext`, from a pangocairo font map</doc>
499+ <type name="Pango.Context" c:type="PangoContext*"/>
500+ </parameter>
501+ <parameter name="options"
502+ transfer-ownership="none"
503+ nullable="1"
504+ allow-none="1">
505+ <doc xml:space="preserve"
506+ filename="../pango/pangocairo-context.c"
507+ line="232">a `cairo_font_options_t`, or %NULL to unset
508+ any previously set options. A copy is made.</doc>
509+ <type name="cairo.FontOptions" c:type="const cairo_font_options_t*"/>
510+ </parameter>
511+ </parameters>
512+ </function>
513+ <function name="context_set_resolution"
514+ c:identifier="pango_cairo_context_set_resolution"
515+ version="1.10">
516+ <doc xml:space="preserve"
517+ filename="../pango/pangocairo-context.c"
518+ line="182">Sets the resolution for the context.
519+
520+This is a scale factor between points specified in a `PangoFontDescription`
521+and Cairo units. The default value is 96, meaning that a 10 point font will
522+be 13 units high. (10 * 96. / 72. = 13.3).</doc>
523+ <source-position filename="../pango/pangocairo.h" line="148"/>
524+ <return-value transfer-ownership="none">
525+ <type name="none" c:type="void"/>
526+ </return-value>
527+ <parameters>
528+ <parameter name="context" transfer-ownership="none">
529+ <doc xml:space="preserve"
530+ filename="../pango/pangocairo-context.c"
531+ line="184">a `PangoContext`, from a pangocairo font map</doc>
532+ <type name="Pango.Context" c:type="PangoContext*"/>
533+ </parameter>
534+ <parameter name="dpi" transfer-ownership="none">
535+ <doc xml:space="preserve"
536+ filename="../pango/pangocairo-context.c"
537+ line="185">the resolution in "dots per inch". (Physical inches aren't actually
538+ involved; the terminology is conventional.) A 0 or negative value
539+ means to use the resolution from the font map.</doc>
540+ <type name="gdouble" c:type="double"/>
541+ </parameter>
542+ </parameters>
543+ </function>
544+ <function name="context_set_shape_renderer"
545+ c:identifier="pango_cairo_context_set_shape_renderer"
546+ version="1.18">
547+ <doc xml:space="preserve"
548+ filename="../pango/pangocairo-context.c"
549+ line="344">Sets callback function for context to use for rendering attributes
550+of type %PANGO_ATTR_SHAPE.
551+
552+See `PangoCairoShapeRendererFunc` for details.</doc>
553+ <source-position filename="../pango/pangocairo.h" line="154"/>
554+ <return-value transfer-ownership="none">
555+ <type name="none" c:type="void"/>
556+ </return-value>
557+ <parameters>
558+ <parameter name="context" transfer-ownership="none">
559+ <doc xml:space="preserve"
560+ filename="../pango/pangocairo-context.c"
561+ line="346">a `PangoContext`, from a pangocairo font map</doc>
562+ <type name="Pango.Context" c:type="PangoContext*"/>
563+ </parameter>
564+ <parameter name="func"
565+ transfer-ownership="none"
566+ nullable="1"
567+ allow-none="1"
568+ scope="notified"
569+ closure="2"
570+ destroy="3">
571+ <doc xml:space="preserve"
572+ filename="../pango/pangocairo-context.c"
573+ line="347">Callback function for rendering attributes of
574+ type %PANGO_ATTR_SHAPE, or %NULL to disable shape rendering.</doc>
575+ <type name="ShapeRendererFunc" c:type="PangoCairoShapeRendererFunc"/>
576+ </parameter>
577+ <parameter name="data"
578+ transfer-ownership="none"
579+ nullable="1"
580+ allow-none="1">
581+ <doc xml:space="preserve"
582+ filename="../pango/pangocairo-context.c"
583+ line="349">User data that will be passed to @func.</doc>
584+ <type name="gpointer" c:type="gpointer"/>
585+ </parameter>
586+ <parameter name="dnotify"
587+ transfer-ownership="none"
588+ nullable="1"
589+ allow-none="1"
590+ scope="async">
591+ <doc xml:space="preserve"
592+ filename="../pango/pangocairo-context.c"
593+ line="350">Callback that will be called when the
594+ context is freed to release @data</doc>
595+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
596+ </parameter>
597+ </parameters>
598+ </function>
599+ <function name="create_context"
600+ c:identifier="pango_cairo_create_context"
601+ version="1.22">
602+ <doc xml:space="preserve"
603+ filename="../pango/pangocairo-context.c"
604+ line="424">Creates a context object set up to match the current transformation
605+and target surface of the Cairo context.
606+
607+This context can then be
608+used to create a layout using [ctor@Pango.Layout.new].
609+
610+This function is a convenience function that creates a context using
611+the default font map, then updates it to @cr. If you just need to
612+create a layout for use with @cr and do not need to access `PangoContext`
613+directly, you can use [func@create_layout] instead.</doc>
614+ <source-position filename="../pango/pangocairo.h" line="165"/>
615+ <return-value transfer-ownership="full">
616+ <doc xml:space="preserve"
617+ filename="../pango/pangocairo-context.c"
618+ line="439">the newly created `PangoContext`</doc>
619+ <type name="Pango.Context" c:type="PangoContext*"/>
620+ </return-value>
621+ <parameters>
622+ <parameter name="cr" transfer-ownership="none">
623+ <doc xml:space="preserve"
624+ filename="../pango/pangocairo-context.c"
625+ line="426">a Cairo context</doc>
626+ <type name="cairo.Context" c:type="cairo_t*"/>
627+ </parameter>
628+ </parameters>
629+ </function>
630+ <function name="create_layout"
631+ c:identifier="pango_cairo_create_layout"
632+ version="1.10">
633+ <doc xml:space="preserve"
634+ filename="../pango/pangocairo-context.c"
635+ line="458">Creates a layout object set up to match the current transformation
636+and target surface of the Cairo context.
637+
638+This layout can then be used for text measurement with functions
639+like [method@Pango.Layout.get_size] or drawing with functions like
640+[func@show_layout]. If you change the transformation or target
641+surface for @cr, you need to call [func@update_layout].
642+
643+This function is the most convenient way to use Cairo with Pango,
644+however it is slightly inefficient since it creates a separate
645+`PangoContext` object for each layout. This might matter in an
646+application that was laying out large amounts of text.</doc>
647+ <source-position filename="../pango/pangocairo.h" line="167"/>
648+ <return-value transfer-ownership="full">
649+ <doc xml:space="preserve"
650+ filename="../pango/pangocairo-context.c"
651+ line="475">the newly created `PangoLayout`</doc>
652+ <type name="Pango.Layout" c:type="PangoLayout*"/>
653+ </return-value>
654+ <parameters>
655+ <parameter name="cr" transfer-ownership="none">
656+ <doc xml:space="preserve"
657+ filename="../pango/pangocairo-context.c"
658+ line="460">a Cairo context</doc>
659+ <type name="cairo.Context" c:type="cairo_t*"/>
660+ </parameter>
661+ </parameters>
662+ </function>
663+ <function name="error_underline_path"
664+ c:identifier="pango_cairo_error_underline_path"
665+ version="1.14">
666+ <doc xml:space="preserve"
667+ filename="../pango/pangocairo-render.c"
668+ line="1244">Add a squiggly line to the current path in the specified cairo context that
669+approximately covers the given rectangle in the style of an underline used
670+to indicate a spelling error.
671+
672+The width of the underline is rounded to an integer number of up/down
673+segments and the resulting rectangle is centered in the original rectangle.</doc>
674+ <source-position filename="../pango/pangocairo.h" line="212"/>
675+ <return-value transfer-ownership="none">
676+ <type name="none" c:type="void"/>
677+ </return-value>
678+ <parameters>
679+ <parameter name="cr" transfer-ownership="none">
680+ <doc xml:space="preserve"
681+ filename="../pango/pangocairo-render.c"
682+ line="1246">a Cairo context</doc>
683+ <type name="cairo.Context" c:type="cairo_t*"/>
684+ </parameter>
685+ <parameter name="x" transfer-ownership="none">
686+ <doc xml:space="preserve"
687+ filename="../pango/pangocairo-render.c"
688+ line="1247">The X coordinate of one corner of the rectangle</doc>
689+ <type name="gdouble" c:type="double"/>
690+ </parameter>
691+ <parameter name="y" transfer-ownership="none">
692+ <doc xml:space="preserve"
693+ filename="../pango/pangocairo-render.c"
694+ line="1248">The Y coordinate of one corner of the rectangle</doc>
695+ <type name="gdouble" c:type="double"/>
696+ </parameter>
697+ <parameter name="width" transfer-ownership="none">
698+ <doc xml:space="preserve"
699+ filename="../pango/pangocairo-render.c"
700+ line="1249">Non-negative width of the rectangle</doc>
701+ <type name="gdouble" c:type="double"/>
702+ </parameter>
703+ <parameter name="height" transfer-ownership="none">
704+ <doc xml:space="preserve"
705+ filename="../pango/pangocairo-render.c"
706+ line="1250">Non-negative height of the rectangle</doc>
707+ <type name="gdouble" c:type="double"/>
708+ </parameter>
709+ </parameters>
710+ </function>
711+ <function name="font_map_get_default"
712+ c:identifier="pango_cairo_font_map_get_default"
713+ moved-to="FontMap.get_default"
714+ version="1.10">
715+ <doc xml:space="preserve"
716+ filename="../pango/pangocairo-fontmap.c"
717+ line="151">Gets a default `PangoCairoFontMap` to use with Cairo.
718+
719+Note that the type of the returned object will depend on the
720+particular font backend Cairo was compiled to use; you generally
721+should only use the `PangoFontMap` and `PangoCairoFontMap`
722+interfaces on the returned object.
723+
724+The default Cairo fontmap can be changed by using
725+[method@PangoCairo.FontMap.set_default]. This can be used to
726+change the Cairo font backend that the default fontmap uses
727+for example.
728+
729+Note that since Pango 1.32.6, the default fontmap is per-thread.
730+Each thread gets its own default fontmap. In this way, PangoCairo
731+can be used safely from multiple threads.</doc>
732+ <source-position filename="../pango/pangocairo.h" line="110"/>
733+ <return-value transfer-ownership="none">
734+ <doc xml:space="preserve"
735+ filename="../pango/pangocairo-fontmap.c"
736+ line="170">the default PangoCairo fontmap
737+ for the current thread. This object is owned by Pango and must
738+ not be freed.</doc>
739+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
740+ </return-value>
741+ </function>
742+ <function name="font_map_new"
743+ c:identifier="pango_cairo_font_map_new"
744+ moved-to="FontMap.new"
745+ version="1.10">
746+ <doc xml:space="preserve"
747+ filename="../pango/pangocairo-fontmap.c"
748+ line="47">Creates a new `PangoCairoFontMap` object.
749+
750+A fontmap is used to cache information about available fonts,
751+and holds certain global parameters such as the resolution.
752+In most cases, you can use `func@PangoCairo.font_map_get_default]
753+instead.
754+
755+Note that the type of the returned object will depend
756+on the particular font backend Cairo was compiled to use;
757+You generally should only use the `PangoFontMap` and
758+`PangoCairoFontMap` interfaces on the returned object.
759+
760+You can override the type of backend returned by using an
761+environment variable %PANGOCAIRO_BACKEND. Supported types,
762+based on your build, are fc (fontconfig), win32, and coretext.
763+If requested type is not available, NULL is returned. Ie.
764+this is only useful for testing, when at least two backends
765+are compiled in.</doc>
766+ <source-position filename="../pango/pangocairo.h" line="106"/>
767+ <return-value transfer-ownership="full">
768+ <doc xml:space="preserve"
769+ filename="../pango/pangocairo-fontmap.c"
770+ line="69">the newly allocated `PangoFontMap`,
771+ which should be freed with g_object_unref().</doc>
772+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
773+ </return-value>
774+ </function>
775+ <function name="font_map_new_for_font_type"
776+ c:identifier="pango_cairo_font_map_new_for_font_type"
777+ moved-to="FontMap.new_for_font_type"
778+ version="1.18">
779+ <doc xml:space="preserve"
780+ filename="../pango/pangocairo-fontmap.c"
781+ line="110">Creates a new `PangoCairoFontMap` object of the type suitable
782+to be used with cairo font backend of type @fonttype.
783+
784+In most cases one should simply use [func@PangoCairo.FontMap.new], or
785+in fact in most of those cases, just use [func@PangoCairo.FontMap.get_default].</doc>
786+ <source-position filename="../pango/pangocairo.h" line="108"/>
787+ <return-value transfer-ownership="full" nullable="1">
788+ <doc xml:space="preserve"
789+ filename="../pango/pangocairo-fontmap.c"
790+ line="120">the newly allocated
791+ `PangoFontMap` of suitable type which should be freed with
792+ g_object_unref(), or %NULL if the requested cairo font backend
793+ is not supported / compiled in.</doc>
794+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
795+ </return-value>
796+ <parameters>
797+ <parameter name="fonttype" transfer-ownership="none">
798+ <doc xml:space="preserve"
799+ filename="../pango/pangocairo-fontmap.c"
800+ line="112">desired #cairo_font_type_t</doc>
801+ <type name="cairo.FontType" c:type="cairo_font_type_t"/>
802+ </parameter>
803+ </parameters>
804+ </function>
805+ <function name="glyph_string_path"
806+ c:identifier="pango_cairo_glyph_string_path"
807+ version="1.10">
808+ <doc xml:space="preserve"
809+ filename="../pango/pangocairo-render.c"
810+ line="1173">Adds the glyphs in @glyphs to the current path in the specified
811+cairo context.
812+
813+The origin of the glyphs (the left edge of the baseline)
814+will be at the current point of the cairo context.</doc>
815+ <source-position filename="../pango/pangocairo.h" line="201"/>
816+ <return-value transfer-ownership="none">
817+ <type name="none" c:type="void"/>
818+ </return-value>
819+ <parameters>
820+ <parameter name="cr" transfer-ownership="none">
821+ <doc xml:space="preserve"
822+ filename="../pango/pangocairo-render.c"
823+ line="1175">a Cairo context</doc>
824+ <type name="cairo.Context" c:type="cairo_t*"/>
825+ </parameter>
826+ <parameter name="font" transfer-ownership="none">
827+ <doc xml:space="preserve"
828+ filename="../pango/pangocairo-render.c"
829+ line="1176">a `PangoFont` from a `PangoCairoFontMap`</doc>
830+ <type name="Pango.Font" c:type="PangoFont*"/>
831+ </parameter>
832+ <parameter name="glyphs" transfer-ownership="none">
833+ <doc xml:space="preserve"
834+ filename="../pango/pangocairo-render.c"
835+ line="1177">a `PangoGlyphString`</doc>
836+ <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
837+ </parameter>
838+ </parameters>
839+ </function>
840+ <function name="layout_line_path"
841+ c:identifier="pango_cairo_layout_line_path"
842+ version="1.10">
843+ <doc xml:space="preserve"
844+ filename="../pango/pangocairo-render.c"
845+ line="1198">Adds the text in `PangoLayoutLine` to the current path in the
846+specified cairo context.
847+
848+The origin of the glyphs (the left edge of the line) will be
849+at the current point of the cairo context.</doc>
850+ <source-position filename="../pango/pangocairo.h" line="205"/>
851+ <return-value transfer-ownership="none">
852+ <type name="none" c:type="void"/>
853+ </return-value>
854+ <parameters>
855+ <parameter name="cr" transfer-ownership="none">
856+ <doc xml:space="preserve"
857+ filename="../pango/pangocairo-render.c"
858+ line="1200">a Cairo context</doc>
859+ <type name="cairo.Context" c:type="cairo_t*"/>
860+ </parameter>
861+ <parameter name="line" transfer-ownership="none">
862+ <doc xml:space="preserve"
863+ filename="../pango/pangocairo-render.c"
864+ line="1201">a `PangoLayoutLine`</doc>
865+ <type name="Pango.LayoutLine" c:type="PangoLayoutLine*"/>
866+ </parameter>
867+ </parameters>
868+ </function>
869+ <function name="layout_path"
870+ c:identifier="pango_cairo_layout_path"
871+ version="1.10">
872+ <doc xml:space="preserve"
873+ filename="../pango/pangocairo-render.c"
874+ line="1221">Adds the text in a `PangoLayout` to the current path in the
875+specified cairo context.
876+
877+The top-left corner of the `PangoLayout` will be at the
878+current point of the cairo context.</doc>
879+ <source-position filename="../pango/pangocairo.h" line="208"/>
880+ <return-value transfer-ownership="none">
881+ <type name="none" c:type="void"/>
882+ </return-value>
883+ <parameters>
884+ <parameter name="cr" transfer-ownership="none">
885+ <doc xml:space="preserve"
886+ filename="../pango/pangocairo-render.c"
887+ line="1223">a Cairo context</doc>
888+ <type name="cairo.Context" c:type="cairo_t*"/>
889+ </parameter>
890+ <parameter name="layout" transfer-ownership="none">
891+ <doc xml:space="preserve"
892+ filename="../pango/pangocairo-render.c"
893+ line="1224">a Pango layout</doc>
894+ <type name="Pango.Layout" c:type="PangoLayout*"/>
895+ </parameter>
896+ </parameters>
897+ </function>
898+ <function name="show_error_underline"
899+ c:identifier="pango_cairo_show_error_underline"
900+ version="1.14">
901+ <doc xml:space="preserve"
902+ filename="../pango/pangocairo-render.c"
903+ line="1142">Draw a squiggly line in the specified cairo context that approximately
904+covers the given rectangle in the style of an underline used to indicate a
905+spelling error.
906+
907+The width of the underline is rounded to an integer
908+number of up/down segments and the resulting rectangle is centered in the
909+original rectangle.</doc>
910+ <source-position filename="../pango/pangocairo.h" line="191"/>
911+ <return-value transfer-ownership="none">
912+ <type name="none" c:type="void"/>
913+ </return-value>
914+ <parameters>
915+ <parameter name="cr" transfer-ownership="none">
916+ <doc xml:space="preserve"
917+ filename="../pango/pangocairo-render.c"
918+ line="1144">a Cairo context</doc>
919+ <type name="cairo.Context" c:type="cairo_t*"/>
920+ </parameter>
921+ <parameter name="x" transfer-ownership="none">
922+ <doc xml:space="preserve"
923+ filename="../pango/pangocairo-render.c"
924+ line="1145">The X coordinate of one corner of the rectangle</doc>
925+ <type name="gdouble" c:type="double"/>
926+ </parameter>
927+ <parameter name="y" transfer-ownership="none">
928+ <doc xml:space="preserve"
929+ filename="../pango/pangocairo-render.c"
930+ line="1146">The Y coordinate of one corner of the rectangle</doc>
931+ <type name="gdouble" c:type="double"/>
932+ </parameter>
933+ <parameter name="width" transfer-ownership="none">
934+ <doc xml:space="preserve"
935+ filename="../pango/pangocairo-render.c"
936+ line="1147">Non-negative width of the rectangle</doc>
937+ <type name="gdouble" c:type="double"/>
938+ </parameter>
939+ <parameter name="height" transfer-ownership="none">
940+ <doc xml:space="preserve"
941+ filename="../pango/pangocairo-render.c"
942+ line="1148">Non-negative height of the rectangle</doc>
943+ <type name="gdouble" c:type="double"/>
944+ </parameter>
945+ </parameters>
946+ </function>
947+ <function name="show_glyph_item"
948+ c:identifier="pango_cairo_show_glyph_item"
949+ version="1.22">
950+ <doc xml:space="preserve"
951+ filename="../pango/pangocairo-render.c"
952+ line="1066">Draws the glyphs in @glyph_item in the specified cairo context,
953+
954+embedding the text associated with the glyphs in the output if the
955+output format supports it (PDF for example), otherwise it acts
956+similar to [func@show_glyph_string].
957+
958+The origin of the glyphs (the left edge of the baseline) will
959+be drawn at the current point of the cairo context.
960+
961+Note that @text is the start of the text for layout, which is then
962+indexed by `glyph_item-&gt;item-&gt;offset`.</doc>
963+ <source-position filename="../pango/pangocairo.h" line="180"/>
964+ <return-value transfer-ownership="none">
965+ <type name="none" c:type="void"/>
966+ </return-value>
967+ <parameters>
968+ <parameter name="cr" transfer-ownership="none">
969+ <doc xml:space="preserve"
970+ filename="../pango/pangocairo-render.c"
971+ line="1068">a Cairo context</doc>
972+ <type name="cairo.Context" c:type="cairo_t*"/>
973+ </parameter>
974+ <parameter name="text" transfer-ownership="none">
975+ <doc xml:space="preserve"
976+ filename="../pango/pangocairo-render.c"
977+ line="1069">the UTF-8 text that @glyph_item refers to</doc>
978+ <type name="utf8" c:type="const char*"/>
979+ </parameter>
980+ <parameter name="glyph_item" transfer-ownership="none">
981+ <doc xml:space="preserve"
982+ filename="../pango/pangocairo-render.c"
983+ line="1070">a `PangoGlyphItem`</doc>
984+ <type name="Pango.GlyphItem" c:type="PangoGlyphItem*"/>
985+ </parameter>
986+ </parameters>
987+ </function>
988+ <function name="show_glyph_string"
989+ c:identifier="pango_cairo_show_glyph_string"
990+ version="1.10">
991+ <doc xml:space="preserve"
992+ filename="../pango/pangocairo-render.c"
993+ line="1041">Draws the glyphs in @glyphs in the specified cairo context.
994+
995+The origin of the glyphs (the left edge of the baseline) will
996+be drawn at the current point of the cairo context.</doc>
997+ <source-position filename="../pango/pangocairo.h" line="176"/>
998+ <return-value transfer-ownership="none">
999+ <type name="none" c:type="void"/>
1000+ </return-value>
1001+ <parameters>
1002+ <parameter name="cr" transfer-ownership="none">
1003+ <doc xml:space="preserve"
1004+ filename="../pango/pangocairo-render.c"
1005+ line="1043">a Cairo context</doc>
1006+ <type name="cairo.Context" c:type="cairo_t*"/>
1007+ </parameter>
1008+ <parameter name="font" transfer-ownership="none">
1009+ <doc xml:space="preserve"
1010+ filename="../pango/pangocairo-render.c"
1011+ line="1044">a `PangoFont` from a `PangoCairoFontMap`</doc>
1012+ <type name="Pango.Font" c:type="PangoFont*"/>
1013+ </parameter>
1014+ <parameter name="glyphs" transfer-ownership="none">
1015+ <doc xml:space="preserve"
1016+ filename="../pango/pangocairo-render.c"
1017+ line="1045">a `PangoGlyphString`</doc>
1018+ <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
1019+ </parameter>
1020+ </parameters>
1021+ </function>
1022+ <function name="show_layout"
1023+ c:identifier="pango_cairo_show_layout"
1024+ version="1.10">
1025+ <doc xml:space="preserve"
1026+ filename="../pango/pangocairo-render.c"
1027+ line="1120">Draws a `PangoLayout` in the specified cairo context.
1028+
1029+The top-left corner of the `PangoLayout` will be drawn
1030+at the current point of the cairo context.</doc>
1031+ <source-position filename="../pango/pangocairo.h" line="187"/>
1032+ <return-value transfer-ownership="none">
1033+ <type name="none" c:type="void"/>
1034+ </return-value>
1035+ <parameters>
1036+ <parameter name="cr" transfer-ownership="none">
1037+ <doc xml:space="preserve"
1038+ filename="../pango/pangocairo-render.c"
1039+ line="1122">a Cairo context</doc>
1040+ <type name="cairo.Context" c:type="cairo_t*"/>
1041+ </parameter>
1042+ <parameter name="layout" transfer-ownership="none">
1043+ <doc xml:space="preserve"
1044+ filename="../pango/pangocairo-render.c"
1045+ line="1123">a Pango layout</doc>
1046+ <type name="Pango.Layout" c:type="PangoLayout*"/>
1047+ </parameter>
1048+ </parameters>
1049+ </function>
1050+ <function name="show_layout_line"
1051+ c:identifier="pango_cairo_show_layout_line"
1052+ version="1.10">
1053+ <doc xml:space="preserve"
1054+ filename="../pango/pangocairo-render.c"
1055+ line="1098">Draws a `PangoLayoutLine` in the specified cairo context.
1056+
1057+The origin of the glyphs (the left edge of the line) will
1058+be drawn at the current point of the cairo context.</doc>
1059+ <source-position filename="../pango/pangocairo.h" line="184"/>
1060+ <return-value transfer-ownership="none">
1061+ <type name="none" c:type="void"/>
1062+ </return-value>
1063+ <parameters>
1064+ <parameter name="cr" transfer-ownership="none">
1065+ <doc xml:space="preserve"
1066+ filename="../pango/pangocairo-render.c"
1067+ line="1100">a Cairo context</doc>
1068+ <type name="cairo.Context" c:type="cairo_t*"/>
1069+ </parameter>
1070+ <parameter name="line" transfer-ownership="none">
1071+ <doc xml:space="preserve"
1072+ filename="../pango/pangocairo-render.c"
1073+ line="1101">a `PangoLayoutLine`</doc>
1074+ <type name="Pango.LayoutLine" c:type="PangoLayoutLine*"/>
1075+ </parameter>
1076+ </parameters>
1077+ </function>
1078+ <function name="update_context"
1079+ c:identifier="pango_cairo_update_context"
1080+ version="1.10">
1081+ <doc xml:space="preserve"
1082+ filename="../pango/pangocairo-context.c"
1083+ line="158">Updates a `PangoContext` previously created for use with Cairo to
1084+match the current transformation and target surface of a Cairo
1085+context.
1086+
1087+If any layouts have been created for the context, it's necessary
1088+to call [method@Pango.Layout.context_changed] on those layouts.</doc>
1089+ <source-position filename="../pango/pangocairo.h" line="138"/>
1090+ <return-value transfer-ownership="none">
1091+ <type name="none" c:type="void"/>
1092+ </return-value>
1093+ <parameters>
1094+ <parameter name="cr" transfer-ownership="none">
1095+ <doc xml:space="preserve"
1096+ filename="../pango/pangocairo-context.c"
1097+ line="160">a Cairo context</doc>
1098+ <type name="cairo.Context" c:type="cairo_t*"/>
1099+ </parameter>
1100+ <parameter name="context" transfer-ownership="none">
1101+ <doc xml:space="preserve"
1102+ filename="../pango/pangocairo-context.c"
1103+ line="161">a `PangoContext`, from a pangocairo font map</doc>
1104+ <type name="Pango.Context" c:type="PangoContext*"/>
1105+ </parameter>
1106+ </parameters>
1107+ </function>
1108+ <function name="update_layout"
1109+ c:identifier="pango_cairo_update_layout"
1110+ version="1.10">
1111+ <doc xml:space="preserve"
1112+ filename="../pango/pangocairo-context.c"
1113+ line="494">Updates the private `PangoContext` of a `PangoLayout` created with
1114+[func@create_layout] to match the current transformation and target
1115+surface of a Cairo context.</doc>
1116+ <source-position filename="../pango/pangocairo.h" line="169"/>
1117+ <return-value transfer-ownership="none">
1118+ <type name="none" c:type="void"/>
1119+ </return-value>
1120+ <parameters>
1121+ <parameter name="cr" transfer-ownership="none">
1122+ <doc xml:space="preserve"
1123+ filename="../pango/pangocairo-context.c"
1124+ line="496">a Cairo context</doc>
1125+ <type name="cairo.Context" c:type="cairo_t*"/>
1126+ </parameter>
1127+ <parameter name="layout" transfer-ownership="none">
1128+ <doc xml:space="preserve"
1129+ filename="../pango/pangocairo-context.c"
1130+ line="497">a `PangoLayout`, from [func@create_layout]</doc>
1131+ <type name="Pango.Layout" c:type="PangoLayout*"/>
1132+ </parameter>
1133+ </parameters>
1134+ </function>
1135+ </namespace>
1136+</repository>
A internal/gir/spec/cairo-1.0.gir +688 -0
@@ -0,0 +1,688 @@
1+<?xml version="1.0"?>
2+<repository version="1.2"
3+ xmlns="http://www.gtk.org/introspection/core/1.0"
4+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
5+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
6+ <package name="cairo-gobject"/>
7+ <c:include name="cairo-gobject.h"/>
8+ <namespace name="cairo" version="1.0"
9+ shared-library="libcairo-gobject.so.2"
10+ c:identifier-prefixes="cairo"
11+ c:symbol-prefixes="cairo">
12+ <record name="Context" c:type="cairo_t" foreign="1"
13+ glib:type-name="CairoContext"
14+ glib:get-type="cairo_gobject_context_get_type"/>
15+ <record name="Device" c:type="cairo_device_t" foreign="1"
16+ glib:type-name="CairoDevice"
17+ glib:get-type="cairo_gobject_device_get_type"/>
18+ <record name="Surface" c:type="cairo_surface_t" foreign="1"
19+ glib:type-name="CairoSurface"
20+ glib:get-type="cairo_gobject_surface_get_type"/>
21+ <record name="Matrix" c:type="cairo_matrix_t" foreign="1"/>
22+ <record name="Pattern" c:type="cairo_pattern_t" foreign="1"
23+ glib:type-name="CairoPattern"
24+ glib:get-type="cairo_gobject_pattern_get_type"/>
25+ <record name="Region" c:type="cairo_region_t" foreign="1"
26+ glib:type-name="CairoRegion"
27+ glib:get-type="cairo_gobject_region_get_type"/>
28+ <enumeration name="Status" c:type="cairo_status_t"
29+ glib:type-name="cairo_status_t"
30+ glib:get-type="cairo_gobject_status_get_type">
31+ <member name="success"
32+ value="0"
33+ c:identifier="CAIRO_STATUS_SUCCESS"/>
34+ <member name="no_memory"
35+ value="1"
36+ c:identifier="CAIRO_STATUS_NO_MEMORY"/>
37+ <member name="invalid_restore"
38+ value="2"
39+ c:identifier="CAIRO_STATUS_INVALID_RESTORE"/>
40+ <member name="invalid_pop_group"
41+ value="3"
42+ c:identifier="CAIRO_STATUS_INVALID_POP_GROUP"/>
43+ <member name="no_current_point"
44+ value="4"
45+ c:identifier="CAIRO_STATUS_NO_CURRENT_POINT"/>
46+ <member name="invalid_matrix"
47+ value="5"
48+ c:identifier="CAIRO_STATUS_INVALID_MATRIX"/>
49+ <member name="invalid_status"
50+ value="6"
51+ c:identifier="CAIRO_STATUS_INVALID_STATUS"/>
52+ <member name="null_pointer"
53+ value="7"
54+ c:identifier="CAIRO_STATUS_NULL_POINTER"/>
55+ <member name="invalid_string"
56+ value="8"
57+ c:identifier="CAIRO_STATUS_INVALID_STRING"/>
58+ <member name="invalid_path_data"
59+ value="9"
60+ c:identifier="CAIRO_STATUS_INVALID_PATH_DATA"/>
61+ <member name="read_error"
62+ value="10"
63+ c:identifier="CAIRO_STATUS_READ_ERROR"/>
64+ <member name="write_error"
65+ value="11"
66+ c:identifier="CAIRO_STATUS_WRITE_ERROR"/>
67+ <member name="surface_finished"
68+ value="12"
69+ c:identifier="CAIRO_STATUS_SURFACE_FINISHED"/>
70+ <member name="surface_type_mismatch"
71+ value="13"
72+ c:identifier="CAIRO_STATUS_SURFACE_TYPE_MISMATCH"/>
73+ <member name="pattern_type_mismatch"
74+ value="14"
75+ c:identifier="CAIRO_STATUS_PATTERN_TYPE_MISMATCH"/>
76+ <member name="invalid_content"
77+ value="15"
78+ c:identifier="CAIRO_STATUS_INVALID_CONTENT"/>
79+ <member name="invalid_format"
80+ value="16"
81+ c:identifier="CAIRO_STATUS_INVALID_FORMAT"/>
82+ <member name="invalid_visual"
83+ value="17"
84+ c:identifier="CAIRO_STATUS_INVALID_VISUAL"/>
85+ <member name="file_not_found"
86+ value="18"
87+ c:identifier="CAIRO_STATUS_FILE_NOT_FOUND"/>
88+ <member name="invalid_dash"
89+ value="19"
90+ c:identifier="CAIRO_STATUS_INVALID_DASH"/>
91+ <member name="invalid_dsc_comment"
92+ value="20"
93+ c:identifier="CAIRO_STATUS_INVALID_DSC_COMMENT"/>
94+ <member name="invalid_index"
95+ value="21"
96+ c:identifier="CAIRO_STATUS_INVALID_INDEX"/>
97+ <member name="clip_not_representable"
98+ value="22"
99+ c:identifier="CAIRO_STATUS_CLIP_NOT_REPRESENTABLE"/>
100+ <member name="temp_file_error"
101+ value="23"
102+ c:identifier="CAIRO_STATUS_TEMP_FILE_ERROR"/>
103+ <member name="invalid_stride"
104+ value="24"
105+ c:identifier="CAIRO_STATUS_INVALID_STRIDE"/>
106+ <member name="font_type_mismatch"
107+ value="25"
108+ c:identifier="CAIRO_STATUS_FONT_TYPE_MISMATCH"/>
109+ <member name="user_font_immutable"
110+ value="26"
111+ c:identifier="CAIRO_STATUS_USER_FONT_IMMUTABLE"/>
112+ <member name="user_font_error"
113+ value="27"
114+ c:identifier="CAIRO_STATUS_USER_FONT_ERROR"/>
115+ <member name="negative_count"
116+ value="28"
117+ c:identifier="CAIRO_STATUS_NEGATIVE_COUNT"/>
118+ <member name="invalid_clusters"
119+ value="29"
120+ c:identifier="CAIRO_STATUS_INVALID_CLUSTERS"/>
121+ <member name="invalid_slant"
122+ value="30"
123+ c:identifier="CAIRO_STATUS_INVALID_SLANT"/>
124+ <member name="invalid_weight"
125+ value="31"
126+ c:identifier="CAIRO_STATUS_INVALID_WEIGHT"/>
127+ <member name="invalid_size"
128+ value="32"
129+ c:identifier="CAIRO_STATUS_INVALID_SIZE"/>
130+ <member name="user_font_not_implemented"
131+ value="33"
132+ c:identifier="CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED"/>
133+ <member name="device_type_mismatch"
134+ value="34"
135+ c:identifier="CAIRO_STATUS_DEVICE_TYPE_MISMATCH"/>
136+ <member name="device_error"
137+ value="35"
138+ c:identifier="CAIRO_STATUS_DEVICE_ERROR"/>
139+ <member name="invalid_mesh_construction"
140+ value="36"
141+ c:identifier="CAIRO_STATUS_INVALID_MESH_CONSTRUCTION"/>
142+ <member name="device_finished"
143+ value="37"
144+ c:identifier="CAIRO_STATUS_DEVICE_FINISHED"/>
145+ <member name="jbig2_global_missing"
146+ value="38"
147+ c:identifier="CAIRO_STATUS_JBIG2_GLOBAL_MISSING"/>
148+ </enumeration>
149+ <enumeration name="Content" c:type="cairo_content_t"
150+ glib:type-name="cairo_content_t"
151+ glib:get-type="cairo_gobject_content_get_type">
152+ <member name="color"
153+ value="4096"
154+ c:identifier="CAIRO_CONTENT_COLOR"/>
155+ <member name="alpha"
156+ value="8192"
157+ c:identifier="CAIRO_CONTENT_ALPHA"/>
158+ <member name="color_alpha"
159+ value="12288"
160+ c:identifier="CAIRO_CONTENT_COLOR_ALPHA"/>
161+ </enumeration>
162+ <enumeration name="Operator" c:type="cairo_operator_t"
163+ glib:type-name="cairo_operator_t"
164+ glib:get-type="cairo_gobject_operator_get_type">
165+ <member name="clear"
166+ value="0"
167+ c:identifier="CAIRO_OPERATOR_CLEAR"/>
168+ <member name="source"
169+ value="1"
170+ c:identifier="CAIRO_OPERATOR_SOURCE"/>
171+ <member name="over"
172+ value="2"
173+ c:identifier="CAIRO_OPERATOR_OVER"/>
174+ <member name="in"
175+ value="3"
176+ c:identifier="CAIRO_OPERATOR_IN"/>
177+ <member name="out"
178+ value="4"
179+ c:identifier="CAIRO_OPERATOR_OUT"/>
180+ <member name="atop"
181+ value="5"
182+ c:identifier="CAIRO_OPERATOR_ATOP"/>
183+ <member name="dest"
184+ value="6"
185+ c:identifier="CAIRO_OPERATOR_DEST"/>
186+ <member name="dest_over"
187+ value="7"
188+ c:identifier="CAIRO_OPERATOR_DEST_OVER"/>
189+ <member name="dest_in"
190+ value="8"
191+ c:identifier="CAIRO_OPERATOR_DEST_IN"/>
192+ <member name="dest_out"
193+ value="9"
194+ c:identifier="CAIRO_OPERATOR_DEST_OUT"/>
195+ <member name="dest_atop"
196+ value="10"
197+ c:identifier="CAIRO_OPERATOR_DEST_ATOP"/>
198+ <member name="xor"
199+ value="11"
200+ c:identifier="CAIRO_OPERATOR_XOR"/>
201+ <member name="add"
202+ value="12"
203+ c:identifier="CAIRO_OPERATOR_ADD"/>
204+ <member name="saturate"
205+ value="13"
206+ c:identifier="CAIRO_OPERATOR_SATURATE"/>
207+ <member name="multiply"
208+ value="14"
209+ c:identifier="CAIRO_OPERATOR_MULTIPLY"/>
210+ <member name="screen"
211+ value="15"
212+ c:identifier="CAIRO_OPERATOR_SCREEN"/>
213+ <member name="overlay"
214+ value="16"
215+ c:identifier="CAIRO_OPERATOR_OVERLAY"/>
216+ <member name="darken"
217+ value="17"
218+ c:identifier="CAIRO_OPERATOR_DARKEN"/>
219+ <member name="lighten"
220+ value="18"
221+ c:identifier="CAIRO_OPERATOR_LIGHTEN"/>
222+ <member name="color_dodge"
223+ value="19"
224+ c:identifier="CAIRO_OPERATOR_COLOR_DODGE"/>
225+ <member name="color_burn"
226+ value="20"
227+ c:identifier="CAIRO_OPERATOR_COLOR_BURN"/>
228+ <member name="hard_light"
229+ value="21"
230+ c:identifier="CAIRO_OPERATOR_HARD_LIGHT"/>
231+ <member name="soft_light"
232+ value="22"
233+ c:identifier="CAIRO_OPERATOR_SOFT_LIGHT"/>
234+ <member name="difference"
235+ value="23"
236+ c:identifier="CAIRO_OPERATOR_DIFFERENCE"/>
237+ <member name="exclusion"
238+ value="24"
239+ c:identifier="CAIRO_OPERATOR_EXCLUSION"/>
240+ <member name="hsl_hue"
241+ value="25"
242+ c:identifier="CAIRO_OPERATOR_HSL_HUE"/>
243+ <member name="hsl_saturation"
244+ value="26"
245+ c:identifier="CAIRO_OPERATOR_HSL_SATURATION"/>
246+ <member name="hsl_color"
247+ value="27"
248+ c:identifier="CAIRO_OPERATOR_HSL_COLOR"/>
249+ <member name="hsl_luminosity"
250+ value="28"
251+ c:identifier="CAIRO_OPERATOR_HSL_LUMINOSITY"/>
252+ </enumeration>
253+ <enumeration name="Antialias" c:type="cairo_antialias_t"
254+ glib:type-name="cairo_antialias_t"
255+ glib:get-type="cairo_gobject_antialias_get_type">
256+ <member name="default"
257+ value="0"
258+ c:identifier="CAIRO_ANTIALIAS_DEFAULT"/>
259+ <member name="none"
260+ value="1"
261+ c:identifier="CAIRO_ANTIALIAS_NONE"/>
262+ <member name="gray"
263+ value="2"
264+ c:identifier="CAIRO_ANTIALIAS_GRAY"/>
265+ <member name="subpixel"
266+ value="3"
267+ c:identifier="CAIRO_ANTIALIAS_SUBPIXEL"/>
268+ <member name="fast"
269+ value="4"
270+ c:identifier="CAIRO_ANTIALIAS_FAST"/>
271+ <member name="good"
272+ value="5"
273+ c:identifier="CAIRO_ANTIALIAS_GOOD"/>
274+ <member name="best"
275+ value="6"
276+ c:identifier="CAIRO_ANTIALIAS_BEST"/>
277+ </enumeration>
278+ <enumeration name="FillRule" c:type="cairo_fill_rule_t"
279+ glib:type-name="cairo_fill_rule_t"
280+ glib:get-type="cairo_gobject_fill_rule_get_type">
281+ <member name="winding"
282+ value="0"
283+ c:identifier="CAIRO_FILL_RULE_WINDING"/>
284+ <member name="even_odd"
285+ value="1"
286+ c:identifier="CAIRO_FILL_RULE_EVEN_ODD"/>
287+ </enumeration>
288+ <enumeration name="LineCap" c:type="cairo_line_cap_t"
289+ glib:type-name="cairo_line_cap_t"
290+ glib:get-type="cairo_gobject_line_cap_get_type">
291+ <member name="butt"
292+ value="0"
293+ c:identifier="CAIRO_LINE_CAP_BUTT"/>
294+ <member name="round"
295+ value="1"
296+ c:identifier="CAIRO_LINE_CAP_ROUND"/>
297+ <member name="square"
298+ value="2"
299+ c:identifier="CAIRO_LINE_CAP_SQUARE"/>
300+ </enumeration>
301+ <enumeration name="LineJoin" c:type="cairo_line_join_t"
302+ glib:type-name="cairo_line_join_t"
303+ glib:get-type="cairo_gobject_line_join_get_type">
304+ <member name="miter"
305+ value="0"
306+ c:identifier="CAIRO_LINE_JOIN_MITER"/>
307+ <member name="round"
308+ value="1"
309+ c:identifier="CAIRO_LINE_JOIN_ROUND"/>
310+ <member name="bevel"
311+ value="2"
312+ c:identifier="CAIRO_LINE_JOIN_BEVEL"/>
313+ </enumeration>
314+ <enumeration name="TextClusterFlags" c:type="cairo_text_cluster_flags_t"
315+ glib:type-name="cairo_text_cluster_flags_t"
316+ glib:get-type="cairo_gobject_text_cluster_flags_get_type">
317+ <member name="backward"
318+ value="1"
319+ c:identifier="CAIRO_TEXT_CLUSTER_FLAG_BACKWARD"/>
320+ </enumeration>
321+ <enumeration name="FontSlant" c:type="cairo_font_slant_t"
322+ glib:type-name="cairo_font_slant_t"
323+ glib:get-type="cairo_gobject_font_slant_get_type">
324+ <member name="normal"
325+ value="0"
326+ c:identifier="CAIRO_FONT_SLANT_NORMAL"/>
327+ <member name="italic"
328+ value="1"
329+ c:identifier="CAIRO_FONT_SLANT_ITALIC"/>
330+ <member name="oblique"
331+ value="2"
332+ c:identifier="CAIRO_FONT_SLANT_OBLIQUE"/>
333+ </enumeration>
334+ <enumeration name="FontWeight" c:type="cairo_font_weight_t"
335+ glib:type-name="cairo_font_weight_t"
336+ glib:get-type="cairo_gobject_font_weight_get_type">
337+ <member name="normal"
338+ value="0"
339+ c:identifier="CAIRO_FONT_WEIGHT_NORMAL"/>
340+ <member name="bold"
341+ value="1"
342+ c:identifier="CAIRO_FONT_WEIGHT_BOLD"/>
343+ </enumeration>
344+ <enumeration name="SubpixelOrder" c:type="cairo_subpixel_order_t"
345+ glib:type-name="cairo_subpixel_order_t"
346+ glib:get-type="cairo_gobject_subpixel_order_get_type">
347+ <member name="default"
348+ value="0"
349+ c:identifier="CAIRO_SUBPIXEL_ORDER_DEFAULT"/>
350+ <member name="rgb"
351+ value="1"
352+ c:identifier="CAIRO_SUBPIXEL_ORDER_RGB"/>
353+ <member name="bgr"
354+ value="2"
355+ c:identifier="CAIRO_SUBPIXEL_ORDER_BGR"/>
356+ <member name="vrgb"
357+ value="3"
358+ c:identifier="CAIRO_SUBPIXEL_ORDER_VRGB"/>
359+ <member name="vbgr"
360+ value="4"
361+ c:identifier="CAIRO_SUBPIXEL_ORDER_VBGR"/>
362+ </enumeration>
363+ <enumeration name="HintStyle" c:type="cairo_hint_style_t"
364+ glib:type-name="cairo_hint_style_t"
365+ glib:get-type="cairo_gobject_hint_style_get_type">
366+ <member name="default"
367+ value="0"
368+ c:identifier="CAIRO_HINT_STYLE_DEFAULT"/>
369+ <member name="none"
370+ value="1"
371+ c:identifier="CAIRO_HINT_STYLE_NONE"/>
372+ <member name="slight"
373+ value="2"
374+ c:identifier="CAIRO_HINT_STYLE_SLIGHT"/>
375+ <member name="medium"
376+ value="3"
377+ c:identifier="CAIRO_HINT_STYLE_MEDIUM"/>
378+ <member name="full"
379+ value="4"
380+ c:identifier="CAIRO_HINT_STYLE_FULL"/>
381+ </enumeration>
382+ <enumeration name="HintMetrics" c:type="cairo_hint_metrics_t"
383+ glib:type-name="cairo_hint_metrics_t"
384+ glib:get-type="cairo_gobject_hint_metrics_get_type">
385+ <member name="default"
386+ value="0"
387+ c:identifier="CAIRO_HINT_METRICS_DEFAULT"/>
388+ <member name="off"
389+ value="1"
390+ c:identifier="CAIRO_HINT_METRICS_OFF"/>
391+ <member name="on"
392+ value="2"
393+ c:identifier="CAIRO_HINT_METRICS_ON"/>
394+ </enumeration>
395+ <record name="FontOptions" c:type="cairo_font_options_t" foreign="1"
396+ glib:type-name="CairoFontOptions"
397+ glib:get-type="cairo_gobject_font_options_get_type"/>
398+ <enumeration name="FontType" c:type="cairo_font_type_t"
399+ glib:type-name="cairo_font_type_t"
400+ glib:get-type="cairo_gobject_font_type_get_type">
401+ <member name="toy"
402+ value="0"
403+ c:identifier="CAIRO_FONT_TYPE_TOY"/>
404+ <member name="ft"
405+ value="1"
406+ c:identifier="CAIRO_FONT_TYPE_FT"/>
407+ <member name="win32"
408+ value="2"
409+ c:identifier="CAIRO_FONT_TYPE_WIN32"/>
410+ <member name="quartz"
411+ value="3"
412+ c:identifier="CAIRO_FONT_TYPE_QUARTZ"/>
413+ <member name="user"
414+ value="4"
415+ c:identifier="CAIRO_FONT_TYPE_USER"/>
416+ </enumeration>
417+ <enumeration name="PathDataType" c:type="cairo_path_data_type_t"
418+ glib:type-name="cairo_path_data_type_t"
419+ glib:get-type="cairo_gobject_path_data_type_get_type">
420+ <member name="move_to"
421+ value="0"
422+ c:identifier="CAIRO_PATH_MOVE_TO"/>
423+ <member name="line_to"
424+ value="1"
425+ c:identifier="CAIRO_PATH_LINE_TO"/>
426+ <member name="curve_to"
427+ value="2"
428+ c:identifier="CAIRO_PATH_CURVE_TO"/>
429+ <member name="close_path"
430+ value="3"
431+ c:identifier="CAIRO_PATH_CLOSE_PATH"/>
432+ </enumeration>
433+ <enumeration name="DeviceType" c:type="cairo_device_type_t"
434+ glib:type-name="cairo_device_type_t"
435+ glib:get-type="cairo_gobject_device_type_get_type">
436+ <member name="drm"
437+ value="0"
438+ c:identifier="CAIRO_DEVICE_TYPE_DRM"/>
439+ <member name="gl"
440+ value="1"
441+ c:identifier="CAIRO_DEVICE_TYPE_GL"/>
442+ <member name="script"
443+ value="2"
444+ c:identifier="CAIRO_DEVICE_TYPE_SCRIPT"/>
445+ <member name="xcb"
446+ value="3"
447+ c:identifier="CAIRO_DEVICE_TYPE_XCB"/>
448+ <member name="xlib"
449+ value="4"
450+ c:identifier="CAIRO_DEVICE_TYPE_XLIB"/>
451+ <member name="xml"
452+ value="5"
453+ c:identifier="CAIRO_DEVICE_TYPE_XML"/>
454+ <member name="cogl"
455+ value="6"
456+ c:identifier="CAIRO_DEVICE_TYPE_COGL"/>
457+ <member name="win32"
458+ value="7"
459+ c:identifier="CAIRO_DEVICE_TYPE_WIN32"/>
460+ <member name="invalid"
461+ value="-1"
462+ c:identifier="CAIRO_DEVICE_TYPE_INVALID"/>
463+ </enumeration>
464+ <enumeration name="SurfaceType" c:type="cairo_surface_type_t"
465+ glib:type-name="cairo_surface_type_t"
466+ glib:get-type="cairo_gobject_surface_type_get_type">
467+ <member name="image"
468+ value="0"
469+ c:identifier="CAIRO_SURFACE_TYPE_IMAGE"/>
470+ <member name="pdf"
471+ value="1"
472+ c:identifier="CAIRO_SURFACE_TYPE_PDF"/>
473+ <member name="ps"
474+ value="2"
475+ c:identifier="CAIRO_SURFACE_TYPE_PS"/>
476+ <member name="xlib"
477+ value="3"
478+ c:identifier="CAIRO_SURFACE_TYPE_XLIB"/>
479+ <member name="xcb"
480+ value="4"
481+ c:identifier="CAIRO_SURFACE_TYPE_XCB"/>
482+ <member name="glitz"
483+ value="5"
484+ c:identifier="CAIRO_SURFACE_TYPE_GLITZ"/>
485+ <member name="quartz"
486+ value="6"
487+ c:identifier="CAIRO_SURFACE_TYPE_QUARTZ"/>
488+ <member name="win32"
489+ value="7"
490+ c:identifier="CAIRO_SURFACE_TYPE_WIN32"/>
491+ <member name="beos"
492+ value="8"
493+ c:identifier="CAIRO_SURFACE_TYPE_BEOS"/>
494+ <member name="directfb"
495+ value="9"
496+ c:identifier="CAIRO_SURFACE_TYPE_DIRECTFB"/>
497+ <member name="svg"
498+ value="10"
499+ c:identifier="CAIRO_SURFACE_TYPE_SVG"/>
500+ <member name="os2"
501+ value="11"
502+ c:identifier="CAIRO_SURFACE_TYPE_OS2"/>
503+ <member name="win32_printing"
504+ value="12"
505+ c:identifier="CAIRO_SURFACE_TYPE_WIN32_PRINTING"/>
506+ <member name="quartz_image"
507+ value="13"
508+ c:identifier="CAIRO_SURFACE_TYPE_QUARTZ_IMAGE"/>
509+ <member name="script"
510+ value="14"
511+ c:identifier="CAIRO_SURFACE_TYPE_SCRIPT"/>
512+ <member name="qt"
513+ value="15"
514+ c:identifier="CAIRO_SURFACE_TYPE_QT"/>
515+ <member name="recording"
516+ value="16"
517+ c:identifier="CAIRO_SURFACE_TYPE_RECORDING"/>
518+ <member name="vg"
519+ value="17"
520+ c:identifier="CAIRO_SURFACE_TYPE_VG"/>
521+ <member name="gl"
522+ value="18"
523+ c:identifier="CAIRO_SURFACE_TYPE_GL"/>
524+ <member name="drm"
525+ value="19"
526+ c:identifier="CAIRO_SURFACE_TYPE_DRM"/>
527+ <member name="tee"
528+ value="20"
529+ c:identifier="CAIRO_SURFACE_TYPE_TEE"/>
530+ <member name="xml"
531+ value="21"
532+ c:identifier="CAIRO_SURFACE_TYPE_XML"/>
533+ <member name="skia"
534+ value="22"
535+ c:identifier="CAIRO_SURFACE_TYPE_SKIA"/>
536+ <member name="subsurface"
537+ value="23"
538+ c:identifier="CAIRO_SURFACE_TYPE_SUBSURFACE"/>
539+ <member name="cogl"
540+ value="24"
541+ c:identifier="CAIRO_SURFACE_TYPE_COGL"/>
542+ </enumeration>
543+ <enumeration name="Format" c:type="cairo_format_t"
544+ glib:type-name="cairo_format_t"
545+ glib:get-type="cairo_gobject_format_get_type">
546+ <member name="invalid"
547+ value="-1"
548+ c:identifier="CAIRO_FORMAT_INVALID"/>
549+ <member name="argb32"
550+ value="0"
551+ c:identifier="CAIRO_FORMAT_ARGB32"/>
552+ <member name="rgb24"
553+ value="1"
554+ c:identifier="CAIRO_FORMAT_RGB24"/>
555+ <member name="a8"
556+ value="2"
557+ c:identifier="CAIRO_FORMAT_A8"/>
558+ <member name="a1"
559+ value="3"
560+ c:identifier="CAIRO_FORMAT_A1"/>
561+ <member name="rgb16_565"
562+ value="4"
563+ c:identifier="CAIRO_FORMAT_RGB16_565"/>
564+ <member name="rgb30"
565+ value="5"
566+ c:identifier="CAIRO_FORMAT_RGB30"/>
567+ </enumeration>
568+ <enumeration name="PatternType" c:type="cairo_pattern_type_t"
569+ glib:type-name="cairo_pattern_type_t"
570+ glib:get-type="cairo_gobject_pattern_type_get_type">
571+ <member name="solid"
572+ value="0"
573+ c:identifier="CAIRO_PATTERN_TYPE_SOLID"/>
574+ <member name="surface"
575+ value="1"
576+ c:identifier="CAIRO_PATTERN_TYPE_SURFACE"/>
577+ <member name="linear"
578+ value="2"
579+ c:identifier="CAIRO_PATTERN_TYPE_LINEAR"/>
580+ <member name="radial"
581+ value="3"
582+ c:identifier="CAIRO_PATTERN_TYPE_RADIAL"/>
583+ <member name="mesh"
584+ value="4"
585+ c:identifier="CAIRO_PATTERN_TYPE_MESH"/>
586+ <member name="raster_source"
587+ value="5"
588+ c:identifier="CAIRO_PATTERN_TYPE_RASTER_SOURCE"/>
589+ </enumeration>
590+ <enumeration name="Extend" c:type="cairo_extend_t"
591+ glib:type-name="cairo_extend_t"
592+ glib:get-type="cairo_gobject_extend_get_type">
593+ <member name="none"
594+ value="0"
595+ c:identifier="CAIRO_EXTEND_NONE"/>
596+ <member name="repeat"
597+ value="1"
598+ c:identifier="CAIRO_EXTEND_REPEAT"/>
599+ <member name="reflect"
600+ value="2"
601+ c:identifier="CAIRO_EXTEND_REFLECT"/>
602+ <member name="pad"
603+ value="3"
604+ c:identifier="CAIRO_EXTEND_PAD"/>
605+ </enumeration>
606+ <enumeration name="Filter" c:type="cairo_filter_t"
607+ glib:type-name="cairo_filter_t"
608+ glib:get-type="cairo_gobject_filter_get_type">
609+ <member name="fast"
610+ value="0"
611+ c:identifier="CAIRO_FILTER_FAST"/>
612+ <member name="good"
613+ value="1"
614+ c:identifier="CAIRO_FILTER_GOOD"/>
615+ <member name="best"
616+ value="2"
617+ c:identifier="CAIRO_FILTER_BEST"/>
618+ <member name="nearest"
619+ value="3"
620+ c:identifier="CAIRO_FILTER_NEAREST"/>
621+ <member name="bilinear"
622+ value="4"
623+ c:identifier="CAIRO_FILTER_BILINEAR"/>
624+ <member name="gaussian"
625+ value="5"
626+ c:identifier="CAIRO_FILTER_GAUSSIAN"/>
627+ </enumeration>
628+ <enumeration name="RegionOverlap" c:type="cairo_region_overlap_t"
629+ glib:type-name="cairo_region_overlap_t"
630+ glib:get-type="cairo_gobject_region_overlap_get_type">
631+ <member name="in"
632+ value="0"
633+ c:identifier="CAIRO_REGION_OVERLAP_IN"/>
634+ <member name="out"
635+ value="1"
636+ c:identifier="CAIRO_REGION_OVERLAP_OUT"/>
637+ <member name="part"
638+ value="2"
639+ c:identifier="CAIRO_REGION_OVERLAP_PART"/>
640+ </enumeration>
641+ <record name="FontFace" c:type="cairo_font_face_t" foreign="1"
642+ glib:type-name="CairoFontFace"
643+ glib:get-type="cairo_gobject_font_face_get_type"/>
644+ <record name="ScaledFont" c:type="cairo_scaled_font_t" foreign="1"
645+ glib:type-name="CairoScaledFont"
646+ glib:get-type="cairo_gobject_scaled_font_get_type"/>
647+ <record name="Path" c:type="cairo_path_t" foreign="1"/>
648+ <record name="Rectangle" c:type="cairo_rectangle_t"
649+ glib:type-name="CairoRectangle"
650+ glib:get-type="cairo_gobject_rectangle_get_type">
651+ <field name="x" writable="1">
652+ <type name="gdouble" c:type="gdouble"/>
653+ </field>
654+ <field name="y" writable="1">
655+ <type name="gdouble" c:type="gdouble"/>
656+ </field>
657+ <field name="width" writable="1">
658+ <type name="gdouble" c:type="gdouble"/>
659+ </field>
660+ <field name="height" writable="1">
661+ <type name="gdouble" c:type="gdouble"/>
662+ </field>
663+ </record>
664+ <record name="RectangleInt" c:type="cairo_rectangle_int_t"
665+ glib:type-name="CairoRectangleInt"
666+ glib:get-type="cairo_gobject_rectangle_int_get_type">
667+ <field name="x" writable="1">
668+ <type name="gint" c:type="gint"/>
669+ </field>
670+ <field name="y" writable="1">
671+ <type name="gint" c:type="gint"/>
672+ </field>
673+ <field name="width" writable="1">
674+ <type name="gint" c:type="gint"/>
675+ </field>
676+ <field name="height" writable="1">
677+ <type name="gint" c:type="gint"/>
678+ </field>
679+ </record>
680+ <function name="image_surface_create" c:identifier="cairo_image_surface_create">
681+ <return-value transfer-ownership="none">
682+ <type name="none" c:type="void"/>
683+ </return-value>
684+ <parameters>
685+ </parameters>
686+ </function>
687+ </namespace>
688+</repository>
A internal/gir/types/interface.go +52 -0
@@ -0,0 +1,52 @@
1+package types
2+
3+import (
4+ "strings"
5+
6+ "github.com/jwijenbergh/puregotk/internal/gir/util"
7+)
8+
9+func ConvertInterface(currns string, ins string, inter Interface, implemented map[string]bool, kinds KindMap) InterfaceTemplate {
10+ var methods []InterfaceFuncTemplate
11+
12+ for _, m := range inter.Methods {
13+ name := util.SnakeToCamel(m.Name)
14+ if implemented != nil {
15+ v, ok := implemented[name]
16+ if v && ok {
17+ continue
18+ }
19+ }
20+ var newns string
21+ if ins != "" {
22+ newns = ins + "."
23+ }
24+ methods = append(methods, InterfaceFuncTemplate{
25+ Namespace: newns,
26+ FullName: util.SnakeToCamel(m.CIdentifier),
27+ FuncTemplate: FuncTemplate{
28+ Doc: m.Doc.StringSafe(),
29+ CName: m.CIdentifier,
30+ Name: name,
31+ Args: m.Parameters.Template(currns, ins, kinds),
32+ Ret: m.ReturnValue.Template(currns, ins, kinds),
33+ },
34+ })
35+ }
36+ name := util.SnakeToCamel(inter.Name)
37+ return InterfaceTemplate{
38+ Name: name,
39+ Doc: inter.Doc.StringSafe(),
40+ Methods: methods,
41+ }
42+}
43+
44+func GetInterfaceFuncs(ns string, name string, implemented map[string]bool, kinds KindMap) InterfaceTemplate {
45+ inter := kinds.MustInterface(ns, name)
46+ parts := strings.Split(name, ".")
47+ var ins string
48+ if len(parts) > 1 {
49+ ins = strings.ToLower(parts[0])
50+ }
51+ return ConvertInterface(ns, ins, inter, implemented, kinds)
52+}
A internal/gir/types/kind.go +51 -0
@@ -0,0 +1,51 @@
1+package types
2+
3+import "github.com/jwijenbergh/puregotk/internal/gir/util"
4+
5+type Kind int8
6+
7+const (
8+ UnknownType Kind = iota
9+ AliasType
10+ CallbackType
11+ ClassesType
12+ InterfacesType
13+ RecordsType
14+ OtherType
15+)
16+
17+type KindMap map[string]KindPair
18+
19+func (km KindMap) key(ns string, name string) string {
20+ return util.NormalizeNamespace(ns, name, false)
21+}
22+
23+func (km KindMap) Add(ns string, name string, t Kind, v interface{}) {
24+ k := km.key(ns, name)
25+ km[k] = KindPair{
26+ K: t,
27+ Value: v,
28+ }
29+}
30+
31+func (km KindMap) pair(ns string, name string) KindPair {
32+ f := util.NormalizeNamespace(ns, name, false)
33+ return km[f]
34+}
35+
36+func (km KindMap) Kind(ns string, name string) Kind {
37+ return km.pair(ns, name).K
38+}
39+
40+func (km KindMap) MustInterface(ns string, name string) Interface {
41+ p := km.pair(ns, name)
42+ if p.K != InterfacesType {
43+ panic("value is not an interface")
44+ }
45+ return p.Value.(Interface)
46+}
47+
48+type KindPair struct {
49+ K Kind
50+ Value interface{}
51+}
A internal/gir/types/template.go +284 -0
@@ -0,0 +1,284 @@
1+package types
2+
3+import (
4+ "fmt"
5+ "strings"
6+
7+ "github.com/jwijenbergh/puregotk/internal/gir/util"
8+)
9+
10+type argsTemplate struct {
11+ // Names are the variables but just the names
12+ Names []string
13+
14+ // Types are the variables but just the types
15+ Types []string
16+
17+ // Call are the variables as given in a function call
18+ Call []string
19+
20+ Full []string
21+}
22+
23+type funcArgsTemplate struct {
24+ // Pure are the arguments as passed directly to PureGo
25+ // The pure Call is a special case that contains the arguments for a callback call
26+ Pure argsTemplate
27+
28+ // API are the arguments as suitable for a Go API
29+ API argsTemplate
30+}
31+
32+func (f *funcArgsTemplate) AddAPI(t string, n string, k Kind, ns string) {
33+ c := n
34+ stars := strings.Count(t, "*")
35+ gobjectNs := "gobject."
36+ if strings.ToLower(ns) == "gobject" {
37+ gobjectNs = ""
38+ }
39+ switch k {
40+ case CallbackType:
41+ c = fmt.Sprintf("purego.NewCallback(%s)", n)
42+ case ClassesType:
43+ if stars == 0 {
44+ c = n
45+ t = "uintptr"
46+ } else if stars > 1 {
47+ c = fmt.Sprintf("%sConvertPtr(%s)", gobjectNs, n)
48+ } else if stars == 1 {
49+ c = n + ".GoPointer()"
50+ }
51+ case InterfacesType:
52+ t = strings.TrimPrefix(t, "*")
53+ if stars == 0 {
54+ c = n
55+ t = "uintptr"
56+ } else if stars > 1 {
57+ c = fmt.Sprintf("%sConvertPtr(%s)", gobjectNs, n)
58+ } else if stars == 1 {
59+ c = n + ".GoPointer()"
60+ }
61+ }
62+
63+ // special case for varargs
64+ if n == "varArgs" {
65+ c = n + "..."
66+ }
67+ f.API.Names = append(f.API.Names, n)
68+ f.API.Types = append(f.API.Types, t)
69+ f.API.Call = append(f.API.Call, c)
70+ f.API.Full = append(f.API.Full, n+" "+t)
71+}
72+
73+func (f *funcArgsTemplate) AddPure(t string, n string, k Kind) {
74+ n += "p"
75+ c := n
76+ stars := strings.Count(t, "*")
77+ switch k {
78+ case RecordsType:
79+ if stars == 0 {
80+ t = "uintptr"
81+ }
82+ case CallbackType:
83+ t = "uintptr"
84+ case ClassesType:
85+ if stars == 0 {
86+ c = n
87+ t = "uintptr"
88+ } else {
89+ c = fmt.Sprintf("%sNewFromInternalPtr(%s)", strings.TrimPrefix(t, "*"), n)
90+ t = strings.Repeat("*", stars-1) + "uintptr"
91+ }
92+ case InterfacesType:
93+ if stars == 0 {
94+ c = n
95+ t = "uintptr"
96+ } else {
97+ c = fmt.Sprintf("%s{Ptr: %s}", t+"Base", n)
98+ t = strings.Repeat("*", stars-1) + "uintptr"
99+ }
100+ }
101+ f.Pure.Names = append(f.Pure.Names, n)
102+ f.Pure.Types = append(f.Pure.Types, t)
103+ f.Pure.Call = append(f.Pure.Call, c)
104+ f.Pure.Full = append(f.Pure.Full, n+" "+t)
105+}
106+
107+func (f *funcArgsTemplate) Add(p Parameter, ins string, ns string, kinds KindMap) {
108+ // get the lookup namespace
109+ // as if the interface namespace is non-empty
110+ // means we can also lookup in the namespace of the interface
111+ lns := ns
112+ if ins != "" {
113+ lns = ins
114+ }
115+ goType := p.Translate(lns, kinds)
116+ kind := kinds.Kind(lns, goType)
117+ stars := strings.Count(goType, "*")
118+ goType = util.NormalizeNamespace(ns, goType, true)
119+ if kind != OtherType && kind != UnknownType {
120+ if ins != "" && strings.Count(goType, ".") < 1 {
121+ goType = ins + "." + goType
122+ }
123+ }
124+ if stars > 0 {
125+ goType = strings.Repeat("*", stars) + strings.ReplaceAll(goType, "*", "")
126+ }
127+
128+ // Get a suitable variable name
129+ varName := p.VarName()
130+
131+ f.AddAPI(goType, varName, kind, ns)
132+ f.AddPure(goType, varName, kind)
133+}
134+
135+type CallbackTemplate struct {
136+ Doc string
137+ Name string
138+ Args funcArgsTemplate
139+ Ret funcRetTemplate
140+}
141+
142+type AliasTemplate struct {
143+ // Name is the name of the alias given to the Go type declaration
144+ Name string
145+
146+ // Doc is the documentation of the alias
147+ Doc string
148+
149+ // Value is the value for the alias as a Go type
150+ Value string
151+}
152+
153+type RecordField struct {
154+ // Name is the Go name of the field
155+ Name string
156+
157+ // Type is the Go type of the field
158+ Type string
159+}
160+
161+type RecordTemplate struct {
162+ // Name is the name of the record given to the Go type declaration
163+ Name string
164+
165+ // Doc is the documentation of the alias
166+ Doc string
167+
168+ // Fields is the list of record fields
169+ Fields []RecordField
170+}
171+
172+type enumValues struct {
173+ // Doc is the documentation for the value
174+ Doc string
175+ // Name is the name of the enumeration value
176+ Name string
177+ // Value is the actual underlying value
178+ Value int
179+}
180+
181+type EnumTemplate struct {
182+ // Name is the name of the enumeration declared as the Go type for the int
183+ Name string
184+ // Doc is the documentation for the enumeration
185+ Doc string
186+ // Values are the list of values for the enumeration
187+ Values []enumValues
188+}
189+
190+type funcRetTemplate struct {
191+ // Raw is the raw value for the underlying purego function
192+ Raw string
193+ // Value is the underlying return value as a Go type
194+ Value string
195+ // Class indicates whether or not the return value is a class
196+ Class bool
197+ // RefSink indicates whether or not we should increase the reference count using obj.RefSink()
198+ RefSink bool
199+}
200+
201+func (fr *funcRetTemplate) Instance() string {
202+ if strings.HasPrefix(fr.Value, "*") {
203+ return "&"+fr.Value[1:]
204+ }
205+ return fr.Value
206+}
207+
208+type FuncTemplate struct {
209+ // Name is the name of the function declared as the Go function variable and public exposed API
210+ Name string
211+ // CName is the raw c name to be passed to purego register
212+ CName string
213+ // Doc is the documentation for the function
214+ Doc string
215+ // Args are the arguments
216+ Args funcArgsTemplate
217+ // Ret is the return argument
218+ Ret funcRetTemplate
219+}
220+
221+type InterfaceFuncTemplate struct {
222+ Namespace string
223+ FullName string
224+ FuncTemplate
225+}
226+
227+type SignalsTemplate struct {
228+ Doc string
229+ Name string
230+ CName string
231+ Args funcArgsTemplate
232+ Ret funcRetTemplate
233+}
234+
235+type ClassTemplate struct {
236+ // Doc is the documentation for the class
237+ Doc string
238+ // Name is the name of the class that is given to the Go struct
239+ Name string
240+ // Parent is a non-empty string of the embedded parent struct
241+ Parent string
242+ // Constructors is the slice of functions that create the class struct
243+ Constructors []FuncTemplate
244+ // Receivers is the slice of functions that have value receivers to the struct
245+ Receivers []FuncTemplate
246+ // Interfaces are receiver methods that are implemented because it needs to satisfy a certain interface
247+ Interfaces []InterfaceTemplate
248+ // Signals are helpers for ConnectX receivers
249+ Signals []SignalsTemplate
250+}
251+
252+type InterfaceTemplate struct {
253+ Doc string
254+ Name string
255+ // Methods is the methods that this interface defines
256+ Methods []InterfaceFuncTemplate
257+}
258+
259+type TemplateArg struct {
260+ // PkgName is the name of the package, declared at the top-level
261+ PkgName string
262+ // PkgEnv is the name of the package in the load environment variable
263+ PkgEnv string
264+ // NeedsInit declares whether or not this file needs an init code to register functions with purego
265+ NeedsInit bool
266+ // Imports defines the package imports that we need
267+ // This does not include purego
268+ // As the template already includes that if `NeedsInit` is set to true
269+ Imports []string
270+ // Aliases are type aliases declared as type ... = ...
271+ Aliases []AliasTemplate
272+ // Aliases are structs that are not classes
273+ Records []RecordTemplate
274+ // Callbacks are functions that will be converted with purego to uintptr
275+ Callbacks []CallbackTemplate
276+ // Enums are enumerations declared as const ... .... = ....
277+ Enums []EnumTemplate
278+ // Functions are the Go function declarations
279+ Functions []FuncTemplate
280+ // Interfaces is the list of interfaces that this package implements
281+ Interfaces []InterfaceTemplate
282+ // Classes are the Go struct with receiver declarations
283+ Classes []ClassTemplate
284+}
A internal/gir/types/types.go +698 -0
@@ -0,0 +1,698 @@
1+// package types implements types as found in gir XML files
2+// NOTE: This was copied largely from (the type definitions) from
3+package types
4+
5+import (
6+ "encoding/xml"
7+ "strconv"
8+ "strings"
9+
10+ "github.com/jwijenbergh/puregotk/internal/gir/util"
11+)
12+
13+// convList maps the given GIR primitive type to a Go builtin type.
14+// See https://github.com/diamondburned/gotk4/blob/fd960d20b525a07580938d10a214336bafb47d12/gir/girgen/types/types.go#LL483C1-L512C2
15+var convList = map[string]string{
16+ "none": "",
17+ "gboolean": "bool",
18+ "gfloat": "float32",
19+ "gdouble": "float64",
20+ // This was changed because e.g. the error code in a GError struct is a gint and it has to be an int32
21+ // gint is a typedef to an int and on 32 and 64 bit systems a c int is 32 bits commonly, whereas in go an int is 32 bits on 32 bits systems and 64 bits on 64 bits systems
22+ // gotk4 seems to not cast these, see e.g. https://github.com/diamondburned/gotk4/blob/fd960d20b525a07580938d10a214336bafb47d12/gir/girgen/types/types.go#L473-L481
23+ "gint": "int32",
24+ "gssize": "int",
25+ "gint8": "int8",
26+ "gint16": "int16",
27+ "gshort": "int16",
28+ "gint32": "int32",
29+ "glong": "int32",
30+ "int32": "int32",
31+ "gint64": "int64",
32+ "guint": "uint",
33+ "gsize": "uint",
34+ "guchar": "byte",
35+ "gchar": "byte",
36+ "guint8": "byte", // some weird cases
37+ "guint16": "uint16",
38+ "gushort": "uint16",
39+ "guint32": "uint32",
40+ "gulong": "uint32",
41+ "gunichar": "uint32",
42+ "guint64": "uint64",
43+ "guintptr": "uintptr",
44+ "utf8": "string",
45+ "filename": "string",
46+
47+ // these are probably not correct but needed to compile
48+ "long double": "float64",
49+ "va_list": "[]interface{}",
50+ "gpointer": "uintptr",
51+ "GType": "[]interface{}",
52+ "const char*": "string",
53+ "char**": "[]string",
54+ // not exported
55+ "HarfBuzz.font_t": "uintptr",
56+ //"GLib.Quark": "byte",
57+ //"Allocation": "uintptr",
58+}
59+
60+// Repository represents a GObject Introspection Repository, which contains the
61+// includes, C includes and namespaces of a single gir file.
62+type Repository struct {
63+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 repository"`
64+
65+ Version string `xml:"version,attr"`
66+ CIdentifierPrefixes string `xml:"http://www.gtk.org/introspection/c/1.0 identifier-prefixes,attr"`
67+ CSymbolPrefixes string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefixes,attr"`
68+
69+ Includes []Include `xml:"http://www.gtk.org/introspection/core/1.0 include"`
70+ CIncludes []CInclude `xml:"http://www.gtk.org/introspection/c/1.0 include"`
71+ Packages []Package `xml:"http://www.gtk.org/introspection/core/1.0 package"`
72+ Namespaces []Namespace `xml:"http://www.gtk.org/introspection/core/1.0 namespace"`
73+}
74+
75+// https://gitlab.gnome.org/GNOME/gobject-introspection/-/blob/master/docs/gir-1.2.rnc
76+
77+type Alias struct {
78+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 alias"`
79+
80+ Name string `xml:"name,attr"`
81+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
82+
83+ InfoAttrs
84+ InfoElements
85+
86+ Type Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
87+}
88+
89+type AnyType struct {
90+ // Possible variants.
91+ Type *Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
92+ Array *Array `xml:"http://www.gtk.org/introspection/core/1.0 array"`
93+}
94+
95+func (a *AnyType) Translate(ns string, kinds KindMap) string {
96+ if a == nil {
97+ panic("unknown type found")
98+ }
99+ t := a.Type
100+ if t == nil {
101+ if a.Array == nil {
102+ return ""
103+ }
104+ if v, ok := convList[a.Array.CType]; ok {
105+ return v
106+ }
107+ return "uintptr"
108+ }
109+ return a.Type.Template(ns, kinds)
110+}
111+
112+type Annotation struct {
113+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 attribute"`
114+ Name string `xml:"name,attr"`
115+ Value string `xml:"value,attr"`
116+}
117+
118+type Array struct {
119+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 array"`
120+ Name string `xml:"name,attr"`
121+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
122+ Length *int `xml:"length,attr"` // ix of .Parameters
123+ ZeroTerminated *bool `xml:"zero-terminated,attr"`
124+ FixedSize int `xml:"fixed-size,attr"`
125+ Introspectable bool `xml:"introspectable,attr"`
126+ // Type is the array's inner type.
127+ Type *Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
128+}
129+
130+// IsZeroTerminated returns true if the Array is zero-terminated. It accounts
131+// for edge cases of the structure.
132+func (a Array) IsZeroTerminated() bool {
133+ return a.Name == "" && (a.ZeroTerminated == nil || *a.ZeroTerminated)
134+}
135+
136+type Bitfield struct {
137+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 bitfield"`
138+
139+ Name string `xml:"name,attr"` // Go case
140+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
141+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
142+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
143+
144+ Members []Member `xml:"http://www.gtk.org/introspection/core/1.0 member"`
145+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
146+
147+ InfoAttrs
148+ InfoElements
149+}
150+
151+func (b *Bitfield) Template(ns string) EnumTemplate {
152+ els := make([]enumValues, len(b.Members))
153+ for i, m := range b.Members {
154+ v, err := strconv.Atoi(m.Value)
155+ if err != nil {
156+ panic(err)
157+ }
158+ // + Value needed to get rid of duplicates
159+ els[i] = enumValues{
160+ Doc: m.Doc.StringSafe(),
161+ Name: util.SnakeToCamel(util.RemoveSnakePrefix(strings.ToLower(m.CIdentifier), ns)) + "Value",
162+ Value: v,
163+ }
164+ }
165+ return EnumTemplate{
166+ Name: util.SnakeToCamel(b.Name),
167+ Doc: b.Doc.StringSafe(),
168+ Values: els,
169+ }
170+}
171+
172+type Signal struct {
173+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/glib/1.0 signal"`
174+ Name string `xml:"name,attr"`
175+ Detailed bool `xml:"detailed,attr"`
176+ When SignalWhen `xml:"when,attr"`
177+ Action bool `xml:"action,attr"`
178+ NoHooks bool `xml:"no-hooks,attr"`
179+ NoRecurse bool `xml:"no-recurse,attr"`
180+ InfoElements
181+ Parameters *Parameters `xml:"http://www.gtk.org/introspection/core/1.0 parameters"`
182+ ReturnValue *ReturnValue `xml:"http://www.gtk.org/introspection/core/1.0 return-value"`
183+}
184+
185+type SignalWhen string
186+
187+const (
188+ SignalWhenFirst = "first"
189+ SignalWhenLast = "last"
190+ SignalWhenCleanup = "cleanup"
191+)
192+
193+type SourcePosition struct {
194+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 source-position"`
195+ Filename string `xml:"filename,attr"`
196+ Line int `xml:"line,attr"`
197+ Column int `xml:"column,attr"`
198+}
199+
200+type TransferOwnership struct {
201+ TransferOwnership string `xml:"transfer-ownership,attr"`
202+}
203+
204+type Type struct {
205+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 type"`
206+
207+ Name string `xml:"name,attr"`
208+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
209+ Introspectable *bool `xml:"introspectable,attr"`
210+
211+ DocElements
212+ // Types is the type's inner types.
213+ Types []Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
214+}
215+
216+func (typ *Type) IsIntrospectable() bool {
217+ return typ.Introspectable == nil || *typ.Introspectable
218+}
219+
220+func (t *Type) Template(ns string, kinds KindMap) string {
221+ if v, ok := convList[t.Name]; ok {
222+ return v
223+ }
224+
225+ _type := util.NormalizeNamespace(ns, t.Name, true)
226+
227+ kind := kinds.Kind(ns, _type)
228+ // find the total pointer count
229+ count := strings.Count(t.CType, "*")
230+ w := strings.Trim(t.CType, "*")
231+ if w == "gpointer" {
232+ count += 1
233+ }
234+ // set the same pointer types on the name
235+ if count > 0 && kind != CallbackType {
236+ _type = strings.Repeat("*", count) + _type
237+ } else if kind == RecordsType {
238+ // if it's not a pointer
239+ // then purego doesn't support it (struct by value is not supported
240+ // so return uintptr
241+ _type = "uintptr"
242+ }
243+ return _type
244+}
245+
246+type Union struct {
247+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 union"`
248+
249+ Name string `xml:"name,attr"` // Go case
250+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
251+ CSymbolPrefix string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefix,attr"`
252+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
253+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
254+
255+ InfoAttrs
256+ InfoElements
257+
258+ Fields []Field `xml:"http://www.gtk.org/introspection/core/1.0 field"`
259+ Constructors []Constructor `xml:"http://www.gtk.org/introspection/core/1.0 constructor"`
260+ Methods []Method `xml:"http://www.gtk.org/introspection/core/1.0 method"`
261+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
262+ Records []Record `xml:"http://www.gtk.org/introspection/core/1.0 record"`
263+}
264+
265+type VarArgs struct {
266+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 varargs"`
267+}
268+
269+type VirtualMethod struct {
270+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 virtual-method"`
271+
272+ Invoker string `xml:"invoker,attr"`
273+ CallableAttrs
274+}
275+
276+type Boxed struct{}
277+
278+type CInclude struct {
279+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/c/1.0 include"`
280+ Name string `xml:"name,attr"`
281+}
282+
283+type CallableAttrs struct {
284+ Name string `xml:"name,attr"`
285+ CIdentifier string `xml:"http://www.gtk.org/introspection/c/1.0 identifier,attr"`
286+ ShadowedBy string `xml:"shadowed-by,attr"`
287+ Shadows string `xml:"shadows,attr"`
288+ Throws bool `xml:"throws,attr"`
289+ MovedTo string `xml:"moved-to,attr"`
290+ Parameters *Parameters `xml:"http://www.gtk.org/introspection/core/1.0 parameters"`
291+ ReturnValue *ReturnValue `xml:"http://www.gtk.org/introspection/core/1.0 return-value"`
292+ InfoAttrs
293+ InfoElements
294+}
295+
296+type Callback struct {
297+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 callback"`
298+ CallableAttrs
299+}
300+
301+type Class struct {
302+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 class"`
303+ Name string `xml:"name,attr"`
304+ Parent string `xml:"parent,attr"`
305+ Abstract bool `xml:"abstract,attr"`
306+
307+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
308+ CSymbolPrefix string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefix,attr"`
309+
310+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
311+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
312+ GLibTypeStruct string `xml:"http://www.gtk.org/introspection/glib/1.0 type-struct,attr"`
313+
314+ InfoAttrs
315+ InfoElements
316+
317+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
318+ Implements []Implements `xml:"http://www.gtk.org/introspection/core/1.0 implements"`
319+ Constructors []Constructor `xml:"http://www.gtk.org/introspection/core/1.0 constructor"`
320+ Methods []Method `xml:"http://www.gtk.org/introspection/core/1.0 method"`
321+ VirtualMethods []VirtualMethod `xml:"http://www.gtk.org/introspection/core/1.0 virtual-method"`
322+ Fields []Field `xml:"http://www.gtk.org/introspection/core/1.0 field"`
323+ Signals []Signal `xml:"http://www.gtk.org/introspection/glib/1.0 signal"`
324+}
325+
326+type Constant struct {
327+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 constant"`
328+ Name string `xml:"name,attr"`
329+ Value string `xml:"value,attr"`
330+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
331+
332+ Type Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
333+
334+ InfoAttrs
335+ InfoElements
336+}
337+
338+type Constructor struct {
339+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 constructor"`
340+ CallableAttrs
341+}
342+
343+type Doc struct {
344+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 doc"`
345+ Filename string `xml:"filename,attr"`
346+ String string `xml:",innerxml"`
347+ Line int `xml:"line,attr"`
348+}
349+
350+func (d *Doc) StringSafe() string {
351+ if d == nil {
352+ return ""
353+ }
354+ lines := strings.Split(d.String, "\n")
355+ for i, l := range lines {
356+ lines[i] = "// " + l
357+ }
358+ return strings.Join(lines, "\n")
359+}
360+
361+type DocDeprecated struct {
362+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 doc-deprecated"`
363+ String string `xml:",innerxml"`
364+}
365+
366+type DocElements struct {
367+ Doc *Doc
368+ DocDeprecated *DocDeprecated
369+ SourcePosition *SourcePosition
370+}
371+
372+func (d *DocElements) FilenameSafe() string {
373+ if d == nil || (d.SourcePosition == nil && d.Doc == nil) {
374+ return "main.go"
375+ }
376+ if d.SourcePosition != nil {
377+ return util.TranslateFilename(d.SourcePosition.Filename)
378+ }
379+ return util.TranslateFilename(d.Doc.Filename)
380+}
381+
382+type Enum struct {
383+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 enumeration"`
384+
385+ Name string `xml:"name,attr"` // Go case
386+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
387+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
388+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
389+ GLibErrorDomain string `xml:"http://www.gtk.org/introspection/glib/1.0 error-domain,attr"`
390+
391+ Members []Member `xml:"http://www.gtk.org/introspection/core/1.0 member"`
392+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
393+
394+ InfoAttrs
395+ InfoElements
396+}
397+
398+func (e *Enum) Template(ns string) EnumTemplate {
399+ els := make([]enumValues, len(e.Members))
400+
401+ for i, m := range e.Members {
402+ v, err := strconv.Atoi(m.Value)
403+ if err != nil {
404+ panic(err)
405+ }
406+ id := strings.ToLower(m.CIdentifier)
407+ sID := util.RemoveSnakePrefix(id, ns)
408+ els[i] = enumValues{
409+ Doc: m.Doc.StringSafe(),
410+ // + Value needed to get rid of duplicates
411+ Name: util.SnakeToCamel(sID) + "Value",
412+ Value: v,
413+ }
414+ }
415+ return EnumTemplate{
416+ Name: util.SnakeToCamel(e.Name),
417+ Doc: e.Doc.StringSafe(),
418+ Values: els,
419+ }
420+}
421+
422+type Field struct {
423+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 field"`
424+ Name string `xml:"name,attr"`
425+ Bits int `xml:"bits,attr"`
426+ Private bool `xml:"private,attr"`
427+ Writable bool `xml:"writable,attr"` // default false
428+ Readable *bool `xml:"readable,attr"` // default true
429+ AnyType
430+ Callback *Callback
431+ Doc *Doc
432+}
433+
434+// IsReadable returns true if the field is readable.
435+func (f Field) IsReadable() bool {
436+ return f.Readable == nil || *f.Readable
437+}
438+
439+type Function struct {
440+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 function"`
441+ CallableAttrs
442+}
443+
444+type Implements struct {
445+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 implements"`
446+ Name string `xml:"name,attr"`
447+}
448+
449+type Include struct {
450+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 include"`
451+ Name string `xml:"name,attr"`
452+ Version string `xml:"version,attr"`
453+}
454+
455+type InfoAttrs struct {
456+ Introspectable *bool `xml:"introspectable,attr"` // default true
457+ Deprecated bool `xml:"deprecated,attr"`
458+ DeprecatedVersion string `xml:"deprecated-version,attr"`
459+ Version string `xml:"version,attr"`
460+ Stability string `xml:"stability,attr"`
461+}
462+
463+// IsIntrospectable returns true if the InfoAttrs indicates that the type is
464+// introspectable.
465+func (inf InfoAttrs) IsIntrospectable() bool {
466+ return inf.Introspectable == nil || *inf.Introspectable
467+}
468+
469+type InfoElements struct {
470+ DocElements
471+ Annotations []Annotation `xml:"http://www.gtk.org/introspection/core/1.0 attribute"`
472+}
473+
474+type InstanceParameter struct {
475+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 instance-parameter"`
476+ ParameterAttrs
477+}
478+
479+type Interface struct {
480+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 interface"`
481+ Name string `xml:"name,attr"`
482+
483+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
484+ CSymbolPrefix string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefix,attr"`
485+
486+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
487+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
488+ GLibTypeStruct string `xml:"http://www.gtk.org/introspection/glib/1.0 type-struct,attr"`
489+
490+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
491+ Methods []Method `xml:"http://www.gtk.org/introspection/core/1.0 method"`
492+ VirtualMethods []VirtualMethod `xml:"http://www.gtk.org/introspection/core/1.0 virtual-method"`
493+ Prerequisites []Prerequisite `xml:"http://www.gtk.org/introspection/core/1.0 prerequisite"`
494+ Signals []Signal `xml:"http://www.gtk.org/introspection/glib/1.0 signal"`
495+
496+ InfoAttrs
497+ InfoElements
498+}
499+
500+type Member struct {
501+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 member"`
502+
503+ Names []xml.Attr `xml:"name,attr"`
504+ Value string `xml:"value,attr"`
505+ CIdentifier string `xml:"http://www.gtk.org/introspection/c/1.0 identifier,attr"`
506+ GLibNick string `xml:"http://www.gtk.org/introspection/glib/1.0 nick,attr"`
507+
508+ InfoAttrs
509+ InfoElements
510+}
511+
512+func (m Member) Name() string {
513+ return m.nameAttr(xml.Name{Local: "name"})
514+}
515+
516+func (m Member) GLibName() string {
517+ return m.nameAttr(xml.Name{Space: "http://www.gtk.org/introspection/glib/1.0", Local: "name"})
518+}
519+
520+func (m Member) nameAttr(name xml.Name) string {
521+ for _, attr := range m.Names {
522+ if attr.Name == name {
523+ return attr.Value
524+ }
525+ }
526+ return ""
527+}
528+
529+type Method struct {
530+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 method"`
531+ CallableAttrs
532+}
533+
534+type Namespace struct {
535+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 namespace"`
536+
537+ Name string `xml:"name,attr"`
538+ Version string `xml:"version,attr"`
539+ CIdentifierPrefixes string `xml:"http://www.gtk.org/introspection/c/1.0 identifier-prefixes,attr"`
540+ CSymbolPrefixes string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefixes,attr"`
541+ Prefix string `xml:"http://www.gtk.org/introspection/c/1.0 prefix,attr"`
542+ SharedLibrary string `xml:"shared-library,attr"`
543+
544+ Aliases []Alias `xml:"http://www.gtk.org/introspection/core/1.0 alias"`
545+ Classes []Class `xml:"http://www.gtk.org/introspection/core/1.0 class"`
546+ Interfaces []Interface `xml:"http://www.gtk.org/introspection/core/1.0 interface"`
547+ Records []Record `xml:"http://www.gtk.org/introspection/core/1.0 record"`
548+ Enums []Enum `xml:"http://www.gtk.org/introspection/core/1.0 enumeration"`
549+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
550+ Unions []Union `xml:"http://www.gtk.org/introspection/core/1.0 union"`
551+ Bitfields []Bitfield `xml:"http://www.gtk.org/introspection/core/1.0 bitfield"`
552+ Callbacks []Callback `xml:"http://www.gtk.org/introspection/core/1.0 callback"`
553+ Constants []Constant `xml:"http://www.gtk.org/introspection/core/1.0 constant"`
554+ Annotations []Annotation `xml:"http://www.gtk.org/introspection/core/1.0 attribute"`
555+ Boxeds []Boxed `xml:"http://www.gtk.org/introspection/core/1.0 boxed"`
556+}
557+
558+type Package struct {
559+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 package"`
560+ Name string `xml:"name,attr"`
561+}
562+
563+type Parameter struct {
564+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 parameter"`
565+ ParameterAttrs
566+}
567+
568+func (p *Parameter) Translate(ns string, kinds KindMap) string {
569+ if p.Name == "..." {
570+ return "...interface{}"
571+ }
572+ return p.AnyType.Translate(ns, kinds)
573+}
574+
575+func (p *Parameter) VarName() string {
576+ snaked := util.SnakeToCamel(p.Name)
577+ if snaked == "..." {
578+ return "varArgs"
579+ }
580+ // avoid clash between same name of type and var
581+ // could also do first letter to lower?
582+ return snaked + "Var"
583+}
584+
585+func (p *Parameters) Template(ns string, ifacens string, kinds KindMap) funcArgsTemplate {
586+ if p == nil {
587+ return funcArgsTemplate{}
588+ }
589+ params := p.Parameters
590+ if len(params) == 0 {
591+ return funcArgsTemplate{}
592+ }
593+ args := funcArgsTemplate{}
594+ for _, par := range params {
595+ args.Add(par, ifacens, ns, kinds)
596+ }
597+ return args
598+}
599+
600+type ParameterAttrs struct {
601+ Name string `xml:"name,attr"`
602+ Direction string `xml:"direction,attr"`
603+ Scope string `xml:"scope,attr"`
604+ Closure *int `xml:"closure,attr"`
605+ Destroy *int `xml:"destroy,attr"`
606+ CallerAllocates bool `xml:"caller-allocates,attr"`
607+ Skip bool `xml:"skip,attr"`
608+ Optional bool `xml:"optional,attr"`
609+ Nullable bool `xml:"nullable,attr"`
610+
611+ TransferOwnership
612+ AnyType
613+ Doc *Doc
614+}
615+
616+type Parameters struct {
617+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 parameters"`
618+ InstanceParameter *InstanceParameter `xml:"http://www.gtk.org/introspection/core/1.0 instance-parameter"`
619+ Parameters []Parameter `xml:"http://www.gtk.org/introspection/core/1.0 parameter"`
620+}
621+
622+type Prerequisite struct {
623+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 prerequisite"`
624+ Name string `xml:"name,attr"`
625+}
626+
627+type Property struct{}
628+
629+type Record struct {
630+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 record"`
631+ Name string `xml:"name,attr"`
632+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
633+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
634+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
635+ CSymbolPrefix string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefix,attr"`
636+ GLibIsGTypeStructFor string `xml:"http://www.gtk.org/introspection/glib/1.0 is-gtype-struct-for,attr"`
637+ Disguised bool `xml:"disguised,attr"`
638+ Foreign bool `xml:"foreign,attr"`
639+
640+ Fields []Field `xml:"http://www.gtk.org/introspection/core/1.0 field"`
641+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
642+ Unions []Union `xml:"http://www.gtk.org/introspection/core/1.0 union"`
643+ Methods []Method `xml:"http://www.gtk.org/introspection/core/1.0 method"`
644+ Constructors []Constructor `xml:"http://www.gtk.org/introspection/core/1.0 constructor"`
645+ Properties []Property `xml:"http://www.gtk.org/introspection/core/1.0 property"`
646+
647+ InfoAttrs
648+ InfoElements
649+}
650+
651+type ReturnValue struct {
652+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 return-value"`
653+ Scope string `xml:"scope,attr"`
654+ Closure *int `xml:"closure,attr"`
655+ Destroy *int `xml:"destroy,attr"`
656+ Introspectable bool `xml:"introspectable,attr"`
657+ Nullable bool `xml:"nullable,attr"`
658+ Skip bool `xml:"skip,attr"`
659+ AllowNone bool `xml:"allow-none,attr"`
660+ TransferOwnership
661+ DocElements
662+ AnyType
663+}
664+
665+func (r *ReturnValue) Template(ns string, ins string, kinds KindMap) funcRetTemplate {
666+ val := r.AnyType.Translate(ns, kinds)
667+ raw := val
668+ class := false
669+ lns := ns
670+ if ins != "" {
671+ lns = ins
672+ }
673+ kind := kinds.Kind(lns, raw)
674+ stars := strings.Count(val, "*")
675+ if kind != OtherType && kind != UnknownType {
676+ if ins != "" && strings.Count(val, ".") < 1 {
677+ val = ins + "." + val
678+ }
679+ }
680+ if stars > 0 {
681+ val = strings.Repeat("*", stars) + strings.ReplaceAll(val, "*", "")
682+ }
683+ switch kind {
684+ case ClassesType:
685+ raw = "uintptr"
686+ class = true
687+ case InterfacesType:
688+ raw = "uintptr"
689+ val += "Base"
690+ class = true
691+ }
692+ return funcRetTemplate{
693+ Raw: raw,
694+ Value: val,
695+ Class: class,
696+ RefSink: r.TransferOwnership.TransferOwnership == "none",
697+ }
698+}
A internal/gir/util/util.go +93 -0
@@ -0,0 +1,93 @@
1+// package util implements some utility functions for parsing/converting gir files
2+// TODO: Maybe some of this can more easily be done with regexes?
3+//
4+// But using regexes introduces 2 problems :^)
5+package util
6+
7+import (
8+ "path/filepath"
9+ "strings"
10+)
11+
12+// delimToCamel to camel converts a string with parts separated by `delim` to CamelCase
13+func delimToCamel(s string, delim string) string {
14+ var sb strings.Builder
15+ words := strings.Split(s, delim)
16+ for _, w := range words {
17+ sb.WriteString(strings.Title(w))
18+ }
19+ return sb.String()
20+}
21+
22+// SnakeToCamel converts hello_world to HelloWorld
23+func SnakeToCamel(s string) string {
24+ return delimToCamel(s, "_")
25+}
26+
27+// DashToCamel converts hello-world to HelloWorld
28+func DashToCamel(s string) string {
29+ return delimToCamel(s, "-")
30+}
31+
32+// RemoveSnakePrefix removes `prefix` from string `s` if that prefix ise separated with a _
33+// it removes lowercase or all u
34+func RemoveSnakePrefix(s string, prefix string) string {
35+ parts := strings.Split(s, "_")
36+ if len(parts) <= 1 {
37+ return s
38+ }
39+ if strings.EqualFold(parts[0], prefix) {
40+ parts = parts[1:]
41+ }
42+ return strings.Join(parts, "_")
43+}
44+
45+// ReplaceExtension replaces an extension from filename with ext
46+// the extension is found by splitting on "." and taking the last part
47+func ReplaceExtension(filename string, ext string) string {
48+ splt := strings.Split(filename, ".")
49+ if len(splt) == 1 {
50+ return filename
51+ }
52+ splt[len(splt)-1] = ext
53+ return strings.Join(splt, ".")
54+}
55+
56+// NormalizeNamespace converts a type to one that always includes a lowercase namespace
57+// if no namespace is found, it adds `ns`, unless if strip is True then namespaces always equaling `ns` will be removed
58+func NormalizeNamespace(ns string, gotype string, strip bool) string {
59+ if ns == "" {
60+ return ""
61+ }
62+ gotype = strings.Trim(gotype, "*")
63+ splt := strings.Split(gotype, ".")
64+ if len(splt) <= 1 {
65+ splt = append([]string{ns}, splt...)
66+ }
67+ splt[0] = strings.ToLower(splt[0])
68+ if strip && splt[0] == strings.ToLower(ns) {
69+ splt = splt[1:]
70+ }
71+ return strings.Join(splt, ".")
72+}
73+
74+// TranslateFilename translates a file path by renaming the file to a go suitable file
75+func TranslateFilename(filename string) string {
76+ if filename == "" {
77+ return "main.go"
78+ }
79+
80+ b := filepath.Base(filename)
81+ return ReplaceExtension(b, "go")
82+}
83+
84+func ConvertArgs(a []string) string {
85+ return strings.Join(a, ", ")
86+}
87+
88+func ConvertArgsComma(a []string) string {
89+ if len(a) == 0 {
90+ return ""
91+ }
92+ return ", " + strings.Join(a, ", ")
93+}
A shell.nix +26 -0
@@ -0,0 +1,26 @@
1+{ pkgs ? import <nixpkgs> {} }:
2+ pkgs.mkShell {
3+ # nativeBuildInputs is usually what you want -- tools you need to run
4+ buildInputs = [
5+ pkgs.go
6+ pkgs.godef
7+ pkgs.go-tools
8+ pkgs.vim
9+ pkgs.gofumpt
10+ pkgs.gopls
11+ pkgs.python3
12+ pkgs.libadwaita.dev
13+ pkgs.python3.pkgs.pip
14+ pkgs.gotools
15+ ];
16+ shellHook = ''
17+ # Tells pip to put packages into $PIP_PREFIX instead of the usual locations.
18+ # See https://pip.pypa.io/en/stable/user_guide/#environment-variables.
19+ export PIP_PREFIX=$(pwd)/_build/pip_packages
20+ export PYTHONPATH="$PIP_PREFIX/${pkgs.python3.sitePackages}:$PYTHONPATH"
21+ export PATH="$PIP_PREFIX/bin:$PATH"
22+ export GOPATH="$HOME/go"
23+ unset SOURCE_DATE_EPOCH
24+ '';
25+}
26+
A templates/go +264 -0
@@ -0,0 +1,264 @@
1+// Package {{.PkgName}} was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package {{.PkgName}}
3+
4+{{ $NotGObject := ne .PkgName "gobject" }}
5+
6+{{if or .Imports .NeedsInit}}
7+import (
8+ {{if .NeedsInit}}
9+ "github.com/jwijenbergh/purego"
10+ "github.com/jwijenbergh/puregotk/internal/core"
11+ {{end}}
12+ {{range .Imports -}}
13+ "github.com/jwijenbergh/puregotk/v4/{{.}}"
14+ {{end}}
15+)
16+{{end}}
17+
18+{{$outer := .}}
19+
20+{{range .Callbacks -}}
21+{{.Doc}}
22+type {{.Name}} func({{ conv .Args.Pure.Types }}) {{.Ret.Raw}}
23+{{end}}
24+
25+{{range .Records -}}
26+{{.Doc}}
27+type {{.Name}} struct {
28+ {{range .Fields}}
29+ {{.Name}} {{.Type}}
30+ {{end}}
31+}
32+{{end}}
33+
34+{{range .Interfaces -}}
35+{{.Doc}}
36+type {{.Name}} interface {
37+ GoPointer() uintptr
38+ SetGoPointer(uintptr)
39+ {{range .Methods -}}
40+ {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}}
41+ {{end}}
42+}
43+type {{.Name}}Base struct {
44+ Ptr uintptr
45+}
46+
47+func (x *{{.Name}}Base) GoPointer() uintptr {
48+ return x.Ptr
49+}
50+
51+func (x *{{.Name}}Base) SetGoPointer(ptr uintptr) {
52+ x.Ptr = ptr
53+}
54+
55+{{$outer := .}}
56+{{range .Methods -}}
57+{{.Doc}}
58+func (x *{{$outer.Name}}Base) {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
59+ {{if .Ret.Class}}
60+ {{.Name}}Ptr := {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
61+ if {{.Name}}Ptr == 0 {
62+ return nil
63+ }
64+ {{if .Ret.RefSink}}
65+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}Ptr)
66+ {{end}}
67+ {{.Name}}Cls := {{.Ret.Instance}}{}
68+ {{.Name}}Cls.Ptr = {{.Name}}Ptr
69+ return {{.Name}}Cls
70+ {{else if .Ret.Value}}
71+ return {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
72+ {{else}}
73+ {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
74+ {{end}}
75+}
76+{{end}}
77+
78+{{range .Methods -}}
79+var {{.Namespace}}X{{.FullName}} func(uintptr {{convc .Args.Pure.Types}}) {{.Ret.Raw}}
80+{{end}}
81+{{end}}
82+
83+{{range .Aliases -}}
84+{{.Doc}}
85+type {{.Name}} = {{.Value}}
86+{{end}}
87+
88+{{range .Enums -}}
89+{{.Doc}}
90+type {{.Name}} int
91+const (
92+{{$outer := .}}
93+{{range .Values -}}
94+ {{.Doc}}
95+ {{.Name}} {{$outer.Name}} = {{.Value}}
96+{{end}}
97+)
98+{{end}}
99+
100+{{range .Functions -}}
101+var x{{.Name}} func({{conv .Args.Pure.Types}}) {{.Ret.Raw}}
102+
103+{{.Doc}}
104+func {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
105+ {{if .Ret.Class}}
106+ {{.Name}}Ptr := x{{.Name}}({{conv .Args.API.Call}})
107+ if {{.Name}}Ptr == 0 {
108+ return nil
109+ }
110+ {{if .Ret.RefSink}}
111+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}Ptr)
112+ {{end}}
113+ {{.Name}}Cls := {{.Ret.Instance}}{}
114+ {{.Name}}Cls.Ptr = {{.Name}}Ptr
115+ return {{.Name}}Cls
116+ {{else if .Ret.Value}}
117+ return x{{.Name}}({{conv .Args.API.Call}})
118+ {{else}}
119+ x{{.Name}}({{conv .Args.API.Call}})
120+ {{end}}
121+}
122+{{end}}
123+
124+{{range .Classes -}}
125+{{.Doc}}
126+type {{.Name}} struct {
127+ {{.Parent}}
128+ {{if not .Parent}}
129+ Ptr uintptr
130+ {{end}}
131+}
132+
133+{{$outer := .}}
134+func {{.Name}}NewFromInternalPtr(ptr uintptr) *{{.Name}} {
135+ cls := &{{.Name}}{}
136+ cls.Ptr = ptr
137+ return cls
138+}
139+
140+{{range .Constructors -}}
141+var x{{.Name}}{{$outer.Name}} func({{conv .Args.Pure.Types}}) {{.Ret.Raw}}
142+
143+
144+{{.Doc}}
145+func {{.Name}}{{$outer.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
146+ {{.Name}}{{$outer.Name}}Ptr := x{{.Name}}{{$outer.Name}}({{conv .Args.API.Call}})
147+ if {{.Name}}{{$outer.Name}}Ptr == 0 {
148+ return nil
149+ }
150+ {{if .Ret.RefSink}}
151+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}{{$outer.Name}}Ptr)
152+ {{end}}
153+ {{.Name}}{{$outer.Name}}Cls := {{.Ret.Instance}}{}
154+ {{.Name}}{{$outer.Name}}Cls.Ptr = {{.Name}}{{$outer.Name}}Ptr
155+ return {{.Name}}{{$outer.Name}}Cls
156+}
157+{{end}}
158+
159+{{$outer := .}}
160+{{range .Receivers -}}
161+var x{{$outer.Name}}{{.Name}} func(uintptr {{convc .Args.Pure.Types}}) {{.Ret.Raw}}
162+
163+{{.Doc}}
164+func (x *{{$outer.Name}}) {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
165+ {{if .Ret.Class}}
166+ {{.Name}}Ptr := x{{$outer.Name}}{{.Name}}(x.GoPointer() {{convc .Args.API.Call}})
167+ if {{.Name}}Ptr == 0 {
168+ return nil
169+ }
170+ {{if .Ret.RefSink}}
171+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}Ptr)
172+ {{end}}
173+ {{.Name}}Cls := {{.Ret.Instance}}{}
174+ {{.Name}}Cls.Ptr = {{.Name}}Ptr
175+ return {{.Name}}Cls
176+ {{else if .Ret.Value}}
177+ return x{{$outer.Name}}{{.Name}}(x.GoPointer() {{convc .Args.API.Call}})
178+ {{else}}
179+ x{{$outer.Name}}{{.Name}}(x.GoPointer() {{convc .Args.API.Call}})
180+ {{end}}
181+}
182+{{end}}
183+
184+func (c *{{.Name}}) GoPointer() uintptr {
185+ return c.Ptr
186+}
187+
188+func (c *{{.Name}}) SetGoPointer(ptr uintptr) {
189+ c.Ptr = ptr
190+}
191+
192+{{range .Signals -}}
193+
194+{{.Doc}}
195+func (x *{{$outer.Name}}) Connect{{.Name}}(cb func({{$outer.Name}} {{convc .Args.API.Types}}) {{.Ret.Value}}) {
196+ fcb := func(clsPtr uintptr {{convc .Args.Pure.Full}}) {{.Ret.Raw}} {
197+ fa := {{$outer.Name}}{}
198+ fa.Ptr = clsPtr
199+ {{if .Ret.Class}}
200+ {{.Name}}Cls := cb(fa {{convc .Args.Pure.Call}})
201+ return {{.Name}}Cls.Ptr
202+ {{else if .Ret.Value}}
203+ return cb(fa {{convc .Args.Pure.Call}})
204+ {{else}}
205+ cb(fa {{convc .Args.Pure.Call}})
206+ {{end}}
207+ }
208+ {{if $NotGObject}}gobject.{{end}}ObjectConnect(x.GoPointer(), "signal::{{.CName}}", purego.NewCallback(fcb))
209+}
210+{{end}}
211+
212+{{range .Interfaces -}}
213+{{range .Methods -}}
214+{{.Doc}}
215+func (x *{{$outer.Name}}) {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
216+ {{if .Ret.Class}}
217+ {{.Name}}Ptr := {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
218+ if {{.Name}}Ptr == 0 {
219+ return nil
220+ }
221+ {{if .Ret.RefSink}}
222+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}Ptr)
223+ {{end}}
224+ {{.Name}}Cls := {{.Ret.Instance}}{}
225+ {{.Name}}Cls.Ptr = {{.Name}}Ptr
226+ return {{.Name}}Cls
227+ {{else if .Ret.Value}}
228+ return {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
229+ {{else}}
230+ {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
231+ {{end}}
232+}
233+{{end}}
234+{{end}}
235+
236+{{end}}
237+
238+
239+{{if .NeedsInit}}
240+
241+func init() {
242+ lib, err := purego.Dlopen(core.GetPath("{{.PkgEnv}}"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
243+ if err != nil {
244+ panic(err)
245+ }
246+ {{range .Functions -}}
247+ core.PuregoSafeRegister(&x{{.Name}}, lib, "{{.CName}}")
248+ {{end}}
249+ {{range .Classes -}}
250+ {{$cls := .}}
251+ {{range .Constructors -}}
252+ core.PuregoSafeRegister(&x{{.Name}}{{$cls.Name}}, lib, "{{.CName}}")
253+ {{end}}
254+ {{range .Receivers -}}
255+ core.PuregoSafeRegister(&x{{$cls.Name}}{{.Name}}, lib, "{{.CName}}")
256+ {{end}}
257+ {{end}}
258+ {{range .Interfaces -}}
259+ {{range .Methods -}}
260+ core.PuregoSafeRegister(&{{.Namespace}}X{{.FullName}}, lib, "{{.CName}}")
261+ {{end}}
262+ {{end}}
263+}
264+{{end}}
A templates/gobject +94 -0
@@ -0,0 +1,94 @@
1+package gobject
2+
3+import (
4+ "os"
5+ "reflect"
6+
7+ "github.com/jwijenbergh/purego"
8+ "github.com/jwijenbergh/puregotk/internal/core"
9+)
10+
11+type Ptr interface {
12+ GoPointer() uintptr
13+ SetGoPointer(uintptr)
14+}
15+
16+func ConvertPtr(a interface{}) *uintptr {
17+ if a == nil || (reflect.ValueOf(a).Kind() == reflect.Ptr && reflect.ValueOf(a).IsNil()) {
18+ return nil
19+ }
20+ ptr := reflect.ValueOf(a).Elem()
21+ v, ok := ptr.Interface().(Ptr);
22+ if !ok {
23+ panic("not valid")
24+ }
25+ g := v.GoPointer()
26+ return &g
27+}
28+
29+func IncreaseRef(a uintptr) {
30+ xObjectRefSink(a)
31+}
32+
33+func ObjectConnect(a uintptr, b string, c ...interface{}) uintptr {
34+ return xObjectConnect(a, b, c...)
35+}
36+
37+func (o Object) Cast(v Ptr) {
38+ v.SetGoPointer(o.GoPointer())
39+}
40+
41+// NewCallback is an alias to purego.NewCallback
42+func NewCallback(fn interface{}) uintptr {
43+ return purego.NewCallback(fn)
44+}
45+
46+// types
47+const (
48+ TypeInvalidVal Type = 0
49+ TypeNoneVal = 1 << 2
50+ TypeInterfaceVal = 2 << 2
51+ TypeCharVal = 3 << 2
52+ TypeUcharVal = 4 << 2
53+ TypeBooleanVal = 5 << 2
54+ TypeIntVal = 6 << 2
55+ TypeUintVal = 7 << 2
56+ TypeLongVal = 8 << 2
57+ TypeUlongVal = 9 << 2
58+ TypeInt64Val = 10 << 2
59+ TypeUint64Val = 11 << 2
60+ TypeEnumVal = 12 << 2
61+ TypeFlagsVal = 13 << 2
62+ TypeFloatVal = 14 << 2
63+ TypeDoubleVal = 15 << 2
64+ TypeStringVal = 16 << 2
65+ TypePointerVal = 17 << 2
66+ TypeBoxedVal = 18 << 2
67+ TypeParamVal = 19 << 2
68+ TypeObjectVal = 20 << 2
69+ TypeReservedGLibLastVal = 31 << 2
70+ TypeReservedBseFirstVal = 32 << 2
71+ TypeReservedBseLastVal = 48 << 2
72+ TypeReservedUserFirstVal = 49 << 2
73+)
74+
75+var xValueDupString func(*Value) string
76+
77+func (v *Value) String() string {
78+ return xValueDupString(v)
79+}
80+
81+var xValueGetInt func(*Value) int
82+
83+func (v *Value) Int() int {
84+ return xValueGetInt(v)
85+}
86+
87+func init() {
88+ lib, err := purego.Dlopen(os.Getenv("PUREGOTK_GTK_PATH"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
89+ if err != nil {
90+ panic(err)
91+ }
92+ core.PuregoSafeRegister(&xValueDupString, lib, "g_value_dup_string")
93+ core.PuregoSafeRegister(&xValueGetInt, lib, "g_value_get_int")
94+}
A v4/adw/adw-about-window.go +1220 -0
@@ -0,0 +1,1220 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gsk"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type AboutWindowClass struct {
14+ ParentClass uintptr
15+}
16+
17+var xShowAboutWindow func(uintptr, string, ...interface{})
18+
19+// A convenience function for showing an application’s about window.
20+func ShowAboutWindow(ParentVar *gtk.Window, FirstPropertyNameVar string, varArgs ...interface{}) {
21+
22+ xShowAboutWindow(ParentVar.GoPointer(), FirstPropertyNameVar, varArgs...)
23+
24+}
25+
26+// A window showing information about the application.
27+//
28+// &lt;picture&gt;
29+//
30+// &lt;source srcset="about-window-dark.png" media="(prefers-color-scheme: dark)"&gt;
31+// &lt;img src="about-window.png" alt="about-window"&gt;
32+//
33+// &lt;/picture&gt;
34+//
35+// An about window is typically opened when the user activates the `About …`
36+// item in the application's primary menu. All parts of the window are optional.
37+//
38+// ## Main page
39+//
40+// `AdwAboutWindow` prominently displays the application's icon, name, developer
41+// name and version. They can be set with the [property@AboutWindow:application-icon],
42+// [property@AboutWindow:application-name],
43+// [property@AboutWindow:developer-name] and [property@AboutWindow:version]
44+// respectively.
45+//
46+// ## What's New
47+//
48+// `AdwAboutWindow` provides a way for applications to display their release
49+// notes, set with the [property@AboutWindow:release-notes] property.
50+//
51+// Release notes are formatted the same way as
52+// [AppStream descriptions](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description).
53+//
54+// The supported formatting options are:
55+//
56+// * Paragraph (`&lt;p&gt;`)
57+// * Ordered list (`&lt;ol&gt;`), with list items (`&lt;li&gt;`)
58+// * Unordered list (`&lt;ul&gt;`), with list items (`&lt;li&gt;`)
59+//
60+// Within paragraphs and list items, emphasis (`&lt;em&gt;`) and inline code
61+// (`&lt;code&gt;`) text styles are supported. The emphasis is rendered in italic,
62+// while inline code is shown in a monospaced font.
63+//
64+// Any text outside paragraphs or list items is ignored.
65+//
66+// Nested lists are not supported.
67+//
68+// Only one version can be shown at a time. By default, the displayed version
69+// number matches [property@AboutWindow:version]. Use
70+// [property@AboutWindow:release-notes-version] to override it.
71+//
72+// ## Details
73+//
74+// The Details page displays the application comments and links.
75+//
76+// The comments can be set with the [property@AboutWindow:comments] property.
77+// Unlike [property@Gtk.AboutDialog:comments], this string can be long and
78+// detailed. It can also contain links and Pango markup.
79+//
80+// To set the application website, use [property@AboutWindow:website].
81+// To add extra links below the website, use [method@AboutWindow.add_link].
82+//
83+// If the Details page doesn't have any other content besides website, the
84+// website will be displayed on the main page instead.
85+//
86+// ## Troubleshooting
87+//
88+// `AdwAboutWindow` displays the following two links on the main page:
89+//
90+// * Support Questions, set with the [property@AboutWindow:support-url] property,
91+// * Report an Issue, set with the [property@AboutWindow:issue-url] property.
92+//
93+// Additionally, applications can provide debugging information. It will be
94+// shown separately on the Troubleshooting page. Use the
95+// [property@AboutWindow:debug-info] property to specify it.
96+//
97+// It's intended to be attached to issue reports when reporting issues against
98+// the application. As such, it cannot contain markup or links.
99+//
100+// `AdwAboutWindow` provides a quick way to save debug information to a file.
101+// When saving, [property@AboutWindow:debug-info-filename] would be used as
102+// the suggested filename.
103+//
104+// ## Credits and Acknowledgements
105+//
106+// The Credits page has the following default sections:
107+//
108+// * Developers, set with the [property@AboutWindow:developers] property,
109+// * Designers, set with the [property@AboutWindow:designers] property,
110+// * Artists, set with the [property@AboutWindow:artists] property,
111+// * Documenters, set with the [property@AboutWindow:documenters] property,
112+// * Translators, set with the [property@AboutWindow:translator-credits] property.
113+//
114+// When setting translator credits, use the strings `"translator-credits"` or
115+// `"translator_credits"` and mark them as translatable.
116+//
117+// The default sections that don't contain any names won't be displayed.
118+//
119+// The Credits page can also contain an arbitrary number of extra sections below
120+// the default ones. Use [method@AboutWindow.add_credit_section] to add them.
121+//
122+// The Acknowledgements page can be used to acknowledge additional people and
123+// organizations for their non-development contributions. Use
124+// [method@AboutWindow.add_acknowledgement_section] to add sections to it. For
125+// example, it can be used to list backers in a crowdfunded project or to give
126+// special thanks.
127+//
128+// Each of the people or organizations can have an email address or a website
129+// specified. To add a email address, use a string like
130+// `Edgar Allan Poe &lt;edgar@poe.com&gt;`. To specify a website with a title, use a
131+// string like `The GNOME Project https://www.gnome.org`:
132+//
133+// &lt;picture&gt;
134+//
135+// &lt;source srcset="about-window-credits-dark.png" media="(prefers-color-scheme: dark)"&gt;
136+// &lt;img src="about-window-credits.png" alt="about-window-credits"&gt;
137+//
138+// &lt;/picture&gt;
139+//
140+// ## Legal
141+//
142+// The Legal page displays the copyright and licensing information for the
143+// application and other modules.
144+//
145+// The copyright string is set with the [property@AboutWindow:copyright]
146+// property and should be a short string of one or two lines, for example:
147+// `© 2022 Example`.
148+//
149+// Licensing information can be quickly set from a list of known licenses with
150+// the [property@AboutWindow:license-type] property. If the application's
151+// license is not in the list, [property@AboutWindow:license] can be used
152+// instead.
153+//
154+// To add information about other modules, such as application dependencies or
155+// data, use [method@AboutWindow.add_legal_section].
156+//
157+// ## Constructing
158+//
159+// To make constructing an `AdwAboutWindow` as convenient as possible, you can
160+// use the function [func@show_about_window] which constructs and shows a
161+// window.
162+//
163+// ```c
164+// static void
165+// show_about (GtkApplication *app)
166+//
167+// {
168+// const char *developers[] = {
169+// "Angela Avery",
170+// NULL
171+// };
172+//
173+// const char *designers[] = {
174+// "GNOME Design Team",
175+// NULL
176+// };
177+//
178+// adw_show_about_window (gtk_application_get_active_window (app),
179+// "application-name", _("Example"),
180+// "application-icon", "org.example.App",
181+// "version", "1.2.3",
182+// "copyright", "© 2022 Angela Avery",
183+// "issue-url", "https://gitlab.gnome.org/example/example/-/issues/new",
184+// "license-type", GTK_LICENSE_GPL_3_0,
185+// "developers", developers,
186+// "designers", designers,
187+// "translator-credits", _("translator-credits"),
188+// NULL);
189+// }
190+//
191+// ```
192+//
193+// ## CSS nodes
194+//
195+// `AdwAboutWindow` has a main CSS node with the name `window` and the
196+// style class `.about`.
197+type AboutWindow struct {
198+ Window
199+}
200+
201+func AboutWindowNewFromInternalPtr(ptr uintptr) *AboutWindow {
202+ cls := &AboutWindow{}
203+ cls.Ptr = ptr
204+ return cls
205+}
206+
207+var xNewAboutWindow func() uintptr
208+
209+// Creates a new `AdwAboutWindow`.
210+func NewAboutWindow() *gtk.Widget {
211+ NewAboutWindowPtr := xNewAboutWindow()
212+ if NewAboutWindowPtr == 0 {
213+ return nil
214+ }
215+
216+ gobject.IncreaseRef(NewAboutWindowPtr)
217+
218+ NewAboutWindowCls := &gtk.Widget{}
219+ NewAboutWindowCls.Ptr = NewAboutWindowPtr
220+ return NewAboutWindowCls
221+}
222+
223+var xAboutWindowAddAcknowledgementSection func(uintptr, string, uintptr)
224+
225+// Adds a section to the Acknowledgements page.
226+//
227+// This can be used to acknowledge additional people and organizations for their
228+// non-development contributions - for example, backers in a crowdfunded
229+// project.
230+//
231+// Each name may contain email addresses and URLs, see the introduction for more
232+// details.
233+//
234+// See also:
235+//
236+// * [property@AboutWindow:developers]
237+// * [property@AboutWindow:designers]
238+// * [property@AboutWindow:artists]
239+// * [property@AboutWindow:documenters]
240+// * [property@AboutWindow:translator-credits]
241+// * [method@AboutWindow.add_credit_section]
242+func (x *AboutWindow) AddAcknowledgementSection(NameVar string, PeopleVar uintptr) {
243+
244+ xAboutWindowAddAcknowledgementSection(x.GoPointer(), NameVar, PeopleVar)
245+
246+}
247+
248+var xAboutWindowAddCreditSection func(uintptr, string, uintptr)
249+
250+// Adds an extra section to the Credits page.
251+//
252+// Extra sections are displayed below the standard categories.
253+//
254+// Each name may contain email addresses and URLs, see the introduction for more
255+// details.
256+//
257+// See also:
258+//
259+// * [property@AboutWindow:developers]
260+// * [property@AboutWindow:designers]
261+// * [property@AboutWindow:artists]
262+// * [property@AboutWindow:documenters]
263+// * [property@AboutWindow:translator-credits]
264+// * [method@AboutWindow.add_acknowledgement_section]
265+func (x *AboutWindow) AddCreditSection(NameVar string, PeopleVar uintptr) {
266+
267+ xAboutWindowAddCreditSection(x.GoPointer(), NameVar, PeopleVar)
268+
269+}
270+
271+var xAboutWindowAddLegalSection func(uintptr, string, string, gtk.License, string)
272+
273+// Adds an extra section to the Legal page.
274+//
275+// Extra sections will be displayed below the application's own information.
276+//
277+// The parameters @copyright, @license_type and @license will be used to present
278+// the it the same way as [property@AboutWindow:copyright],
279+// [property@AboutWindow:license-type] and [property@AboutWindow:license] are
280+// for the application's own information.
281+//
282+// See those properties for more details.
283+//
284+// This can be useful to attribute the application dependencies or data.
285+//
286+// Examples:
287+//
288+// ```c
289+// adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
290+//
291+// _("Copyright and a known license"),
292+// "© 2022 Example",
293+// GTK_LICENSE_LGPL_2_1,
294+// NULL);
295+//
296+// adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
297+//
298+// _("Copyright and custom license"),
299+// "© 2022 Example",
300+// GTK_LICENSE_CUSTOM,
301+// "Custom license text");
302+//
303+// adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
304+//
305+// _("Copyright only"),
306+// "© 2022 Example",
307+// GTK_LICENSE_UNKNOWN,
308+// NULL);
309+//
310+// adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
311+//
312+// _("Custom license only"),
313+// NULL,
314+// GTK_LICENSE_CUSTOM,
315+// "Something completely custom here.");
316+//
317+// ```
318+func (x *AboutWindow) AddLegalSection(TitleVar string, CopyrightVar string, LicenseTypeVar gtk.License, LicenseVar string) {
319+
320+ xAboutWindowAddLegalSection(x.GoPointer(), TitleVar, CopyrightVar, LicenseTypeVar, LicenseVar)
321+
322+}
323+
324+var xAboutWindowAddLink func(uintptr, string, string)
325+
326+// Adds an extra link to the Details page.
327+//
328+// Extra links are displayed under the comment and website.
329+//
330+// Underlines in @title will be interpreted as indicating a mnemonic.
331+//
332+// See [property@AboutWindow:website].
333+func (x *AboutWindow) AddLink(TitleVar string, UrlVar string) {
334+
335+ xAboutWindowAddLink(x.GoPointer(), TitleVar, UrlVar)
336+
337+}
338+
339+var xAboutWindowGetApplicationIcon func(uintptr) string
340+
341+// Gets the name of the application icon for @self.
342+func (x *AboutWindow) GetApplicationIcon() string {
343+
344+ return xAboutWindowGetApplicationIcon(x.GoPointer())
345+
346+}
347+
348+var xAboutWindowGetApplicationName func(uintptr) string
349+
350+// Gets the application name for @self.
351+func (x *AboutWindow) GetApplicationName() string {
352+
353+ return xAboutWindowGetApplicationName(x.GoPointer())
354+
355+}
356+
357+var xAboutWindowGetArtists func(uintptr) uintptr
358+
359+// Gets the list of artists of the application.
360+func (x *AboutWindow) GetArtists() uintptr {
361+
362+ return xAboutWindowGetArtists(x.GoPointer())
363+
364+}
365+
366+var xAboutWindowGetComments func(uintptr) string
367+
368+// Gets the comments about the application.
369+func (x *AboutWindow) GetComments() string {
370+
371+ return xAboutWindowGetComments(x.GoPointer())
372+
373+}
374+
375+var xAboutWindowGetCopyright func(uintptr) string
376+
377+// Gets the copyright information for @self.
378+func (x *AboutWindow) GetCopyright() string {
379+
380+ return xAboutWindowGetCopyright(x.GoPointer())
381+
382+}
383+
384+var xAboutWindowGetDebugInfo func(uintptr) string
385+
386+// Gets the debug information for @self.
387+func (x *AboutWindow) GetDebugInfo() string {
388+
389+ return xAboutWindowGetDebugInfo(x.GoPointer())
390+
391+}
392+
393+var xAboutWindowGetDebugInfoFilename func(uintptr) string
394+
395+// Gets the debug information filename for @self.
396+func (x *AboutWindow) GetDebugInfoFilename() string {
397+
398+ return xAboutWindowGetDebugInfoFilename(x.GoPointer())
399+
400+}
401+
402+var xAboutWindowGetDesigners func(uintptr) uintptr
403+
404+// Gets the list of designers of the application.
405+func (x *AboutWindow) GetDesigners() uintptr {
406+
407+ return xAboutWindowGetDesigners(x.GoPointer())
408+
409+}
410+
411+var xAboutWindowGetDeveloperName func(uintptr) string
412+
413+// Gets the developer name for @self.
414+func (x *AboutWindow) GetDeveloperName() string {
415+
416+ return xAboutWindowGetDeveloperName(x.GoPointer())
417+
418+}
419+
420+var xAboutWindowGetDevelopers func(uintptr) uintptr
421+
422+// Gets the list of developers of the application.
423+func (x *AboutWindow) GetDevelopers() uintptr {
424+
425+ return xAboutWindowGetDevelopers(x.GoPointer())
426+
427+}
428+
429+var xAboutWindowGetDocumenters func(uintptr) uintptr
430+
431+// Gets the list of documenters of the application.
432+func (x *AboutWindow) GetDocumenters() uintptr {
433+
434+ return xAboutWindowGetDocumenters(x.GoPointer())
435+
436+}
437+
438+var xAboutWindowGetIssueUrl func(uintptr) string
439+
440+// Gets the issue tracker URL for @self.
441+func (x *AboutWindow) GetIssueUrl() string {
442+
443+ return xAboutWindowGetIssueUrl(x.GoPointer())
444+
445+}
446+
447+var xAboutWindowGetLicense func(uintptr) string
448+
449+// Gets the license for @self.
450+func (x *AboutWindow) GetLicense() string {
451+
452+ return xAboutWindowGetLicense(x.GoPointer())
453+
454+}
455+
456+var xAboutWindowGetLicenseType func(uintptr) gtk.License
457+
458+// Gets the license type for @self.
459+func (x *AboutWindow) GetLicenseType() gtk.License {
460+
461+ return xAboutWindowGetLicenseType(x.GoPointer())
462+
463+}
464+
465+var xAboutWindowGetReleaseNotes func(uintptr) string
466+
467+// Gets the release notes for @self.
468+func (x *AboutWindow) GetReleaseNotes() string {
469+
470+ return xAboutWindowGetReleaseNotes(x.GoPointer())
471+
472+}
473+
474+var xAboutWindowGetReleaseNotesVersion func(uintptr) string
475+
476+// Gets the version described by the application's release notes.
477+func (x *AboutWindow) GetReleaseNotesVersion() string {
478+
479+ return xAboutWindowGetReleaseNotesVersion(x.GoPointer())
480+
481+}
482+
483+var xAboutWindowGetSupportUrl func(uintptr) string
484+
485+// Gets the URL of the support page for @self.
486+func (x *AboutWindow) GetSupportUrl() string {
487+
488+ return xAboutWindowGetSupportUrl(x.GoPointer())
489+
490+}
491+
492+var xAboutWindowGetTranslatorCredits func(uintptr) string
493+
494+// Gets the translator credits string.
495+func (x *AboutWindow) GetTranslatorCredits() string {
496+
497+ return xAboutWindowGetTranslatorCredits(x.GoPointer())
498+
499+}
500+
501+var xAboutWindowGetVersion func(uintptr) string
502+
503+// Gets the version for @self.
504+func (x *AboutWindow) GetVersion() string {
505+
506+ return xAboutWindowGetVersion(x.GoPointer())
507+
508+}
509+
510+var xAboutWindowGetWebsite func(uintptr) string
511+
512+// Gets the application website URL for @self.
513+func (x *AboutWindow) GetWebsite() string {
514+
515+ return xAboutWindowGetWebsite(x.GoPointer())
516+
517+}
518+
519+var xAboutWindowSetApplicationIcon func(uintptr, string)
520+
521+// Sets the name of the application icon for @self.
522+//
523+// The icon is displayed at the top of the main page.
524+func (x *AboutWindow) SetApplicationIcon(ApplicationIconVar string) {
525+
526+ xAboutWindowSetApplicationIcon(x.GoPointer(), ApplicationIconVar)
527+
528+}
529+
530+var xAboutWindowSetApplicationName func(uintptr, string)
531+
532+// Sets the application name for @self.
533+//
534+// The name is displayed at the top of the main page.
535+func (x *AboutWindow) SetApplicationName(ApplicationNameVar string) {
536+
537+ xAboutWindowSetApplicationName(x.GoPointer(), ApplicationNameVar)
538+
539+}
540+
541+var xAboutWindowSetArtists func(uintptr, uintptr)
542+
543+// Sets the list of artists of the application.
544+//
545+// It will be displayed on the Credits page.
546+//
547+// Each name may contain email addresses and URLs, see the introduction for more
548+// details.
549+//
550+// See also:
551+//
552+// * [property@AboutWindow:developers]
553+// * [property@AboutWindow:designers]
554+// * [property@AboutWindow:documenters]
555+// * [property@AboutWindow:translator-credits]
556+// * [method@AboutWindow.add_credit_section]
557+// * [method@AboutWindow.add_acknowledgement_section]
558+func (x *AboutWindow) SetArtists(ArtistsVar uintptr) {
559+
560+ xAboutWindowSetArtists(x.GoPointer(), ArtistsVar)
561+
562+}
563+
564+var xAboutWindowSetComments func(uintptr, string)
565+
566+// Sets the comments about the application.
567+//
568+// Comments will be shown on the Details page, above links.
569+//
570+// Unlike [property@Gtk.AboutDialog:comments], this string can be long and
571+// detailed. It can also contain links and Pango markup.
572+func (x *AboutWindow) SetComments(CommentsVar string) {
573+
574+ xAboutWindowSetComments(x.GoPointer(), CommentsVar)
575+
576+}
577+
578+var xAboutWindowSetCopyright func(uintptr, string)
579+
580+// Sets the copyright information for @self.
581+//
582+// This should be a short string of one or two lines, for example:
583+// `© 2022 Example`.
584+//
585+// The copyright information will be displayed on the Legal page, before the
586+// application license.
587+//
588+// [method@AboutWindow.add_legal_section] can be used to add copyright
589+// information for the application dependencies or other components.
590+func (x *AboutWindow) SetCopyright(CopyrightVar string) {
591+
592+ xAboutWindowSetCopyright(x.GoPointer(), CopyrightVar)
593+
594+}
595+
596+var xAboutWindowSetDebugInfo func(uintptr, string)
597+
598+// Sets the debug information for @self.
599+//
600+// Debug information will be shown on the Troubleshooting page. It's intended
601+// to be attached to issue reports when reporting issues against the
602+// application.
603+//
604+// `AdwAboutWindow` provides a quick way to save debug information to a file.
605+// When saving, [property@AboutWindow:debug-info-filename] would be used as
606+// the suggested filename.
607+//
608+// Debug information cannot contain markup or links.
609+func (x *AboutWindow) SetDebugInfo(DebugInfoVar string) {
610+
611+ xAboutWindowSetDebugInfo(x.GoPointer(), DebugInfoVar)
612+
613+}
614+
615+var xAboutWindowSetDebugInfoFilename func(uintptr, string)
616+
617+// Sets the debug information filename for @self.
618+//
619+// It will be used as the suggested filename when saving debug information to a
620+// file.
621+//
622+// See [property@AboutWindow:debug-info].
623+func (x *AboutWindow) SetDebugInfoFilename(FilenameVar string) {
624+
625+ xAboutWindowSetDebugInfoFilename(x.GoPointer(), FilenameVar)
626+
627+}
628+
629+var xAboutWindowSetDesigners func(uintptr, uintptr)
630+
631+// Sets the list of designers of the application.
632+//
633+// It will be displayed on the Credits page.
634+//
635+// Each name may contain email addresses and URLs, see the introduction for more
636+// details.
637+//
638+// See also:
639+//
640+// * [property@AboutWindow:developers]
641+// * [property@AboutWindow:artists]
642+// * [property@AboutWindow:documenters]
643+// * [property@AboutWindow:translator-credits]
644+// * [method@AboutWindow.add_credit_section]
645+// * [method@AboutWindow.add_acknowledgement_section]
646+func (x *AboutWindow) SetDesigners(DesignersVar uintptr) {
647+
648+ xAboutWindowSetDesigners(x.GoPointer(), DesignersVar)
649+
650+}
651+
652+var xAboutWindowSetDeveloperName func(uintptr, string)
653+
654+// Sets the developer name for @self.
655+//
656+// The developer name is displayed on the main page, under the application name.
657+//
658+// If the application is developed by multiple people, the developer name can be
659+// set to values like "AppName team", "AppName developers" or
660+// "The AppName project", and the individual contributors can be listed on the
661+// Credits page, with [property@AboutWindow:developers] and related properties.
662+func (x *AboutWindow) SetDeveloperName(DeveloperNameVar string) {
663+
664+ xAboutWindowSetDeveloperName(x.GoPointer(), DeveloperNameVar)
665+
666+}
667+
668+var xAboutWindowSetDevelopers func(uintptr, uintptr)
669+
670+// Sets the list of developers of the application.
671+//
672+// It will be displayed on the Credits page.
673+//
674+// Each name may contain email addresses and URLs, see the introduction for more
675+// details.
676+//
677+// See also:
678+//
679+// * [property@AboutWindow:designers]
680+// * [property@AboutWindow:artists]
681+// * [property@AboutWindow:documenters]
682+// * [property@AboutWindow:translator-credits]
683+// * [method@AboutWindow.add_credit_section]
684+// * [method@AboutWindow.add_acknowledgement_section]
685+func (x *AboutWindow) SetDevelopers(DevelopersVar uintptr) {
686+
687+ xAboutWindowSetDevelopers(x.GoPointer(), DevelopersVar)
688+
689+}
690+
691+var xAboutWindowSetDocumenters func(uintptr, uintptr)
692+
693+// Sets the list of documenters of the application.
694+//
695+// It will be displayed on the Credits page.
696+//
697+// Each name may contain email addresses and URLs, see the introduction for more
698+// details.
699+//
700+// See also:
701+//
702+// * [property@AboutWindow:developers]
703+// * [property@AboutWindow:designers]
704+// * [property@AboutWindow:artists]
705+// * [property@AboutWindow:translator-credits]
706+// * [method@AboutWindow.add_credit_section]
707+// * [method@AboutWindow.add_acknowledgement_section]
708+func (x *AboutWindow) SetDocumenters(DocumentersVar uintptr) {
709+
710+ xAboutWindowSetDocumenters(x.GoPointer(), DocumentersVar)
711+
712+}
713+
714+var xAboutWindowSetIssueUrl func(uintptr, string)
715+
716+// Sets the issue tracker URL for @self.
717+//
718+// The issue tracker link is displayed on the main page.
719+func (x *AboutWindow) SetIssueUrl(IssueUrlVar string) {
720+
721+ xAboutWindowSetIssueUrl(x.GoPointer(), IssueUrlVar)
722+
723+}
724+
725+var xAboutWindowSetLicense func(uintptr, string)
726+
727+// Sets the license for @self.
728+//
729+// This can be used to set a custom text for the license if it can't be set via
730+// [property@AboutWindow:license-type].
731+//
732+// When set, [property@AboutWindow:license-type] will be set to
733+// `GTK_LICENSE_CUSTOM`.
734+//
735+// The license text will be displayed on the Legal page, below the copyright
736+// information.
737+//
738+// License text can contain Pango markup and links.
739+//
740+// [method@AboutWindow.add_legal_section] can be used to add license information
741+// for the application dependencies or other components.
742+func (x *AboutWindow) SetLicense(LicenseVar string) {
743+
744+ xAboutWindowSetLicense(x.GoPointer(), LicenseVar)
745+
746+}
747+
748+var xAboutWindowSetLicenseType func(uintptr, gtk.License)
749+
750+// Sets the license for @self from a list of known licenses.
751+//
752+// If the application's license is not in the list,
753+// [property@AboutWindow:license] can be used instead. The license type will be
754+// automatically set to `GTK_LICENSE_CUSTOM` in that case.
755+//
756+// If @license_type is `GTK_LICENSE_UNKNOWN`, no information will be displayed.
757+//
758+// If @license_type is different from `GTK_LICENSE_CUSTOM`.
759+// [property@AboutWindow:license] will be cleared out.
760+//
761+// The license description will be displayed on the Legal page, below the
762+// copyright information.
763+//
764+// [method@AboutWindow.add_legal_section] can be used to add license information
765+// for the application dependencies or other components.
766+func (x *AboutWindow) SetLicenseType(LicenseTypeVar gtk.License) {
767+
768+ xAboutWindowSetLicenseType(x.GoPointer(), LicenseTypeVar)
769+
770+}
771+
772+var xAboutWindowSetReleaseNotes func(uintptr, string)
773+
774+// Sets the release notes for @self.
775+//
776+// Release notes are displayed on the the What's New page.
777+//
778+// Release notes are formatted the same way as
779+// [AppStream descriptions](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description).
780+//
781+// The supported formatting options are:
782+//
783+// * Paragraph (`&lt;p&gt;`)
784+// * Ordered list (`&lt;ol&gt;`), with list items (`&lt;li&gt;`)
785+// * Unordered list (`&lt;ul&gt;`), with list items (`&lt;li&gt;`)
786+//
787+// Within paragraphs and list items, emphasis (`&lt;em&gt;`) and inline code
788+// (`&lt;code&gt;`) text styles are supported. The emphasis is rendered in italic,
789+// while inline code is shown in a monospaced font.
790+//
791+// Any text outside paragraphs or list items is ignored.
792+//
793+// Nested lists are not supported.
794+//
795+// `AdwAboutWindow` displays the version above the release notes. If set, the
796+// [property@AboutWindow:release-notes-version] of the property will be used
797+// as the version; otherwise, [property@AboutWindow:version] is used.
798+func (x *AboutWindow) SetReleaseNotes(ReleaseNotesVar string) {
799+
800+ xAboutWindowSetReleaseNotes(x.GoPointer(), ReleaseNotesVar)
801+
802+}
803+
804+var xAboutWindowSetReleaseNotesVersion func(uintptr, string)
805+
806+// Sets the version described by the application's release notes.
807+//
808+// The release notes version is displayed on the What's New page, above the
809+// release notes.
810+//
811+// If not set, [property@AboutWindow:version] will be used instead.
812+//
813+// For example, an application with the current version 2.0.2 might want to
814+// keep the release notes from 2.0.0, and set the release notes version
815+// accordingly.
816+//
817+// See [property@AboutWindow:release-notes].
818+func (x *AboutWindow) SetReleaseNotesVersion(VersionVar string) {
819+
820+ xAboutWindowSetReleaseNotesVersion(x.GoPointer(), VersionVar)
821+
822+}
823+
824+var xAboutWindowSetSupportUrl func(uintptr, string)
825+
826+// Sets the URL of the support page for @self.
827+//
828+// The support page link is displayed on the main page.
829+func (x *AboutWindow) SetSupportUrl(SupportUrlVar string) {
830+
831+ xAboutWindowSetSupportUrl(x.GoPointer(), SupportUrlVar)
832+
833+}
834+
835+var xAboutWindowSetTranslatorCredits func(uintptr, string)
836+
837+// Sets the translator credits string.
838+//
839+// It will be displayed on the Credits page.
840+//
841+// This string should be `"translator-credits"` or `"translator_credits"` and
842+// should be marked as translatable.
843+//
844+// The string may contain email addresses and URLs, see the introduction for
845+// more details.
846+//
847+// See also:
848+//
849+// * [property@AboutWindow:developers]
850+// * [property@AboutWindow:designers]
851+// * [property@AboutWindow:artists]
852+// * [property@AboutWindow:documenters]
853+// * [method@AboutWindow.add_credit_section]
854+// * [method@AboutWindow.add_acknowledgement_section]
855+func (x *AboutWindow) SetTranslatorCredits(TranslatorCreditsVar string) {
856+
857+ xAboutWindowSetTranslatorCredits(x.GoPointer(), TranslatorCreditsVar)
858+
859+}
860+
861+var xAboutWindowSetVersion func(uintptr, string)
862+
863+// Sets the version for @self.
864+//
865+// The version is displayed on the main page.
866+//
867+// If [property@AboutWindow:release-notes-version] is not set, the version will
868+// also be displayed above the release notes on the What's New page.
869+func (x *AboutWindow) SetVersion(VersionVar string) {
870+
871+ xAboutWindowSetVersion(x.GoPointer(), VersionVar)
872+
873+}
874+
875+var xAboutWindowSetWebsite func(uintptr, string)
876+
877+// Sets the application website URL for @self.
878+//
879+// Website is displayed on the Details page, below comments, or on the main page
880+// if the Details page doesn't have any other content.
881+//
882+// Applications can add other links below, see [method@AboutWindow.add_link].
883+func (x *AboutWindow) SetWebsite(WebsiteVar string) {
884+
885+ xAboutWindowSetWebsite(x.GoPointer(), WebsiteVar)
886+
887+}
888+
889+func (c *AboutWindow) GoPointer() uintptr {
890+ return c.Ptr
891+}
892+
893+func (c *AboutWindow) SetGoPointer(ptr uintptr) {
894+ c.Ptr = ptr
895+}
896+
897+// Emitted when a URL is activated.
898+//
899+// Applications may connect to it to override the default behavior, which is
900+// to call [func@Gtk.show_uri].
901+func (x *AboutWindow) ConnectActivateLink(cb func(AboutWindow, string) bool) {
902+ fcb := func(clsPtr uintptr, UriVarp string) bool {
903+ fa := AboutWindow{}
904+ fa.Ptr = clsPtr
905+
906+ return cb(fa, UriVarp)
907+
908+ }
909+ gobject.ObjectConnect(x.GoPointer(), "signal::activate-link", purego.NewCallback(fcb))
910+}
911+
912+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
913+func (x *AboutWindow) GetAccessibleRole() gtk.AccessibleRole {
914+
915+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
916+
917+}
918+
919+// Resets the accessible @property to its default value.
920+func (x *AboutWindow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
921+
922+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
923+
924+}
925+
926+// Resets the accessible @relation to its default value.
927+func (x *AboutWindow) ResetRelation(RelationVar gtk.AccessibleRelation) {
928+
929+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
930+
931+}
932+
933+// Resets the accessible @state to its default value.
934+func (x *AboutWindow) ResetState(StateVar gtk.AccessibleState) {
935+
936+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
937+
938+}
939+
940+// Updates a list of accessible properties.
941+//
942+// See the [enum@Gtk.AccessibleProperty] documentation for the
943+// value types of accessible properties.
944+//
945+// This function should be called by `GtkWidget` types whenever
946+// an accessible property change must be communicated to assistive
947+// technologies.
948+//
949+// Example:
950+// ```c
951+// value = gtk_adjustment_get_value (adjustment);
952+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
953+//
954+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
955+// -1);
956+//
957+// ```
958+func (x *AboutWindow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
959+
960+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
961+
962+}
963+
964+// Updates an array of accessible properties.
965+//
966+// This function should be called by `GtkWidget` types whenever an accessible
967+// property change must be communicated to assistive technologies.
968+//
969+// This function is meant to be used by language bindings.
970+func (x *AboutWindow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
971+
972+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
973+
974+}
975+
976+// Updates a list of accessible relations.
977+//
978+// This function should be called by `GtkWidget` types whenever an accessible
979+// relation change must be communicated to assistive technologies.
980+//
981+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
982+// you should pass each reference individually, followed by %NULL, e.g.
983+//
984+// ```c
985+// gtk_accessible_update_relation (accessible,
986+//
987+// GTK_ACCESSIBLE_RELATION_CONTROLS,
988+// ref1, NULL,
989+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
990+// ref1, ref2, ref3, NULL,
991+// -1);
992+//
993+// ```
994+func (x *AboutWindow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
995+
996+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
997+
998+}
999+
1000+// Updates an array of accessible relations.
1001+//
1002+// This function should be called by `GtkWidget` types whenever an accessible
1003+// relation change must be communicated to assistive technologies.
1004+//
1005+// This function is meant to be used by language bindings.
1006+func (x *AboutWindow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
1007+
1008+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
1009+
1010+}
1011+
1012+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
1013+// documentation for the value types of accessible states.
1014+//
1015+// This function should be called by `GtkWidget` types whenever an accessible
1016+// state change must be communicated to assistive technologies.
1017+//
1018+// Example:
1019+// ```c
1020+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
1021+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
1022+//
1023+// GTK_ACCESSIBLE_STATE_CHECKED, value,
1024+// -1);
1025+//
1026+// ```
1027+func (x *AboutWindow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
1028+
1029+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
1030+
1031+}
1032+
1033+// Updates an array of accessible states.
1034+//
1035+// This function should be called by `GtkWidget` types whenever an accessible
1036+// state change must be communicated to assistive technologies.
1037+//
1038+// This function is meant to be used by language bindings.
1039+func (x *AboutWindow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
1040+
1041+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
1042+
1043+}
1044+
1045+// Gets the ID of the @buildable object.
1046+//
1047+// `GtkBuilder` sets the name based on the ID attribute
1048+// of the &lt;object&gt; tag used to construct the @buildable.
1049+func (x *AboutWindow) GetBuildableId() string {
1050+
1051+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
1052+
1053+}
1054+
1055+// Returns the renderer that is used for this `GtkNative`.
1056+func (x *AboutWindow) GetRenderer() *gsk.Renderer {
1057+
1058+ GetRendererPtr := gtk.XGtkNativeGetRenderer(x.GoPointer())
1059+ if GetRendererPtr == 0 {
1060+ return nil
1061+ }
1062+
1063+ gobject.IncreaseRef(GetRendererPtr)
1064+
1065+ GetRendererCls := &gsk.Renderer{}
1066+ GetRendererCls.Ptr = GetRendererPtr
1067+ return GetRendererCls
1068+
1069+}
1070+
1071+// Returns the surface of this `GtkNative`.
1072+func (x *AboutWindow) GetSurface() *gdk.Surface {
1073+
1074+ GetSurfacePtr := gtk.XGtkNativeGetSurface(x.GoPointer())
1075+ if GetSurfacePtr == 0 {
1076+ return nil
1077+ }
1078+
1079+ gobject.IncreaseRef(GetSurfacePtr)
1080+
1081+ GetSurfaceCls := &gdk.Surface{}
1082+ GetSurfaceCls.Ptr = GetSurfacePtr
1083+ return GetSurfaceCls
1084+
1085+}
1086+
1087+// Retrieves the surface transform of @self.
1088+//
1089+// This is the translation from @self's surface coordinates into
1090+// @self's widget coordinates.
1091+func (x *AboutWindow) GetSurfaceTransform(XVar float64, YVar float64) {
1092+
1093+ gtk.XGtkNativeGetSurfaceTransform(x.GoPointer(), XVar, YVar)
1094+
1095+}
1096+
1097+// Realizes a `GtkNative`.
1098+//
1099+// This should only be used by subclasses.
1100+func (x *AboutWindow) Realize() {
1101+
1102+ gtk.XGtkNativeRealize(x.GoPointer())
1103+
1104+}
1105+
1106+// Unrealizes a `GtkNative`.
1107+//
1108+// This should only be used by subclasses.
1109+func (x *AboutWindow) Unrealize() {
1110+
1111+ gtk.XGtkNativeUnrealize(x.GoPointer())
1112+
1113+}
1114+
1115+// Returns the display that this `GtkRoot` is on.
1116+func (x *AboutWindow) GetDisplay() *gdk.Display {
1117+
1118+ GetDisplayPtr := gtk.XGtkRootGetDisplay(x.GoPointer())
1119+ if GetDisplayPtr == 0 {
1120+ return nil
1121+ }
1122+
1123+ gobject.IncreaseRef(GetDisplayPtr)
1124+
1125+ GetDisplayCls := &gdk.Display{}
1126+ GetDisplayCls.Ptr = GetDisplayPtr
1127+ return GetDisplayCls
1128+
1129+}
1130+
1131+// Retrieves the current focused widget within the root.
1132+//
1133+// Note that this is the widget that would have the focus
1134+// if the root is active; if the root is not focused then
1135+// `gtk_widget_has_focus (widget)` will be %FALSE for the
1136+// widget.
1137+func (x *AboutWindow) GetFocus() *gtk.Widget {
1138+
1139+ GetFocusPtr := gtk.XGtkRootGetFocus(x.GoPointer())
1140+ if GetFocusPtr == 0 {
1141+ return nil
1142+ }
1143+
1144+ gobject.IncreaseRef(GetFocusPtr)
1145+
1146+ GetFocusCls := &gtk.Widget{}
1147+ GetFocusCls.Ptr = GetFocusPtr
1148+ return GetFocusCls
1149+
1150+}
1151+
1152+// If @focus is not the current focus widget, and is focusable, sets
1153+// it as the focus widget for the root.
1154+//
1155+// If @focus is %NULL, unsets the focus widget for the root.
1156+//
1157+// To set the focus to a particular widget in the root, it is usually
1158+// more convenient to use [method@Gtk.Widget.grab_focus] instead of
1159+// this function.
1160+func (x *AboutWindow) SetFocus(FocusVar *gtk.Widget) {
1161+
1162+ gtk.XGtkRootSetFocus(x.GoPointer(), FocusVar.GoPointer())
1163+
1164+}
1165+
1166+func init() {
1167+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
1168+ if err != nil {
1169+ panic(err)
1170+ }
1171+ core.PuregoSafeRegister(&xShowAboutWindow, lib, "adw_show_about_window")
1172+
1173+ core.PuregoSafeRegister(&xNewAboutWindow, lib, "adw_about_window_new")
1174+
1175+ core.PuregoSafeRegister(&xAboutWindowAddAcknowledgementSection, lib, "adw_about_window_add_acknowledgement_section")
1176+ core.PuregoSafeRegister(&xAboutWindowAddCreditSection, lib, "adw_about_window_add_credit_section")
1177+ core.PuregoSafeRegister(&xAboutWindowAddLegalSection, lib, "adw_about_window_add_legal_section")
1178+ core.PuregoSafeRegister(&xAboutWindowAddLink, lib, "adw_about_window_add_link")
1179+ core.PuregoSafeRegister(&xAboutWindowGetApplicationIcon, lib, "adw_about_window_get_application_icon")
1180+ core.PuregoSafeRegister(&xAboutWindowGetApplicationName, lib, "adw_about_window_get_application_name")
1181+ core.PuregoSafeRegister(&xAboutWindowGetArtists, lib, "adw_about_window_get_artists")
1182+ core.PuregoSafeRegister(&xAboutWindowGetComments, lib, "adw_about_window_get_comments")
1183+ core.PuregoSafeRegister(&xAboutWindowGetCopyright, lib, "adw_about_window_get_copyright")
1184+ core.PuregoSafeRegister(&xAboutWindowGetDebugInfo, lib, "adw_about_window_get_debug_info")
1185+ core.PuregoSafeRegister(&xAboutWindowGetDebugInfoFilename, lib, "adw_about_window_get_debug_info_filename")
1186+ core.PuregoSafeRegister(&xAboutWindowGetDesigners, lib, "adw_about_window_get_designers")
1187+ core.PuregoSafeRegister(&xAboutWindowGetDeveloperName, lib, "adw_about_window_get_developer_name")
1188+ core.PuregoSafeRegister(&xAboutWindowGetDevelopers, lib, "adw_about_window_get_developers")
1189+ core.PuregoSafeRegister(&xAboutWindowGetDocumenters, lib, "adw_about_window_get_documenters")
1190+ core.PuregoSafeRegister(&xAboutWindowGetIssueUrl, lib, "adw_about_window_get_issue_url")
1191+ core.PuregoSafeRegister(&xAboutWindowGetLicense, lib, "adw_about_window_get_license")
1192+ core.PuregoSafeRegister(&xAboutWindowGetLicenseType, lib, "adw_about_window_get_license_type")
1193+ core.PuregoSafeRegister(&xAboutWindowGetReleaseNotes, lib, "adw_about_window_get_release_notes")
1194+ core.PuregoSafeRegister(&xAboutWindowGetReleaseNotesVersion, lib, "adw_about_window_get_release_notes_version")
1195+ core.PuregoSafeRegister(&xAboutWindowGetSupportUrl, lib, "adw_about_window_get_support_url")
1196+ core.PuregoSafeRegister(&xAboutWindowGetTranslatorCredits, lib, "adw_about_window_get_translator_credits")
1197+ core.PuregoSafeRegister(&xAboutWindowGetVersion, lib, "adw_about_window_get_version")
1198+ core.PuregoSafeRegister(&xAboutWindowGetWebsite, lib, "adw_about_window_get_website")
1199+ core.PuregoSafeRegister(&xAboutWindowSetApplicationIcon, lib, "adw_about_window_set_application_icon")
1200+ core.PuregoSafeRegister(&xAboutWindowSetApplicationName, lib, "adw_about_window_set_application_name")
1201+ core.PuregoSafeRegister(&xAboutWindowSetArtists, lib, "adw_about_window_set_artists")
1202+ core.PuregoSafeRegister(&xAboutWindowSetComments, lib, "adw_about_window_set_comments")
1203+ core.PuregoSafeRegister(&xAboutWindowSetCopyright, lib, "adw_about_window_set_copyright")
1204+ core.PuregoSafeRegister(&xAboutWindowSetDebugInfo, lib, "adw_about_window_set_debug_info")
1205+ core.PuregoSafeRegister(&xAboutWindowSetDebugInfoFilename, lib, "adw_about_window_set_debug_info_filename")
1206+ core.PuregoSafeRegister(&xAboutWindowSetDesigners, lib, "adw_about_window_set_designers")
1207+ core.PuregoSafeRegister(&xAboutWindowSetDeveloperName, lib, "adw_about_window_set_developer_name")
1208+ core.PuregoSafeRegister(&xAboutWindowSetDevelopers, lib, "adw_about_window_set_developers")
1209+ core.PuregoSafeRegister(&xAboutWindowSetDocumenters, lib, "adw_about_window_set_documenters")
1210+ core.PuregoSafeRegister(&xAboutWindowSetIssueUrl, lib, "adw_about_window_set_issue_url")
1211+ core.PuregoSafeRegister(&xAboutWindowSetLicense, lib, "adw_about_window_set_license")
1212+ core.PuregoSafeRegister(&xAboutWindowSetLicenseType, lib, "adw_about_window_set_license_type")
1213+ core.PuregoSafeRegister(&xAboutWindowSetReleaseNotes, lib, "adw_about_window_set_release_notes")
1214+ core.PuregoSafeRegister(&xAboutWindowSetReleaseNotesVersion, lib, "adw_about_window_set_release_notes_version")
1215+ core.PuregoSafeRegister(&xAboutWindowSetSupportUrl, lib, "adw_about_window_set_support_url")
1216+ core.PuregoSafeRegister(&xAboutWindowSetTranslatorCredits, lib, "adw_about_window_set_translator_credits")
1217+ core.PuregoSafeRegister(&xAboutWindowSetVersion, lib, "adw_about_window_set_version")
1218+ core.PuregoSafeRegister(&xAboutWindowSetWebsite, lib, "adw_about_window_set_website")
1219+
1220+}
A v4/adw/adw-action-row.go +524 -0
@@ -0,0 +1,524 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type ActionRowClass struct {
13+ ParentClass uintptr
14+
15+ Padding uintptr
16+}
17+
18+// A [class@Gtk.ListBoxRow] used to present actions.
19+//
20+// &lt;picture&gt;
21+//
22+// &lt;source srcset="action-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
23+// &lt;img src="action-row.png" alt="action-row"&gt;
24+//
25+// &lt;/picture&gt;
26+//
27+// The `AdwActionRow` widget can have a title, a subtitle and an icon. The row
28+// can receive additional widgets at its end, or prefix widgets at its start.
29+//
30+// It is convenient to present a preference and its related actions.
31+//
32+// `AdwActionRow` is unactivatable by default, giving it an activatable widget
33+// will automatically make it activatable, but unsetting it won't change the
34+// row's activatability.
35+//
36+// ## AdwActionRow as GtkBuildable
37+//
38+// The `AdwActionRow` implementation of the [iface@Gtk.Buildable] interface
39+// supports adding a child at its end by specifying “suffix” or omitting the
40+// “type” attribute of a &lt;child&gt; element.
41+//
42+// It also supports adding a child as a prefix widget by specifying “prefix” as
43+// the “type” attribute of a &lt;child&gt; element.
44+//
45+// ## CSS nodes
46+//
47+// `AdwActionRow` has a main CSS node with name `row`.
48+//
49+// It contains the subnode `box.header` for its main horizontal box, and
50+// `box.title` for the vertical box containing the title and subtitle labels.
51+//
52+// It contains subnodes `label.title` and `label.subtitle` representing
53+// respectively the title label and subtitle label.
54+type ActionRow struct {
55+ PreferencesRow
56+}
57+
58+func ActionRowNewFromInternalPtr(ptr uintptr) *ActionRow {
59+ cls := &ActionRow{}
60+ cls.Ptr = ptr
61+ return cls
62+}
63+
64+var xNewActionRow func() uintptr
65+
66+// Creates a new `AdwActionRow`.
67+func NewActionRow() *gtk.Widget {
68+ NewActionRowPtr := xNewActionRow()
69+ if NewActionRowPtr == 0 {
70+ return nil
71+ }
72+
73+ gobject.IncreaseRef(NewActionRowPtr)
74+
75+ NewActionRowCls := &gtk.Widget{}
76+ NewActionRowCls.Ptr = NewActionRowPtr
77+ return NewActionRowCls
78+}
79+
80+var xActionRowActivate func(uintptr)
81+
82+// Activates @self.
83+func (x *ActionRow) Activate() {
84+
85+ xActionRowActivate(x.GoPointer())
86+
87+}
88+
89+var xActionRowAddPrefix func(uintptr, uintptr)
90+
91+// Adds a prefix widget to @self.
92+func (x *ActionRow) AddPrefix(WidgetVar *gtk.Widget) {
93+
94+ xActionRowAddPrefix(x.GoPointer(), WidgetVar.GoPointer())
95+
96+}
97+
98+var xActionRowAddSuffix func(uintptr, uintptr)
99+
100+// Adds a suffix widget to @self.
101+func (x *ActionRow) AddSuffix(WidgetVar *gtk.Widget) {
102+
103+ xActionRowAddSuffix(x.GoPointer(), WidgetVar.GoPointer())
104+
105+}
106+
107+var xActionRowGetActivatableWidget func(uintptr) uintptr
108+
109+// Gets the widget activated when @self is activated.
110+func (x *ActionRow) GetActivatableWidget() *gtk.Widget {
111+
112+ GetActivatableWidgetPtr := xActionRowGetActivatableWidget(x.GoPointer())
113+ if GetActivatableWidgetPtr == 0 {
114+ return nil
115+ }
116+
117+ gobject.IncreaseRef(GetActivatableWidgetPtr)
118+
119+ GetActivatableWidgetCls := &gtk.Widget{}
120+ GetActivatableWidgetCls.Ptr = GetActivatableWidgetPtr
121+ return GetActivatableWidgetCls
122+
123+}
124+
125+var xActionRowGetIconName func(uintptr) string
126+
127+// Gets the icon name for @self.
128+func (x *ActionRow) GetIconName() string {
129+
130+ return xActionRowGetIconName(x.GoPointer())
131+
132+}
133+
134+var xActionRowGetSubtitle func(uintptr) string
135+
136+// Gets the subtitle for @self.
137+func (x *ActionRow) GetSubtitle() string {
138+
139+ return xActionRowGetSubtitle(x.GoPointer())
140+
141+}
142+
143+var xActionRowGetSubtitleLines func(uintptr) int32
144+
145+// Gets the number of lines at the end of which the subtitle label will be
146+// ellipsized.
147+func (x *ActionRow) GetSubtitleLines() int32 {
148+
149+ return xActionRowGetSubtitleLines(x.GoPointer())
150+
151+}
152+
153+var xActionRowGetSubtitleSelectable func(uintptr) bool
154+
155+// Gets whether the user can copy the subtitle from the label
156+func (x *ActionRow) GetSubtitleSelectable() bool {
157+
158+ return xActionRowGetSubtitleSelectable(x.GoPointer())
159+
160+}
161+
162+var xActionRowGetTitleLines func(uintptr) int32
163+
164+// Gets the number of lines at the end of which the title label will be
165+// ellipsized.
166+func (x *ActionRow) GetTitleLines() int32 {
167+
168+ return xActionRowGetTitleLines(x.GoPointer())
169+
170+}
171+
172+var xActionRowRemove func(uintptr, uintptr)
173+
174+// Removes a child from @self.
175+func (x *ActionRow) Remove(WidgetVar *gtk.Widget) {
176+
177+ xActionRowRemove(x.GoPointer(), WidgetVar.GoPointer())
178+
179+}
180+
181+var xActionRowSetActivatableWidget func(uintptr, uintptr)
182+
183+// Sets the widget to activate when @self is activated.
184+//
185+// The row can be activated either by clicking on it, calling
186+// [method@ActionRow.activate], or via mnemonics in the title.
187+// See the [property@PreferencesRow:use-underline] property to enable mnemonics.
188+//
189+// The target widget will be activated by emitting the
190+// [signal@Gtk.Widget::mnemonic-activate] signal on it.
191+func (x *ActionRow) SetActivatableWidget(WidgetVar *gtk.Widget) {
192+
193+ xActionRowSetActivatableWidget(x.GoPointer(), WidgetVar.GoPointer())
194+
195+}
196+
197+var xActionRowSetIconName func(uintptr, string)
198+
199+// Sets the icon name for @self.
200+func (x *ActionRow) SetIconName(IconNameVar string) {
201+
202+ xActionRowSetIconName(x.GoPointer(), IconNameVar)
203+
204+}
205+
206+var xActionRowSetSubtitle func(uintptr, string)
207+
208+// Sets the subtitle for @self.
209+//
210+// The subtitle is interpreted as Pango markup unless
211+// [property@PreferencesRow:use-markup] is set to `FALSE`.
212+func (x *ActionRow) SetSubtitle(SubtitleVar string) {
213+
214+ xActionRowSetSubtitle(x.GoPointer(), SubtitleVar)
215+
216+}
217+
218+var xActionRowSetSubtitleLines func(uintptr, int32)
219+
220+// Sets the number of lines at the end of which the subtitle label will be
221+// ellipsized.
222+//
223+// If the value is 0, the number of lines won't be limited.
224+func (x *ActionRow) SetSubtitleLines(SubtitleLinesVar int32) {
225+
226+ xActionRowSetSubtitleLines(x.GoPointer(), SubtitleLinesVar)
227+
228+}
229+
230+var xActionRowSetSubtitleSelectable func(uintptr, bool)
231+
232+// Sets whether the user can copy the subtitle from the label
233+//
234+// See also [property@Gtk.Label:selectable].
235+func (x *ActionRow) SetSubtitleSelectable(SubtitleSelectableVar bool) {
236+
237+ xActionRowSetSubtitleSelectable(x.GoPointer(), SubtitleSelectableVar)
238+
239+}
240+
241+var xActionRowSetTitleLines func(uintptr, int32)
242+
243+// Sets the number of lines at the end of which the title label will be
244+// ellipsized.
245+//
246+// If the value is 0, the number of lines won't be limited.
247+func (x *ActionRow) SetTitleLines(TitleLinesVar int32) {
248+
249+ xActionRowSetTitleLines(x.GoPointer(), TitleLinesVar)
250+
251+}
252+
253+func (c *ActionRow) GoPointer() uintptr {
254+ return c.Ptr
255+}
256+
257+func (c *ActionRow) SetGoPointer(ptr uintptr) {
258+ c.Ptr = ptr
259+}
260+
261+// This signal is emitted after the row has been activated.
262+func (x *ActionRow) ConnectActivated(cb func(ActionRow)) {
263+ fcb := func(clsPtr uintptr) {
264+ fa := ActionRow{}
265+ fa.Ptr = clsPtr
266+
267+ cb(fa)
268+
269+ }
270+ gobject.ObjectConnect(x.GoPointer(), "signal::activated", purego.NewCallback(fcb))
271+}
272+
273+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
274+func (x *ActionRow) GetAccessibleRole() gtk.AccessibleRole {
275+
276+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
277+
278+}
279+
280+// Resets the accessible @property to its default value.
281+func (x *ActionRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
282+
283+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
284+
285+}
286+
287+// Resets the accessible @relation to its default value.
288+func (x *ActionRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
289+
290+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
291+
292+}
293+
294+// Resets the accessible @state to its default value.
295+func (x *ActionRow) ResetState(StateVar gtk.AccessibleState) {
296+
297+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
298+
299+}
300+
301+// Updates a list of accessible properties.
302+//
303+// See the [enum@Gtk.AccessibleProperty] documentation for the
304+// value types of accessible properties.
305+//
306+// This function should be called by `GtkWidget` types whenever
307+// an accessible property change must be communicated to assistive
308+// technologies.
309+//
310+// Example:
311+// ```c
312+// value = gtk_adjustment_get_value (adjustment);
313+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
314+//
315+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
316+// -1);
317+//
318+// ```
319+func (x *ActionRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
320+
321+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
322+
323+}
324+
325+// Updates an array of accessible properties.
326+//
327+// This function should be called by `GtkWidget` types whenever an accessible
328+// property change must be communicated to assistive technologies.
329+//
330+// This function is meant to be used by language bindings.
331+func (x *ActionRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
332+
333+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
334+
335+}
336+
337+// Updates a list of accessible relations.
338+//
339+// This function should be called by `GtkWidget` types whenever an accessible
340+// relation change must be communicated to assistive technologies.
341+//
342+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
343+// you should pass each reference individually, followed by %NULL, e.g.
344+//
345+// ```c
346+// gtk_accessible_update_relation (accessible,
347+//
348+// GTK_ACCESSIBLE_RELATION_CONTROLS,
349+// ref1, NULL,
350+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
351+// ref1, ref2, ref3, NULL,
352+// -1);
353+//
354+// ```
355+func (x *ActionRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
356+
357+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
358+
359+}
360+
361+// Updates an array of accessible relations.
362+//
363+// This function should be called by `GtkWidget` types whenever an accessible
364+// relation change must be communicated to assistive technologies.
365+//
366+// This function is meant to be used by language bindings.
367+func (x *ActionRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
368+
369+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
370+
371+}
372+
373+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
374+// documentation for the value types of accessible states.
375+//
376+// This function should be called by `GtkWidget` types whenever an accessible
377+// state change must be communicated to assistive technologies.
378+//
379+// Example:
380+// ```c
381+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
382+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
383+//
384+// GTK_ACCESSIBLE_STATE_CHECKED, value,
385+// -1);
386+//
387+// ```
388+func (x *ActionRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
389+
390+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
391+
392+}
393+
394+// Updates an array of accessible states.
395+//
396+// This function should be called by `GtkWidget` types whenever an accessible
397+// state change must be communicated to assistive technologies.
398+//
399+// This function is meant to be used by language bindings.
400+func (x *ActionRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
401+
402+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
403+
404+}
405+
406+// Gets the action name for @actionable.
407+func (x *ActionRow) GetActionName() string {
408+
409+ return gtk.XGtkActionableGetActionName(x.GoPointer())
410+
411+}
412+
413+// Gets the current target value of @actionable.
414+func (x *ActionRow) GetActionTargetValue() *glib.Variant {
415+
416+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
417+
418+}
419+
420+// Specifies the name of the action with which this widget should be
421+// associated.
422+//
423+// If @action_name is %NULL then the widget will be unassociated from
424+// any previous action.
425+//
426+// Usually this function is used when the widget is located (or will be
427+// located) within the hierarchy of a `GtkApplicationWindow`.
428+//
429+// Names are of the form “win.save” or “app.quit” for actions on the
430+// containing [class@ApplicationWindow] or its associated [class@Application],
431+// respectively. This is the same form used for actions in the [class@Gio.Menu]
432+// associated with the window.
433+func (x *ActionRow) SetActionName(ActionNameVar string) {
434+
435+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
436+
437+}
438+
439+// Sets the target of an actionable widget.
440+//
441+// This is a convenience function that calls [ctor@GLib.Variant.new] for
442+// @format_string and uses the result to call
443+// [method@Gtk.Actionable.set_action_target_value].
444+//
445+// If you are setting a string-valued target and want to set
446+// the action name at the same time, you can use
447+// [method@Gtk.Actionable.set_detailed_action_name].
448+func (x *ActionRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
449+
450+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
451+
452+}
453+
454+// Sets the target value of an actionable widget.
455+//
456+// If @target_value is %NULL then the target value is unset.
457+//
458+// The target value has two purposes. First, it is used as the parameter
459+// to activation of the action associated with the `GtkActionable` widget.
460+// Second, it is used to determine if the widget should be rendered as
461+// “active” — the widget is active if the state is equal to the given target.
462+//
463+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
464+// with string state in a typical “radio button” situation. Each button
465+// will be associated with the same action, but with a different target
466+// value for that action. Clicking on a particular button will activate
467+// the action with the target of that button, which will typically cause
468+// the action’s state to change to that value. Since the action’s state
469+// is now equal to the target value of the button, the button will now
470+// be rendered as active (and the other buttons, with different targets,
471+// rendered inactive).
472+func (x *ActionRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
473+
474+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
475+
476+}
477+
478+// Sets the action-name and associated string target value of an
479+// actionable widget.
480+//
481+// @detailed_action_name is a string in the format accepted by
482+// [func@Gio.Action.parse_detailed_name].
483+func (x *ActionRow) SetDetailedActionName(DetailedActionNameVar string) {
484+
485+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
486+
487+}
488+
489+// Gets the ID of the @buildable object.
490+//
491+// `GtkBuilder` sets the name based on the ID attribute
492+// of the &lt;object&gt; tag used to construct the @buildable.
493+func (x *ActionRow) GetBuildableId() string {
494+
495+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
496+
497+}
498+
499+func init() {
500+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
501+ if err != nil {
502+ panic(err)
503+ }
504+
505+ core.PuregoSafeRegister(&xNewActionRow, lib, "adw_action_row_new")
506+
507+ core.PuregoSafeRegister(&xActionRowActivate, lib, "adw_action_row_activate")
508+ core.PuregoSafeRegister(&xActionRowAddPrefix, lib, "adw_action_row_add_prefix")
509+ core.PuregoSafeRegister(&xActionRowAddSuffix, lib, "adw_action_row_add_suffix")
510+ core.PuregoSafeRegister(&xActionRowGetActivatableWidget, lib, "adw_action_row_get_activatable_widget")
511+ core.PuregoSafeRegister(&xActionRowGetIconName, lib, "adw_action_row_get_icon_name")
512+ core.PuregoSafeRegister(&xActionRowGetSubtitle, lib, "adw_action_row_get_subtitle")
513+ core.PuregoSafeRegister(&xActionRowGetSubtitleLines, lib, "adw_action_row_get_subtitle_lines")
514+ core.PuregoSafeRegister(&xActionRowGetSubtitleSelectable, lib, "adw_action_row_get_subtitle_selectable")
515+ core.PuregoSafeRegister(&xActionRowGetTitleLines, lib, "adw_action_row_get_title_lines")
516+ core.PuregoSafeRegister(&xActionRowRemove, lib, "adw_action_row_remove")
517+ core.PuregoSafeRegister(&xActionRowSetActivatableWidget, lib, "adw_action_row_set_activatable_widget")
518+ core.PuregoSafeRegister(&xActionRowSetIconName, lib, "adw_action_row_set_icon_name")
519+ core.PuregoSafeRegister(&xActionRowSetSubtitle, lib, "adw_action_row_set_subtitle")
520+ core.PuregoSafeRegister(&xActionRowSetSubtitleLines, lib, "adw_action_row_set_subtitle_lines")
521+ core.PuregoSafeRegister(&xActionRowSetSubtitleSelectable, lib, "adw_action_row_set_subtitle_selectable")
522+ core.PuregoSafeRegister(&xActionRowSetTitleLines, lib, "adw_action_row_set_title_lines")
523+
524+}
A v4/adw/adw-animation-target.go +181 -0
@@ -0,0 +1,181 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+)
10+
11+// Prototype for animation targets based on user callbacks.
12+type AnimationTargetFunc func(float64, uintptr)
13+
14+type AnimationTargetClass struct {
15+}
16+
17+type CallbackAnimationTargetClass struct {
18+}
19+
20+type PropertyAnimationTargetClass struct {
21+}
22+
23+// Represents a value [class@Animation] can animate.
24+type AnimationTarget struct {
25+ gobject.Object
26+}
27+
28+func AnimationTargetNewFromInternalPtr(ptr uintptr) *AnimationTarget {
29+ cls := &AnimationTarget{}
30+ cls.Ptr = ptr
31+ return cls
32+}
33+
34+func (c *AnimationTarget) GoPointer() uintptr {
35+ return c.Ptr
36+}
37+
38+func (c *AnimationTarget) SetGoPointer(ptr uintptr) {
39+ c.Ptr = ptr
40+}
41+
42+// An [class@AnimationTarget] that calls a given callback during the
43+// animation.
44+type CallbackAnimationTarget struct {
45+ AnimationTarget
46+}
47+
48+func CallbackAnimationTargetNewFromInternalPtr(ptr uintptr) *CallbackAnimationTarget {
49+ cls := &CallbackAnimationTarget{}
50+ cls.Ptr = ptr
51+ return cls
52+}
53+
54+var xNewCallbackAnimationTarget func(uintptr, uintptr, uintptr) uintptr
55+
56+// Creates a new `AdwAnimationTarget` that calls the given @callback during
57+// the animation.
58+func NewCallbackAnimationTarget(CallbackVar AnimationTargetFunc, UserDataVar uintptr, DestroyVar glib.DestroyNotify) *AnimationTarget {
59+ NewCallbackAnimationTargetPtr := xNewCallbackAnimationTarget(purego.NewCallback(CallbackVar), UserDataVar, purego.NewCallback(DestroyVar))
60+ if NewCallbackAnimationTargetPtr == 0 {
61+ return nil
62+ }
63+
64+ NewCallbackAnimationTargetCls := &AnimationTarget{}
65+ NewCallbackAnimationTargetCls.Ptr = NewCallbackAnimationTargetPtr
66+ return NewCallbackAnimationTargetCls
67+}
68+
69+func (c *CallbackAnimationTarget) GoPointer() uintptr {
70+ return c.Ptr
71+}
72+
73+func (c *CallbackAnimationTarget) SetGoPointer(ptr uintptr) {
74+ c.Ptr = ptr
75+}
76+
77+// An [class@AnimationTarget] changing the value of a property of a
78+// [class@GObject.Object] instance.
79+type PropertyAnimationTarget struct {
80+ AnimationTarget
81+}
82+
83+func PropertyAnimationTargetNewFromInternalPtr(ptr uintptr) *PropertyAnimationTarget {
84+ cls := &PropertyAnimationTarget{}
85+ cls.Ptr = ptr
86+ return cls
87+}
88+
89+var xNewPropertyAnimationTarget func(uintptr, string) uintptr
90+
91+// Creates a new `AdwPropertyAnimationTarget` for the @property_name property on
92+// @object.
93+func NewPropertyAnimationTarget(ObjectVar *gobject.Object, PropertyNameVar string) *AnimationTarget {
94+ NewPropertyAnimationTargetPtr := xNewPropertyAnimationTarget(ObjectVar.GoPointer(), PropertyNameVar)
95+ if NewPropertyAnimationTargetPtr == 0 {
96+ return nil
97+ }
98+
99+ NewPropertyAnimationTargetCls := &AnimationTarget{}
100+ NewPropertyAnimationTargetCls.Ptr = NewPropertyAnimationTargetPtr
101+ return NewPropertyAnimationTargetCls
102+}
103+
104+var xNewForPspecPropertyAnimationTarget func(uintptr, uintptr) uintptr
105+
106+// Creates a new `AdwPropertyAnimationTarget` for the @pspec property on
107+// @object.
108+func NewForPspecPropertyAnimationTarget(ObjectVar *gobject.Object, PspecVar *gobject.ParamSpec) *AnimationTarget {
109+ NewForPspecPropertyAnimationTargetPtr := xNewForPspecPropertyAnimationTarget(ObjectVar.GoPointer(), PspecVar.GoPointer())
110+ if NewForPspecPropertyAnimationTargetPtr == 0 {
111+ return nil
112+ }
113+
114+ NewForPspecPropertyAnimationTargetCls := &AnimationTarget{}
115+ NewForPspecPropertyAnimationTargetCls.Ptr = NewForPspecPropertyAnimationTargetPtr
116+ return NewForPspecPropertyAnimationTargetCls
117+}
118+
119+var xPropertyAnimationTargetGetObject func(uintptr) uintptr
120+
121+// Gets the object animated by @self.
122+//
123+// The `AdwPropertyAnimationTarget` instance does not hold a strong reference on
124+// the object; make sure the object is kept alive throughout the target's
125+// lifetime.
126+func (x *PropertyAnimationTarget) GetObject() *gobject.Object {
127+
128+ GetObjectPtr := xPropertyAnimationTargetGetObject(x.GoPointer())
129+ if GetObjectPtr == 0 {
130+ return nil
131+ }
132+
133+ gobject.IncreaseRef(GetObjectPtr)
134+
135+ GetObjectCls := &gobject.Object{}
136+ GetObjectCls.Ptr = GetObjectPtr
137+ return GetObjectCls
138+
139+}
140+
141+var xPropertyAnimationTargetGetPspec func(uintptr) uintptr
142+
143+// Gets the `GParamSpec` of the property animated by @self.
144+func (x *PropertyAnimationTarget) GetPspec() *gobject.ParamSpec {
145+
146+ GetPspecPtr := xPropertyAnimationTargetGetPspec(x.GoPointer())
147+ if GetPspecPtr == 0 {
148+ return nil
149+ }
150+
151+ gobject.IncreaseRef(GetPspecPtr)
152+
153+ GetPspecCls := &gobject.ParamSpec{}
154+ GetPspecCls.Ptr = GetPspecPtr
155+ return GetPspecCls
156+
157+}
158+
159+func (c *PropertyAnimationTarget) GoPointer() uintptr {
160+ return c.Ptr
161+}
162+
163+func (c *PropertyAnimationTarget) SetGoPointer(ptr uintptr) {
164+ c.Ptr = ptr
165+}
166+
167+func init() {
168+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
169+ if err != nil {
170+ panic(err)
171+ }
172+
173+ core.PuregoSafeRegister(&xNewCallbackAnimationTarget, lib, "adw_callback_animation_target_new")
174+
175+ core.PuregoSafeRegister(&xNewPropertyAnimationTarget, lib, "adw_property_animation_target_new")
176+ core.PuregoSafeRegister(&xNewForPspecPropertyAnimationTarget, lib, "adw_property_animation_target_new_for_pspec")
177+
178+ core.PuregoSafeRegister(&xPropertyAnimationTargetGetObject, lib, "adw_property_animation_target_get_object")
179+ core.PuregoSafeRegister(&xPropertyAnimationTargetGetPspec, lib, "adw_property_animation_target_get_pspec")
180+
181+}
A v4/adw/adw-animation-util.go +39 -0
@@ -0,0 +1,39 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gtk"
8+)
9+
10+var xGetEnableAnimations func(uintptr) bool
11+
12+// Checks whether animations are enabled for @widget.
13+//
14+// This should be used when implementing an animated widget to know whether to
15+// animate it or not.
16+func GetEnableAnimations(WidgetVar *gtk.Widget) bool {
17+
18+ return xGetEnableAnimations(WidgetVar.GoPointer())
19+
20+}
21+
22+var xLerp func(float64, float64, float64) float64
23+
24+// Computes the linear interpolation between @a and @b for @t.
25+func Lerp(AVar float64, BVar float64, TVar float64) float64 {
26+
27+ return xLerp(AVar, BVar, TVar)
28+
29+}
30+
31+func init() {
32+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
33+ if err != nil {
34+ panic(err)
35+ }
36+ core.PuregoSafeRegister(&xGetEnableAnimations, lib, "adw_get_enable_animations")
37+ core.PuregoSafeRegister(&xLerp, lib, "adw_lerp")
38+
39+}
A v4/adw/adw-animation.go +307 -0
@@ -0,0 +1,307 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type AnimationClass struct {
12+}
13+
14+// Describes the possible states of an [class@Animation].
15+//
16+// The state can be controlled with [method@Animation.play],
17+// [method@Animation.pause], [method@Animation.resume],
18+// [method@Animation.reset] and [method@Animation.skip].
19+type AnimationState int
20+
21+const (
22+
23+ // The animation hasn't started yet.
24+ AnimationIdleValue AnimationState = 0
25+ // The animation has been paused.
26+ AnimationPausedValue AnimationState = 1
27+ // The animation is currently playing.
28+ AnimationPlayingValue AnimationState = 2
29+ // The animation has finished.
30+ AnimationFinishedValue AnimationState = 3
31+)
32+
33+// A base class for animations.
34+//
35+// `AdwAnimation` represents an animation on a widget. It has a target that
36+// provides a value to animate, and a state indicating whether the
37+// animation hasn't been started yet, is playing, paused or finished.
38+//
39+// Currently there are two concrete animation types:
40+// [class@TimedAnimation] and [class@SpringAnimation].
41+//
42+// `AdwAnimation` will automatically skip the animation if
43+// [property@Animation:widget] is unmapped, or if
44+// [property@Gtk.Settings:gtk-enable-animations] is `FALSE`.
45+//
46+// The [signal@Animation::done] signal can be used to perform an action after
47+// the animation ends, for example hiding a widget after animating its
48+// [property@Gtk.Widget:opacity] to 0.
49+//
50+// `AdwAnimation` will be kept alive while the animation is playing. As such,
51+// it's safe to create an animation, start it and immediately unref it:
52+// A fire-and-forget animation:
53+//
54+// ```c
55+// static void
56+// animation_cb (double value,
57+//
58+// MyObject *self)
59+//
60+// {
61+// // Do something with @value
62+// }
63+//
64+// static void
65+// my_object_animate (MyObject *self)
66+//
67+// {
68+// AdwAnimationTarget *target =
69+// adw_callback_animation_target_new ((AdwAnimationTargetFunc) animation_cb,
70+// self, NULL);
71+// g_autoptr (AdwAnimation) animation =
72+// adw_timed_animation_new (widget, 0, 1, 250, target);
73+//
74+// adw_animation_play (animation);
75+// }
76+//
77+// ```
78+//
79+// If there's a chance the previous animation for the same target hasn't yet
80+// finished, the previous animation should be stopped first, or the existing
81+// `AdwAnimation` object can be reused.
82+type Animation struct {
83+ gobject.Object
84+}
85+
86+func AnimationNewFromInternalPtr(ptr uintptr) *Animation {
87+ cls := &Animation{}
88+ cls.Ptr = ptr
89+ return cls
90+}
91+
92+var xAnimationGetFollowEnableAnimationsSetting func(uintptr) bool
93+
94+// Gets whether @self should be skipped when animations are globally disabled.
95+func (x *Animation) GetFollowEnableAnimationsSetting() bool {
96+
97+ return xAnimationGetFollowEnableAnimationsSetting(x.GoPointer())
98+
99+}
100+
101+var xAnimationGetState func(uintptr) AnimationState
102+
103+// Gets the current value of @self.
104+//
105+// The state indicates whether @self is currently playing, paused, finished or
106+// hasn't been started yet.
107+func (x *Animation) GetState() AnimationState {
108+
109+ return xAnimationGetState(x.GoPointer())
110+
111+}
112+
113+var xAnimationGetTarget func(uintptr) uintptr
114+
115+// Gets the target @self animates.
116+func (x *Animation) GetTarget() *AnimationTarget {
117+
118+ GetTargetPtr := xAnimationGetTarget(x.GoPointer())
119+ if GetTargetPtr == 0 {
120+ return nil
121+ }
122+
123+ gobject.IncreaseRef(GetTargetPtr)
124+
125+ GetTargetCls := &AnimationTarget{}
126+ GetTargetCls.Ptr = GetTargetPtr
127+ return GetTargetCls
128+
129+}
130+
131+var xAnimationGetValue func(uintptr) float64
132+
133+// Gets the current value of @self.
134+func (x *Animation) GetValue() float64 {
135+
136+ return xAnimationGetValue(x.GoPointer())
137+
138+}
139+
140+var xAnimationGetWidget func(uintptr) uintptr
141+
142+// Gets the widget @self was created for.
143+//
144+// It provides the frame clock for the animation. It's not strictly necessary
145+// for this widget to be same as the one being animated.
146+//
147+// The widget must be mapped in order for the animation to work. If it's not
148+// mapped, or if it gets unmapped during an ongoing animation, the animation
149+// will be automatically skipped.
150+func (x *Animation) GetWidget() *gtk.Widget {
151+
152+ GetWidgetPtr := xAnimationGetWidget(x.GoPointer())
153+ if GetWidgetPtr == 0 {
154+ return nil
155+ }
156+
157+ gobject.IncreaseRef(GetWidgetPtr)
158+
159+ GetWidgetCls := &gtk.Widget{}
160+ GetWidgetCls.Ptr = GetWidgetPtr
161+ return GetWidgetCls
162+
163+}
164+
165+var xAnimationPause func(uintptr)
166+
167+// Pauses a playing animation for @self.
168+//
169+// Does nothing if the current state of @self isn't `ADW_ANIMATION_PLAYING`.
170+//
171+// Sets [property@Animation:state] to `ADW_ANIMATION_PAUSED`.
172+func (x *Animation) Pause() {
173+
174+ xAnimationPause(x.GoPointer())
175+
176+}
177+
178+var xAnimationPlay func(uintptr)
179+
180+// Starts the animation for @self.
181+//
182+// If the animation is playing, paused or has been completed, restarts it from
183+// the beginning. This allows to easily play an animation regardless of whether
184+// it's already playing or not.
185+//
186+// Sets [property@Animation:state] to `ADW_ANIMATION_PLAYING`.
187+//
188+// The animation will be automatically skipped if [property@Animation:widget] is
189+// unmapped, or if [property@Gtk.Settings:gtk-enable-animations] is `FALSE`.
190+//
191+// As such, it's not guaranteed that the animation will actually run. For
192+// example, when using [func@GLib.idle_add] and starting an animation
193+// immediately afterwards, it's entirely possible that the idle callback will
194+// run after the animation has already finished, and not while it's playing.
195+func (x *Animation) Play() {
196+
197+ xAnimationPlay(x.GoPointer())
198+
199+}
200+
201+var xAnimationReset func(uintptr)
202+
203+// Resets the animation for @self.
204+//
205+// Sets [property@Animation:state] to `ADW_ANIMATION_IDLE`.
206+func (x *Animation) Reset() {
207+
208+ xAnimationReset(x.GoPointer())
209+
210+}
211+
212+var xAnimationResume func(uintptr)
213+
214+// Resumes a paused animation for @self.
215+//
216+// This function must only be used if the animation has been paused with
217+// [method@Animation.pause].
218+//
219+// Sets [property@Animation:state] to `ADW_ANIMATION_PLAYING`.
220+func (x *Animation) Resume() {
221+
222+ xAnimationResume(x.GoPointer())
223+
224+}
225+
226+var xAnimationSetFollowEnableAnimationsSetting func(uintptr, bool)
227+
228+// Sets whether to skip @self when animations are globally disabled.
229+//
230+// The default behavior is to skip the animation. Set to `FALSE` to disable this
231+// behavior.
232+//
233+// This can be useful for cases where animation is essential, like spinners, or
234+// in demo applications. Most other animations should keep it enabled.
235+//
236+// See [property@Gtk.Settings:gtk-enable-animations].
237+func (x *Animation) SetFollowEnableAnimationsSetting(SettingVar bool) {
238+
239+ xAnimationSetFollowEnableAnimationsSetting(x.GoPointer(), SettingVar)
240+
241+}
242+
243+var xAnimationSetTarget func(uintptr, uintptr)
244+
245+// Sets the target @self animates to @target.
246+func (x *Animation) SetTarget(TargetVar *AnimationTarget) {
247+
248+ xAnimationSetTarget(x.GoPointer(), TargetVar.GoPointer())
249+
250+}
251+
252+var xAnimationSkip func(uintptr)
253+
254+// Skips the animation for @self.
255+//
256+// If the animation hasn't been started yet, is playing, or is paused, instantly
257+// skips the animation to the end and causes [signal@Animation::done] to be
258+// emitted.
259+//
260+// Sets [property@Animation:state] to `ADW_ANIMATION_FINISHED`.
261+func (x *Animation) Skip() {
262+
263+ xAnimationSkip(x.GoPointer())
264+
265+}
266+
267+func (c *Animation) GoPointer() uintptr {
268+ return c.Ptr
269+}
270+
271+func (c *Animation) SetGoPointer(ptr uintptr) {
272+ c.Ptr = ptr
273+}
274+
275+// This signal is emitted when the animation has been completed, either on its
276+// own or via calling [method@Animation.skip].
277+func (x *Animation) ConnectDone(cb func(Animation)) {
278+ fcb := func(clsPtr uintptr) {
279+ fa := Animation{}
280+ fa.Ptr = clsPtr
281+
282+ cb(fa)
283+
284+ }
285+ gobject.ObjectConnect(x.GoPointer(), "signal::done", purego.NewCallback(fcb))
286+}
287+
288+func init() {
289+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
290+ if err != nil {
291+ panic(err)
292+ }
293+
294+ core.PuregoSafeRegister(&xAnimationGetFollowEnableAnimationsSetting, lib, "adw_animation_get_follow_enable_animations_setting")
295+ core.PuregoSafeRegister(&xAnimationGetState, lib, "adw_animation_get_state")
296+ core.PuregoSafeRegister(&xAnimationGetTarget, lib, "adw_animation_get_target")
297+ core.PuregoSafeRegister(&xAnimationGetValue, lib, "adw_animation_get_value")
298+ core.PuregoSafeRegister(&xAnimationGetWidget, lib, "adw_animation_get_widget")
299+ core.PuregoSafeRegister(&xAnimationPause, lib, "adw_animation_pause")
300+ core.PuregoSafeRegister(&xAnimationPlay, lib, "adw_animation_play")
301+ core.PuregoSafeRegister(&xAnimationReset, lib, "adw_animation_reset")
302+ core.PuregoSafeRegister(&xAnimationResume, lib, "adw_animation_resume")
303+ core.PuregoSafeRegister(&xAnimationSetFollowEnableAnimationsSetting, lib, "adw_animation_set_follow_enable_animations_setting")
304+ core.PuregoSafeRegister(&xAnimationSetTarget, lib, "adw_animation_set_target")
305+ core.PuregoSafeRegister(&xAnimationSkip, lib, "adw_animation_skip")
306+
307+}
A v4/adw/adw-application-window.go +686 -0
@@ -0,0 +1,686 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gio"
9+ "github.com/jwijenbergh/puregotk/v4/glib"
10+ "github.com/jwijenbergh/puregotk/v4/gobject"
11+ "github.com/jwijenbergh/puregotk/v4/gsk"
12+ "github.com/jwijenbergh/puregotk/v4/gtk"
13+)
14+
15+type ApplicationWindowClass struct {
16+ ParentClass uintptr
17+
18+ Padding uintptr
19+}
20+
21+// A freeform application window.
22+//
23+// &lt;picture&gt;
24+//
25+// &lt;source srcset="application-window-dark.png" media="(prefers-color-scheme: dark)"&gt;
26+// &lt;img src="application-window.png" alt="application-window"&gt;
27+//
28+// &lt;/picture&gt;
29+//
30+// `AdwApplicationWindow` is a [class@Gtk.ApplicationWindow] subclass providing
31+// the same features as [class@Window].
32+//
33+// See [class@Window] for details.
34+//
35+// Using [property@Gtk.Application:menubar] is not supported and may result in
36+// visual glitches.
37+type ApplicationWindow struct {
38+ gtk.ApplicationWindow
39+}
40+
41+func ApplicationWindowNewFromInternalPtr(ptr uintptr) *ApplicationWindow {
42+ cls := &ApplicationWindow{}
43+ cls.Ptr = ptr
44+ return cls
45+}
46+
47+var xNewApplicationWindow func(uintptr) uintptr
48+
49+// Creates a new `AdwApplicationWindow` for @app.
50+func NewApplicationWindow(AppVar *gtk.Application) *gtk.Widget {
51+ NewApplicationWindowPtr := xNewApplicationWindow(AppVar.GoPointer())
52+ if NewApplicationWindowPtr == 0 {
53+ return nil
54+ }
55+
56+ gobject.IncreaseRef(NewApplicationWindowPtr)
57+
58+ NewApplicationWindowCls := &gtk.Widget{}
59+ NewApplicationWindowCls.Ptr = NewApplicationWindowPtr
60+ return NewApplicationWindowCls
61+}
62+
63+var xApplicationWindowGetContent func(uintptr) uintptr
64+
65+// Gets the content widget of @self.
66+//
67+// This method should always be used instead of [method@Gtk.Window.get_child].
68+func (x *ApplicationWindow) GetContent() *gtk.Widget {
69+
70+ GetContentPtr := xApplicationWindowGetContent(x.GoPointer())
71+ if GetContentPtr == 0 {
72+ return nil
73+ }
74+
75+ gobject.IncreaseRef(GetContentPtr)
76+
77+ GetContentCls := &gtk.Widget{}
78+ GetContentCls.Ptr = GetContentPtr
79+ return GetContentCls
80+
81+}
82+
83+var xApplicationWindowSetContent func(uintptr, uintptr)
84+
85+// Sets the content widget of @self.
86+//
87+// This method should always be used instead of [method@Gtk.Window.set_child].
88+func (x *ApplicationWindow) SetContent(ContentVar *gtk.Widget) {
89+
90+ xApplicationWindowSetContent(x.GoPointer(), ContentVar.GoPointer())
91+
92+}
93+
94+func (c *ApplicationWindow) GoPointer() uintptr {
95+ return c.Ptr
96+}
97+
98+func (c *ApplicationWindow) SetGoPointer(ptr uintptr) {
99+ c.Ptr = ptr
100+}
101+
102+// Emits the #GActionGroup::action-added signal on @action_group.
103+//
104+// This function should only be called by #GActionGroup implementations.
105+func (x *ApplicationWindow) ActionAdded(ActionNameVar string) {
106+
107+ gio.XGActionGroupActionAdded(x.GoPointer(), ActionNameVar)
108+
109+}
110+
111+// Emits the #GActionGroup::action-enabled-changed signal on @action_group.
112+//
113+// This function should only be called by #GActionGroup implementations.
114+func (x *ApplicationWindow) ActionEnabledChanged(ActionNameVar string, EnabledVar bool) {
115+
116+ gio.XGActionGroupActionEnabledChanged(x.GoPointer(), ActionNameVar, EnabledVar)
117+
118+}
119+
120+// Emits the #GActionGroup::action-removed signal on @action_group.
121+//
122+// This function should only be called by #GActionGroup implementations.
123+func (x *ApplicationWindow) ActionRemoved(ActionNameVar string) {
124+
125+ gio.XGActionGroupActionRemoved(x.GoPointer(), ActionNameVar)
126+
127+}
128+
129+// Emits the #GActionGroup::action-state-changed signal on @action_group.
130+//
131+// This function should only be called by #GActionGroup implementations.
132+func (x *ApplicationWindow) ActionStateChanged(ActionNameVar string, StateVar *glib.Variant) {
133+
134+ gio.XGActionGroupActionStateChanged(x.GoPointer(), ActionNameVar, StateVar)
135+
136+}
137+
138+// Activate the named action within @action_group.
139+//
140+// If the action is expecting a parameter, then the correct type of
141+// parameter must be given as @parameter. If the action is expecting no
142+// parameters then @parameter must be %NULL. See
143+// g_action_group_get_action_parameter_type().
144+//
145+// If the #GActionGroup implementation supports asynchronous remote
146+// activation over D-Bus, this call may return before the relevant
147+// D-Bus traffic has been sent, or any replies have been received. In
148+// order to block on such asynchronous activation calls,
149+// g_dbus_connection_flush() should be called prior to the code, which
150+// depends on the result of the action activation. Without flushing
151+// the D-Bus connection, there is no guarantee that the action would
152+// have been activated.
153+//
154+// The following code which runs in a remote app instance, shows an
155+// example of a "quit" action being activated on the primary app
156+// instance over D-Bus. Here g_dbus_connection_flush() is called
157+// before `exit()`. Without g_dbus_connection_flush(), the "quit" action
158+// may fail to be activated on the primary instance.
159+//
160+// |[&lt;!-- language="C" --&gt;
161+// // call "quit" action on primary instance
162+// g_action_group_activate_action (G_ACTION_GROUP (app), "quit", NULL);
163+//
164+// // make sure the action is activated now
165+// g_dbus_connection_flush (...);
166+//
167+// g_debug ("application has been terminated. exiting.");
168+//
169+// exit (0);
170+// ]|
171+func (x *ApplicationWindow) ActivateAction(ActionNameVar string, ParameterVar *glib.Variant) {
172+
173+ gio.XGActionGroupActivateAction(x.GoPointer(), ActionNameVar, ParameterVar)
174+
175+}
176+
177+// Request for the state of the named action within @action_group to be
178+// changed to @value.
179+//
180+// The action must be stateful and @value must be of the correct type.
181+// See g_action_group_get_action_state_type().
182+//
183+// This call merely requests a change. The action may refuse to change
184+// its state or may change its state to something other than @value.
185+// See g_action_group_get_action_state_hint().
186+//
187+// If the @value GVariant is floating, it is consumed.
188+func (x *ApplicationWindow) ChangeActionState(ActionNameVar string, ValueVar *glib.Variant) {
189+
190+ gio.XGActionGroupChangeActionState(x.GoPointer(), ActionNameVar, ValueVar)
191+
192+}
193+
194+// Checks if the named action within @action_group is currently enabled.
195+//
196+// An action must be enabled in order to be activated or in order to
197+// have its state changed from outside callers.
198+func (x *ApplicationWindow) GetActionEnabled(ActionNameVar string) bool {
199+
200+ return gio.XGActionGroupGetActionEnabled(x.GoPointer(), ActionNameVar)
201+
202+}
203+
204+// Queries the type of the parameter that must be given when activating
205+// the named action within @action_group.
206+//
207+// When activating the action using g_action_group_activate_action(),
208+// the #GVariant given to that function must be of the type returned
209+// by this function.
210+//
211+// In the case that this function returns %NULL, you must not give any
212+// #GVariant, but %NULL instead.
213+//
214+// The parameter type of a particular action will never change but it is
215+// possible for an action to be removed and for a new action to be added
216+// with the same name but a different parameter type.
217+func (x *ApplicationWindow) GetActionParameterType(ActionNameVar string) *glib.VariantType {
218+
219+ return gio.XGActionGroupGetActionParameterType(x.GoPointer(), ActionNameVar)
220+
221+}
222+
223+// Queries the current state of the named action within @action_group.
224+//
225+// If the action is not stateful then %NULL will be returned. If the
226+// action is stateful then the type of the return value is the type
227+// given by g_action_group_get_action_state_type().
228+//
229+// The return value (if non-%NULL) should be freed with
230+// g_variant_unref() when it is no longer required.
231+func (x *ApplicationWindow) GetActionState(ActionNameVar string) *glib.Variant {
232+
233+ return gio.XGActionGroupGetActionState(x.GoPointer(), ActionNameVar)
234+
235+}
236+
237+// Requests a hint about the valid range of values for the state of the
238+// named action within @action_group.
239+//
240+// If %NULL is returned it either means that the action is not stateful
241+// or that there is no hint about the valid range of values for the
242+// state of the action.
243+//
244+// If a #GVariant array is returned then each item in the array is a
245+// possible value for the state. If a #GVariant pair (ie: two-tuple) is
246+// returned then the tuple specifies the inclusive lower and upper bound
247+// of valid values for the state.
248+//
249+// In any case, the information is merely a hint. It may be possible to
250+// have a state value outside of the hinted range and setting a value
251+// within the range may fail.
252+//
253+// The return value (if non-%NULL) should be freed with
254+// g_variant_unref() when it is no longer required.
255+func (x *ApplicationWindow) GetActionStateHint(ActionNameVar string) *glib.Variant {
256+
257+ return gio.XGActionGroupGetActionStateHint(x.GoPointer(), ActionNameVar)
258+
259+}
260+
261+// Queries the type of the state of the named action within
262+// @action_group.
263+//
264+// If the action is stateful then this function returns the
265+// #GVariantType of the state. All calls to
266+// g_action_group_change_action_state() must give a #GVariant of this
267+// type and g_action_group_get_action_state() will return a #GVariant
268+// of the same type.
269+//
270+// If the action is not stateful then this function will return %NULL.
271+// In that case, g_action_group_get_action_state() will return %NULL
272+// and you must not call g_action_group_change_action_state().
273+//
274+// The state type of a particular action will never change but it is
275+// possible for an action to be removed and for a new action to be added
276+// with the same name but a different state type.
277+func (x *ApplicationWindow) GetActionStateType(ActionNameVar string) *glib.VariantType {
278+
279+ return gio.XGActionGroupGetActionStateType(x.GoPointer(), ActionNameVar)
280+
281+}
282+
283+// Checks if the named action exists within @action_group.
284+func (x *ApplicationWindow) HasAction(ActionNameVar string) bool {
285+
286+ return gio.XGActionGroupHasAction(x.GoPointer(), ActionNameVar)
287+
288+}
289+
290+// Lists the actions contained within @action_group.
291+//
292+// The caller is responsible for freeing the list with g_strfreev() when
293+// it is no longer required.
294+func (x *ApplicationWindow) ListActions() uintptr {
295+
296+ return gio.XGActionGroupListActions(x.GoPointer())
297+
298+}
299+
300+// Queries all aspects of the named action within an @action_group.
301+//
302+// This function acquires the information available from
303+// g_action_group_has_action(), g_action_group_get_action_enabled(),
304+// g_action_group_get_action_parameter_type(),
305+// g_action_group_get_action_state_type(),
306+// g_action_group_get_action_state_hint() and
307+// g_action_group_get_action_state() with a single function call.
308+//
309+// This provides two main benefits.
310+//
311+// The first is the improvement in efficiency that comes with not having
312+// to perform repeated lookups of the action in order to discover
313+// different things about it. The second is that implementing
314+// #GActionGroup can now be done by only overriding this one virtual
315+// function.
316+//
317+// The interface provides a default implementation of this function that
318+// calls the individual functions, as required, to fetch the
319+// information. The interface also provides default implementations of
320+// those functions that call this function. All implementations,
321+// therefore, must override either this function or all of the others.
322+//
323+// If the action exists, %TRUE is returned and any of the requested
324+// fields (as indicated by having a non-%NULL reference passed in) are
325+// filled. If the action doesn't exist, %FALSE is returned and the
326+// fields may or may not have been modified.
327+func (x *ApplicationWindow) QueryAction(ActionNameVar string, EnabledVar bool, ParameterTypeVar **glib.VariantType, StateTypeVar **glib.VariantType, StateHintVar **glib.Variant, StateVar **glib.Variant) bool {
328+
329+ return gio.XGActionGroupQueryAction(x.GoPointer(), ActionNameVar, EnabledVar, ParameterTypeVar, StateTypeVar, StateHintVar, StateVar)
330+
331+}
332+
333+// Adds an action to the @action_map.
334+//
335+// If the action map already contains an action with the same name
336+// as @action then the old action is dropped from the action map.
337+//
338+// The action map takes its own reference on @action.
339+func (x *ApplicationWindow) AddAction(ActionVar gio.Action) {
340+
341+ gio.XGActionMapAddAction(x.GoPointer(), ActionVar.GoPointer())
342+
343+}
344+
345+// A convenience function for creating multiple #GSimpleAction instances
346+// and adding them to a #GActionMap.
347+//
348+// Each action is constructed as per one #GActionEntry.
349+//
350+// |[&lt;!-- language="C" --&gt;
351+// static void
352+// activate_quit (GSimpleAction *simple,
353+//
354+// GVariant *parameter,
355+// gpointer user_data)
356+//
357+// {
358+// exit (0);
359+// }
360+//
361+// static void
362+// activate_print_string (GSimpleAction *simple,
363+//
364+// GVariant *parameter,
365+// gpointer user_data)
366+//
367+// {
368+// g_print ("%s\n", g_variant_get_string (parameter, NULL));
369+// }
370+//
371+// static GActionGroup *
372+// create_action_group (void)
373+//
374+// {
375+// const GActionEntry entries[] = {
376+// { "quit", activate_quit },
377+// { "print-string", activate_print_string, "s" }
378+// };
379+// GSimpleActionGroup *group;
380+//
381+// group = g_simple_action_group_new ();
382+// g_action_map_add_action_entries (G_ACTION_MAP (group), entries, G_N_ELEMENTS (entries), NULL);
383+//
384+// return G_ACTION_GROUP (group);
385+// }
386+//
387+// ]|
388+func (x *ApplicationWindow) AddActionEntries(EntriesVar uintptr, NEntriesVar int32, UserDataVar uintptr) {
389+
390+ gio.XGActionMapAddActionEntries(x.GoPointer(), EntriesVar, NEntriesVar, UserDataVar)
391+
392+}
393+
394+// Looks up the action with the name @action_name in @action_map.
395+//
396+// If no such action exists, returns %NULL.
397+func (x *ApplicationWindow) LookupAction(ActionNameVar string) *gio.ActionBase {
398+
399+ LookupActionPtr := gio.XGActionMapLookupAction(x.GoPointer(), ActionNameVar)
400+ if LookupActionPtr == 0 {
401+ return nil
402+ }
403+
404+ gobject.IncreaseRef(LookupActionPtr)
405+
406+ LookupActionCls := &gio.ActionBase{}
407+ LookupActionCls.Ptr = LookupActionPtr
408+ return LookupActionCls
409+
410+}
411+
412+// Removes the named action from the action map.
413+//
414+// If no action of this name is in the map then nothing happens.
415+func (x *ApplicationWindow) RemoveAction(ActionNameVar string) {
416+
417+ gio.XGActionMapRemoveAction(x.GoPointer(), ActionNameVar)
418+
419+}
420+
421+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
422+func (x *ApplicationWindow) GetAccessibleRole() gtk.AccessibleRole {
423+
424+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
425+
426+}
427+
428+// Resets the accessible @property to its default value.
429+func (x *ApplicationWindow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
430+
431+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
432+
433+}
434+
435+// Resets the accessible @relation to its default value.
436+func (x *ApplicationWindow) ResetRelation(RelationVar gtk.AccessibleRelation) {
437+
438+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
439+
440+}
441+
442+// Resets the accessible @state to its default value.
443+func (x *ApplicationWindow) ResetState(StateVar gtk.AccessibleState) {
444+
445+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
446+
447+}
448+
449+// Updates a list of accessible properties.
450+//
451+// See the [enum@Gtk.AccessibleProperty] documentation for the
452+// value types of accessible properties.
453+//
454+// This function should be called by `GtkWidget` types whenever
455+// an accessible property change must be communicated to assistive
456+// technologies.
457+//
458+// Example:
459+// ```c
460+// value = gtk_adjustment_get_value (adjustment);
461+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
462+//
463+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
464+// -1);
465+//
466+// ```
467+func (x *ApplicationWindow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
468+
469+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
470+
471+}
472+
473+// Updates an array of accessible properties.
474+//
475+// This function should be called by `GtkWidget` types whenever an accessible
476+// property change must be communicated to assistive technologies.
477+//
478+// This function is meant to be used by language bindings.
479+func (x *ApplicationWindow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
480+
481+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
482+
483+}
484+
485+// Updates a list of accessible relations.
486+//
487+// This function should be called by `GtkWidget` types whenever an accessible
488+// relation change must be communicated to assistive technologies.
489+//
490+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
491+// you should pass each reference individually, followed by %NULL, e.g.
492+//
493+// ```c
494+// gtk_accessible_update_relation (accessible,
495+//
496+// GTK_ACCESSIBLE_RELATION_CONTROLS,
497+// ref1, NULL,
498+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
499+// ref1, ref2, ref3, NULL,
500+// -1);
501+//
502+// ```
503+func (x *ApplicationWindow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
504+
505+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
506+
507+}
508+
509+// Updates an array of accessible relations.
510+//
511+// This function should be called by `GtkWidget` types whenever an accessible
512+// relation change must be communicated to assistive technologies.
513+//
514+// This function is meant to be used by language bindings.
515+func (x *ApplicationWindow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
516+
517+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
518+
519+}
520+
521+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
522+// documentation for the value types of accessible states.
523+//
524+// This function should be called by `GtkWidget` types whenever an accessible
525+// state change must be communicated to assistive technologies.
526+//
527+// Example:
528+// ```c
529+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
530+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
531+//
532+// GTK_ACCESSIBLE_STATE_CHECKED, value,
533+// -1);
534+//
535+// ```
536+func (x *ApplicationWindow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
537+
538+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
539+
540+}
541+
542+// Updates an array of accessible states.
543+//
544+// This function should be called by `GtkWidget` types whenever an accessible
545+// state change must be communicated to assistive technologies.
546+//
547+// This function is meant to be used by language bindings.
548+func (x *ApplicationWindow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
549+
550+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
551+
552+}
553+
554+// Gets the ID of the @buildable object.
555+//
556+// `GtkBuilder` sets the name based on the ID attribute
557+// of the &lt;object&gt; tag used to construct the @buildable.
558+func (x *ApplicationWindow) GetBuildableId() string {
559+
560+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
561+
562+}
563+
564+// Returns the renderer that is used for this `GtkNative`.
565+func (x *ApplicationWindow) GetRenderer() *gsk.Renderer {
566+
567+ GetRendererPtr := gtk.XGtkNativeGetRenderer(x.GoPointer())
568+ if GetRendererPtr == 0 {
569+ return nil
570+ }
571+
572+ gobject.IncreaseRef(GetRendererPtr)
573+
574+ GetRendererCls := &gsk.Renderer{}
575+ GetRendererCls.Ptr = GetRendererPtr
576+ return GetRendererCls
577+
578+}
579+
580+// Returns the surface of this `GtkNative`.
581+func (x *ApplicationWindow) GetSurface() *gdk.Surface {
582+
583+ GetSurfacePtr := gtk.XGtkNativeGetSurface(x.GoPointer())
584+ if GetSurfacePtr == 0 {
585+ return nil
586+ }
587+
588+ gobject.IncreaseRef(GetSurfacePtr)
589+
590+ GetSurfaceCls := &gdk.Surface{}
591+ GetSurfaceCls.Ptr = GetSurfacePtr
592+ return GetSurfaceCls
593+
594+}
595+
596+// Retrieves the surface transform of @self.
597+//
598+// This is the translation from @self's surface coordinates into
599+// @self's widget coordinates.
600+func (x *ApplicationWindow) GetSurfaceTransform(XVar float64, YVar float64) {
601+
602+ gtk.XGtkNativeGetSurfaceTransform(x.GoPointer(), XVar, YVar)
603+
604+}
605+
606+// Realizes a `GtkNative`.
607+//
608+// This should only be used by subclasses.
609+func (x *ApplicationWindow) Realize() {
610+
611+ gtk.XGtkNativeRealize(x.GoPointer())
612+
613+}
614+
615+// Unrealizes a `GtkNative`.
616+//
617+// This should only be used by subclasses.
618+func (x *ApplicationWindow) Unrealize() {
619+
620+ gtk.XGtkNativeUnrealize(x.GoPointer())
621+
622+}
623+
624+// Returns the display that this `GtkRoot` is on.
625+func (x *ApplicationWindow) GetDisplay() *gdk.Display {
626+
627+ GetDisplayPtr := gtk.XGtkRootGetDisplay(x.GoPointer())
628+ if GetDisplayPtr == 0 {
629+ return nil
630+ }
631+
632+ gobject.IncreaseRef(GetDisplayPtr)
633+
634+ GetDisplayCls := &gdk.Display{}
635+ GetDisplayCls.Ptr = GetDisplayPtr
636+ return GetDisplayCls
637+
638+}
639+
640+// Retrieves the current focused widget within the root.
641+//
642+// Note that this is the widget that would have the focus
643+// if the root is active; if the root is not focused then
644+// `gtk_widget_has_focus (widget)` will be %FALSE for the
645+// widget.
646+func (x *ApplicationWindow) GetFocus() *gtk.Widget {
647+
648+ GetFocusPtr := gtk.XGtkRootGetFocus(x.GoPointer())
649+ if GetFocusPtr == 0 {
650+ return nil
651+ }
652+
653+ gobject.IncreaseRef(GetFocusPtr)
654+
655+ GetFocusCls := &gtk.Widget{}
656+ GetFocusCls.Ptr = GetFocusPtr
657+ return GetFocusCls
658+
659+}
660+
661+// If @focus is not the current focus widget, and is focusable, sets
662+// it as the focus widget for the root.
663+//
664+// If @focus is %NULL, unsets the focus widget for the root.
665+//
666+// To set the focus to a particular widget in the root, it is usually
667+// more convenient to use [method@Gtk.Widget.grab_focus] instead of
668+// this function.
669+func (x *ApplicationWindow) SetFocus(FocusVar *gtk.Widget) {
670+
671+ gtk.XGtkRootSetFocus(x.GoPointer(), FocusVar.GoPointer())
672+
673+}
674+
675+func init() {
676+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
677+ if err != nil {
678+ panic(err)
679+ }
680+
681+ core.PuregoSafeRegister(&xNewApplicationWindow, lib, "adw_application_window_new")
682+
683+ core.PuregoSafeRegister(&xApplicationWindowGetContent, lib, "adw_application_window_get_content")
684+ core.PuregoSafeRegister(&xApplicationWindowSetContent, lib, "adw_application_window_set_content")
685+
686+}
A v4/adw/adw-application.go +433 -0
@@ -0,0 +1,433 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gio"
8+ "github.com/jwijenbergh/puregotk/v4/glib"
9+ "github.com/jwijenbergh/puregotk/v4/gobject"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type ApplicationClass struct {
14+ ParentClass uintptr
15+
16+ Padding uintptr
17+}
18+
19+// A base class for Adwaita applications.
20+//
21+// `AdwApplication` handles library initialization by calling [func@init] in the
22+// default [signal@Gio.Application::startup] signal handler, in turn chaining up
23+// as required by [class@Gtk.Application]. Therefore, any subclass of
24+// `AdwApplication` should always chain up its `startup` handler before using
25+// any Adwaita or GTK API.
26+//
27+// ## Automatic Resources
28+//
29+// `AdwApplication` will automatically load stylesheets located in the
30+// application's resource base path (see
31+// [method@Gio.Application.set_resource_base_path], if they're present.
32+//
33+// They can be used to add custom styles to the application, as follows:
34+//
35+// - `style.css` contains styles that are always present.
36+//
37+// - `style-dark.css` contains styles only used when
38+// [property@StyleManager:dark] is `TRUE`.
39+//
40+// - `style-hc.css` contains styles used when the system high contrast
41+// preference is enabled.
42+//
43+// - `style-hc-dark.css` contains styles used when the system high contrast
44+// preference is enabled and [property@StyleManager:dark] is `TRUE`.
45+type Application struct {
46+ gtk.Application
47+}
48+
49+func ApplicationNewFromInternalPtr(ptr uintptr) *Application {
50+ cls := &Application{}
51+ cls.Ptr = ptr
52+ return cls
53+}
54+
55+var xNewApplication func(string, gio.ApplicationFlags) uintptr
56+
57+// Creates a new `AdwApplication`.
58+//
59+// If `application_id` is not `NULL`, then it must be valid. See
60+// [func@Gio.Application.id_is_valid].
61+//
62+// If no application ID is given then some features (most notably application
63+// uniqueness) will be disabled.
64+func NewApplication(ApplicationIdVar string, FlagsVar gio.ApplicationFlags) *Application {
65+ NewApplicationPtr := xNewApplication(ApplicationIdVar, FlagsVar)
66+ if NewApplicationPtr == 0 {
67+ return nil
68+ }
69+
70+ NewApplicationCls := &Application{}
71+ NewApplicationCls.Ptr = NewApplicationPtr
72+ return NewApplicationCls
73+}
74+
75+var xApplicationGetStyleManager func(uintptr) uintptr
76+
77+// Gets the style manager for @self.
78+//
79+// This is a convenience property allowing to access `AdwStyleManager` through
80+// property bindings or expressions.
81+func (x *Application) GetStyleManager() *StyleManager {
82+
83+ GetStyleManagerPtr := xApplicationGetStyleManager(x.GoPointer())
84+ if GetStyleManagerPtr == 0 {
85+ return nil
86+ }
87+
88+ gobject.IncreaseRef(GetStyleManagerPtr)
89+
90+ GetStyleManagerCls := &StyleManager{}
91+ GetStyleManagerCls.Ptr = GetStyleManagerPtr
92+ return GetStyleManagerCls
93+
94+}
95+
96+func (c *Application) GoPointer() uintptr {
97+ return c.Ptr
98+}
99+
100+func (c *Application) SetGoPointer(ptr uintptr) {
101+ c.Ptr = ptr
102+}
103+
104+// Emits the #GActionGroup::action-added signal on @action_group.
105+//
106+// This function should only be called by #GActionGroup implementations.
107+func (x *Application) ActionAdded(ActionNameVar string) {
108+
109+ gio.XGActionGroupActionAdded(x.GoPointer(), ActionNameVar)
110+
111+}
112+
113+// Emits the #GActionGroup::action-enabled-changed signal on @action_group.
114+//
115+// This function should only be called by #GActionGroup implementations.
116+func (x *Application) ActionEnabledChanged(ActionNameVar string, EnabledVar bool) {
117+
118+ gio.XGActionGroupActionEnabledChanged(x.GoPointer(), ActionNameVar, EnabledVar)
119+
120+}
121+
122+// Emits the #GActionGroup::action-removed signal on @action_group.
123+//
124+// This function should only be called by #GActionGroup implementations.
125+func (x *Application) ActionRemoved(ActionNameVar string) {
126+
127+ gio.XGActionGroupActionRemoved(x.GoPointer(), ActionNameVar)
128+
129+}
130+
131+// Emits the #GActionGroup::action-state-changed signal on @action_group.
132+//
133+// This function should only be called by #GActionGroup implementations.
134+func (x *Application) ActionStateChanged(ActionNameVar string, StateVar *glib.Variant) {
135+
136+ gio.XGActionGroupActionStateChanged(x.GoPointer(), ActionNameVar, StateVar)
137+
138+}
139+
140+// Activate the named action within @action_group.
141+//
142+// If the action is expecting a parameter, then the correct type of
143+// parameter must be given as @parameter. If the action is expecting no
144+// parameters then @parameter must be %NULL. See
145+// g_action_group_get_action_parameter_type().
146+//
147+// If the #GActionGroup implementation supports asynchronous remote
148+// activation over D-Bus, this call may return before the relevant
149+// D-Bus traffic has been sent, or any replies have been received. In
150+// order to block on such asynchronous activation calls,
151+// g_dbus_connection_flush() should be called prior to the code, which
152+// depends on the result of the action activation. Without flushing
153+// the D-Bus connection, there is no guarantee that the action would
154+// have been activated.
155+//
156+// The following code which runs in a remote app instance, shows an
157+// example of a "quit" action being activated on the primary app
158+// instance over D-Bus. Here g_dbus_connection_flush() is called
159+// before `exit()`. Without g_dbus_connection_flush(), the "quit" action
160+// may fail to be activated on the primary instance.
161+//
162+// |[&lt;!-- language="C" --&gt;
163+// // call "quit" action on primary instance
164+// g_action_group_activate_action (G_ACTION_GROUP (app), "quit", NULL);
165+//
166+// // make sure the action is activated now
167+// g_dbus_connection_flush (...);
168+//
169+// g_debug ("application has been terminated. exiting.");
170+//
171+// exit (0);
172+// ]|
173+func (x *Application) ActivateAction(ActionNameVar string, ParameterVar *glib.Variant) {
174+
175+ gio.XGActionGroupActivateAction(x.GoPointer(), ActionNameVar, ParameterVar)
176+
177+}
178+
179+// Request for the state of the named action within @action_group to be
180+// changed to @value.
181+//
182+// The action must be stateful and @value must be of the correct type.
183+// See g_action_group_get_action_state_type().
184+//
185+// This call merely requests a change. The action may refuse to change
186+// its state or may change its state to something other than @value.
187+// See g_action_group_get_action_state_hint().
188+//
189+// If the @value GVariant is floating, it is consumed.
190+func (x *Application) ChangeActionState(ActionNameVar string, ValueVar *glib.Variant) {
191+
192+ gio.XGActionGroupChangeActionState(x.GoPointer(), ActionNameVar, ValueVar)
193+
194+}
195+
196+// Checks if the named action within @action_group is currently enabled.
197+//
198+// An action must be enabled in order to be activated or in order to
199+// have its state changed from outside callers.
200+func (x *Application) GetActionEnabled(ActionNameVar string) bool {
201+
202+ return gio.XGActionGroupGetActionEnabled(x.GoPointer(), ActionNameVar)
203+
204+}
205+
206+// Queries the type of the parameter that must be given when activating
207+// the named action within @action_group.
208+//
209+// When activating the action using g_action_group_activate_action(),
210+// the #GVariant given to that function must be of the type returned
211+// by this function.
212+//
213+// In the case that this function returns %NULL, you must not give any
214+// #GVariant, but %NULL instead.
215+//
216+// The parameter type of a particular action will never change but it is
217+// possible for an action to be removed and for a new action to be added
218+// with the same name but a different parameter type.
219+func (x *Application) GetActionParameterType(ActionNameVar string) *glib.VariantType {
220+
221+ return gio.XGActionGroupGetActionParameterType(x.GoPointer(), ActionNameVar)
222+
223+}
224+
225+// Queries the current state of the named action within @action_group.
226+//
227+// If the action is not stateful then %NULL will be returned. If the
228+// action is stateful then the type of the return value is the type
229+// given by g_action_group_get_action_state_type().
230+//
231+// The return value (if non-%NULL) should be freed with
232+// g_variant_unref() when it is no longer required.
233+func (x *Application) GetActionState(ActionNameVar string) *glib.Variant {
234+
235+ return gio.XGActionGroupGetActionState(x.GoPointer(), ActionNameVar)
236+
237+}
238+
239+// Requests a hint about the valid range of values for the state of the
240+// named action within @action_group.
241+//
242+// If %NULL is returned it either means that the action is not stateful
243+// or that there is no hint about the valid range of values for the
244+// state of the action.
245+//
246+// If a #GVariant array is returned then each item in the array is a
247+// possible value for the state. If a #GVariant pair (ie: two-tuple) is
248+// returned then the tuple specifies the inclusive lower and upper bound
249+// of valid values for the state.
250+//
251+// In any case, the information is merely a hint. It may be possible to
252+// have a state value outside of the hinted range and setting a value
253+// within the range may fail.
254+//
255+// The return value (if non-%NULL) should be freed with
256+// g_variant_unref() when it is no longer required.
257+func (x *Application) GetActionStateHint(ActionNameVar string) *glib.Variant {
258+
259+ return gio.XGActionGroupGetActionStateHint(x.GoPointer(), ActionNameVar)
260+
261+}
262+
263+// Queries the type of the state of the named action within
264+// @action_group.
265+//
266+// If the action is stateful then this function returns the
267+// #GVariantType of the state. All calls to
268+// g_action_group_change_action_state() must give a #GVariant of this
269+// type and g_action_group_get_action_state() will return a #GVariant
270+// of the same type.
271+//
272+// If the action is not stateful then this function will return %NULL.
273+// In that case, g_action_group_get_action_state() will return %NULL
274+// and you must not call g_action_group_change_action_state().
275+//
276+// The state type of a particular action will never change but it is
277+// possible for an action to be removed and for a new action to be added
278+// with the same name but a different state type.
279+func (x *Application) GetActionStateType(ActionNameVar string) *glib.VariantType {
280+
281+ return gio.XGActionGroupGetActionStateType(x.GoPointer(), ActionNameVar)
282+
283+}
284+
285+// Checks if the named action exists within @action_group.
286+func (x *Application) HasAction(ActionNameVar string) bool {
287+
288+ return gio.XGActionGroupHasAction(x.GoPointer(), ActionNameVar)
289+
290+}
291+
292+// Lists the actions contained within @action_group.
293+//
294+// The caller is responsible for freeing the list with g_strfreev() when
295+// it is no longer required.
296+func (x *Application) ListActions() uintptr {
297+
298+ return gio.XGActionGroupListActions(x.GoPointer())
299+
300+}
301+
302+// Queries all aspects of the named action within an @action_group.
303+//
304+// This function acquires the information available from
305+// g_action_group_has_action(), g_action_group_get_action_enabled(),
306+// g_action_group_get_action_parameter_type(),
307+// g_action_group_get_action_state_type(),
308+// g_action_group_get_action_state_hint() and
309+// g_action_group_get_action_state() with a single function call.
310+//
311+// This provides two main benefits.
312+//
313+// The first is the improvement in efficiency that comes with not having
314+// to perform repeated lookups of the action in order to discover
315+// different things about it. The second is that implementing
316+// #GActionGroup can now be done by only overriding this one virtual
317+// function.
318+//
319+// The interface provides a default implementation of this function that
320+// calls the individual functions, as required, to fetch the
321+// information. The interface also provides default implementations of
322+// those functions that call this function. All implementations,
323+// therefore, must override either this function or all of the others.
324+//
325+// If the action exists, %TRUE is returned and any of the requested
326+// fields (as indicated by having a non-%NULL reference passed in) are
327+// filled. If the action doesn't exist, %FALSE is returned and the
328+// fields may or may not have been modified.
329+func (x *Application) QueryAction(ActionNameVar string, EnabledVar bool, ParameterTypeVar **glib.VariantType, StateTypeVar **glib.VariantType, StateHintVar **glib.Variant, StateVar **glib.Variant) bool {
330+
331+ return gio.XGActionGroupQueryAction(x.GoPointer(), ActionNameVar, EnabledVar, ParameterTypeVar, StateTypeVar, StateHintVar, StateVar)
332+
333+}
334+
335+// Adds an action to the @action_map.
336+//
337+// If the action map already contains an action with the same name
338+// as @action then the old action is dropped from the action map.
339+//
340+// The action map takes its own reference on @action.
341+func (x *Application) AddAction(ActionVar gio.Action) {
342+
343+ gio.XGActionMapAddAction(x.GoPointer(), ActionVar.GoPointer())
344+
345+}
346+
347+// A convenience function for creating multiple #GSimpleAction instances
348+// and adding them to a #GActionMap.
349+//
350+// Each action is constructed as per one #GActionEntry.
351+//
352+// |[&lt;!-- language="C" --&gt;
353+// static void
354+// activate_quit (GSimpleAction *simple,
355+//
356+// GVariant *parameter,
357+// gpointer user_data)
358+//
359+// {
360+// exit (0);
361+// }
362+//
363+// static void
364+// activate_print_string (GSimpleAction *simple,
365+//
366+// GVariant *parameter,
367+// gpointer user_data)
368+//
369+// {
370+// g_print ("%s\n", g_variant_get_string (parameter, NULL));
371+// }
372+//
373+// static GActionGroup *
374+// create_action_group (void)
375+//
376+// {
377+// const GActionEntry entries[] = {
378+// { "quit", activate_quit },
379+// { "print-string", activate_print_string, "s" }
380+// };
381+// GSimpleActionGroup *group;
382+//
383+// group = g_simple_action_group_new ();
384+// g_action_map_add_action_entries (G_ACTION_MAP (group), entries, G_N_ELEMENTS (entries), NULL);
385+//
386+// return G_ACTION_GROUP (group);
387+// }
388+//
389+// ]|
390+func (x *Application) AddActionEntries(EntriesVar uintptr, NEntriesVar int32, UserDataVar uintptr) {
391+
392+ gio.XGActionMapAddActionEntries(x.GoPointer(), EntriesVar, NEntriesVar, UserDataVar)
393+
394+}
395+
396+// Looks up the action with the name @action_name in @action_map.
397+//
398+// If no such action exists, returns %NULL.
399+func (x *Application) LookupAction(ActionNameVar string) *gio.ActionBase {
400+
401+ LookupActionPtr := gio.XGActionMapLookupAction(x.GoPointer(), ActionNameVar)
402+ if LookupActionPtr == 0 {
403+ return nil
404+ }
405+
406+ gobject.IncreaseRef(LookupActionPtr)
407+
408+ LookupActionCls := &gio.ActionBase{}
409+ LookupActionCls.Ptr = LookupActionPtr
410+ return LookupActionCls
411+
412+}
413+
414+// Removes the named action from the action map.
415+//
416+// If no action of this name is in the map then nothing happens.
417+func (x *Application) RemoveAction(ActionNameVar string) {
418+
419+ gio.XGActionMapRemoveAction(x.GoPointer(), ActionNameVar)
420+
421+}
422+
423+func init() {
424+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
425+ if err != nil {
426+ panic(err)
427+ }
428+
429+ core.PuregoSafeRegister(&xNewApplication, lib, "adw_application_new")
430+
431+ core.PuregoSafeRegister(&xApplicationGetStyleManager, lib, "adw_application_get_style_manager")
432+
433+}
A v4/adw/adw-avatar.go +364 -0
@@ -0,0 +1,364 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type AvatarClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A widget displaying an image, with a generated fallback.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="avatar-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="avatar.png" alt="avatar"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// `AdwAvatar` is a widget that shows a round avatar.
26+//
27+// `AdwAvatar` generates an avatar with the initials of the
28+// [property@Avatar:text] on top of a colored background.
29+//
30+// The color is picked based on the hash of the [property@Avatar:text].
31+//
32+// If [property@Avatar:show-initials] is set to `FALSE`,
33+// [property@Avatar:icon-name] or `avatar-default-symbolic` is shown instead of
34+// the initials.
35+//
36+// Use [property@Avatar:custom-image] to set a custom image.
37+//
38+// ## CSS nodes
39+//
40+// `AdwAvatar` has a single CSS node with name `avatar`.
41+type Avatar struct {
42+ gtk.Widget
43+}
44+
45+func AvatarNewFromInternalPtr(ptr uintptr) *Avatar {
46+ cls := &Avatar{}
47+ cls.Ptr = ptr
48+ return cls
49+}
50+
51+var xNewAvatar func(int32, string, bool) uintptr
52+
53+// Creates a new `AdwAvatar`.
54+func NewAvatar(SizeVar int32, TextVar string, ShowInitialsVar bool) *gtk.Widget {
55+ NewAvatarPtr := xNewAvatar(SizeVar, TextVar, ShowInitialsVar)
56+ if NewAvatarPtr == 0 {
57+ return nil
58+ }
59+
60+ gobject.IncreaseRef(NewAvatarPtr)
61+
62+ NewAvatarCls := &gtk.Widget{}
63+ NewAvatarCls.Ptr = NewAvatarPtr
64+ return NewAvatarCls
65+}
66+
67+var xAvatarDrawToTexture func(uintptr, int32) uintptr
68+
69+// Renders @self into a [class@Gdk.Texture] at @scale_factor.
70+//
71+// This can be used to export the fallback avatar.
72+func (x *Avatar) DrawToTexture(ScaleFactorVar int32) *gdk.Texture {
73+
74+ DrawToTexturePtr := xAvatarDrawToTexture(x.GoPointer(), ScaleFactorVar)
75+ if DrawToTexturePtr == 0 {
76+ return nil
77+ }
78+
79+ DrawToTextureCls := &gdk.Texture{}
80+ DrawToTextureCls.Ptr = DrawToTexturePtr
81+ return DrawToTextureCls
82+
83+}
84+
85+var xAvatarGetCustomImage func(uintptr) uintptr
86+
87+// Gets the custom image paintable.
88+func (x *Avatar) GetCustomImage() *gdk.PaintableBase {
89+
90+ GetCustomImagePtr := xAvatarGetCustomImage(x.GoPointer())
91+ if GetCustomImagePtr == 0 {
92+ return nil
93+ }
94+
95+ gobject.IncreaseRef(GetCustomImagePtr)
96+
97+ GetCustomImageCls := &gdk.PaintableBase{}
98+ GetCustomImageCls.Ptr = GetCustomImagePtr
99+ return GetCustomImageCls
100+
101+}
102+
103+var xAvatarGetIconName func(uintptr) string
104+
105+// Gets the name of an icon to use as a fallback.
106+func (x *Avatar) GetIconName() string {
107+
108+ return xAvatarGetIconName(x.GoPointer())
109+
110+}
111+
112+var xAvatarGetShowInitials func(uintptr) bool
113+
114+// Gets whether initials are used instead of an icon on the fallback avatar.
115+func (x *Avatar) GetShowInitials() bool {
116+
117+ return xAvatarGetShowInitials(x.GoPointer())
118+
119+}
120+
121+var xAvatarGetSize func(uintptr) int32
122+
123+// Gets the size of the avatar.
124+func (x *Avatar) GetSize() int32 {
125+
126+ return xAvatarGetSize(x.GoPointer())
127+
128+}
129+
130+var xAvatarGetText func(uintptr) string
131+
132+// Gets the text used to generate the fallback initials and color.
133+func (x *Avatar) GetText() string {
134+
135+ return xAvatarGetText(x.GoPointer())
136+
137+}
138+
139+var xAvatarSetCustomImage func(uintptr, uintptr)
140+
141+// Sets the custom image paintable.
142+//
143+// Custom image is displayed instead of initials or icon.
144+func (x *Avatar) SetCustomImage(CustomImageVar gdk.Paintable) {
145+
146+ xAvatarSetCustomImage(x.GoPointer(), CustomImageVar.GoPointer())
147+
148+}
149+
150+var xAvatarSetIconName func(uintptr, string)
151+
152+// Sets the name of an icon to use as a fallback.
153+//
154+// If no name is set, `avatar-default-symbolic` will be used.
155+func (x *Avatar) SetIconName(IconNameVar string) {
156+
157+ xAvatarSetIconName(x.GoPointer(), IconNameVar)
158+
159+}
160+
161+var xAvatarSetShowInitials func(uintptr, bool)
162+
163+// Sets whether to use initials instead of an icon on the fallback avatar.
164+//
165+// See [property@Avatar:icon-name] for how to change the fallback icon.
166+func (x *Avatar) SetShowInitials(ShowInitialsVar bool) {
167+
168+ xAvatarSetShowInitials(x.GoPointer(), ShowInitialsVar)
169+
170+}
171+
172+var xAvatarSetSize func(uintptr, int32)
173+
174+// Sets the size of the avatar.
175+func (x *Avatar) SetSize(SizeVar int32) {
176+
177+ xAvatarSetSize(x.GoPointer(), SizeVar)
178+
179+}
180+
181+var xAvatarSetText func(uintptr, string)
182+
183+// Sets the text used to generate the fallback initials and color.
184+//
185+// It's only used to generate the color if [property@Avatar:show-initials] is
186+// `FALSE`.
187+func (x *Avatar) SetText(TextVar string) {
188+
189+ xAvatarSetText(x.GoPointer(), TextVar)
190+
191+}
192+
193+func (c *Avatar) GoPointer() uintptr {
194+ return c.Ptr
195+}
196+
197+func (c *Avatar) SetGoPointer(ptr uintptr) {
198+ c.Ptr = ptr
199+}
200+
201+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
202+func (x *Avatar) GetAccessibleRole() gtk.AccessibleRole {
203+
204+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
205+
206+}
207+
208+// Resets the accessible @property to its default value.
209+func (x *Avatar) ResetProperty(PropertyVar gtk.AccessibleProperty) {
210+
211+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
212+
213+}
214+
215+// Resets the accessible @relation to its default value.
216+func (x *Avatar) ResetRelation(RelationVar gtk.AccessibleRelation) {
217+
218+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
219+
220+}
221+
222+// Resets the accessible @state to its default value.
223+func (x *Avatar) ResetState(StateVar gtk.AccessibleState) {
224+
225+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
226+
227+}
228+
229+// Updates a list of accessible properties.
230+//
231+// See the [enum@Gtk.AccessibleProperty] documentation for the
232+// value types of accessible properties.
233+//
234+// This function should be called by `GtkWidget` types whenever
235+// an accessible property change must be communicated to assistive
236+// technologies.
237+//
238+// Example:
239+// ```c
240+// value = gtk_adjustment_get_value (adjustment);
241+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
242+//
243+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
244+// -1);
245+//
246+// ```
247+func (x *Avatar) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
248+
249+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
250+
251+}
252+
253+// Updates an array of accessible properties.
254+//
255+// This function should be called by `GtkWidget` types whenever an accessible
256+// property change must be communicated to assistive technologies.
257+//
258+// This function is meant to be used by language bindings.
259+func (x *Avatar) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
260+
261+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
262+
263+}
264+
265+// Updates a list of accessible relations.
266+//
267+// This function should be called by `GtkWidget` types whenever an accessible
268+// relation change must be communicated to assistive technologies.
269+//
270+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
271+// you should pass each reference individually, followed by %NULL, e.g.
272+//
273+// ```c
274+// gtk_accessible_update_relation (accessible,
275+//
276+// GTK_ACCESSIBLE_RELATION_CONTROLS,
277+// ref1, NULL,
278+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
279+// ref1, ref2, ref3, NULL,
280+// -1);
281+//
282+// ```
283+func (x *Avatar) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
284+
285+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
286+
287+}
288+
289+// Updates an array of accessible relations.
290+//
291+// This function should be called by `GtkWidget` types whenever an accessible
292+// relation change must be communicated to assistive technologies.
293+//
294+// This function is meant to be used by language bindings.
295+func (x *Avatar) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
296+
297+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
298+
299+}
300+
301+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
302+// documentation for the value types of accessible states.
303+//
304+// This function should be called by `GtkWidget` types whenever an accessible
305+// state change must be communicated to assistive technologies.
306+//
307+// Example:
308+// ```c
309+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
310+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
311+//
312+// GTK_ACCESSIBLE_STATE_CHECKED, value,
313+// -1);
314+//
315+// ```
316+func (x *Avatar) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
317+
318+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
319+
320+}
321+
322+// Updates an array of accessible states.
323+//
324+// This function should be called by `GtkWidget` types whenever an accessible
325+// state change must be communicated to assistive technologies.
326+//
327+// This function is meant to be used by language bindings.
328+func (x *Avatar) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
329+
330+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
331+
332+}
333+
334+// Gets the ID of the @buildable object.
335+//
336+// `GtkBuilder` sets the name based on the ID attribute
337+// of the &lt;object&gt; tag used to construct the @buildable.
338+func (x *Avatar) GetBuildableId() string {
339+
340+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
341+
342+}
343+
344+func init() {
345+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
346+ if err != nil {
347+ panic(err)
348+ }
349+
350+ core.PuregoSafeRegister(&xNewAvatar, lib, "adw_avatar_new")
351+
352+ core.PuregoSafeRegister(&xAvatarDrawToTexture, lib, "adw_avatar_draw_to_texture")
353+ core.PuregoSafeRegister(&xAvatarGetCustomImage, lib, "adw_avatar_get_custom_image")
354+ core.PuregoSafeRegister(&xAvatarGetIconName, lib, "adw_avatar_get_icon_name")
355+ core.PuregoSafeRegister(&xAvatarGetShowInitials, lib, "adw_avatar_get_show_initials")
356+ core.PuregoSafeRegister(&xAvatarGetSize, lib, "adw_avatar_get_size")
357+ core.PuregoSafeRegister(&xAvatarGetText, lib, "adw_avatar_get_text")
358+ core.PuregoSafeRegister(&xAvatarSetCustomImage, lib, "adw_avatar_set_custom_image")
359+ core.PuregoSafeRegister(&xAvatarSetIconName, lib, "adw_avatar_set_icon_name")
360+ core.PuregoSafeRegister(&xAvatarSetShowInitials, lib, "adw_avatar_set_show_initials")
361+ core.PuregoSafeRegister(&xAvatarSetSize, lib, "adw_avatar_set_size")
362+ core.PuregoSafeRegister(&xAvatarSetText, lib, "adw_avatar_set_text")
363+
364+}
A v4/adw/adw-banner.go +412 -0
@@ -0,0 +1,412 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type BannerClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A bar with contextual information.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="banner-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="banner.png" alt="banner"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// Banners are hidden by default, use [property@Banner:revealed] to show them.
26+//
27+// Banners have a title, set with [property@Banner:title]. Titles can be marked
28+// up with Pango markup, use [property@Banner:use-markup] to enable it.
29+//
30+// The title will be shown centered or left-aligned depending on available
31+// space.
32+//
33+// Banners can optionally have a button with text on it, set through
34+// [property@Banner:button-label]. The button can be used with a `GAction`,
35+// or with the [signal@Banner::button-clicked] signal.
36+//
37+// ## CSS nodes
38+//
39+// `AdwBanner` has a main CSS node with the name `banner`.
40+type Banner struct {
41+ gtk.Widget
42+}
43+
44+func BannerNewFromInternalPtr(ptr uintptr) *Banner {
45+ cls := &Banner{}
46+ cls.Ptr = ptr
47+ return cls
48+}
49+
50+var xNewBanner func(string) uintptr
51+
52+// Creates a new `AdwBanner`.
53+func NewBanner(TitleVar string) *gtk.Widget {
54+ NewBannerPtr := xNewBanner(TitleVar)
55+ if NewBannerPtr == 0 {
56+ return nil
57+ }
58+
59+ gobject.IncreaseRef(NewBannerPtr)
60+
61+ NewBannerCls := &gtk.Widget{}
62+ NewBannerCls.Ptr = NewBannerPtr
63+ return NewBannerCls
64+}
65+
66+var xBannerGetButtonLabel func(uintptr) string
67+
68+// Gets the button label for @self.
69+func (x *Banner) GetButtonLabel() string {
70+
71+ return xBannerGetButtonLabel(x.GoPointer())
72+
73+}
74+
75+var xBannerGetRevealed func(uintptr) bool
76+
77+// Gets if a banner is revealed
78+func (x *Banner) GetRevealed() bool {
79+
80+ return xBannerGetRevealed(x.GoPointer())
81+
82+}
83+
84+var xBannerGetTitle func(uintptr) string
85+
86+// Gets the title for @self.
87+func (x *Banner) GetTitle() string {
88+
89+ return xBannerGetTitle(x.GoPointer())
90+
91+}
92+
93+var xBannerGetUseMarkup func(uintptr) bool
94+
95+// Gets whether to use Pango markup for the banner title.
96+func (x *Banner) GetUseMarkup() bool {
97+
98+ return xBannerGetUseMarkup(x.GoPointer())
99+
100+}
101+
102+var xBannerSetButtonLabel func(uintptr, string)
103+
104+// Sets the button label for @self.
105+//
106+// If set to `""` or `NULL`, the button won't be shown.
107+//
108+// The button can be used with a `GAction`, or with the
109+// [signal@Banner::button-clicked] signal.
110+func (x *Banner) SetButtonLabel(LabelVar string) {
111+
112+ xBannerSetButtonLabel(x.GoPointer(), LabelVar)
113+
114+}
115+
116+var xBannerSetRevealed func(uintptr, bool)
117+
118+// Sets whether a banner should be revealed
119+func (x *Banner) SetRevealed(RevealedVar bool) {
120+
121+ xBannerSetRevealed(x.GoPointer(), RevealedVar)
122+
123+}
124+
125+var xBannerSetTitle func(uintptr, string)
126+
127+// Sets the title for this banner.
128+//
129+// See also: [property@Banner:use-markup].
130+func (x *Banner) SetTitle(TitleVar string) {
131+
132+ xBannerSetTitle(x.GoPointer(), TitleVar)
133+
134+}
135+
136+var xBannerSetUseMarkup func(uintptr, bool)
137+
138+// Sets whether to use Pango markup for the banner title.
139+//
140+// See also [func@Pango.parse_markup].
141+func (x *Banner) SetUseMarkup(UseMarkupVar bool) {
142+
143+ xBannerSetUseMarkup(x.GoPointer(), UseMarkupVar)
144+
145+}
146+
147+func (c *Banner) GoPointer() uintptr {
148+ return c.Ptr
149+}
150+
151+func (c *Banner) SetGoPointer(ptr uintptr) {
152+ c.Ptr = ptr
153+}
154+
155+// This signal is emitted after the action button has been clicked.
156+//
157+// It can be used as an alternative to setting an action.
158+func (x *Banner) ConnectButtonClicked(cb func(Banner)) {
159+ fcb := func(clsPtr uintptr) {
160+ fa := Banner{}
161+ fa.Ptr = clsPtr
162+
163+ cb(fa)
164+
165+ }
166+ gobject.ObjectConnect(x.GoPointer(), "signal::button-clicked", purego.NewCallback(fcb))
167+}
168+
169+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
170+func (x *Banner) GetAccessibleRole() gtk.AccessibleRole {
171+
172+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
173+
174+}
175+
176+// Resets the accessible @property to its default value.
177+func (x *Banner) ResetProperty(PropertyVar gtk.AccessibleProperty) {
178+
179+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
180+
181+}
182+
183+// Resets the accessible @relation to its default value.
184+func (x *Banner) ResetRelation(RelationVar gtk.AccessibleRelation) {
185+
186+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
187+
188+}
189+
190+// Resets the accessible @state to its default value.
191+func (x *Banner) ResetState(StateVar gtk.AccessibleState) {
192+
193+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
194+
195+}
196+
197+// Updates a list of accessible properties.
198+//
199+// See the [enum@Gtk.AccessibleProperty] documentation for the
200+// value types of accessible properties.
201+//
202+// This function should be called by `GtkWidget` types whenever
203+// an accessible property change must be communicated to assistive
204+// technologies.
205+//
206+// Example:
207+// ```c
208+// value = gtk_adjustment_get_value (adjustment);
209+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
210+//
211+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
212+// -1);
213+//
214+// ```
215+func (x *Banner) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
216+
217+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
218+
219+}
220+
221+// Updates an array of accessible properties.
222+//
223+// This function should be called by `GtkWidget` types whenever an accessible
224+// property change must be communicated to assistive technologies.
225+//
226+// This function is meant to be used by language bindings.
227+func (x *Banner) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
228+
229+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
230+
231+}
232+
233+// Updates a list of accessible relations.
234+//
235+// This function should be called by `GtkWidget` types whenever an accessible
236+// relation change must be communicated to assistive technologies.
237+//
238+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
239+// you should pass each reference individually, followed by %NULL, e.g.
240+//
241+// ```c
242+// gtk_accessible_update_relation (accessible,
243+//
244+// GTK_ACCESSIBLE_RELATION_CONTROLS,
245+// ref1, NULL,
246+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
247+// ref1, ref2, ref3, NULL,
248+// -1);
249+//
250+// ```
251+func (x *Banner) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
252+
253+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
254+
255+}
256+
257+// Updates an array of accessible relations.
258+//
259+// This function should be called by `GtkWidget` types whenever an accessible
260+// relation change must be communicated to assistive technologies.
261+//
262+// This function is meant to be used by language bindings.
263+func (x *Banner) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
264+
265+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
266+
267+}
268+
269+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
270+// documentation for the value types of accessible states.
271+//
272+// This function should be called by `GtkWidget` types whenever an accessible
273+// state change must be communicated to assistive technologies.
274+//
275+// Example:
276+// ```c
277+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
278+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
279+//
280+// GTK_ACCESSIBLE_STATE_CHECKED, value,
281+// -1);
282+//
283+// ```
284+func (x *Banner) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
285+
286+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
287+
288+}
289+
290+// Updates an array of accessible states.
291+//
292+// This function should be called by `GtkWidget` types whenever an accessible
293+// state change must be communicated to assistive technologies.
294+//
295+// This function is meant to be used by language bindings.
296+func (x *Banner) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
297+
298+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
299+
300+}
301+
302+// Gets the action name for @actionable.
303+func (x *Banner) GetActionName() string {
304+
305+ return gtk.XGtkActionableGetActionName(x.GoPointer())
306+
307+}
308+
309+// Gets the current target value of @actionable.
310+func (x *Banner) GetActionTargetValue() *glib.Variant {
311+
312+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
313+
314+}
315+
316+// Specifies the name of the action with which this widget should be
317+// associated.
318+//
319+// If @action_name is %NULL then the widget will be unassociated from
320+// any previous action.
321+//
322+// Usually this function is used when the widget is located (or will be
323+// located) within the hierarchy of a `GtkApplicationWindow`.
324+//
325+// Names are of the form “win.save” or “app.quit” for actions on the
326+// containing [class@ApplicationWindow] or its associated [class@Application],
327+// respectively. This is the same form used for actions in the [class@Gio.Menu]
328+// associated with the window.
329+func (x *Banner) SetActionName(ActionNameVar string) {
330+
331+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
332+
333+}
334+
335+// Sets the target of an actionable widget.
336+//
337+// This is a convenience function that calls [ctor@GLib.Variant.new] for
338+// @format_string and uses the result to call
339+// [method@Gtk.Actionable.set_action_target_value].
340+//
341+// If you are setting a string-valued target and want to set
342+// the action name at the same time, you can use
343+// [method@Gtk.Actionable.set_detailed_action_name].
344+func (x *Banner) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
345+
346+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
347+
348+}
349+
350+// Sets the target value of an actionable widget.
351+//
352+// If @target_value is %NULL then the target value is unset.
353+//
354+// The target value has two purposes. First, it is used as the parameter
355+// to activation of the action associated with the `GtkActionable` widget.
356+// Second, it is used to determine if the widget should be rendered as
357+// “active” — the widget is active if the state is equal to the given target.
358+//
359+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
360+// with string state in a typical “radio button” situation. Each button
361+// will be associated with the same action, but with a different target
362+// value for that action. Clicking on a particular button will activate
363+// the action with the target of that button, which will typically cause
364+// the action’s state to change to that value. Since the action’s state
365+// is now equal to the target value of the button, the button will now
366+// be rendered as active (and the other buttons, with different targets,
367+// rendered inactive).
368+func (x *Banner) SetActionTargetValue(TargetValueVar *glib.Variant) {
369+
370+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
371+
372+}
373+
374+// Sets the action-name and associated string target value of an
375+// actionable widget.
376+//
377+// @detailed_action_name is a string in the format accepted by
378+// [func@Gio.Action.parse_detailed_name].
379+func (x *Banner) SetDetailedActionName(DetailedActionNameVar string) {
380+
381+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
382+
383+}
384+
385+// Gets the ID of the @buildable object.
386+//
387+// `GtkBuilder` sets the name based on the ID attribute
388+// of the &lt;object&gt; tag used to construct the @buildable.
389+func (x *Banner) GetBuildableId() string {
390+
391+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
392+
393+}
394+
395+func init() {
396+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
397+ if err != nil {
398+ panic(err)
399+ }
400+
401+ core.PuregoSafeRegister(&xNewBanner, lib, "adw_banner_new")
402+
403+ core.PuregoSafeRegister(&xBannerGetButtonLabel, lib, "adw_banner_get_button_label")
404+ core.PuregoSafeRegister(&xBannerGetRevealed, lib, "adw_banner_get_revealed")
405+ core.PuregoSafeRegister(&xBannerGetTitle, lib, "adw_banner_get_title")
406+ core.PuregoSafeRegister(&xBannerGetUseMarkup, lib, "adw_banner_get_use_markup")
407+ core.PuregoSafeRegister(&xBannerSetButtonLabel, lib, "adw_banner_set_button_label")
408+ core.PuregoSafeRegister(&xBannerSetRevealed, lib, "adw_banner_set_revealed")
409+ core.PuregoSafeRegister(&xBannerSetTitle, lib, "adw_banner_set_title")
410+ core.PuregoSafeRegister(&xBannerSetUseMarkup, lib, "adw_banner_set_use_markup")
411+
412+}
A v4/adw/adw-bin.go +244 -0
@@ -0,0 +1,244 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type BinClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A widget with one child.
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="bin-dark.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="bin.png" alt="bin"&gt;
21+//
22+// &lt;/picture&gt;
23+//
24+// The `AdwBin` widget has only one child, set with the [property@Bin:child]
25+// property.
26+//
27+// It is useful for deriving subclasses, since it provides common code needed
28+// for handling a single child widget.
29+type Bin struct {
30+ gtk.Widget
31+}
32+
33+func BinNewFromInternalPtr(ptr uintptr) *Bin {
34+ cls := &Bin{}
35+ cls.Ptr = ptr
36+ return cls
37+}
38+
39+var xNewBin func() uintptr
40+
41+// Creates a new `AdwBin`.
42+func NewBin() *gtk.Widget {
43+ NewBinPtr := xNewBin()
44+ if NewBinPtr == 0 {
45+ return nil
46+ }
47+
48+ gobject.IncreaseRef(NewBinPtr)
49+
50+ NewBinCls := &gtk.Widget{}
51+ NewBinCls.Ptr = NewBinPtr
52+ return NewBinCls
53+}
54+
55+var xBinGetChild func(uintptr) uintptr
56+
57+// Gets the child widget of @self.
58+func (x *Bin) GetChild() *gtk.Widget {
59+
60+ GetChildPtr := xBinGetChild(x.GoPointer())
61+ if GetChildPtr == 0 {
62+ return nil
63+ }
64+
65+ gobject.IncreaseRef(GetChildPtr)
66+
67+ GetChildCls := &gtk.Widget{}
68+ GetChildCls.Ptr = GetChildPtr
69+ return GetChildCls
70+
71+}
72+
73+var xBinSetChild func(uintptr, uintptr)
74+
75+// Sets the child widget of @self.
76+func (x *Bin) SetChild(ChildVar *gtk.Widget) {
77+
78+ xBinSetChild(x.GoPointer(), ChildVar.GoPointer())
79+
80+}
81+
82+func (c *Bin) GoPointer() uintptr {
83+ return c.Ptr
84+}
85+
86+func (c *Bin) SetGoPointer(ptr uintptr) {
87+ c.Ptr = ptr
88+}
89+
90+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
91+func (x *Bin) GetAccessibleRole() gtk.AccessibleRole {
92+
93+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
94+
95+}
96+
97+// Resets the accessible @property to its default value.
98+func (x *Bin) ResetProperty(PropertyVar gtk.AccessibleProperty) {
99+
100+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
101+
102+}
103+
104+// Resets the accessible @relation to its default value.
105+func (x *Bin) ResetRelation(RelationVar gtk.AccessibleRelation) {
106+
107+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
108+
109+}
110+
111+// Resets the accessible @state to its default value.
112+func (x *Bin) ResetState(StateVar gtk.AccessibleState) {
113+
114+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
115+
116+}
117+
118+// Updates a list of accessible properties.
119+//
120+// See the [enum@Gtk.AccessibleProperty] documentation for the
121+// value types of accessible properties.
122+//
123+// This function should be called by `GtkWidget` types whenever
124+// an accessible property change must be communicated to assistive
125+// technologies.
126+//
127+// Example:
128+// ```c
129+// value = gtk_adjustment_get_value (adjustment);
130+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
131+//
132+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
133+// -1);
134+//
135+// ```
136+func (x *Bin) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
137+
138+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
139+
140+}
141+
142+// Updates an array of accessible properties.
143+//
144+// This function should be called by `GtkWidget` types whenever an accessible
145+// property change must be communicated to assistive technologies.
146+//
147+// This function is meant to be used by language bindings.
148+func (x *Bin) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
149+
150+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
151+
152+}
153+
154+// Updates a list of accessible relations.
155+//
156+// This function should be called by `GtkWidget` types whenever an accessible
157+// relation change must be communicated to assistive technologies.
158+//
159+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
160+// you should pass each reference individually, followed by %NULL, e.g.
161+//
162+// ```c
163+// gtk_accessible_update_relation (accessible,
164+//
165+// GTK_ACCESSIBLE_RELATION_CONTROLS,
166+// ref1, NULL,
167+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
168+// ref1, ref2, ref3, NULL,
169+// -1);
170+//
171+// ```
172+func (x *Bin) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
173+
174+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
175+
176+}
177+
178+// Updates an array of accessible relations.
179+//
180+// This function should be called by `GtkWidget` types whenever an accessible
181+// relation change must be communicated to assistive technologies.
182+//
183+// This function is meant to be used by language bindings.
184+func (x *Bin) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
185+
186+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
187+
188+}
189+
190+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
191+// documentation for the value types of accessible states.
192+//
193+// This function should be called by `GtkWidget` types whenever an accessible
194+// state change must be communicated to assistive technologies.
195+//
196+// Example:
197+// ```c
198+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
199+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
200+//
201+// GTK_ACCESSIBLE_STATE_CHECKED, value,
202+// -1);
203+//
204+// ```
205+func (x *Bin) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
206+
207+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
208+
209+}
210+
211+// Updates an array of accessible states.
212+//
213+// This function should be called by `GtkWidget` types whenever an accessible
214+// state change must be communicated to assistive technologies.
215+//
216+// This function is meant to be used by language bindings.
217+func (x *Bin) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
218+
219+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
220+
221+}
222+
223+// Gets the ID of the @buildable object.
224+//
225+// `GtkBuilder` sets the name based on the ID attribute
226+// of the &lt;object&gt; tag used to construct the @buildable.
227+func (x *Bin) GetBuildableId() string {
228+
229+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
230+
231+}
232+
233+func init() {
234+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
235+ if err != nil {
236+ panic(err)
237+ }
238+
239+ core.PuregoSafeRegister(&xNewBin, lib, "adw_bin_new")
240+
241+ core.PuregoSafeRegister(&xBinGetChild, lib, "adw_bin_get_child")
242+ core.PuregoSafeRegister(&xBinSetChild, lib, "adw_bin_set_child")
243+
244+}
A v4/adw/adw-button-content.go +317 -0
@@ -0,0 +1,317 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type ButtonContentClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A helper widget for creating buttons.
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="button-content-dark.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="button-content.png" alt="button-content"&gt;
21+//
22+// &lt;/picture&gt;
23+//
24+// `AdwButtonContent` is a box-like widget with an icon and a label.
25+//
26+// It's intended to be used as a direct child of [class@Gtk.Button],
27+// [class@Gtk.MenuButton] or [class@SplitButton], when they need to have both an
28+// icon and a label, as follows:
29+//
30+// ```xml
31+// &lt;object class="GtkButton"&gt;
32+//
33+// &lt;property name="child"&gt;
34+// &lt;object class="AdwButtonContent"&gt;
35+// &lt;property name="icon-name"&gt;document-open-symbolic&lt;/property&gt;
36+// &lt;property name="label" translatable="yes"&gt;_Open&lt;/property&gt;
37+// &lt;property name="use-underline"&gt;True&lt;/property&gt;
38+// &lt;/object&gt;
39+// &lt;/property&gt;
40+//
41+// &lt;/object&gt;
42+// ```
43+//
44+// `AdwButtonContent` handles style classes and connecting the mnemonic to the
45+// button automatically.
46+//
47+// ## CSS nodes
48+//
49+// ```
50+// buttoncontent
51+// ├── image
52+// ╰── label
53+// ```
54+//
55+// `AdwButtonContent`'s CSS node is called `buttoncontent`. It contains the
56+// subnodes `image` and `label`.
57+//
58+// When inside a `GtkButton` or `AdwSplitButton`, the button will receive the
59+// `.image-text-button` style class. When inside a `GtkMenuButton`, the
60+// internal `GtkButton` will receive it instead.
61+//
62+// ## Accessibility
63+//
64+// `AdwButtonContent` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
65+type ButtonContent struct {
66+ gtk.Widget
67+}
68+
69+func ButtonContentNewFromInternalPtr(ptr uintptr) *ButtonContent {
70+ cls := &ButtonContent{}
71+ cls.Ptr = ptr
72+ return cls
73+}
74+
75+var xNewButtonContent func() uintptr
76+
77+// Creates a new `AdwButtonContent`.
78+func NewButtonContent() *gtk.Widget {
79+ NewButtonContentPtr := xNewButtonContent()
80+ if NewButtonContentPtr == 0 {
81+ return nil
82+ }
83+
84+ gobject.IncreaseRef(NewButtonContentPtr)
85+
86+ NewButtonContentCls := &gtk.Widget{}
87+ NewButtonContentCls.Ptr = NewButtonContentPtr
88+ return NewButtonContentCls
89+}
90+
91+var xButtonContentGetIconName func(uintptr) string
92+
93+// Gets the name of the displayed icon.
94+func (x *ButtonContent) GetIconName() string {
95+
96+ return xButtonContentGetIconName(x.GoPointer())
97+
98+}
99+
100+var xButtonContentGetLabel func(uintptr) string
101+
102+// Gets the displayed label.
103+func (x *ButtonContent) GetLabel() string {
104+
105+ return xButtonContentGetLabel(x.GoPointer())
106+
107+}
108+
109+var xButtonContentGetUseUnderline func(uintptr) bool
110+
111+// Gets whether an underline in the text indicates a mnemonic.
112+func (x *ButtonContent) GetUseUnderline() bool {
113+
114+ return xButtonContentGetUseUnderline(x.GoPointer())
115+
116+}
117+
118+var xButtonContentSetIconName func(uintptr, string)
119+
120+// Sets the name of the displayed icon.
121+//
122+// If empty, the icon is not shown.
123+func (x *ButtonContent) SetIconName(IconNameVar string) {
124+
125+ xButtonContentSetIconName(x.GoPointer(), IconNameVar)
126+
127+}
128+
129+var xButtonContentSetLabel func(uintptr, string)
130+
131+// Sets the displayed label.
132+func (x *ButtonContent) SetLabel(LabelVar string) {
133+
134+ xButtonContentSetLabel(x.GoPointer(), LabelVar)
135+
136+}
137+
138+var xButtonContentSetUseUnderline func(uintptr, bool)
139+
140+// Sets whether an underline in the text indicates a mnemonic.
141+//
142+// The mnemonic can be used to activate the parent button.
143+//
144+// See [property@ButtonContent:label].
145+func (x *ButtonContent) SetUseUnderline(UseUnderlineVar bool) {
146+
147+ xButtonContentSetUseUnderline(x.GoPointer(), UseUnderlineVar)
148+
149+}
150+
151+func (c *ButtonContent) GoPointer() uintptr {
152+ return c.Ptr
153+}
154+
155+func (c *ButtonContent) SetGoPointer(ptr uintptr) {
156+ c.Ptr = ptr
157+}
158+
159+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
160+func (x *ButtonContent) GetAccessibleRole() gtk.AccessibleRole {
161+
162+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
163+
164+}
165+
166+// Resets the accessible @property to its default value.
167+func (x *ButtonContent) ResetProperty(PropertyVar gtk.AccessibleProperty) {
168+
169+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
170+
171+}
172+
173+// Resets the accessible @relation to its default value.
174+func (x *ButtonContent) ResetRelation(RelationVar gtk.AccessibleRelation) {
175+
176+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
177+
178+}
179+
180+// Resets the accessible @state to its default value.
181+func (x *ButtonContent) ResetState(StateVar gtk.AccessibleState) {
182+
183+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
184+
185+}
186+
187+// Updates a list of accessible properties.
188+//
189+// See the [enum@Gtk.AccessibleProperty] documentation for the
190+// value types of accessible properties.
191+//
192+// This function should be called by `GtkWidget` types whenever
193+// an accessible property change must be communicated to assistive
194+// technologies.
195+//
196+// Example:
197+// ```c
198+// value = gtk_adjustment_get_value (adjustment);
199+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
200+//
201+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
202+// -1);
203+//
204+// ```
205+func (x *ButtonContent) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
206+
207+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
208+
209+}
210+
211+// Updates an array of accessible properties.
212+//
213+// This function should be called by `GtkWidget` types whenever an accessible
214+// property change must be communicated to assistive technologies.
215+//
216+// This function is meant to be used by language bindings.
217+func (x *ButtonContent) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
218+
219+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
220+
221+}
222+
223+// Updates a list of accessible relations.
224+//
225+// This function should be called by `GtkWidget` types whenever an accessible
226+// relation change must be communicated to assistive technologies.
227+//
228+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
229+// you should pass each reference individually, followed by %NULL, e.g.
230+//
231+// ```c
232+// gtk_accessible_update_relation (accessible,
233+//
234+// GTK_ACCESSIBLE_RELATION_CONTROLS,
235+// ref1, NULL,
236+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
237+// ref1, ref2, ref3, NULL,
238+// -1);
239+//
240+// ```
241+func (x *ButtonContent) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
242+
243+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
244+
245+}
246+
247+// Updates an array of accessible relations.
248+//
249+// This function should be called by `GtkWidget` types whenever an accessible
250+// relation change must be communicated to assistive technologies.
251+//
252+// This function is meant to be used by language bindings.
253+func (x *ButtonContent) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
254+
255+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
256+
257+}
258+
259+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
260+// documentation for the value types of accessible states.
261+//
262+// This function should be called by `GtkWidget` types whenever an accessible
263+// state change must be communicated to assistive technologies.
264+//
265+// Example:
266+// ```c
267+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
268+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
269+//
270+// GTK_ACCESSIBLE_STATE_CHECKED, value,
271+// -1);
272+//
273+// ```
274+func (x *ButtonContent) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
275+
276+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
277+
278+}
279+
280+// Updates an array of accessible states.
281+//
282+// This function should be called by `GtkWidget` types whenever an accessible
283+// state change must be communicated to assistive technologies.
284+//
285+// This function is meant to be used by language bindings.
286+func (x *ButtonContent) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
287+
288+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
289+
290+}
291+
292+// Gets the ID of the @buildable object.
293+//
294+// `GtkBuilder` sets the name based on the ID attribute
295+// of the &lt;object&gt; tag used to construct the @buildable.
296+func (x *ButtonContent) GetBuildableId() string {
297+
298+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
299+
300+}
301+
302+func init() {
303+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
304+ if err != nil {
305+ panic(err)
306+ }
307+
308+ core.PuregoSafeRegister(&xNewButtonContent, lib, "adw_button_content_new")
309+
310+ core.PuregoSafeRegister(&xButtonContentGetIconName, lib, "adw_button_content_get_icon_name")
311+ core.PuregoSafeRegister(&xButtonContentGetLabel, lib, "adw_button_content_get_label")
312+ core.PuregoSafeRegister(&xButtonContentGetUseUnderline, lib, "adw_button_content_get_use_underline")
313+ core.PuregoSafeRegister(&xButtonContentSetIconName, lib, "adw_button_content_set_icon_name")
314+ core.PuregoSafeRegister(&xButtonContentSetLabel, lib, "adw_button_content_set_label")
315+ core.PuregoSafeRegister(&xButtonContentSetUseUnderline, lib, "adw_button_content_set_use_underline")
316+
317+}
A v4/adw/adw-carousel-indicator-dots.go +264 -0
@@ -0,0 +1,264 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type CarouselIndicatorDotsClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A dots indicator for [class@Carousel].
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="carousel-indicator-dots-dark.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="carousel-indicator-dots.png" alt="carousel-indicator-dots"&gt;
21+//
22+// &lt;/picture&gt;
23+//
24+// The `AdwCarouselIndicatorDots` widget shows a set of dots for each page of a
25+// given [class@Carousel]. The dot representing the carousel's active page is
26+// larger and more opaque than the others, the transition to the active and
27+// inactive state is gradual to match the carousel's position.
28+//
29+// See also [class@CarouselIndicatorLines].
30+//
31+// ## CSS nodes
32+//
33+// `AdwCarouselIndicatorDots` has a single CSS node with name
34+// `carouselindicatordots`.
35+type CarouselIndicatorDots struct {
36+ gtk.Widget
37+}
38+
39+func CarouselIndicatorDotsNewFromInternalPtr(ptr uintptr) *CarouselIndicatorDots {
40+ cls := &CarouselIndicatorDots{}
41+ cls.Ptr = ptr
42+ return cls
43+}
44+
45+var xNewCarouselIndicatorDots func() uintptr
46+
47+// Creates a new `AdwCarouselIndicatorDots`.
48+func NewCarouselIndicatorDots() *gtk.Widget {
49+ NewCarouselIndicatorDotsPtr := xNewCarouselIndicatorDots()
50+ if NewCarouselIndicatorDotsPtr == 0 {
51+ return nil
52+ }
53+
54+ gobject.IncreaseRef(NewCarouselIndicatorDotsPtr)
55+
56+ NewCarouselIndicatorDotsCls := &gtk.Widget{}
57+ NewCarouselIndicatorDotsCls.Ptr = NewCarouselIndicatorDotsPtr
58+ return NewCarouselIndicatorDotsCls
59+}
60+
61+var xCarouselIndicatorDotsGetCarousel func(uintptr) uintptr
62+
63+// Gets the displayed carousel.
64+func (x *CarouselIndicatorDots) GetCarousel() *Carousel {
65+
66+ GetCarouselPtr := xCarouselIndicatorDotsGetCarousel(x.GoPointer())
67+ if GetCarouselPtr == 0 {
68+ return nil
69+ }
70+
71+ gobject.IncreaseRef(GetCarouselPtr)
72+
73+ GetCarouselCls := &Carousel{}
74+ GetCarouselCls.Ptr = GetCarouselPtr
75+ return GetCarouselCls
76+
77+}
78+
79+var xCarouselIndicatorDotsSetCarousel func(uintptr, uintptr)
80+
81+// Sets the displayed carousel.
82+func (x *CarouselIndicatorDots) SetCarousel(CarouselVar *Carousel) {
83+
84+ xCarouselIndicatorDotsSetCarousel(x.GoPointer(), CarouselVar.GoPointer())
85+
86+}
87+
88+func (c *CarouselIndicatorDots) GoPointer() uintptr {
89+ return c.Ptr
90+}
91+
92+func (c *CarouselIndicatorDots) SetGoPointer(ptr uintptr) {
93+ c.Ptr = ptr
94+}
95+
96+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
97+func (x *CarouselIndicatorDots) GetAccessibleRole() gtk.AccessibleRole {
98+
99+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
100+
101+}
102+
103+// Resets the accessible @property to its default value.
104+func (x *CarouselIndicatorDots) ResetProperty(PropertyVar gtk.AccessibleProperty) {
105+
106+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
107+
108+}
109+
110+// Resets the accessible @relation to its default value.
111+func (x *CarouselIndicatorDots) ResetRelation(RelationVar gtk.AccessibleRelation) {
112+
113+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
114+
115+}
116+
117+// Resets the accessible @state to its default value.
118+func (x *CarouselIndicatorDots) ResetState(StateVar gtk.AccessibleState) {
119+
120+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
121+
122+}
123+
124+// Updates a list of accessible properties.
125+//
126+// See the [enum@Gtk.AccessibleProperty] documentation for the
127+// value types of accessible properties.
128+//
129+// This function should be called by `GtkWidget` types whenever
130+// an accessible property change must be communicated to assistive
131+// technologies.
132+//
133+// Example:
134+// ```c
135+// value = gtk_adjustment_get_value (adjustment);
136+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
137+//
138+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
139+// -1);
140+//
141+// ```
142+func (x *CarouselIndicatorDots) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
143+
144+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
145+
146+}
147+
148+// Updates an array of accessible properties.
149+//
150+// This function should be called by `GtkWidget` types whenever an accessible
151+// property change must be communicated to assistive technologies.
152+//
153+// This function is meant to be used by language bindings.
154+func (x *CarouselIndicatorDots) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
155+
156+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
157+
158+}
159+
160+// Updates a list of accessible relations.
161+//
162+// This function should be called by `GtkWidget` types whenever an accessible
163+// relation change must be communicated to assistive technologies.
164+//
165+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
166+// you should pass each reference individually, followed by %NULL, e.g.
167+//
168+// ```c
169+// gtk_accessible_update_relation (accessible,
170+//
171+// GTK_ACCESSIBLE_RELATION_CONTROLS,
172+// ref1, NULL,
173+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
174+// ref1, ref2, ref3, NULL,
175+// -1);
176+//
177+// ```
178+func (x *CarouselIndicatorDots) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
179+
180+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
181+
182+}
183+
184+// Updates an array of accessible relations.
185+//
186+// This function should be called by `GtkWidget` types whenever an accessible
187+// relation change must be communicated to assistive technologies.
188+//
189+// This function is meant to be used by language bindings.
190+func (x *CarouselIndicatorDots) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
191+
192+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
193+
194+}
195+
196+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
197+// documentation for the value types of accessible states.
198+//
199+// This function should be called by `GtkWidget` types whenever an accessible
200+// state change must be communicated to assistive technologies.
201+//
202+// Example:
203+// ```c
204+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
205+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
206+//
207+// GTK_ACCESSIBLE_STATE_CHECKED, value,
208+// -1);
209+//
210+// ```
211+func (x *CarouselIndicatorDots) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
212+
213+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
214+
215+}
216+
217+// Updates an array of accessible states.
218+//
219+// This function should be called by `GtkWidget` types whenever an accessible
220+// state change must be communicated to assistive technologies.
221+//
222+// This function is meant to be used by language bindings.
223+func (x *CarouselIndicatorDots) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
224+
225+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
226+
227+}
228+
229+// Gets the ID of the @buildable object.
230+//
231+// `GtkBuilder` sets the name based on the ID attribute
232+// of the &lt;object&gt; tag used to construct the @buildable.
233+func (x *CarouselIndicatorDots) GetBuildableId() string {
234+
235+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
236+
237+}
238+
239+// Retrieves the orientation of the @orientable.
240+func (x *CarouselIndicatorDots) GetOrientation() gtk.Orientation {
241+
242+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
243+
244+}
245+
246+// Sets the orientation of the @orientable.
247+func (x *CarouselIndicatorDots) SetOrientation(OrientationVar gtk.Orientation) {
248+
249+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
250+
251+}
252+
253+func init() {
254+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
255+ if err != nil {
256+ panic(err)
257+ }
258+
259+ core.PuregoSafeRegister(&xNewCarouselIndicatorDots, lib, "adw_carousel_indicator_dots_new")
260+
261+ core.PuregoSafeRegister(&xCarouselIndicatorDotsGetCarousel, lib, "adw_carousel_indicator_dots_get_carousel")
262+ core.PuregoSafeRegister(&xCarouselIndicatorDotsSetCarousel, lib, "adw_carousel_indicator_dots_set_carousel")
263+
264+}
A v4/adw/adw-carousel-indicator-lines.go +263 -0
@@ -0,0 +1,263 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type CarouselIndicatorLinesClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A lines indicator for [class@Carousel].
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="carousel-indicator-dots-lines.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="carousel-indicator-lines.png" alt="carousel-indicator-lines"&gt;
21+//
22+// &lt;/picture&gt;
23+//
24+// The `AdwCarouselIndicatorLines` widget shows a set of lines for each page of
25+// a given [class@Carousel]. The carousel's active page is shown as another line
26+// that moves between them to match the carousel's position.
27+//
28+// See also [class@CarouselIndicatorDots].
29+//
30+// ## CSS nodes
31+//
32+// `AdwCarouselIndicatorLines` has a single CSS node with name
33+// `carouselindicatorlines`.
34+type CarouselIndicatorLines struct {
35+ gtk.Widget
36+}
37+
38+func CarouselIndicatorLinesNewFromInternalPtr(ptr uintptr) *CarouselIndicatorLines {
39+ cls := &CarouselIndicatorLines{}
40+ cls.Ptr = ptr
41+ return cls
42+}
43+
44+var xNewCarouselIndicatorLines func() uintptr
45+
46+// Creates a new `AdwCarouselIndicatorLines`.
47+func NewCarouselIndicatorLines() *gtk.Widget {
48+ NewCarouselIndicatorLinesPtr := xNewCarouselIndicatorLines()
49+ if NewCarouselIndicatorLinesPtr == 0 {
50+ return nil
51+ }
52+
53+ gobject.IncreaseRef(NewCarouselIndicatorLinesPtr)
54+
55+ NewCarouselIndicatorLinesCls := &gtk.Widget{}
56+ NewCarouselIndicatorLinesCls.Ptr = NewCarouselIndicatorLinesPtr
57+ return NewCarouselIndicatorLinesCls
58+}
59+
60+var xCarouselIndicatorLinesGetCarousel func(uintptr) uintptr
61+
62+// Gets the displayed carousel.
63+func (x *CarouselIndicatorLines) GetCarousel() *Carousel {
64+
65+ GetCarouselPtr := xCarouselIndicatorLinesGetCarousel(x.GoPointer())
66+ if GetCarouselPtr == 0 {
67+ return nil
68+ }
69+
70+ gobject.IncreaseRef(GetCarouselPtr)
71+
72+ GetCarouselCls := &Carousel{}
73+ GetCarouselCls.Ptr = GetCarouselPtr
74+ return GetCarouselCls
75+
76+}
77+
78+var xCarouselIndicatorLinesSetCarousel func(uintptr, uintptr)
79+
80+// Sets the displayed carousel.
81+func (x *CarouselIndicatorLines) SetCarousel(CarouselVar *Carousel) {
82+
83+ xCarouselIndicatorLinesSetCarousel(x.GoPointer(), CarouselVar.GoPointer())
84+
85+}
86+
87+func (c *CarouselIndicatorLines) GoPointer() uintptr {
88+ return c.Ptr
89+}
90+
91+func (c *CarouselIndicatorLines) SetGoPointer(ptr uintptr) {
92+ c.Ptr = ptr
93+}
94+
95+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
96+func (x *CarouselIndicatorLines) GetAccessibleRole() gtk.AccessibleRole {
97+
98+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
99+
100+}
101+
102+// Resets the accessible @property to its default value.
103+func (x *CarouselIndicatorLines) ResetProperty(PropertyVar gtk.AccessibleProperty) {
104+
105+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
106+
107+}
108+
109+// Resets the accessible @relation to its default value.
110+func (x *CarouselIndicatorLines) ResetRelation(RelationVar gtk.AccessibleRelation) {
111+
112+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
113+
114+}
115+
116+// Resets the accessible @state to its default value.
117+func (x *CarouselIndicatorLines) ResetState(StateVar gtk.AccessibleState) {
118+
119+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
120+
121+}
122+
123+// Updates a list of accessible properties.
124+//
125+// See the [enum@Gtk.AccessibleProperty] documentation for the
126+// value types of accessible properties.
127+//
128+// This function should be called by `GtkWidget` types whenever
129+// an accessible property change must be communicated to assistive
130+// technologies.
131+//
132+// Example:
133+// ```c
134+// value = gtk_adjustment_get_value (adjustment);
135+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
136+//
137+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
138+// -1);
139+//
140+// ```
141+func (x *CarouselIndicatorLines) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
142+
143+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
144+
145+}
146+
147+// Updates an array of accessible properties.
148+//
149+// This function should be called by `GtkWidget` types whenever an accessible
150+// property change must be communicated to assistive technologies.
151+//
152+// This function is meant to be used by language bindings.
153+func (x *CarouselIndicatorLines) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
154+
155+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
156+
157+}
158+
159+// Updates a list of accessible relations.
160+//
161+// This function should be called by `GtkWidget` types whenever an accessible
162+// relation change must be communicated to assistive technologies.
163+//
164+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
165+// you should pass each reference individually, followed by %NULL, e.g.
166+//
167+// ```c
168+// gtk_accessible_update_relation (accessible,
169+//
170+// GTK_ACCESSIBLE_RELATION_CONTROLS,
171+// ref1, NULL,
172+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
173+// ref1, ref2, ref3, NULL,
174+// -1);
175+//
176+// ```
177+func (x *CarouselIndicatorLines) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
178+
179+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
180+
181+}
182+
183+// Updates an array of accessible relations.
184+//
185+// This function should be called by `GtkWidget` types whenever an accessible
186+// relation change must be communicated to assistive technologies.
187+//
188+// This function is meant to be used by language bindings.
189+func (x *CarouselIndicatorLines) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
190+
191+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
192+
193+}
194+
195+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
196+// documentation for the value types of accessible states.
197+//
198+// This function should be called by `GtkWidget` types whenever an accessible
199+// state change must be communicated to assistive technologies.
200+//
201+// Example:
202+// ```c
203+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
204+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
205+//
206+// GTK_ACCESSIBLE_STATE_CHECKED, value,
207+// -1);
208+//
209+// ```
210+func (x *CarouselIndicatorLines) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
211+
212+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
213+
214+}
215+
216+// Updates an array of accessible states.
217+//
218+// This function should be called by `GtkWidget` types whenever an accessible
219+// state change must be communicated to assistive technologies.
220+//
221+// This function is meant to be used by language bindings.
222+func (x *CarouselIndicatorLines) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
223+
224+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
225+
226+}
227+
228+// Gets the ID of the @buildable object.
229+//
230+// `GtkBuilder` sets the name based on the ID attribute
231+// of the &lt;object&gt; tag used to construct the @buildable.
232+func (x *CarouselIndicatorLines) GetBuildableId() string {
233+
234+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
235+
236+}
237+
238+// Retrieves the orientation of the @orientable.
239+func (x *CarouselIndicatorLines) GetOrientation() gtk.Orientation {
240+
241+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
242+
243+}
244+
245+// Sets the orientation of the @orientable.
246+func (x *CarouselIndicatorLines) SetOrientation(OrientationVar gtk.Orientation) {
247+
248+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
249+
250+}
251+
252+func init() {
253+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
254+ if err != nil {
255+ panic(err)
256+ }
257+
258+ core.PuregoSafeRegister(&xNewCarouselIndicatorLines, lib, "adw_carousel_indicator_lines_new")
259+
260+ core.PuregoSafeRegister(&xCarouselIndicatorLinesGetCarousel, lib, "adw_carousel_indicator_lines_get_carousel")
261+ core.PuregoSafeRegister(&xCarouselIndicatorLinesSetCarousel, lib, "adw_carousel_indicator_lines_set_carousel")
262+
263+}
A v4/adw/adw-carousel.go +565 -0
@@ -0,0 +1,565 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type CarouselClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A paginated scrolling widget.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="carousel-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="carousel.png" alt="carousel"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// The `AdwCarousel` widget can be used to display a set of pages with
26+// swipe-based navigation between them.
27+//
28+// [class@CarouselIndicatorDots] and [class@CarouselIndicatorLines] can be used
29+// to provide page indicators for `AdwCarousel`.
30+//
31+// ## CSS nodes
32+//
33+// `AdwCarousel` has a single CSS node with name `carousel`.
34+type Carousel struct {
35+ gtk.Widget
36+}
37+
38+func CarouselNewFromInternalPtr(ptr uintptr) *Carousel {
39+ cls := &Carousel{}
40+ cls.Ptr = ptr
41+ return cls
42+}
43+
44+var xNewCarousel func() uintptr
45+
46+// Creates a new `AdwCarousel`.
47+func NewCarousel() *gtk.Widget {
48+ NewCarouselPtr := xNewCarousel()
49+ if NewCarouselPtr == 0 {
50+ return nil
51+ }
52+
53+ gobject.IncreaseRef(NewCarouselPtr)
54+
55+ NewCarouselCls := &gtk.Widget{}
56+ NewCarouselCls.Ptr = NewCarouselPtr
57+ return NewCarouselCls
58+}
59+
60+var xCarouselAppend func(uintptr, uintptr)
61+
62+// Appends @child to @self.
63+func (x *Carousel) Append(ChildVar *gtk.Widget) {
64+
65+ xCarouselAppend(x.GoPointer(), ChildVar.GoPointer())
66+
67+}
68+
69+var xCarouselGetAllowLongSwipes func(uintptr) bool
70+
71+// Gets whether to allow swiping for more than one page at a time.
72+func (x *Carousel) GetAllowLongSwipes() bool {
73+
74+ return xCarouselGetAllowLongSwipes(x.GoPointer())
75+
76+}
77+
78+var xCarouselGetAllowMouseDrag func(uintptr) bool
79+
80+// Sets whether @self can be dragged with mouse pointer.
81+func (x *Carousel) GetAllowMouseDrag() bool {
82+
83+ return xCarouselGetAllowMouseDrag(x.GoPointer())
84+
85+}
86+
87+var xCarouselGetAllowScrollWheel func(uintptr) bool
88+
89+// Gets whether @self will respond to scroll wheel events.
90+func (x *Carousel) GetAllowScrollWheel() bool {
91+
92+ return xCarouselGetAllowScrollWheel(x.GoPointer())
93+
94+}
95+
96+var xCarouselGetInteractive func(uintptr) bool
97+
98+// Gets whether @self can be navigated.
99+func (x *Carousel) GetInteractive() bool {
100+
101+ return xCarouselGetInteractive(x.GoPointer())
102+
103+}
104+
105+var xCarouselGetNPages func(uintptr) uint
106+
107+// Gets the number of pages in @self.
108+func (x *Carousel) GetNPages() uint {
109+
110+ return xCarouselGetNPages(x.GoPointer())
111+
112+}
113+
114+var xCarouselGetNthPage func(uintptr, uint) uintptr
115+
116+// Gets the page at position @n.
117+func (x *Carousel) GetNthPage(NVar uint) *gtk.Widget {
118+
119+ GetNthPagePtr := xCarouselGetNthPage(x.GoPointer(), NVar)
120+ if GetNthPagePtr == 0 {
121+ return nil
122+ }
123+
124+ gobject.IncreaseRef(GetNthPagePtr)
125+
126+ GetNthPageCls := &gtk.Widget{}
127+ GetNthPageCls.Ptr = GetNthPagePtr
128+ return GetNthPageCls
129+
130+}
131+
132+var xCarouselGetPosition func(uintptr) float64
133+
134+// Gets current scroll position in @self, unitless.
135+//
136+// 1 matches 1 page. Use [method@Carousel.scroll_to] for changing it.
137+func (x *Carousel) GetPosition() float64 {
138+
139+ return xCarouselGetPosition(x.GoPointer())
140+
141+}
142+
143+var xCarouselGetRevealDuration func(uintptr) uint
144+
145+// Gets the page reveal duration, in milliseconds.
146+func (x *Carousel) GetRevealDuration() uint {
147+
148+ return xCarouselGetRevealDuration(x.GoPointer())
149+
150+}
151+
152+var xCarouselGetScrollParams func(uintptr) *SpringParams
153+
154+// Gets the scroll animation spring parameters for @self.
155+func (x *Carousel) GetScrollParams() *SpringParams {
156+
157+ return xCarouselGetScrollParams(x.GoPointer())
158+
159+}
160+
161+var xCarouselGetSpacing func(uintptr) uint
162+
163+// Gets spacing between pages in pixels.
164+func (x *Carousel) GetSpacing() uint {
165+
166+ return xCarouselGetSpacing(x.GoPointer())
167+
168+}
169+
170+var xCarouselInsert func(uintptr, uintptr, int32)
171+
172+// Inserts @child into @self at position @position.
173+//
174+// If position is -1, or larger than the number of pages,
175+// @child will be appended to the end.
176+func (x *Carousel) Insert(ChildVar *gtk.Widget, PositionVar int32) {
177+
178+ xCarouselInsert(x.GoPointer(), ChildVar.GoPointer(), PositionVar)
179+
180+}
181+
182+var xCarouselPrepend func(uintptr, uintptr)
183+
184+// Prepends @child to @self.
185+func (x *Carousel) Prepend(ChildVar *gtk.Widget) {
186+
187+ xCarouselPrepend(x.GoPointer(), ChildVar.GoPointer())
188+
189+}
190+
191+var xCarouselRemove func(uintptr, uintptr)
192+
193+// Removes @child from @self.
194+func (x *Carousel) Remove(ChildVar *gtk.Widget) {
195+
196+ xCarouselRemove(x.GoPointer(), ChildVar.GoPointer())
197+
198+}
199+
200+var xCarouselReorder func(uintptr, uintptr, int32)
201+
202+// Moves @child into position @position.
203+//
204+// If position is -1, or larger than the number of pages, @child will be moved
205+// at the end.
206+func (x *Carousel) Reorder(ChildVar *gtk.Widget, PositionVar int32) {
207+
208+ xCarouselReorder(x.GoPointer(), ChildVar.GoPointer(), PositionVar)
209+
210+}
211+
212+var xCarouselScrollTo func(uintptr, uintptr, bool)
213+
214+// Scrolls to @widget.
215+//
216+// If @animate is `TRUE`, the transition will be animated.
217+func (x *Carousel) ScrollTo(WidgetVar *gtk.Widget, AnimateVar bool) {
218+
219+ xCarouselScrollTo(x.GoPointer(), WidgetVar.GoPointer(), AnimateVar)
220+
221+}
222+
223+var xCarouselSetAllowLongSwipes func(uintptr, bool)
224+
225+// Sets whether to allow swiping for more than one page at a time.
226+//
227+// If @allow_long_swipes is `FALSE`, each swipe can only move to the adjacent
228+// pages.
229+func (x *Carousel) SetAllowLongSwipes(AllowLongSwipesVar bool) {
230+
231+ xCarouselSetAllowLongSwipes(x.GoPointer(), AllowLongSwipesVar)
232+
233+}
234+
235+var xCarouselSetAllowMouseDrag func(uintptr, bool)
236+
237+// Sets whether @self can be dragged with mouse pointer.
238+//
239+// If @allow_mouse_drag is `FALSE`, dragging is only available on touch.
240+func (x *Carousel) SetAllowMouseDrag(AllowMouseDragVar bool) {
241+
242+ xCarouselSetAllowMouseDrag(x.GoPointer(), AllowMouseDragVar)
243+
244+}
245+
246+var xCarouselSetAllowScrollWheel func(uintptr, bool)
247+
248+// Sets whether @self will respond to scroll wheel events.
249+//
250+// If @allow_scroll_wheel is `FALSE`, wheel events will be ignored.
251+func (x *Carousel) SetAllowScrollWheel(AllowScrollWheelVar bool) {
252+
253+ xCarouselSetAllowScrollWheel(x.GoPointer(), AllowScrollWheelVar)
254+
255+}
256+
257+var xCarouselSetInteractive func(uintptr, bool)
258+
259+// Sets whether @self can be navigated.
260+//
261+// This can be used to temporarily disable the carousel to only allow navigating
262+// it in a certain state.
263+func (x *Carousel) SetInteractive(InteractiveVar bool) {
264+
265+ xCarouselSetInteractive(x.GoPointer(), InteractiveVar)
266+
267+}
268+
269+var xCarouselSetRevealDuration func(uintptr, uint)
270+
271+// Sets the page reveal duration, in milliseconds.
272+//
273+// Reveal duration is used when animating adding or removing pages.
274+func (x *Carousel) SetRevealDuration(RevealDurationVar uint) {
275+
276+ xCarouselSetRevealDuration(x.GoPointer(), RevealDurationVar)
277+
278+}
279+
280+var xCarouselSetScrollParams func(uintptr, *SpringParams)
281+
282+// Sets the scroll animation spring parameters for @self.
283+//
284+// The default value is equivalent to:
285+//
286+// ```c
287+// adw_spring_params_new (1, 0.5, 500)
288+// ```
289+func (x *Carousel) SetScrollParams(ParamsVar *SpringParams) {
290+
291+ xCarouselSetScrollParams(x.GoPointer(), ParamsVar)
292+
293+}
294+
295+var xCarouselSetSpacing func(uintptr, uint)
296+
297+// Sets spacing between pages in pixels.
298+func (x *Carousel) SetSpacing(SpacingVar uint) {
299+
300+ xCarouselSetSpacing(x.GoPointer(), SpacingVar)
301+
302+}
303+
304+func (c *Carousel) GoPointer() uintptr {
305+ return c.Ptr
306+}
307+
308+func (c *Carousel) SetGoPointer(ptr uintptr) {
309+ c.Ptr = ptr
310+}
311+
312+// This signal is emitted after a page has been changed.
313+//
314+// It can be used to implement "infinite scrolling" by amending the pages
315+// after every scroll. Note that an empty carousel is indicated by
316+// `(int)index == -1`.
317+func (x *Carousel) ConnectPageChanged(cb func(Carousel, uint)) {
318+ fcb := func(clsPtr uintptr, IndexVarp uint) {
319+ fa := Carousel{}
320+ fa.Ptr = clsPtr
321+
322+ cb(fa, IndexVarp)
323+
324+ }
325+ gobject.ObjectConnect(x.GoPointer(), "signal::page-changed", purego.NewCallback(fcb))
326+}
327+
328+// Gets the progress @self will snap back to after the gesture is canceled.
329+func (x *Carousel) GetCancelProgress() float64 {
330+
331+ return XAdwSwipeableGetCancelProgress(x.GoPointer())
332+
333+}
334+
335+// Gets the swipe distance of @self.
336+//
337+// This corresponds to how many pixels 1 unit represents.
338+func (x *Carousel) GetDistance() float64 {
339+
340+ return XAdwSwipeableGetDistance(x.GoPointer())
341+
342+}
343+
344+// Gets the current progress of @self.
345+func (x *Carousel) GetProgress() float64 {
346+
347+ return XAdwSwipeableGetProgress(x.GoPointer())
348+
349+}
350+
351+// Gets the snap points of @self.
352+//
353+// Each snap point represents a progress value that is considered acceptable to
354+// end the swipe on.
355+func (x *Carousel) GetSnapPoints(NSnapPointsVar int32) uintptr {
356+
357+ return XAdwSwipeableGetSnapPoints(x.GoPointer(), NSnapPointsVar)
358+
359+}
360+
361+// Gets the area @self can start a swipe from for the given direction and
362+// gesture type.
363+//
364+// This can be used to restrict swipes to only be possible from a certain area,
365+// for example, to only allow edge swipes, or to have a draggable element and
366+// ignore swipes elsewhere.
367+//
368+// If not implemented, the default implementation returns the allocation of
369+// @self, allowing swipes from anywhere.
370+func (x *Carousel) GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle) {
371+
372+ XAdwSwipeableGetSwipeArea(x.GoPointer(), NavigationDirectionVar, IsDragVar, RectVar)
373+
374+}
375+
376+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
377+func (x *Carousel) GetAccessibleRole() gtk.AccessibleRole {
378+
379+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
380+
381+}
382+
383+// Resets the accessible @property to its default value.
384+func (x *Carousel) ResetProperty(PropertyVar gtk.AccessibleProperty) {
385+
386+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
387+
388+}
389+
390+// Resets the accessible @relation to its default value.
391+func (x *Carousel) ResetRelation(RelationVar gtk.AccessibleRelation) {
392+
393+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
394+
395+}
396+
397+// Resets the accessible @state to its default value.
398+func (x *Carousel) ResetState(StateVar gtk.AccessibleState) {
399+
400+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
401+
402+}
403+
404+// Updates a list of accessible properties.
405+//
406+// See the [enum@Gtk.AccessibleProperty] documentation for the
407+// value types of accessible properties.
408+//
409+// This function should be called by `GtkWidget` types whenever
410+// an accessible property change must be communicated to assistive
411+// technologies.
412+//
413+// Example:
414+// ```c
415+// value = gtk_adjustment_get_value (adjustment);
416+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
417+//
418+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
419+// -1);
420+//
421+// ```
422+func (x *Carousel) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
423+
424+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
425+
426+}
427+
428+// Updates an array of accessible properties.
429+//
430+// This function should be called by `GtkWidget` types whenever an accessible
431+// property change must be communicated to assistive technologies.
432+//
433+// This function is meant to be used by language bindings.
434+func (x *Carousel) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
435+
436+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
437+
438+}
439+
440+// Updates a list of accessible relations.
441+//
442+// This function should be called by `GtkWidget` types whenever an accessible
443+// relation change must be communicated to assistive technologies.
444+//
445+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
446+// you should pass each reference individually, followed by %NULL, e.g.
447+//
448+// ```c
449+// gtk_accessible_update_relation (accessible,
450+//
451+// GTK_ACCESSIBLE_RELATION_CONTROLS,
452+// ref1, NULL,
453+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
454+// ref1, ref2, ref3, NULL,
455+// -1);
456+//
457+// ```
458+func (x *Carousel) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
459+
460+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
461+
462+}
463+
464+// Updates an array of accessible relations.
465+//
466+// This function should be called by `GtkWidget` types whenever an accessible
467+// relation change must be communicated to assistive technologies.
468+//
469+// This function is meant to be used by language bindings.
470+func (x *Carousel) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
471+
472+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
473+
474+}
475+
476+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
477+// documentation for the value types of accessible states.
478+//
479+// This function should be called by `GtkWidget` types whenever an accessible
480+// state change must be communicated to assistive technologies.
481+//
482+// Example:
483+// ```c
484+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
485+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
486+//
487+// GTK_ACCESSIBLE_STATE_CHECKED, value,
488+// -1);
489+//
490+// ```
491+func (x *Carousel) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
492+
493+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
494+
495+}
496+
497+// Updates an array of accessible states.
498+//
499+// This function should be called by `GtkWidget` types whenever an accessible
500+// state change must be communicated to assistive technologies.
501+//
502+// This function is meant to be used by language bindings.
503+func (x *Carousel) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
504+
505+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
506+
507+}
508+
509+// Gets the ID of the @buildable object.
510+//
511+// `GtkBuilder` sets the name based on the ID attribute
512+// of the &lt;object&gt; tag used to construct the @buildable.
513+func (x *Carousel) GetBuildableId() string {
514+
515+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
516+
517+}
518+
519+// Retrieves the orientation of the @orientable.
520+func (x *Carousel) GetOrientation() gtk.Orientation {
521+
522+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
523+
524+}
525+
526+// Sets the orientation of the @orientable.
527+func (x *Carousel) SetOrientation(OrientationVar gtk.Orientation) {
528+
529+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
530+
531+}
532+
533+func init() {
534+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
535+ if err != nil {
536+ panic(err)
537+ }
538+
539+ core.PuregoSafeRegister(&xNewCarousel, lib, "adw_carousel_new")
540+
541+ core.PuregoSafeRegister(&xCarouselAppend, lib, "adw_carousel_append")
542+ core.PuregoSafeRegister(&xCarouselGetAllowLongSwipes, lib, "adw_carousel_get_allow_long_swipes")
543+ core.PuregoSafeRegister(&xCarouselGetAllowMouseDrag, lib, "adw_carousel_get_allow_mouse_drag")
544+ core.PuregoSafeRegister(&xCarouselGetAllowScrollWheel, lib, "adw_carousel_get_allow_scroll_wheel")
545+ core.PuregoSafeRegister(&xCarouselGetInteractive, lib, "adw_carousel_get_interactive")
546+ core.PuregoSafeRegister(&xCarouselGetNPages, lib, "adw_carousel_get_n_pages")
547+ core.PuregoSafeRegister(&xCarouselGetNthPage, lib, "adw_carousel_get_nth_page")
548+ core.PuregoSafeRegister(&xCarouselGetPosition, lib, "adw_carousel_get_position")
549+ core.PuregoSafeRegister(&xCarouselGetRevealDuration, lib, "adw_carousel_get_reveal_duration")
550+ core.PuregoSafeRegister(&xCarouselGetScrollParams, lib, "adw_carousel_get_scroll_params")
551+ core.PuregoSafeRegister(&xCarouselGetSpacing, lib, "adw_carousel_get_spacing")
552+ core.PuregoSafeRegister(&xCarouselInsert, lib, "adw_carousel_insert")
553+ core.PuregoSafeRegister(&xCarouselPrepend, lib, "adw_carousel_prepend")
554+ core.PuregoSafeRegister(&xCarouselRemove, lib, "adw_carousel_remove")
555+ core.PuregoSafeRegister(&xCarouselReorder, lib, "adw_carousel_reorder")
556+ core.PuregoSafeRegister(&xCarouselScrollTo, lib, "adw_carousel_scroll_to")
557+ core.PuregoSafeRegister(&xCarouselSetAllowLongSwipes, lib, "adw_carousel_set_allow_long_swipes")
558+ core.PuregoSafeRegister(&xCarouselSetAllowMouseDrag, lib, "adw_carousel_set_allow_mouse_drag")
559+ core.PuregoSafeRegister(&xCarouselSetAllowScrollWheel, lib, "adw_carousel_set_allow_scroll_wheel")
560+ core.PuregoSafeRegister(&xCarouselSetInteractive, lib, "adw_carousel_set_interactive")
561+ core.PuregoSafeRegister(&xCarouselSetRevealDuration, lib, "adw_carousel_set_reveal_duration")
562+ core.PuregoSafeRegister(&xCarouselSetScrollParams, lib, "adw_carousel_set_scroll_params")
563+ core.PuregoSafeRegister(&xCarouselSetSpacing, lib, "adw_carousel_set_spacing")
564+
565+}
A v4/adw/adw-clamp-layout.go +150 -0
@@ -0,0 +1,150 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gtk"
8+)
9+
10+type ClampLayoutClass struct {
11+ ParentClass uintptr
12+}
13+
14+// A layout manager constraining its children to a given size.
15+//
16+// &lt;picture&gt;
17+//
18+// &lt;source srcset="clamp-wide-dark.png" media="(prefers-color-scheme: dark)"&gt;
19+// &lt;img src="clamp-wide.png" alt="clamp-wide"&gt;
20+//
21+// &lt;/picture&gt;
22+// &lt;picture&gt;
23+//
24+// &lt;source srcset="clamp-narrow-dark.png" media="(prefers-color-scheme: dark)"&gt;
25+// &lt;img src="clamp-narrow.png" alt="clamp-narrow"&gt;
26+//
27+// &lt;/picture&gt;
28+//
29+// `AdwClampLayout` constraints the size of the widgets it contains to a given
30+// maximum size. It will constrain the width if it is horizontal, or the height
31+// if it is vertical. The expansion of the children from their minimum to their
32+// maximum size is eased out for a smooth transition.
33+//
34+// If a child requires more than the requested maximum size, it will be
35+// allocated the minimum size it can fit in instead.
36+//
37+// Each child will get the style classes .large when it reached its maximum
38+// size, .small when it's allocated the full size, .medium in-between, or none
39+// if it hasn't been allocated yet.
40+type ClampLayout struct {
41+ gtk.LayoutManager
42+}
43+
44+func ClampLayoutNewFromInternalPtr(ptr uintptr) *ClampLayout {
45+ cls := &ClampLayout{}
46+ cls.Ptr = ptr
47+ return cls
48+}
49+
50+var xNewClampLayout func() uintptr
51+
52+// Creates a new `AdwClampLayout`.
53+func NewClampLayout() *gtk.LayoutManager {
54+ NewClampLayoutPtr := xNewClampLayout()
55+ if NewClampLayoutPtr == 0 {
56+ return nil
57+ }
58+
59+ NewClampLayoutCls := &gtk.LayoutManager{}
60+ NewClampLayoutCls.Ptr = NewClampLayoutPtr
61+ return NewClampLayoutCls
62+}
63+
64+var xClampLayoutGetMaximumSize func(uintptr) int32
65+
66+// Gets the maximum size allocated to the children.
67+func (x *ClampLayout) GetMaximumSize() int32 {
68+
69+ return xClampLayoutGetMaximumSize(x.GoPointer())
70+
71+}
72+
73+var xClampLayoutGetTighteningThreshold func(uintptr) int32
74+
75+// Gets the size above which the children are clamped.
76+func (x *ClampLayout) GetTighteningThreshold() int32 {
77+
78+ return xClampLayoutGetTighteningThreshold(x.GoPointer())
79+
80+}
81+
82+var xClampLayoutSetMaximumSize func(uintptr, int32)
83+
84+// Sets the maximum size allocated to the children.
85+//
86+// It is the width if the layout is horizontal, or the height if it is vertical.
87+func (x *ClampLayout) SetMaximumSize(MaximumSizeVar int32) {
88+
89+ xClampLayoutSetMaximumSize(x.GoPointer(), MaximumSizeVar)
90+
91+}
92+
93+var xClampLayoutSetTighteningThreshold func(uintptr, int32)
94+
95+// Sets the size above which the children are clamped.
96+//
97+// Starting from this size, the layout will tighten its grip on the children,
98+// slowly allocating less and less of the available size up to the maximum
99+// allocated size. Below that threshold and below the maximum size, the children
100+// will be allocated all the available size.
101+//
102+// If the threshold is greater than the maximum size to allocate to the
103+// children, they will be allocated the whole size up to the maximum. If the
104+// threshold is lower than the minimum size to allocate to the children, that
105+// size will be used as the tightening threshold.
106+//
107+// Effectively, tightening the grip on a child before it reaches its maximum
108+// size makes transitions to and from the maximum size smoother when resizing.
109+func (x *ClampLayout) SetTighteningThreshold(TighteningThresholdVar int32) {
110+
111+ xClampLayoutSetTighteningThreshold(x.GoPointer(), TighteningThresholdVar)
112+
113+}
114+
115+func (c *ClampLayout) GoPointer() uintptr {
116+ return c.Ptr
117+}
118+
119+func (c *ClampLayout) SetGoPointer(ptr uintptr) {
120+ c.Ptr = ptr
121+}
122+
123+// Retrieves the orientation of the @orientable.
124+func (x *ClampLayout) GetOrientation() gtk.Orientation {
125+
126+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
127+
128+}
129+
130+// Sets the orientation of the @orientable.
131+func (x *ClampLayout) SetOrientation(OrientationVar gtk.Orientation) {
132+
133+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
134+
135+}
136+
137+func init() {
138+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
139+ if err != nil {
140+ panic(err)
141+ }
142+
143+ core.PuregoSafeRegister(&xNewClampLayout, lib, "adw_clamp_layout_new")
144+
145+ core.PuregoSafeRegister(&xClampLayoutGetMaximumSize, lib, "adw_clamp_layout_get_maximum_size")
146+ core.PuregoSafeRegister(&xClampLayoutGetTighteningThreshold, lib, "adw_clamp_layout_get_tightening_threshold")
147+ core.PuregoSafeRegister(&xClampLayoutSetMaximumSize, lib, "adw_clamp_layout_set_maximum_size")
148+ core.PuregoSafeRegister(&xClampLayoutSetTighteningThreshold, lib, "adw_clamp_layout_set_tightening_threshold")
149+
150+}
A v4/adw/adw-clamp-scrollable.go +398 -0
@@ -0,0 +1,398 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type ClampScrollableClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A scrollable [class@Clamp].
16+//
17+// `AdwClampScrollable` is a variant of [class@Clamp] that implements the
18+// [iface@Gtk.Scrollable] interface.
19+//
20+// The primary use case for `AdwClampScrollable` is clamping
21+// [class@Gtk.ListView].
22+type ClampScrollable struct {
23+ gtk.Widget
24+}
25+
26+func ClampScrollableNewFromInternalPtr(ptr uintptr) *ClampScrollable {
27+ cls := &ClampScrollable{}
28+ cls.Ptr = ptr
29+ return cls
30+}
31+
32+var xNewClampScrollable func() uintptr
33+
34+// Creates a new `AdwClampScrollable`.
35+func NewClampScrollable() *gtk.Widget {
36+ NewClampScrollablePtr := xNewClampScrollable()
37+ if NewClampScrollablePtr == 0 {
38+ return nil
39+ }
40+
41+ gobject.IncreaseRef(NewClampScrollablePtr)
42+
43+ NewClampScrollableCls := &gtk.Widget{}
44+ NewClampScrollableCls.Ptr = NewClampScrollablePtr
45+ return NewClampScrollableCls
46+}
47+
48+var xClampScrollableGetChild func(uintptr) uintptr
49+
50+// Gets the child widget of @self.
51+func (x *ClampScrollable) GetChild() *gtk.Widget {
52+
53+ GetChildPtr := xClampScrollableGetChild(x.GoPointer())
54+ if GetChildPtr == 0 {
55+ return nil
56+ }
57+
58+ gobject.IncreaseRef(GetChildPtr)
59+
60+ GetChildCls := &gtk.Widget{}
61+ GetChildCls.Ptr = GetChildPtr
62+ return GetChildCls
63+
64+}
65+
66+var xClampScrollableGetMaximumSize func(uintptr) int32
67+
68+// Gets the maximum size allocated to the child.
69+func (x *ClampScrollable) GetMaximumSize() int32 {
70+
71+ return xClampScrollableGetMaximumSize(x.GoPointer())
72+
73+}
74+
75+var xClampScrollableGetTighteningThreshold func(uintptr) int32
76+
77+// Gets the size above which the child is clamped.
78+func (x *ClampScrollable) GetTighteningThreshold() int32 {
79+
80+ return xClampScrollableGetTighteningThreshold(x.GoPointer())
81+
82+}
83+
84+var xClampScrollableSetChild func(uintptr, uintptr)
85+
86+// Sets the child widget of @self.
87+func (x *ClampScrollable) SetChild(ChildVar *gtk.Widget) {
88+
89+ xClampScrollableSetChild(x.GoPointer(), ChildVar.GoPointer())
90+
91+}
92+
93+var xClampScrollableSetMaximumSize func(uintptr, int32)
94+
95+// Sets the maximum size allocated to the child.
96+//
97+// It is the width if the clamp is horizontal, or the height if it is vertical.
98+func (x *ClampScrollable) SetMaximumSize(MaximumSizeVar int32) {
99+
100+ xClampScrollableSetMaximumSize(x.GoPointer(), MaximumSizeVar)
101+
102+}
103+
104+var xClampScrollableSetTighteningThreshold func(uintptr, int32)
105+
106+// Sets the size above which the child is clamped.
107+//
108+// Starting from this size, the clamp will tighten its grip on the child, slowly
109+// allocating less and less of the available size up to the maximum allocated
110+// size. Below that threshold and below the maximum width, the child will be
111+// allocated all the available size.
112+//
113+// If the threshold is greater than the maximum size to allocate to the child,
114+// the child will be allocated all the width up to the maximum. If the threshold
115+// is lower than the minimum size to allocate to the child, that size will be
116+// used as the tightening threshold.
117+//
118+// Effectively, tightening the grip on the child before it reaches its maximum
119+// size makes transitions to and from the maximum size smoother when resizing.
120+func (x *ClampScrollable) SetTighteningThreshold(TighteningThresholdVar int32) {
121+
122+ xClampScrollableSetTighteningThreshold(x.GoPointer(), TighteningThresholdVar)
123+
124+}
125+
126+func (c *ClampScrollable) GoPointer() uintptr {
127+ return c.Ptr
128+}
129+
130+func (c *ClampScrollable) SetGoPointer(ptr uintptr) {
131+ c.Ptr = ptr
132+}
133+
134+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
135+func (x *ClampScrollable) GetAccessibleRole() gtk.AccessibleRole {
136+
137+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
138+
139+}
140+
141+// Resets the accessible @property to its default value.
142+func (x *ClampScrollable) ResetProperty(PropertyVar gtk.AccessibleProperty) {
143+
144+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
145+
146+}
147+
148+// Resets the accessible @relation to its default value.
149+func (x *ClampScrollable) ResetRelation(RelationVar gtk.AccessibleRelation) {
150+
151+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
152+
153+}
154+
155+// Resets the accessible @state to its default value.
156+func (x *ClampScrollable) ResetState(StateVar gtk.AccessibleState) {
157+
158+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
159+
160+}
161+
162+// Updates a list of accessible properties.
163+//
164+// See the [enum@Gtk.AccessibleProperty] documentation for the
165+// value types of accessible properties.
166+//
167+// This function should be called by `GtkWidget` types whenever
168+// an accessible property change must be communicated to assistive
169+// technologies.
170+//
171+// Example:
172+// ```c
173+// value = gtk_adjustment_get_value (adjustment);
174+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
175+//
176+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
177+// -1);
178+//
179+// ```
180+func (x *ClampScrollable) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
181+
182+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
183+
184+}
185+
186+// Updates an array of accessible properties.
187+//
188+// This function should be called by `GtkWidget` types whenever an accessible
189+// property change must be communicated to assistive technologies.
190+//
191+// This function is meant to be used by language bindings.
192+func (x *ClampScrollable) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
193+
194+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
195+
196+}
197+
198+// Updates a list of accessible relations.
199+//
200+// This function should be called by `GtkWidget` types whenever an accessible
201+// relation change must be communicated to assistive technologies.
202+//
203+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
204+// you should pass each reference individually, followed by %NULL, e.g.
205+//
206+// ```c
207+// gtk_accessible_update_relation (accessible,
208+//
209+// GTK_ACCESSIBLE_RELATION_CONTROLS,
210+// ref1, NULL,
211+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
212+// ref1, ref2, ref3, NULL,
213+// -1);
214+//
215+// ```
216+func (x *ClampScrollable) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
217+
218+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
219+
220+}
221+
222+// Updates an array of accessible relations.
223+//
224+// This function should be called by `GtkWidget` types whenever an accessible
225+// relation change must be communicated to assistive technologies.
226+//
227+// This function is meant to be used by language bindings.
228+func (x *ClampScrollable) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
229+
230+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
231+
232+}
233+
234+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
235+// documentation for the value types of accessible states.
236+//
237+// This function should be called by `GtkWidget` types whenever an accessible
238+// state change must be communicated to assistive technologies.
239+//
240+// Example:
241+// ```c
242+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
243+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
244+//
245+// GTK_ACCESSIBLE_STATE_CHECKED, value,
246+// -1);
247+//
248+// ```
249+func (x *ClampScrollable) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
250+
251+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
252+
253+}
254+
255+// Updates an array of accessible states.
256+//
257+// This function should be called by `GtkWidget` types whenever an accessible
258+// state change must be communicated to assistive technologies.
259+//
260+// This function is meant to be used by language bindings.
261+func (x *ClampScrollable) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
262+
263+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
264+
265+}
266+
267+// Gets the ID of the @buildable object.
268+//
269+// `GtkBuilder` sets the name based on the ID attribute
270+// of the &lt;object&gt; tag used to construct the @buildable.
271+func (x *ClampScrollable) GetBuildableId() string {
272+
273+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
274+
275+}
276+
277+// Retrieves the orientation of the @orientable.
278+func (x *ClampScrollable) GetOrientation() gtk.Orientation {
279+
280+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
281+
282+}
283+
284+// Sets the orientation of the @orientable.
285+func (x *ClampScrollable) SetOrientation(OrientationVar gtk.Orientation) {
286+
287+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
288+
289+}
290+
291+// Returns the size of a non-scrolling border around the
292+// outside of the scrollable.
293+//
294+// An example for this would be treeview headers. GTK can use
295+// this information to display overlaid graphics, like the
296+// overshoot indication, at the right position.
297+func (x *ClampScrollable) GetBorder(BorderVar *gtk.Border) bool {
298+
299+ return gtk.XGtkScrollableGetBorder(x.GoPointer(), BorderVar)
300+
301+}
302+
303+// Retrieves the `GtkAdjustment` used for horizontal scrolling.
304+func (x *ClampScrollable) GetHadjustment() *gtk.Adjustment {
305+
306+ GetHadjustmentPtr := gtk.XGtkScrollableGetHadjustment(x.GoPointer())
307+ if GetHadjustmentPtr == 0 {
308+ return nil
309+ }
310+
311+ gobject.IncreaseRef(GetHadjustmentPtr)
312+
313+ GetHadjustmentCls := &gtk.Adjustment{}
314+ GetHadjustmentCls.Ptr = GetHadjustmentPtr
315+ return GetHadjustmentCls
316+
317+}
318+
319+// Gets the horizontal `GtkScrollablePolicy`.
320+func (x *ClampScrollable) GetHscrollPolicy() gtk.ScrollablePolicy {
321+
322+ return gtk.XGtkScrollableGetHscrollPolicy(x.GoPointer())
323+
324+}
325+
326+// Retrieves the `GtkAdjustment` used for vertical scrolling.
327+func (x *ClampScrollable) GetVadjustment() *gtk.Adjustment {
328+
329+ GetVadjustmentPtr := gtk.XGtkScrollableGetVadjustment(x.GoPointer())
330+ if GetVadjustmentPtr == 0 {
331+ return nil
332+ }
333+
334+ gobject.IncreaseRef(GetVadjustmentPtr)
335+
336+ GetVadjustmentCls := &gtk.Adjustment{}
337+ GetVadjustmentCls.Ptr = GetVadjustmentPtr
338+ return GetVadjustmentCls
339+
340+}
341+
342+// Gets the vertical `GtkScrollablePolicy`.
343+func (x *ClampScrollable) GetVscrollPolicy() gtk.ScrollablePolicy {
344+
345+ return gtk.XGtkScrollableGetVscrollPolicy(x.GoPointer())
346+
347+}
348+
349+// Sets the horizontal adjustment of the `GtkScrollable`.
350+func (x *ClampScrollable) SetHadjustment(HadjustmentVar *gtk.Adjustment) {
351+
352+ gtk.XGtkScrollableSetHadjustment(x.GoPointer(), HadjustmentVar.GoPointer())
353+
354+}
355+
356+// Sets the `GtkScrollablePolicy`.
357+//
358+// The policy determines whether horizontal scrolling should start
359+// below the minimum width or below the natural width.
360+func (x *ClampScrollable) SetHscrollPolicy(PolicyVar gtk.ScrollablePolicy) {
361+
362+ gtk.XGtkScrollableSetHscrollPolicy(x.GoPointer(), PolicyVar)
363+
364+}
365+
366+// Sets the vertical adjustment of the `GtkScrollable`.
367+func (x *ClampScrollable) SetVadjustment(VadjustmentVar *gtk.Adjustment) {
368+
369+ gtk.XGtkScrollableSetVadjustment(x.GoPointer(), VadjustmentVar.GoPointer())
370+
371+}
372+
373+// Sets the `GtkScrollablePolicy`.
374+//
375+// The policy determines whether vertical scrolling should start
376+// below the minimum height or below the natural height.
377+func (x *ClampScrollable) SetVscrollPolicy(PolicyVar gtk.ScrollablePolicy) {
378+
379+ gtk.XGtkScrollableSetVscrollPolicy(x.GoPointer(), PolicyVar)
380+
381+}
382+
383+func init() {
384+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
385+ if err != nil {
386+ panic(err)
387+ }
388+
389+ core.PuregoSafeRegister(&xNewClampScrollable, lib, "adw_clamp_scrollable_new")
390+
391+ core.PuregoSafeRegister(&xClampScrollableGetChild, lib, "adw_clamp_scrollable_get_child")
392+ core.PuregoSafeRegister(&xClampScrollableGetMaximumSize, lib, "adw_clamp_scrollable_get_maximum_size")
393+ core.PuregoSafeRegister(&xClampScrollableGetTighteningThreshold, lib, "adw_clamp_scrollable_get_tightening_threshold")
394+ core.PuregoSafeRegister(&xClampScrollableSetChild, lib, "adw_clamp_scrollable_set_child")
395+ core.PuregoSafeRegister(&xClampScrollableSetMaximumSize, lib, "adw_clamp_scrollable_set_maximum_size")
396+ core.PuregoSafeRegister(&xClampScrollableSetTighteningThreshold, lib, "adw_clamp_scrollable_set_tightening_threshold")
397+
398+}
A v4/adw/adw-clamp.go +329 -0
@@ -0,0 +1,329 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type ClampClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A widget constraining its child to a given size.
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="clamp-wide-dark.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="clamp-wide.png" alt="clamp-wide"&gt;
21+//
22+// &lt;/picture&gt;
23+// &lt;picture&gt;
24+//
25+// &lt;source srcset="clamp-narrow-dark.png" media="(prefers-color-scheme: dark)"&gt;
26+// &lt;img src="clamp-narrow.png" alt="clamp-narrow"&gt;
27+//
28+// &lt;/picture&gt;
29+//
30+// The `AdwClamp` widget constrains the size of the widget it contains to a
31+// given maximum size. It will constrain the width if it is horizontal, or the
32+// height if it is vertical. The expansion of the child from its minimum to its
33+// maximum size is eased out for a smooth transition.
34+//
35+// If the child requires more than the requested maximum size, it will be
36+// allocated the minimum size it can fit in instead.
37+//
38+// ## CSS nodes
39+//
40+// `AdwClamp` has a single CSS node with name `clamp`.
41+//
42+// Its children will receive the style classes `.large` when the child reached
43+// its maximum size, `.small` when the clamp allocates its full size to the
44+// child, `.medium` in-between, or none if it hasn't computed its size yet.
45+type Clamp struct {
46+ gtk.Widget
47+}
48+
49+func ClampNewFromInternalPtr(ptr uintptr) *Clamp {
50+ cls := &Clamp{}
51+ cls.Ptr = ptr
52+ return cls
53+}
54+
55+var xNewClamp func() uintptr
56+
57+// Creates a new `AdwClamp`.
58+func NewClamp() *gtk.Widget {
59+ NewClampPtr := xNewClamp()
60+ if NewClampPtr == 0 {
61+ return nil
62+ }
63+
64+ gobject.IncreaseRef(NewClampPtr)
65+
66+ NewClampCls := &gtk.Widget{}
67+ NewClampCls.Ptr = NewClampPtr
68+ return NewClampCls
69+}
70+
71+var xClampGetChild func(uintptr) uintptr
72+
73+// Gets the child widget of @self.
74+func (x *Clamp) GetChild() *gtk.Widget {
75+
76+ GetChildPtr := xClampGetChild(x.GoPointer())
77+ if GetChildPtr == 0 {
78+ return nil
79+ }
80+
81+ gobject.IncreaseRef(GetChildPtr)
82+
83+ GetChildCls := &gtk.Widget{}
84+ GetChildCls.Ptr = GetChildPtr
85+ return GetChildCls
86+
87+}
88+
89+var xClampGetMaximumSize func(uintptr) int32
90+
91+// Gets the maximum size allocated to the child.
92+func (x *Clamp) GetMaximumSize() int32 {
93+
94+ return xClampGetMaximumSize(x.GoPointer())
95+
96+}
97+
98+var xClampGetTighteningThreshold func(uintptr) int32
99+
100+// Gets the size above which the child is clamped.
101+func (x *Clamp) GetTighteningThreshold() int32 {
102+
103+ return xClampGetTighteningThreshold(x.GoPointer())
104+
105+}
106+
107+var xClampSetChild func(uintptr, uintptr)
108+
109+// Sets the child widget of @self.
110+func (x *Clamp) SetChild(ChildVar *gtk.Widget) {
111+
112+ xClampSetChild(x.GoPointer(), ChildVar.GoPointer())
113+
114+}
115+
116+var xClampSetMaximumSize func(uintptr, int32)
117+
118+// Sets the maximum size allocated to the child.
119+//
120+// It is the width if the clamp is horizontal, or the height if it is vertical.
121+func (x *Clamp) SetMaximumSize(MaximumSizeVar int32) {
122+
123+ xClampSetMaximumSize(x.GoPointer(), MaximumSizeVar)
124+
125+}
126+
127+var xClampSetTighteningThreshold func(uintptr, int32)
128+
129+// Sets the size above which the child is clamped.
130+//
131+// Starting from this size, the clamp will tighten its grip on the child, slowly
132+// allocating less and less of the available size up to the maximum allocated
133+// size. Below that threshold and below the maximum size, the child will be
134+// allocated all the available size.
135+//
136+// If the threshold is greater than the maximum size to allocate to the child,
137+// the child will be allocated all the size up to the maximum. If the threshold
138+// is lower than the minimum size to allocate to the child, that size will be
139+// used as the tightening threshold.
140+//
141+// Effectively, tightening the grip on the child before it reaches its maximum
142+// size makes transitions to and from the maximum size smoother when resizing.
143+func (x *Clamp) SetTighteningThreshold(TighteningThresholdVar int32) {
144+
145+ xClampSetTighteningThreshold(x.GoPointer(), TighteningThresholdVar)
146+
147+}
148+
149+func (c *Clamp) GoPointer() uintptr {
150+ return c.Ptr
151+}
152+
153+func (c *Clamp) SetGoPointer(ptr uintptr) {
154+ c.Ptr = ptr
155+}
156+
157+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
158+func (x *Clamp) GetAccessibleRole() gtk.AccessibleRole {
159+
160+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
161+
162+}
163+
164+// Resets the accessible @property to its default value.
165+func (x *Clamp) ResetProperty(PropertyVar gtk.AccessibleProperty) {
166+
167+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
168+
169+}
170+
171+// Resets the accessible @relation to its default value.
172+func (x *Clamp) ResetRelation(RelationVar gtk.AccessibleRelation) {
173+
174+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
175+
176+}
177+
178+// Resets the accessible @state to its default value.
179+func (x *Clamp) ResetState(StateVar gtk.AccessibleState) {
180+
181+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
182+
183+}
184+
185+// Updates a list of accessible properties.
186+//
187+// See the [enum@Gtk.AccessibleProperty] documentation for the
188+// value types of accessible properties.
189+//
190+// This function should be called by `GtkWidget` types whenever
191+// an accessible property change must be communicated to assistive
192+// technologies.
193+//
194+// Example:
195+// ```c
196+// value = gtk_adjustment_get_value (adjustment);
197+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
198+//
199+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
200+// -1);
201+//
202+// ```
203+func (x *Clamp) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
204+
205+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
206+
207+}
208+
209+// Updates an array of accessible properties.
210+//
211+// This function should be called by `GtkWidget` types whenever an accessible
212+// property change must be communicated to assistive technologies.
213+//
214+// This function is meant to be used by language bindings.
215+func (x *Clamp) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
216+
217+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
218+
219+}
220+
221+// Updates a list of accessible relations.
222+//
223+// This function should be called by `GtkWidget` types whenever an accessible
224+// relation change must be communicated to assistive technologies.
225+//
226+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
227+// you should pass each reference individually, followed by %NULL, e.g.
228+//
229+// ```c
230+// gtk_accessible_update_relation (accessible,
231+//
232+// GTK_ACCESSIBLE_RELATION_CONTROLS,
233+// ref1, NULL,
234+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
235+// ref1, ref2, ref3, NULL,
236+// -1);
237+//
238+// ```
239+func (x *Clamp) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
240+
241+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
242+
243+}
244+
245+// Updates an array of accessible relations.
246+//
247+// This function should be called by `GtkWidget` types whenever an accessible
248+// relation change must be communicated to assistive technologies.
249+//
250+// This function is meant to be used by language bindings.
251+func (x *Clamp) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
252+
253+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
254+
255+}
256+
257+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
258+// documentation for the value types of accessible states.
259+//
260+// This function should be called by `GtkWidget` types whenever an accessible
261+// state change must be communicated to assistive technologies.
262+//
263+// Example:
264+// ```c
265+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
266+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
267+//
268+// GTK_ACCESSIBLE_STATE_CHECKED, value,
269+// -1);
270+//
271+// ```
272+func (x *Clamp) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
273+
274+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
275+
276+}
277+
278+// Updates an array of accessible states.
279+//
280+// This function should be called by `GtkWidget` types whenever an accessible
281+// state change must be communicated to assistive technologies.
282+//
283+// This function is meant to be used by language bindings.
284+func (x *Clamp) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
285+
286+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
287+
288+}
289+
290+// Gets the ID of the @buildable object.
291+//
292+// `GtkBuilder` sets the name based on the ID attribute
293+// of the &lt;object&gt; tag used to construct the @buildable.
294+func (x *Clamp) GetBuildableId() string {
295+
296+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
297+
298+}
299+
300+// Retrieves the orientation of the @orientable.
301+func (x *Clamp) GetOrientation() gtk.Orientation {
302+
303+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
304+
305+}
306+
307+// Sets the orientation of the @orientable.
308+func (x *Clamp) SetOrientation(OrientationVar gtk.Orientation) {
309+
310+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
311+
312+}
313+
314+func init() {
315+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
316+ if err != nil {
317+ panic(err)
318+ }
319+
320+ core.PuregoSafeRegister(&xNewClamp, lib, "adw_clamp_new")
321+
322+ core.PuregoSafeRegister(&xClampGetChild, lib, "adw_clamp_get_child")
323+ core.PuregoSafeRegister(&xClampGetMaximumSize, lib, "adw_clamp_get_maximum_size")
324+ core.PuregoSafeRegister(&xClampGetTighteningThreshold, lib, "adw_clamp_get_tightening_threshold")
325+ core.PuregoSafeRegister(&xClampSetChild, lib, "adw_clamp_set_child")
326+ core.PuregoSafeRegister(&xClampSetMaximumSize, lib, "adw_clamp_set_maximum_size")
327+ core.PuregoSafeRegister(&xClampSetTighteningThreshold, lib, "adw_clamp_set_tightening_threshold")
328+
329+}
A v4/adw/adw-combo-row.go +533 -0
@@ -0,0 +1,533 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gio"
8+ "github.com/jwijenbergh/puregotk/v4/glib"
9+ "github.com/jwijenbergh/puregotk/v4/gobject"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type ComboRowClass struct {
14+ ParentClass uintptr
15+
16+ Padding uintptr
17+}
18+
19+// A [class@Gtk.ListBoxRow] used to choose from a list of items.
20+//
21+// &lt;picture&gt;
22+//
23+// &lt;source srcset="combo-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
24+// &lt;img src="combo-row.png" alt="combo-row"&gt;
25+//
26+// &lt;/picture&gt;
27+//
28+// The `AdwComboRow` widget allows the user to choose from a list of valid
29+// choices. The row displays the selected choice. When activated, the row
30+// displays a popover which allows the user to make a new choice.
31+//
32+// Example of an `AdwComboRow` UI definition:
33+// ```xml
34+// &lt;object class="AdwComboRow"&gt;
35+//
36+// &lt;property name="title" translatable="yes"&gt;Combo Row&lt;/property&gt;
37+// &lt;property name="model"&gt;
38+// &lt;object class="GtkStringList"&gt;
39+// &lt;items&gt;
40+// &lt;item translatable="yes"&gt;Foo&lt;/item&gt;
41+// &lt;item translatable="yes"&gt;Bar&lt;/item&gt;
42+// &lt;item translatable="yes"&gt;Baz&lt;/item&gt;
43+// &lt;/items&gt;
44+// &lt;/object&gt;
45+// &lt;/property&gt;
46+//
47+// &lt;/object&gt;
48+// ```
49+//
50+// The [property@ComboRow:selected] and [property@ComboRow:selected-item]
51+// properties can be used to keep track of the selected item and react to their
52+// changes.
53+//
54+// `AdwComboRow` mirrors [class@Gtk.DropDown], see that widget for details.
55+//
56+// `AdwComboRow` is [property@Gtk.ListBoxRow:activatable] if a model is set.
57+//
58+// ## CSS nodes
59+//
60+// `AdwComboRow` has a main CSS node with name `row` and the `.combo` style
61+// class.
62+//
63+// Its popover has the node named `popover` with the `.menu` style class, it
64+// contains a [class@Gtk.ScrolledWindow], which in turn contains a
65+// [class@Gtk.ListView], both are accessible via their regular nodes.
66+//
67+// ## Accessibility
68+//
69+// `AdwComboRow` uses the `GTK_ACCESSIBLE_ROLE_COMBO_BOX` role.
70+type ComboRow struct {
71+ ActionRow
72+}
73+
74+func ComboRowNewFromInternalPtr(ptr uintptr) *ComboRow {
75+ cls := &ComboRow{}
76+ cls.Ptr = ptr
77+ return cls
78+}
79+
80+var xNewComboRow func() uintptr
81+
82+// Creates a new `AdwComboRow`.
83+func NewComboRow() *gtk.Widget {
84+ NewComboRowPtr := xNewComboRow()
85+ if NewComboRowPtr == 0 {
86+ return nil
87+ }
88+
89+ gobject.IncreaseRef(NewComboRowPtr)
90+
91+ NewComboRowCls := &gtk.Widget{}
92+ NewComboRowCls.Ptr = NewComboRowPtr
93+ return NewComboRowCls
94+}
95+
96+var xComboRowGetExpression func(uintptr) uintptr
97+
98+// Gets the expression used to obtain strings from items.
99+func (x *ComboRow) GetExpression() *gtk.Expression {
100+
101+ GetExpressionPtr := xComboRowGetExpression(x.GoPointer())
102+ if GetExpressionPtr == 0 {
103+ return nil
104+ }
105+
106+ gobject.IncreaseRef(GetExpressionPtr)
107+
108+ GetExpressionCls := &gtk.Expression{}
109+ GetExpressionCls.Ptr = GetExpressionPtr
110+ return GetExpressionCls
111+
112+}
113+
114+var xComboRowGetFactory func(uintptr) uintptr
115+
116+// Gets the factory for populating list items.
117+func (x *ComboRow) GetFactory() *gtk.ListItemFactory {
118+
119+ GetFactoryPtr := xComboRowGetFactory(x.GoPointer())
120+ if GetFactoryPtr == 0 {
121+ return nil
122+ }
123+
124+ gobject.IncreaseRef(GetFactoryPtr)
125+
126+ GetFactoryCls := &gtk.ListItemFactory{}
127+ GetFactoryCls.Ptr = GetFactoryPtr
128+ return GetFactoryCls
129+
130+}
131+
132+var xComboRowGetListFactory func(uintptr) uintptr
133+
134+// Gets the factory for populating list items in the popup.
135+func (x *ComboRow) GetListFactory() *gtk.ListItemFactory {
136+
137+ GetListFactoryPtr := xComboRowGetListFactory(x.GoPointer())
138+ if GetListFactoryPtr == 0 {
139+ return nil
140+ }
141+
142+ gobject.IncreaseRef(GetListFactoryPtr)
143+
144+ GetListFactoryCls := &gtk.ListItemFactory{}
145+ GetListFactoryCls.Ptr = GetListFactoryPtr
146+ return GetListFactoryCls
147+
148+}
149+
150+var xComboRowGetModel func(uintptr) uintptr
151+
152+// Gets the model that provides the displayed items.
153+func (x *ComboRow) GetModel() *gio.ListModelBase {
154+
155+ GetModelPtr := xComboRowGetModel(x.GoPointer())
156+ if GetModelPtr == 0 {
157+ return nil
158+ }
159+
160+ gobject.IncreaseRef(GetModelPtr)
161+
162+ GetModelCls := &gio.ListModelBase{}
163+ GetModelCls.Ptr = GetModelPtr
164+ return GetModelCls
165+
166+}
167+
168+var xComboRowGetSelected func(uintptr) uint
169+
170+// Gets the position of the selected item.
171+func (x *ComboRow) GetSelected() uint {
172+
173+ return xComboRowGetSelected(x.GoPointer())
174+
175+}
176+
177+var xComboRowGetSelectedItem func(uintptr) uintptr
178+
179+// Gets the selected item.
180+func (x *ComboRow) GetSelectedItem() *gobject.Object {
181+
182+ GetSelectedItemPtr := xComboRowGetSelectedItem(x.GoPointer())
183+ if GetSelectedItemPtr == 0 {
184+ return nil
185+ }
186+
187+ gobject.IncreaseRef(GetSelectedItemPtr)
188+
189+ GetSelectedItemCls := &gobject.Object{}
190+ GetSelectedItemCls.Ptr = GetSelectedItemPtr
191+ return GetSelectedItemCls
192+
193+}
194+
195+var xComboRowGetUseSubtitle func(uintptr) bool
196+
197+// Gets whether to use the current value as the subtitle.
198+func (x *ComboRow) GetUseSubtitle() bool {
199+
200+ return xComboRowGetUseSubtitle(x.GoPointer())
201+
202+}
203+
204+var xComboRowSetExpression func(uintptr, uintptr)
205+
206+// Sets the expression used to obtain strings from items.
207+//
208+// The expression must have a value type of `G_TYPE_STRING`.
209+//
210+// It's used to bind strings to labels produced by the default factory if
211+// [property@ComboRow:factory] is not set, or when
212+// [property@ComboRow:use-subtitle] is set to `TRUE`.
213+func (x *ComboRow) SetExpression(ExpressionVar *gtk.Expression) {
214+
215+ xComboRowSetExpression(x.GoPointer(), ExpressionVar.GoPointer())
216+
217+}
218+
219+var xComboRowSetFactory func(uintptr, uintptr)
220+
221+// Sets the factory for populating list items.
222+//
223+// This factory is always used for the item in the row. It is also used for
224+// items in the popup unless [property@ComboRow:list-factory] is set.
225+func (x *ComboRow) SetFactory(FactoryVar *gtk.ListItemFactory) {
226+
227+ xComboRowSetFactory(x.GoPointer(), FactoryVar.GoPointer())
228+
229+}
230+
231+var xComboRowSetListFactory func(uintptr, uintptr)
232+
233+// Sets the factory for populating list items in the popup.
234+//
235+// If this is not set, [property@ComboRow:factory] is used.
236+func (x *ComboRow) SetListFactory(FactoryVar *gtk.ListItemFactory) {
237+
238+ xComboRowSetListFactory(x.GoPointer(), FactoryVar.GoPointer())
239+
240+}
241+
242+var xComboRowSetModel func(uintptr, uintptr)
243+
244+// Sets the model that provides the displayed items.
245+func (x *ComboRow) SetModel(ModelVar gio.ListModel) {
246+
247+ xComboRowSetModel(x.GoPointer(), ModelVar.GoPointer())
248+
249+}
250+
251+var xComboRowSetSelected func(uintptr, uint)
252+
253+// Selects the item at the given position.
254+func (x *ComboRow) SetSelected(PositionVar uint) {
255+
256+ xComboRowSetSelected(x.GoPointer(), PositionVar)
257+
258+}
259+
260+var xComboRowSetUseSubtitle func(uintptr, bool)
261+
262+// Sets whether to use the current value as the subtitle.
263+//
264+// If you use a custom list item factory, you will need to give the row a
265+// name conversion expression with [property@ComboRow:expression].
266+//
267+// If set to `TRUE`, you should not access [property@ActionRow:subtitle].
268+//
269+// The subtitle is interpreted as Pango markup if
270+// [property@PreferencesRow:use-markup] is set to `TRUE`.
271+func (x *ComboRow) SetUseSubtitle(UseSubtitleVar bool) {
272+
273+ xComboRowSetUseSubtitle(x.GoPointer(), UseSubtitleVar)
274+
275+}
276+
277+func (c *ComboRow) GoPointer() uintptr {
278+ return c.Ptr
279+}
280+
281+func (c *ComboRow) SetGoPointer(ptr uintptr) {
282+ c.Ptr = ptr
283+}
284+
285+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
286+func (x *ComboRow) GetAccessibleRole() gtk.AccessibleRole {
287+
288+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
289+
290+}
291+
292+// Resets the accessible @property to its default value.
293+func (x *ComboRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
294+
295+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
296+
297+}
298+
299+// Resets the accessible @relation to its default value.
300+func (x *ComboRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
301+
302+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
303+
304+}
305+
306+// Resets the accessible @state to its default value.
307+func (x *ComboRow) ResetState(StateVar gtk.AccessibleState) {
308+
309+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
310+
311+}
312+
313+// Updates a list of accessible properties.
314+//
315+// See the [enum@Gtk.AccessibleProperty] documentation for the
316+// value types of accessible properties.
317+//
318+// This function should be called by `GtkWidget` types whenever
319+// an accessible property change must be communicated to assistive
320+// technologies.
321+//
322+// Example:
323+// ```c
324+// value = gtk_adjustment_get_value (adjustment);
325+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
326+//
327+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
328+// -1);
329+//
330+// ```
331+func (x *ComboRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
332+
333+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
334+
335+}
336+
337+// Updates an array of accessible properties.
338+//
339+// This function should be called by `GtkWidget` types whenever an accessible
340+// property change must be communicated to assistive technologies.
341+//
342+// This function is meant to be used by language bindings.
343+func (x *ComboRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
344+
345+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
346+
347+}
348+
349+// Updates a list of accessible relations.
350+//
351+// This function should be called by `GtkWidget` types whenever an accessible
352+// relation change must be communicated to assistive technologies.
353+//
354+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
355+// you should pass each reference individually, followed by %NULL, e.g.
356+//
357+// ```c
358+// gtk_accessible_update_relation (accessible,
359+//
360+// GTK_ACCESSIBLE_RELATION_CONTROLS,
361+// ref1, NULL,
362+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
363+// ref1, ref2, ref3, NULL,
364+// -1);
365+//
366+// ```
367+func (x *ComboRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
368+
369+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
370+
371+}
372+
373+// Updates an array of accessible relations.
374+//
375+// This function should be called by `GtkWidget` types whenever an accessible
376+// relation change must be communicated to assistive technologies.
377+//
378+// This function is meant to be used by language bindings.
379+func (x *ComboRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
380+
381+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
382+
383+}
384+
385+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
386+// documentation for the value types of accessible states.
387+//
388+// This function should be called by `GtkWidget` types whenever an accessible
389+// state change must be communicated to assistive technologies.
390+//
391+// Example:
392+// ```c
393+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
394+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
395+//
396+// GTK_ACCESSIBLE_STATE_CHECKED, value,
397+// -1);
398+//
399+// ```
400+func (x *ComboRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
401+
402+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
403+
404+}
405+
406+// Updates an array of accessible states.
407+//
408+// This function should be called by `GtkWidget` types whenever an accessible
409+// state change must be communicated to assistive technologies.
410+//
411+// This function is meant to be used by language bindings.
412+func (x *ComboRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
413+
414+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
415+
416+}
417+
418+// Gets the action name for @actionable.
419+func (x *ComboRow) GetActionName() string {
420+
421+ return gtk.XGtkActionableGetActionName(x.GoPointer())
422+
423+}
424+
425+// Gets the current target value of @actionable.
426+func (x *ComboRow) GetActionTargetValue() *glib.Variant {
427+
428+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
429+
430+}
431+
432+// Specifies the name of the action with which this widget should be
433+// associated.
434+//
435+// If @action_name is %NULL then the widget will be unassociated from
436+// any previous action.
437+//
438+// Usually this function is used when the widget is located (or will be
439+// located) within the hierarchy of a `GtkApplicationWindow`.
440+//
441+// Names are of the form “win.save” or “app.quit” for actions on the
442+// containing [class@ApplicationWindow] or its associated [class@Application],
443+// respectively. This is the same form used for actions in the [class@Gio.Menu]
444+// associated with the window.
445+func (x *ComboRow) SetActionName(ActionNameVar string) {
446+
447+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
448+
449+}
450+
451+// Sets the target of an actionable widget.
452+//
453+// This is a convenience function that calls [ctor@GLib.Variant.new] for
454+// @format_string and uses the result to call
455+// [method@Gtk.Actionable.set_action_target_value].
456+//
457+// If you are setting a string-valued target and want to set
458+// the action name at the same time, you can use
459+// [method@Gtk.Actionable.set_detailed_action_name].
460+func (x *ComboRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
461+
462+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
463+
464+}
465+
466+// Sets the target value of an actionable widget.
467+//
468+// If @target_value is %NULL then the target value is unset.
469+//
470+// The target value has two purposes. First, it is used as the parameter
471+// to activation of the action associated with the `GtkActionable` widget.
472+// Second, it is used to determine if the widget should be rendered as
473+// “active” — the widget is active if the state is equal to the given target.
474+//
475+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
476+// with string state in a typical “radio button” situation. Each button
477+// will be associated with the same action, but with a different target
478+// value for that action. Clicking on a particular button will activate
479+// the action with the target of that button, which will typically cause
480+// the action’s state to change to that value. Since the action’s state
481+// is now equal to the target value of the button, the button will now
482+// be rendered as active (and the other buttons, with different targets,
483+// rendered inactive).
484+func (x *ComboRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
485+
486+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
487+
488+}
489+
490+// Sets the action-name and associated string target value of an
491+// actionable widget.
492+//
493+// @detailed_action_name is a string in the format accepted by
494+// [func@Gio.Action.parse_detailed_name].
495+func (x *ComboRow) SetDetailedActionName(DetailedActionNameVar string) {
496+
497+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
498+
499+}
500+
501+// Gets the ID of the @buildable object.
502+//
503+// `GtkBuilder` sets the name based on the ID attribute
504+// of the &lt;object&gt; tag used to construct the @buildable.
505+func (x *ComboRow) GetBuildableId() string {
506+
507+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
508+
509+}
510+
511+func init() {
512+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
513+ if err != nil {
514+ panic(err)
515+ }
516+
517+ core.PuregoSafeRegister(&xNewComboRow, lib, "adw_combo_row_new")
518+
519+ core.PuregoSafeRegister(&xComboRowGetExpression, lib, "adw_combo_row_get_expression")
520+ core.PuregoSafeRegister(&xComboRowGetFactory, lib, "adw_combo_row_get_factory")
521+ core.PuregoSafeRegister(&xComboRowGetListFactory, lib, "adw_combo_row_get_list_factory")
522+ core.PuregoSafeRegister(&xComboRowGetModel, lib, "adw_combo_row_get_model")
523+ core.PuregoSafeRegister(&xComboRowGetSelected, lib, "adw_combo_row_get_selected")
524+ core.PuregoSafeRegister(&xComboRowGetSelectedItem, lib, "adw_combo_row_get_selected_item")
525+ core.PuregoSafeRegister(&xComboRowGetUseSubtitle, lib, "adw_combo_row_get_use_subtitle")
526+ core.PuregoSafeRegister(&xComboRowSetExpression, lib, "adw_combo_row_set_expression")
527+ core.PuregoSafeRegister(&xComboRowSetFactory, lib, "adw_combo_row_set_factory")
528+ core.PuregoSafeRegister(&xComboRowSetListFactory, lib, "adw_combo_row_set_list_factory")
529+ core.PuregoSafeRegister(&xComboRowSetModel, lib, "adw_combo_row_set_model")
530+ core.PuregoSafeRegister(&xComboRowSetSelected, lib, "adw_combo_row_set_selected")
531+ core.PuregoSafeRegister(&xComboRowSetUseSubtitle, lib, "adw_combo_row_set_use_subtitle")
532+
533+}
A v4/adw/adw-easing.go +114 -0
@@ -0,0 +1,114 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+)
8+
9+// Describes the available easing functions for use with
10+// [class@TimedAnimation].
11+//
12+// New values may be added to this enumeration over time.
13+type Easing int
14+
15+const (
16+
17+ // Linear tweening.
18+ LinearValue Easing = 0
19+ // Quadratic tweening.
20+ EaseInQuadValue Easing = 1
21+ // Quadratic tweening, inverse of `ADW_EASE_IN_QUAD`.
22+ EaseOutQuadValue Easing = 2
23+ // Quadratic tweening, combining `ADW_EASE_IN_QUAD` and
24+ // `ADW_EASE_OUT_QUAD`.
25+ EaseInOutQuadValue Easing = 3
26+ // Cubic tweening.
27+ EaseInCubicValue Easing = 4
28+ // Cubic tweening, inverse of `ADW_EASE_IN_CUBIC`.
29+ EaseOutCubicValue Easing = 5
30+ // Cubic tweening, combining `ADW_EASE_IN_CUBIC` and
31+ // `ADW_EASE_OUT_CUBIC`.
32+ EaseInOutCubicValue Easing = 6
33+ // Quartic tweening.
34+ EaseInQuartValue Easing = 7
35+ // Quartic tweening, inverse of `ADW_EASE_IN_QUART`.
36+ EaseOutQuartValue Easing = 8
37+ // Quartic tweening, combining `ADW_EASE_IN_QUART` and
38+ // `ADW_EASE_OUT_QUART`.
39+ EaseInOutQuartValue Easing = 9
40+ // Quintic tweening.
41+ EaseInQuintValue Easing = 10
42+ // Quintic tweening, inverse of `ADW_EASE_IN_QUINT`.
43+ EaseOutQuintValue Easing = 11
44+ // Quintic tweening, combining `ADW_EASE_IN_QUINT` and
45+ // `ADW_EASE_OUT_QUINT`.
46+ EaseInOutQuintValue Easing = 12
47+ // Sine wave tweening.
48+ EaseInSineValue Easing = 13
49+ // Sine wave tweening, inverse of `ADW_EASE_IN_SINE`.
50+ EaseOutSineValue Easing = 14
51+ // Sine wave tweening, combining `ADW_EASE_IN_SINE` and
52+ // `ADW_EASE_OUT_SINE`.
53+ EaseInOutSineValue Easing = 15
54+ // Exponential tweening.
55+ EaseInExpoValue Easing = 16
56+ // Exponential tweening, inverse of `ADW_EASE_IN_EXPO`.
57+ EaseOutExpoValue Easing = 17
58+ // Exponential tweening, combining `ADW_EASE_IN_EXPO` and
59+ // `ADW_EASE_OUT_EXPO`.
60+ EaseInOutExpoValue Easing = 18
61+ // Circular tweening.
62+ EaseInCircValue Easing = 19
63+ // Circular tweening, inverse of `ADW_EASE_IN_CIRC`.
64+ EaseOutCircValue Easing = 20
65+ // Circular tweening, combining `ADW_EASE_IN_CIRC` and
66+ // `ADW_EASE_OUT_CIRC`.
67+ EaseInOutCircValue Easing = 21
68+ // Elastic tweening, with offshoot on start.
69+ EaseInElasticValue Easing = 22
70+ // Elastic tweening, with offshoot on end, inverse of
71+ // `ADW_EASE_IN_ELASTIC`.
72+ EaseOutElasticValue Easing = 23
73+ // Elastic tweening, with offshoot on both ends,
74+ // combining `ADW_EASE_IN_ELASTIC` and `ADW_EASE_OUT_ELASTIC`.
75+ EaseInOutElasticValue Easing = 24
76+ // Overshooting cubic tweening, with backtracking on start.
77+ EaseInBackValue Easing = 25
78+ // Overshooting cubic tweening, with backtracking on end,
79+ // inverse of `ADW_EASE_IN_BACK`.
80+ EaseOutBackValue Easing = 26
81+ // Overshooting cubic tweening, with backtracking on both
82+ // ends, combining `ADW_EASE_IN_BACK` and `ADW_EASE_OUT_BACK`.
83+ EaseInOutBackValue Easing = 27
84+ // Exponentially decaying parabolic (bounce) tweening,
85+ // on start.
86+ EaseInBounceValue Easing = 28
87+ // Exponentially decaying parabolic (bounce) tweening,
88+ // with bounce on end, inverse of `ADW_EASE_IN_BOUNCE`.
89+ EaseOutBounceValue Easing = 29
90+ // Exponentially decaying parabolic (bounce) tweening,
91+ // with bounce on both ends, combining `ADW_EASE_IN_BOUNCE` and
92+ // `ADW_EASE_OUT_BOUNCE`.
93+ EaseInOutBounceValue Easing = 30
94+)
95+
96+var xEasingEase func(Easing, float64) float64
97+
98+// Computes easing with @easing for @value.
99+//
100+// @value should generally be in the [0, 1] range.
101+func EasingEase(SelfVar Easing, ValueVar float64) float64 {
102+
103+ return xEasingEase(SelfVar, ValueVar)
104+
105+}
106+
107+func init() {
108+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
109+ if err != nil {
110+ panic(err)
111+ }
112+ core.PuregoSafeRegister(&xEasingEase, lib, "adw_easing_ease")
113+
114+}
A v4/adw/adw-entry-row.go +772 -0
@@ -0,0 +1,772 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+ "github.com/jwijenbergh/puregotk/v4/pango"
11+)
12+
13+type EntryRowClass struct {
14+ ParentClass uintptr
15+}
16+
17+// A [class@Gtk.ListBoxRow] with an embedded text entry.
18+//
19+// &lt;picture&gt;
20+//
21+// &lt;source srcset="entry-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
22+// &lt;img src="entry-row.png" alt="entry-row"&gt;
23+//
24+// &lt;/picture&gt;
25+//
26+// `AdwEntryRow` has a title that doubles as placeholder text. It shows an icon
27+// indicating that it's editable and can receive additional widgets before or
28+// after the editable part.
29+//
30+// If [property@EntryRow:show-apply-button] is set to `TRUE`, `AdwEntryRow` can
31+// show an apply button when editing its contents. This can be useful if
32+// changing its contents can result in an expensive operation, such as network
33+// activity.
34+//
35+// `AdwEntryRow` provides only minimal API and should be used with the
36+// [iface@Gtk.Editable] API.
37+//
38+// See also [class@PasswordEntryRow].
39+//
40+// ## AdwEntryRow as GtkBuildable
41+//
42+// The `AdwEntryRow` implementation of the [iface@Gtk.Buildable] interface
43+// supports adding a child at its end by specifying “suffix” or omitting the
44+// “type” attribute of a &lt;child&gt; element.
45+//
46+// It also supports adding a child as a prefix widget by specifying “prefix” as
47+// the “type” attribute of a &lt;child&gt; element.
48+//
49+// ## CSS nodes
50+//
51+// `AdwEntryRow` has a single CSS node with name `row` and the `.entry` style
52+// class.
53+type EntryRow struct {
54+ PreferencesRow
55+}
56+
57+func EntryRowNewFromInternalPtr(ptr uintptr) *EntryRow {
58+ cls := &EntryRow{}
59+ cls.Ptr = ptr
60+ return cls
61+}
62+
63+var xNewEntryRow func() uintptr
64+
65+// Creates a new `AdwEntryRow`.
66+func NewEntryRow() *gtk.Widget {
67+ NewEntryRowPtr := xNewEntryRow()
68+ if NewEntryRowPtr == 0 {
69+ return nil
70+ }
71+
72+ gobject.IncreaseRef(NewEntryRowPtr)
73+
74+ NewEntryRowCls := &gtk.Widget{}
75+ NewEntryRowCls.Ptr = NewEntryRowPtr
76+ return NewEntryRowCls
77+}
78+
79+var xEntryRowAddPrefix func(uintptr, uintptr)
80+
81+// Adds a prefix widget to @self.
82+func (x *EntryRow) AddPrefix(WidgetVar *gtk.Widget) {
83+
84+ xEntryRowAddPrefix(x.GoPointer(), WidgetVar.GoPointer())
85+
86+}
87+
88+var xEntryRowAddSuffix func(uintptr, uintptr)
89+
90+// Adds a suffix widget to @self.
91+func (x *EntryRow) AddSuffix(WidgetVar *gtk.Widget) {
92+
93+ xEntryRowAddSuffix(x.GoPointer(), WidgetVar.GoPointer())
94+
95+}
96+
97+var xEntryRowGetActivatesDefault func(uintptr) bool
98+
99+// Gets whether activating the embedded entry can activate the default widget.
100+func (x *EntryRow) GetActivatesDefault() bool {
101+
102+ return xEntryRowGetActivatesDefault(x.GoPointer())
103+
104+}
105+
106+var xEntryRowGetAttributes func(uintptr) *pango.AttrList
107+
108+// Gets Pango attributes applied to the text of the embedded entry.
109+func (x *EntryRow) GetAttributes() *pango.AttrList {
110+
111+ return xEntryRowGetAttributes(x.GoPointer())
112+
113+}
114+
115+var xEntryRowGetEnableEmojiCompletion func(uintptr) bool
116+
117+// Gets whether to suggest emoji replacements on @self.
118+func (x *EntryRow) GetEnableEmojiCompletion() bool {
119+
120+ return xEntryRowGetEnableEmojiCompletion(x.GoPointer())
121+
122+}
123+
124+var xEntryRowGetInputHints func(uintptr) gtk.InputHints
125+
126+// Gets the additional input hints of @self.
127+func (x *EntryRow) GetInputHints() gtk.InputHints {
128+
129+ return xEntryRowGetInputHints(x.GoPointer())
130+
131+}
132+
133+var xEntryRowGetInputPurpose func(uintptr) gtk.InputPurpose
134+
135+// Gets the input purpose of @self.
136+func (x *EntryRow) GetInputPurpose() gtk.InputPurpose {
137+
138+ return xEntryRowGetInputPurpose(x.GoPointer())
139+
140+}
141+
142+var xEntryRowGetShowApplyButton func(uintptr) bool
143+
144+// Gets whether @self can show the apply button.
145+func (x *EntryRow) GetShowApplyButton() bool {
146+
147+ return xEntryRowGetShowApplyButton(x.GoPointer())
148+
149+}
150+
151+var xEntryRowGrabFocusWithoutSelecting func(uintptr) bool
152+
153+// Causes @self to have keyboard focus without selecting the text.
154+//
155+// See [method@Gtk.Text.grab_focus_without_selecting] for more information.
156+func (x *EntryRow) GrabFocusWithoutSelecting() bool {
157+
158+ return xEntryRowGrabFocusWithoutSelecting(x.GoPointer())
159+
160+}
161+
162+var xEntryRowRemove func(uintptr, uintptr)
163+
164+// Removes a child from @self.
165+func (x *EntryRow) Remove(WidgetVar *gtk.Widget) {
166+
167+ xEntryRowRemove(x.GoPointer(), WidgetVar.GoPointer())
168+
169+}
170+
171+var xEntryRowSetActivatesDefault func(uintptr, bool)
172+
173+// Sets whether activating the embedded entry can activate the default widget.
174+func (x *EntryRow) SetActivatesDefault(ActivatesVar bool) {
175+
176+ xEntryRowSetActivatesDefault(x.GoPointer(), ActivatesVar)
177+
178+}
179+
180+var xEntryRowSetAttributes func(uintptr, *pango.AttrList)
181+
182+// Sets Pango attributes to apply to the text of the embedded entry.
183+//
184+// The [struct@Pango.Attribute]'s `start_index` and `end_index` must refer to
185+// the [class@Gtk.EntryBuffer] text, i.e. without the preedit string.
186+func (x *EntryRow) SetAttributes(AttributesVar *pango.AttrList) {
187+
188+ xEntryRowSetAttributes(x.GoPointer(), AttributesVar)
189+
190+}
191+
192+var xEntryRowSetEnableEmojiCompletion func(uintptr, bool)
193+
194+// Sets whether to suggest emoji replacements on @self.
195+//
196+// Emoji replacement is done with :-delimited names, like `:heart:`.
197+func (x *EntryRow) SetEnableEmojiCompletion(EnableEmojiCompletionVar bool) {
198+
199+ xEntryRowSetEnableEmojiCompletion(x.GoPointer(), EnableEmojiCompletionVar)
200+
201+}
202+
203+var xEntryRowSetInputHints func(uintptr, gtk.InputHints)
204+
205+// Set additional input hints for @self.
206+//
207+// Input hints allow input methods to fine-tune their behavior.
208+//
209+// See also: [property@AdwEntryRow:input-purpose]
210+func (x *EntryRow) SetInputHints(HintsVar gtk.InputHints) {
211+
212+ xEntryRowSetInputHints(x.GoPointer(), HintsVar)
213+
214+}
215+
216+var xEntryRowSetInputPurpose func(uintptr, gtk.InputPurpose)
217+
218+// Sets the input purpose of @self.
219+//
220+// The input purpose can be used by input methods to adjust their behavior.
221+func (x *EntryRow) SetInputPurpose(PurposeVar gtk.InputPurpose) {
222+
223+ xEntryRowSetInputPurpose(x.GoPointer(), PurposeVar)
224+
225+}
226+
227+var xEntryRowSetShowApplyButton func(uintptr, bool)
228+
229+// Sets whether @self can show the apply button.
230+//
231+// When set to `TRUE`, typing text in the entry will reveal an apply button.
232+// Clicking it or pressing the &lt;kbd&gt;Enter&lt;/kbd&gt; key will hide the button and
233+// emit the [signal@EntryRow::apply] signal.
234+//
235+// This is useful if changing the entry contents can trigger an expensive
236+// operation, e.g. network activity, to avoid triggering it after typing every
237+// character.
238+func (x *EntryRow) SetShowApplyButton(ShowApplyButtonVar bool) {
239+
240+ xEntryRowSetShowApplyButton(x.GoPointer(), ShowApplyButtonVar)
241+
242+}
243+
244+func (c *EntryRow) GoPointer() uintptr {
245+ return c.Ptr
246+}
247+
248+func (c *EntryRow) SetGoPointer(ptr uintptr) {
249+ c.Ptr = ptr
250+}
251+
252+// Emitted when the apply button is pressed.
253+//
254+// See [property@EntryRow:show-apply-button].
255+func (x *EntryRow) ConnectApply(cb func(EntryRow)) {
256+ fcb := func(clsPtr uintptr) {
257+ fa := EntryRow{}
258+ fa.Ptr = clsPtr
259+
260+ cb(fa)
261+
262+ }
263+ gobject.ObjectConnect(x.GoPointer(), "signal::apply", purego.NewCallback(fcb))
264+}
265+
266+// Emitted when the embedded entry is activated.
267+func (x *EntryRow) ConnectEntryActivated(cb func(EntryRow)) {
268+ fcb := func(clsPtr uintptr) {
269+ fa := EntryRow{}
270+ fa.Ptr = clsPtr
271+
272+ cb(fa)
273+
274+ }
275+ gobject.ObjectConnect(x.GoPointer(), "signal::entry-activated", purego.NewCallback(fcb))
276+}
277+
278+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
279+func (x *EntryRow) GetAccessibleRole() gtk.AccessibleRole {
280+
281+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
282+
283+}
284+
285+// Resets the accessible @property to its default value.
286+func (x *EntryRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
287+
288+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
289+
290+}
291+
292+// Resets the accessible @relation to its default value.
293+func (x *EntryRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
294+
295+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
296+
297+}
298+
299+// Resets the accessible @state to its default value.
300+func (x *EntryRow) ResetState(StateVar gtk.AccessibleState) {
301+
302+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
303+
304+}
305+
306+// Updates a list of accessible properties.
307+//
308+// See the [enum@Gtk.AccessibleProperty] documentation for the
309+// value types of accessible properties.
310+//
311+// This function should be called by `GtkWidget` types whenever
312+// an accessible property change must be communicated to assistive
313+// technologies.
314+//
315+// Example:
316+// ```c
317+// value = gtk_adjustment_get_value (adjustment);
318+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
319+//
320+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
321+// -1);
322+//
323+// ```
324+func (x *EntryRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
325+
326+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
327+
328+}
329+
330+// Updates an array of accessible properties.
331+//
332+// This function should be called by `GtkWidget` types whenever an accessible
333+// property change must be communicated to assistive technologies.
334+//
335+// This function is meant to be used by language bindings.
336+func (x *EntryRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
337+
338+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
339+
340+}
341+
342+// Updates a list of accessible relations.
343+//
344+// This function should be called by `GtkWidget` types whenever an accessible
345+// relation change must be communicated to assistive technologies.
346+//
347+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
348+// you should pass each reference individually, followed by %NULL, e.g.
349+//
350+// ```c
351+// gtk_accessible_update_relation (accessible,
352+//
353+// GTK_ACCESSIBLE_RELATION_CONTROLS,
354+// ref1, NULL,
355+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
356+// ref1, ref2, ref3, NULL,
357+// -1);
358+//
359+// ```
360+func (x *EntryRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
361+
362+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
363+
364+}
365+
366+// Updates an array of accessible relations.
367+//
368+// This function should be called by `GtkWidget` types whenever an accessible
369+// relation change must be communicated to assistive technologies.
370+//
371+// This function is meant to be used by language bindings.
372+func (x *EntryRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
373+
374+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
375+
376+}
377+
378+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
379+// documentation for the value types of accessible states.
380+//
381+// This function should be called by `GtkWidget` types whenever an accessible
382+// state change must be communicated to assistive technologies.
383+//
384+// Example:
385+// ```c
386+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
387+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
388+//
389+// GTK_ACCESSIBLE_STATE_CHECKED, value,
390+// -1);
391+//
392+// ```
393+func (x *EntryRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
394+
395+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
396+
397+}
398+
399+// Updates an array of accessible states.
400+//
401+// This function should be called by `GtkWidget` types whenever an accessible
402+// state change must be communicated to assistive technologies.
403+//
404+// This function is meant to be used by language bindings.
405+func (x *EntryRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
406+
407+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
408+
409+}
410+
411+// Gets the action name for @actionable.
412+func (x *EntryRow) GetActionName() string {
413+
414+ return gtk.XGtkActionableGetActionName(x.GoPointer())
415+
416+}
417+
418+// Gets the current target value of @actionable.
419+func (x *EntryRow) GetActionTargetValue() *glib.Variant {
420+
421+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
422+
423+}
424+
425+// Specifies the name of the action with which this widget should be
426+// associated.
427+//
428+// If @action_name is %NULL then the widget will be unassociated from
429+// any previous action.
430+//
431+// Usually this function is used when the widget is located (or will be
432+// located) within the hierarchy of a `GtkApplicationWindow`.
433+//
434+// Names are of the form “win.save” or “app.quit” for actions on the
435+// containing [class@ApplicationWindow] or its associated [class@Application],
436+// respectively. This is the same form used for actions in the [class@Gio.Menu]
437+// associated with the window.
438+func (x *EntryRow) SetActionName(ActionNameVar string) {
439+
440+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
441+
442+}
443+
444+// Sets the target of an actionable widget.
445+//
446+// This is a convenience function that calls [ctor@GLib.Variant.new] for
447+// @format_string and uses the result to call
448+// [method@Gtk.Actionable.set_action_target_value].
449+//
450+// If you are setting a string-valued target and want to set
451+// the action name at the same time, you can use
452+// [method@Gtk.Actionable.set_detailed_action_name].
453+func (x *EntryRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
454+
455+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
456+
457+}
458+
459+// Sets the target value of an actionable widget.
460+//
461+// If @target_value is %NULL then the target value is unset.
462+//
463+// The target value has two purposes. First, it is used as the parameter
464+// to activation of the action associated with the `GtkActionable` widget.
465+// Second, it is used to determine if the widget should be rendered as
466+// “active” — the widget is active if the state is equal to the given target.
467+//
468+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
469+// with string state in a typical “radio button” situation. Each button
470+// will be associated with the same action, but with a different target
471+// value for that action. Clicking on a particular button will activate
472+// the action with the target of that button, which will typically cause
473+// the action’s state to change to that value. Since the action’s state
474+// is now equal to the target value of the button, the button will now
475+// be rendered as active (and the other buttons, with different targets,
476+// rendered inactive).
477+func (x *EntryRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
478+
479+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
480+
481+}
482+
483+// Sets the action-name and associated string target value of an
484+// actionable widget.
485+//
486+// @detailed_action_name is a string in the format accepted by
487+// [func@Gio.Action.parse_detailed_name].
488+func (x *EntryRow) SetDetailedActionName(DetailedActionNameVar string) {
489+
490+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
491+
492+}
493+
494+// Gets the ID of the @buildable object.
495+//
496+// `GtkBuilder` sets the name based on the ID attribute
497+// of the &lt;object&gt; tag used to construct the @buildable.
498+func (x *EntryRow) GetBuildableId() string {
499+
500+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
501+
502+}
503+
504+// Deletes the currently selected text of the editable.
505+//
506+// This call doesn’t do anything if there is no selected text.
507+func (x *EntryRow) DeleteSelection() {
508+
509+ gtk.XGtkEditableDeleteSelection(x.GoPointer())
510+
511+}
512+
513+// Deletes a sequence of characters.
514+//
515+// The characters that are deleted are those characters at positions
516+// from @start_pos up to, but not including @end_pos. If @end_pos is
517+// negative, then the characters deleted are those from @start_pos to
518+// the end of the text.
519+//
520+// Note that the positions are specified in characters, not bytes.
521+func (x *EntryRow) DeleteText(StartPosVar int32, EndPosVar int32) {
522+
523+ gtk.XGtkEditableDeleteText(x.GoPointer(), StartPosVar, EndPosVar)
524+
525+}
526+
527+// Undoes the setup done by [method@Gtk.Editable.init_delegate].
528+//
529+// This is a helper function that should be called from dispose,
530+// before removing the delegate object.
531+func (x *EntryRow) FinishDelegate() {
532+
533+ gtk.XGtkEditableFinishDelegate(x.GoPointer())
534+
535+}
536+
537+// Gets the alignment of the editable.
538+func (x *EntryRow) GetAlignment() float32 {
539+
540+ return gtk.XGtkEditableGetAlignment(x.GoPointer())
541+
542+}
543+
544+// Retrieves a sequence of characters.
545+//
546+// The characters that are retrieved are those characters at positions
547+// from @start_pos up to, but not including @end_pos. If @end_pos is negative,
548+// then the characters retrieved are those characters from @start_pos to
549+// the end of the text.
550+//
551+// Note that positions are specified in characters, not bytes.
552+func (x *EntryRow) GetChars(StartPosVar int32, EndPosVar int32) string {
553+
554+ return gtk.XGtkEditableGetChars(x.GoPointer(), StartPosVar, EndPosVar)
555+
556+}
557+
558+// Gets the `GtkEditable` that @editable is delegating its
559+// implementation to.
560+//
561+// Typically, the delegate is a [class@Gtk.Text] widget.
562+func (x *EntryRow) GetDelegate() *gtk.EditableBase {
563+
564+ GetDelegatePtr := gtk.XGtkEditableGetDelegate(x.GoPointer())
565+ if GetDelegatePtr == 0 {
566+ return nil
567+ }
568+
569+ gobject.IncreaseRef(GetDelegatePtr)
570+
571+ GetDelegateCls := &gtk.EditableBase{}
572+ GetDelegateCls.Ptr = GetDelegatePtr
573+ return GetDelegateCls
574+
575+}
576+
577+// Retrieves whether @editable is editable.
578+func (x *EntryRow) GetEditable() bool {
579+
580+ return gtk.XGtkEditableGetEditable(x.GoPointer())
581+
582+}
583+
584+// Gets if undo/redo actions are enabled for @editable
585+func (x *EntryRow) GetEnableUndo() bool {
586+
587+ return gtk.XGtkEditableGetEnableUndo(x.GoPointer())
588+
589+}
590+
591+// Retrieves the desired maximum width of @editable, in characters.
592+func (x *EntryRow) GetMaxWidthChars() int32 {
593+
594+ return gtk.XGtkEditableGetMaxWidthChars(x.GoPointer())
595+
596+}
597+
598+// Retrieves the current position of the cursor relative
599+// to the start of the content of the editable.
600+//
601+// Note that this position is in characters, not in bytes.
602+func (x *EntryRow) GetPosition() int32 {
603+
604+ return gtk.XGtkEditableGetPosition(x.GoPointer())
605+
606+}
607+
608+// Retrieves the selection bound of the editable.
609+//
610+// @start_pos will be filled with the start of the selection and
611+// @end_pos with end. If no text was selected both will be identical
612+// and %FALSE will be returned.
613+//
614+// Note that positions are specified in characters, not bytes.
615+func (x *EntryRow) GetSelectionBounds(StartPosVar int32, EndPosVar int32) bool {
616+
617+ return gtk.XGtkEditableGetSelectionBounds(x.GoPointer(), StartPosVar, EndPosVar)
618+
619+}
620+
621+// Retrieves the contents of @editable.
622+//
623+// The returned string is owned by GTK and must not be modified or freed.
624+func (x *EntryRow) GetText() string {
625+
626+ return gtk.XGtkEditableGetText(x.GoPointer())
627+
628+}
629+
630+// Gets the number of characters of space reserved
631+// for the contents of the editable.
632+func (x *EntryRow) GetWidthChars() int32 {
633+
634+ return gtk.XGtkEditableGetWidthChars(x.GoPointer())
635+
636+}
637+
638+// Sets up a delegate for `GtkEditable`.
639+//
640+// This is assuming that the get_delegate vfunc in the `GtkEditable`
641+// interface has been set up for the @editable's type.
642+//
643+// This is a helper function that should be called in instance init,
644+// after creating the delegate object.
645+func (x *EntryRow) InitDelegate() {
646+
647+ gtk.XGtkEditableInitDelegate(x.GoPointer())
648+
649+}
650+
651+// Inserts @length bytes of @text into the contents of the
652+// widget, at position @position.
653+//
654+// Note that the position is in characters, not in bytes.
655+// The function updates @position to point after the newly
656+// inserted text.
657+func (x *EntryRow) InsertText(TextVar string, LengthVar int32, PositionVar int32) {
658+
659+ gtk.XGtkEditableInsertText(x.GoPointer(), TextVar, LengthVar, PositionVar)
660+
661+}
662+
663+// Selects a region of text.
664+//
665+// The characters that are selected are those characters at positions
666+// from @start_pos up to, but not including @end_pos. If @end_pos is
667+// negative, then the characters selected are those characters from
668+// @start_pos to the end of the text.
669+//
670+// Note that positions are specified in characters, not bytes.
671+func (x *EntryRow) SelectRegion(StartPosVar int32, EndPosVar int32) {
672+
673+ gtk.XGtkEditableSelectRegion(x.GoPointer(), StartPosVar, EndPosVar)
674+
675+}
676+
677+// Sets the alignment for the contents of the editable.
678+//
679+// This controls the horizontal positioning of the contents when
680+// the displayed text is shorter than the width of the editable.
681+func (x *EntryRow) SetAlignment(XalignVar float32) {
682+
683+ gtk.XGtkEditableSetAlignment(x.GoPointer(), XalignVar)
684+
685+}
686+
687+// Determines if the user can edit the text in the editable widget.
688+func (x *EntryRow) SetEditable(IsEditableVar bool) {
689+
690+ gtk.XGtkEditableSetEditable(x.GoPointer(), IsEditableVar)
691+
692+}
693+
694+// If enabled, changes to @editable will be saved for undo/redo
695+// actions.
696+//
697+// This results in an additional copy of text changes and are not
698+// stored in secure memory. As such, undo is forcefully disabled
699+// when [property@Gtk.Text:visibility] is set to %FALSE.
700+func (x *EntryRow) SetEnableUndo(EnableUndoVar bool) {
701+
702+ gtk.XGtkEditableSetEnableUndo(x.GoPointer(), EnableUndoVar)
703+
704+}
705+
706+// Sets the desired maximum width in characters of @editable.
707+func (x *EntryRow) SetMaxWidthChars(NCharsVar int32) {
708+
709+ gtk.XGtkEditableSetMaxWidthChars(x.GoPointer(), NCharsVar)
710+
711+}
712+
713+// Sets the cursor position in the editable to the given value.
714+//
715+// The cursor is displayed before the character with the given (base 0)
716+// index in the contents of the editable. The value must be less than
717+// or equal to the number of characters in the editable. A value of -1
718+// indicates that the position should be set after the last character
719+// of the editable. Note that @position is in characters, not in bytes.
720+func (x *EntryRow) SetPosition(PositionVar int32) {
721+
722+ gtk.XGtkEditableSetPosition(x.GoPointer(), PositionVar)
723+
724+}
725+
726+// Sets the text in the editable to the given value.
727+//
728+// This is replacing the current contents.
729+func (x *EntryRow) SetText(TextVar string) {
730+
731+ gtk.XGtkEditableSetText(x.GoPointer(), TextVar)
732+
733+}
734+
735+// Changes the size request of the editable to be about the
736+// right size for @n_chars characters.
737+//
738+// Note that it changes the size request, the size can still
739+// be affected by how you pack the widget into containers.
740+// If @n_chars is -1, the size reverts to the default size.
741+func (x *EntryRow) SetWidthChars(NCharsVar int32) {
742+
743+ gtk.XGtkEditableSetWidthChars(x.GoPointer(), NCharsVar)
744+
745+}
746+
747+func init() {
748+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
749+ if err != nil {
750+ panic(err)
751+ }
752+
753+ core.PuregoSafeRegister(&xNewEntryRow, lib, "adw_entry_row_new")
754+
755+ core.PuregoSafeRegister(&xEntryRowAddPrefix, lib, "adw_entry_row_add_prefix")
756+ core.PuregoSafeRegister(&xEntryRowAddSuffix, lib, "adw_entry_row_add_suffix")
757+ core.PuregoSafeRegister(&xEntryRowGetActivatesDefault, lib, "adw_entry_row_get_activates_default")
758+ core.PuregoSafeRegister(&xEntryRowGetAttributes, lib, "adw_entry_row_get_attributes")
759+ core.PuregoSafeRegister(&xEntryRowGetEnableEmojiCompletion, lib, "adw_entry_row_get_enable_emoji_completion")
760+ core.PuregoSafeRegister(&xEntryRowGetInputHints, lib, "adw_entry_row_get_input_hints")
761+ core.PuregoSafeRegister(&xEntryRowGetInputPurpose, lib, "adw_entry_row_get_input_purpose")
762+ core.PuregoSafeRegister(&xEntryRowGetShowApplyButton, lib, "adw_entry_row_get_show_apply_button")
763+ core.PuregoSafeRegister(&xEntryRowGrabFocusWithoutSelecting, lib, "adw_entry_row_grab_focus_without_selecting")
764+ core.PuregoSafeRegister(&xEntryRowRemove, lib, "adw_entry_row_remove")
765+ core.PuregoSafeRegister(&xEntryRowSetActivatesDefault, lib, "adw_entry_row_set_activates_default")
766+ core.PuregoSafeRegister(&xEntryRowSetAttributes, lib, "adw_entry_row_set_attributes")
767+ core.PuregoSafeRegister(&xEntryRowSetEnableEmojiCompletion, lib, "adw_entry_row_set_enable_emoji_completion")
768+ core.PuregoSafeRegister(&xEntryRowSetInputHints, lib, "adw_entry_row_set_input_hints")
769+ core.PuregoSafeRegister(&xEntryRowSetInputPurpose, lib, "adw_entry_row_set_input_purpose")
770+ core.PuregoSafeRegister(&xEntryRowSetShowApplyButton, lib, "adw_entry_row_set_show_apply_button")
771+
772+}
A v4/adw/adw-enum-list-model.go +224 -0
@@ -0,0 +1,224 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gio"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+)
10+
11+type EnumListItemClass struct {
12+ ParentClass uintptr
13+}
14+
15+type EnumListModelClass struct {
16+ ParentClass uintptr
17+}
18+
19+// `AdwEnumListItem` is the type of items in a [class@EnumListModel].
20+type EnumListItem struct {
21+ gobject.Object
22+}
23+
24+func EnumListItemNewFromInternalPtr(ptr uintptr) *EnumListItem {
25+ cls := &EnumListItem{}
26+ cls.Ptr = ptr
27+ return cls
28+}
29+
30+var xEnumListItemGetName func(uintptr) string
31+
32+// Gets the enum value name.
33+func (x *EnumListItem) GetName() string {
34+
35+ return xEnumListItemGetName(x.GoPointer())
36+
37+}
38+
39+var xEnumListItemGetNick func(uintptr) string
40+
41+// Gets the enum value nick.
42+func (x *EnumListItem) GetNick() string {
43+
44+ return xEnumListItemGetNick(x.GoPointer())
45+
46+}
47+
48+var xEnumListItemGetValue func(uintptr) int32
49+
50+// Gets the enum value.
51+func (x *EnumListItem) GetValue() int32 {
52+
53+ return xEnumListItemGetValue(x.GoPointer())
54+
55+}
56+
57+func (c *EnumListItem) GoPointer() uintptr {
58+ return c.Ptr
59+}
60+
61+func (c *EnumListItem) SetGoPointer(ptr uintptr) {
62+ c.Ptr = ptr
63+}
64+
65+// A [iface@Gio.ListModel] representing values of a given enum.
66+//
67+// `AdwEnumListModel` contains objects of type [class@EnumListItem].
68+type EnumListModel struct {
69+ gobject.Object
70+}
71+
72+func EnumListModelNewFromInternalPtr(ptr uintptr) *EnumListModel {
73+ cls := &EnumListModel{}
74+ cls.Ptr = ptr
75+ return cls
76+}
77+
78+var xNewEnumListModel func([]interface{}) uintptr
79+
80+// Creates a new `AdwEnumListModel` for @enum_type.
81+func NewEnumListModel(EnumTypeVar []interface{}) *EnumListModel {
82+ NewEnumListModelPtr := xNewEnumListModel(EnumTypeVar)
83+ if NewEnumListModelPtr == 0 {
84+ return nil
85+ }
86+
87+ NewEnumListModelCls := &EnumListModel{}
88+ NewEnumListModelCls.Ptr = NewEnumListModelPtr
89+ return NewEnumListModelCls
90+}
91+
92+var xEnumListModelFindPosition func(uintptr, int32) uint
93+
94+// Finds the position of a given enum value in @self.
95+func (x *EnumListModel) FindPosition(ValueVar int32) uint {
96+
97+ return xEnumListModelFindPosition(x.GoPointer(), ValueVar)
98+
99+}
100+
101+var xEnumListModelGetEnumType func(uintptr) []interface{}
102+
103+// Gets the type of the enum represented by @self.
104+func (x *EnumListModel) GetEnumType() []interface{} {
105+
106+ return xEnumListModelGetEnumType(x.GoPointer())
107+
108+}
109+
110+func (c *EnumListModel) GoPointer() uintptr {
111+ return c.Ptr
112+}
113+
114+func (c *EnumListModel) SetGoPointer(ptr uintptr) {
115+ c.Ptr = ptr
116+}
117+
118+// Get the item at @position.
119+//
120+// If @position is greater than the number of items in @list, %NULL is
121+// returned.
122+//
123+// %NULL is never returned for an index that is smaller than the length
124+// of the list.
125+//
126+// See also: g_list_model_get_n_items()
127+func (x *EnumListModel) GetItem(PositionVar uint) uintptr {
128+
129+ return gio.XGListModelGetItem(x.GoPointer(), PositionVar)
130+
131+}
132+
133+// Gets the type of the items in @list.
134+//
135+// All items returned from g_list_model_get_item() are of the type
136+// returned by this function, or a subtype, or if the type is an
137+// interface, they are an implementation of that interface.
138+//
139+// The item type of a #GListModel can not change during the life of the
140+// model.
141+func (x *EnumListModel) GetItemType() []interface{} {
142+
143+ return gio.XGListModelGetItemType(x.GoPointer())
144+
145+}
146+
147+// Gets the number of items in @list.
148+//
149+// Depending on the model implementation, calling this function may be
150+// less efficient than iterating the list with increasing values for
151+// @position until g_list_model_get_item() returns %NULL.
152+func (x *EnumListModel) GetNItems() uint {
153+
154+ return gio.XGListModelGetNItems(x.GoPointer())
155+
156+}
157+
158+// Get the item at @position.
159+//
160+// If @position is greater than the number of items in @list, %NULL is
161+// returned.
162+//
163+// %NULL is never returned for an index that is smaller than the length
164+// of the list.
165+//
166+// This function is meant to be used by language bindings in place
167+// of g_list_model_get_item().
168+//
169+// See also: g_list_model_get_n_items()
170+func (x *EnumListModel) GetObject(PositionVar uint) *gobject.Object {
171+
172+ GetObjectPtr := gio.XGListModelGetObject(x.GoPointer(), PositionVar)
173+ if GetObjectPtr == 0 {
174+ return nil
175+ }
176+
177+ GetObjectCls := &gobject.Object{}
178+ GetObjectCls.Ptr = GetObjectPtr
179+ return GetObjectCls
180+
181+}
182+
183+// Emits the #GListModel::items-changed signal on @list.
184+//
185+// This function should only be called by classes implementing
186+// #GListModel. It has to be called after the internal representation
187+// of @list has been updated, because handlers connected to this signal
188+// might query the new state of the list.
189+//
190+// Implementations must only make changes to the model (as visible to
191+// its consumer) in places that will not cause problems for that
192+// consumer. For models that are driven directly by a write API (such
193+// as #GListStore), changes can be reported in response to uses of that
194+// API. For models that represent remote data, changes should only be
195+// made from a fresh mainloop dispatch. It is particularly not
196+// permitted to make changes in response to a call to the #GListModel
197+// consumer API.
198+//
199+// Stated another way: in general, it is assumed that code making a
200+// series of accesses to the model via the API, without returning to the
201+// mainloop, and without calling other code, will continue to view the
202+// same contents of the model.
203+func (x *EnumListModel) ItemsChanged(PositionVar uint, RemovedVar uint, AddedVar uint) {
204+
205+ gio.XGListModelItemsChanged(x.GoPointer(), PositionVar, RemovedVar, AddedVar)
206+
207+}
208+
209+func init() {
210+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
211+ if err != nil {
212+ panic(err)
213+ }
214+
215+ core.PuregoSafeRegister(&xEnumListItemGetName, lib, "adw_enum_list_item_get_name")
216+ core.PuregoSafeRegister(&xEnumListItemGetNick, lib, "adw_enum_list_item_get_nick")
217+ core.PuregoSafeRegister(&xEnumListItemGetValue, lib, "adw_enum_list_item_get_value")
218+
219+ core.PuregoSafeRegister(&xNewEnumListModel, lib, "adw_enum_list_model_new")
220+
221+ core.PuregoSafeRegister(&xEnumListModelFindPosition, lib, "adw_enum_list_model_find_position")
222+ core.PuregoSafeRegister(&xEnumListModelGetEnumType, lib, "adw_enum_list_model_get_enum_type")
223+
224+}
A v4/adw/adw-expander-row.go +509 -0
@@ -0,0 +1,509 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type ExpanderRowClass struct {
13+ ParentClass uintptr
14+
15+ Padding uintptr
16+}
17+
18+// A [class@Gtk.ListBoxRow] used to reveal widgets.
19+//
20+// &lt;picture&gt;
21+//
22+// &lt;source srcset="expander-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
23+// &lt;img src="expander-row.png" alt="expander-row"&gt;
24+//
25+// &lt;/picture&gt;
26+//
27+// The `AdwExpanderRow` widget allows the user to reveal or hide widgets below
28+// it. It also allows the user to enable the expansion of the row, allowing to
29+// disable all that the row contains.
30+//
31+// ## AdwExpanderRow as GtkBuildable
32+//
33+// The `AdwExpanderRow` implementation of the [iface@Gtk.Buildable] interface
34+// supports adding a child as an action widget by specifying “action” as the
35+// “type” attribute of a &lt;child&gt; element.
36+//
37+// It also supports adding it as a prefix widget by specifying “prefix” as the
38+// “type” attribute of a &lt;child&gt; element.
39+//
40+// ## CSS nodes
41+//
42+// `AdwExpanderRow` has a main CSS node with name `row` and the `.expander`
43+// style class. It has the `.empty` style class when it contains no children.
44+//
45+// It contains the subnodes `row.header` for its main embedded row,
46+// `list.nested` for the list it can expand, and `image.expander-row-arrow` for
47+// its arrow.
48+type ExpanderRow struct {
49+ PreferencesRow
50+}
51+
52+func ExpanderRowNewFromInternalPtr(ptr uintptr) *ExpanderRow {
53+ cls := &ExpanderRow{}
54+ cls.Ptr = ptr
55+ return cls
56+}
57+
58+var xNewExpanderRow func() uintptr
59+
60+// Creates a new `AdwExpanderRow`.
61+func NewExpanderRow() *gtk.Widget {
62+ NewExpanderRowPtr := xNewExpanderRow()
63+ if NewExpanderRowPtr == 0 {
64+ return nil
65+ }
66+
67+ gobject.IncreaseRef(NewExpanderRowPtr)
68+
69+ NewExpanderRowCls := &gtk.Widget{}
70+ NewExpanderRowCls.Ptr = NewExpanderRowPtr
71+ return NewExpanderRowCls
72+}
73+
74+var xExpanderRowAddAction func(uintptr, uintptr)
75+
76+// Adds an action widget to @self.
77+func (x *ExpanderRow) AddAction(WidgetVar *gtk.Widget) {
78+
79+ xExpanderRowAddAction(x.GoPointer(), WidgetVar.GoPointer())
80+
81+}
82+
83+var xExpanderRowAddPrefix func(uintptr, uintptr)
84+
85+// Adds a prefix widget to @self.
86+func (x *ExpanderRow) AddPrefix(WidgetVar *gtk.Widget) {
87+
88+ xExpanderRowAddPrefix(x.GoPointer(), WidgetVar.GoPointer())
89+
90+}
91+
92+var xExpanderRowAddRow func(uintptr, uintptr)
93+
94+// Adds a widget to @self.
95+//
96+// The widget will appear in the expanding list below @self.
97+func (x *ExpanderRow) AddRow(ChildVar *gtk.Widget) {
98+
99+ xExpanderRowAddRow(x.GoPointer(), ChildVar.GoPointer())
100+
101+}
102+
103+var xExpanderRowGetEnableExpansion func(uintptr) bool
104+
105+// Gets whether the expansion of @self is enabled.
106+func (x *ExpanderRow) GetEnableExpansion() bool {
107+
108+ return xExpanderRowGetEnableExpansion(x.GoPointer())
109+
110+}
111+
112+var xExpanderRowGetExpanded func(uintptr) bool
113+
114+// Gets whether @self is expanded.
115+func (x *ExpanderRow) GetExpanded() bool {
116+
117+ return xExpanderRowGetExpanded(x.GoPointer())
118+
119+}
120+
121+var xExpanderRowGetIconName func(uintptr) string
122+
123+// Gets the icon name for @self.
124+func (x *ExpanderRow) GetIconName() string {
125+
126+ return xExpanderRowGetIconName(x.GoPointer())
127+
128+}
129+
130+var xExpanderRowGetShowEnableSwitch func(uintptr) bool
131+
132+// Gets whether the switch enabling the expansion of @self is visible.
133+func (x *ExpanderRow) GetShowEnableSwitch() bool {
134+
135+ return xExpanderRowGetShowEnableSwitch(x.GoPointer())
136+
137+}
138+
139+var xExpanderRowGetSubtitle func(uintptr) string
140+
141+// Gets the subtitle for @self.
142+func (x *ExpanderRow) GetSubtitle() string {
143+
144+ return xExpanderRowGetSubtitle(x.GoPointer())
145+
146+}
147+
148+var xExpanderRowGetSubtitleLines func(uintptr) bool
149+
150+// Gets the number of lines at the end of which the subtitle label will be
151+// ellipsized.
152+func (x *ExpanderRow) GetSubtitleLines() bool {
153+
154+ return xExpanderRowGetSubtitleLines(x.GoPointer())
155+
156+}
157+
158+var xExpanderRowGetTitleLines func(uintptr) bool
159+
160+// Gets the number of lines at the end of which the title label will be
161+// ellipsized.
162+func (x *ExpanderRow) GetTitleLines() bool {
163+
164+ return xExpanderRowGetTitleLines(x.GoPointer())
165+
166+}
167+
168+var xExpanderRowRemove func(uintptr, uintptr)
169+
170+func (x *ExpanderRow) Remove(ChildVar *gtk.Widget) {
171+
172+ xExpanderRowRemove(x.GoPointer(), ChildVar.GoPointer())
173+
174+}
175+
176+var xExpanderRowSetEnableExpansion func(uintptr, bool)
177+
178+// Sets whether the expansion of @self is enabled.
179+func (x *ExpanderRow) SetEnableExpansion(EnableExpansionVar bool) {
180+
181+ xExpanderRowSetEnableExpansion(x.GoPointer(), EnableExpansionVar)
182+
183+}
184+
185+var xExpanderRowSetExpanded func(uintptr, bool)
186+
187+// Sets whether @self is expanded.
188+func (x *ExpanderRow) SetExpanded(ExpandedVar bool) {
189+
190+ xExpanderRowSetExpanded(x.GoPointer(), ExpandedVar)
191+
192+}
193+
194+var xExpanderRowSetIconName func(uintptr, string)
195+
196+// Sets the icon name for @self.
197+func (x *ExpanderRow) SetIconName(IconNameVar string) {
198+
199+ xExpanderRowSetIconName(x.GoPointer(), IconNameVar)
200+
201+}
202+
203+var xExpanderRowSetShowEnableSwitch func(uintptr, bool)
204+
205+// Sets whether the switch enabling the expansion of @self is visible.
206+func (x *ExpanderRow) SetShowEnableSwitch(ShowEnableSwitchVar bool) {
207+
208+ xExpanderRowSetShowEnableSwitch(x.GoPointer(), ShowEnableSwitchVar)
209+
210+}
211+
212+var xExpanderRowSetSubtitle func(uintptr, string)
213+
214+// Sets the subtitle for @self.
215+//
216+// The subtitle is interpreted as Pango markup unless
217+// [property@PreferencesRow:use-markup] is set to `FALSE`.
218+func (x *ExpanderRow) SetSubtitle(SubtitleVar string) {
219+
220+ xExpanderRowSetSubtitle(x.GoPointer(), SubtitleVar)
221+
222+}
223+
224+var xExpanderRowSetSubtitleLines func(uintptr, int32)
225+
226+// Sets the number of lines at the end of which the subtitle label will be
227+// ellipsized.
228+//
229+// If the value is 0, the number of lines won't be limited.
230+func (x *ExpanderRow) SetSubtitleLines(SubtitleLinesVar int32) {
231+
232+ xExpanderRowSetSubtitleLines(x.GoPointer(), SubtitleLinesVar)
233+
234+}
235+
236+var xExpanderRowSetTitleLines func(uintptr, int32)
237+
238+// Sets the number of lines at the end of which the title label will be
239+// ellipsized.
240+//
241+// If the value is 0, the number of lines won't be limited.
242+func (x *ExpanderRow) SetTitleLines(TitleLinesVar int32) {
243+
244+ xExpanderRowSetTitleLines(x.GoPointer(), TitleLinesVar)
245+
246+}
247+
248+func (c *ExpanderRow) GoPointer() uintptr {
249+ return c.Ptr
250+}
251+
252+func (c *ExpanderRow) SetGoPointer(ptr uintptr) {
253+ c.Ptr = ptr
254+}
255+
256+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
257+func (x *ExpanderRow) GetAccessibleRole() gtk.AccessibleRole {
258+
259+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
260+
261+}
262+
263+// Resets the accessible @property to its default value.
264+func (x *ExpanderRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
265+
266+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
267+
268+}
269+
270+// Resets the accessible @relation to its default value.
271+func (x *ExpanderRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
272+
273+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
274+
275+}
276+
277+// Resets the accessible @state to its default value.
278+func (x *ExpanderRow) ResetState(StateVar gtk.AccessibleState) {
279+
280+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
281+
282+}
283+
284+// Updates a list of accessible properties.
285+//
286+// See the [enum@Gtk.AccessibleProperty] documentation for the
287+// value types of accessible properties.
288+//
289+// This function should be called by `GtkWidget` types whenever
290+// an accessible property change must be communicated to assistive
291+// technologies.
292+//
293+// Example:
294+// ```c
295+// value = gtk_adjustment_get_value (adjustment);
296+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
297+//
298+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
299+// -1);
300+//
301+// ```
302+func (x *ExpanderRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
303+
304+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
305+
306+}
307+
308+// Updates an array of accessible properties.
309+//
310+// This function should be called by `GtkWidget` types whenever an accessible
311+// property change must be communicated to assistive technologies.
312+//
313+// This function is meant to be used by language bindings.
314+func (x *ExpanderRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
315+
316+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
317+
318+}
319+
320+// Updates a list of accessible relations.
321+//
322+// This function should be called by `GtkWidget` types whenever an accessible
323+// relation change must be communicated to assistive technologies.
324+//
325+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
326+// you should pass each reference individually, followed by %NULL, e.g.
327+//
328+// ```c
329+// gtk_accessible_update_relation (accessible,
330+//
331+// GTK_ACCESSIBLE_RELATION_CONTROLS,
332+// ref1, NULL,
333+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
334+// ref1, ref2, ref3, NULL,
335+// -1);
336+//
337+// ```
338+func (x *ExpanderRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
339+
340+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
341+
342+}
343+
344+// Updates an array of accessible relations.
345+//
346+// This function should be called by `GtkWidget` types whenever an accessible
347+// relation change must be communicated to assistive technologies.
348+//
349+// This function is meant to be used by language bindings.
350+func (x *ExpanderRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
351+
352+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
353+
354+}
355+
356+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
357+// documentation for the value types of accessible states.
358+//
359+// This function should be called by `GtkWidget` types whenever an accessible
360+// state change must be communicated to assistive technologies.
361+//
362+// Example:
363+// ```c
364+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
365+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
366+//
367+// GTK_ACCESSIBLE_STATE_CHECKED, value,
368+// -1);
369+//
370+// ```
371+func (x *ExpanderRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
372+
373+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
374+
375+}
376+
377+// Updates an array of accessible states.
378+//
379+// This function should be called by `GtkWidget` types whenever an accessible
380+// state change must be communicated to assistive technologies.
381+//
382+// This function is meant to be used by language bindings.
383+func (x *ExpanderRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
384+
385+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
386+
387+}
388+
389+// Gets the action name for @actionable.
390+func (x *ExpanderRow) GetActionName() string {
391+
392+ return gtk.XGtkActionableGetActionName(x.GoPointer())
393+
394+}
395+
396+// Gets the current target value of @actionable.
397+func (x *ExpanderRow) GetActionTargetValue() *glib.Variant {
398+
399+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
400+
401+}
402+
403+// Specifies the name of the action with which this widget should be
404+// associated.
405+//
406+// If @action_name is %NULL then the widget will be unassociated from
407+// any previous action.
408+//
409+// Usually this function is used when the widget is located (or will be
410+// located) within the hierarchy of a `GtkApplicationWindow`.
411+//
412+// Names are of the form “win.save” or “app.quit” for actions on the
413+// containing [class@ApplicationWindow] or its associated [class@Application],
414+// respectively. This is the same form used for actions in the [class@Gio.Menu]
415+// associated with the window.
416+func (x *ExpanderRow) SetActionName(ActionNameVar string) {
417+
418+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
419+
420+}
421+
422+// Sets the target of an actionable widget.
423+//
424+// This is a convenience function that calls [ctor@GLib.Variant.new] for
425+// @format_string and uses the result to call
426+// [method@Gtk.Actionable.set_action_target_value].
427+//
428+// If you are setting a string-valued target and want to set
429+// the action name at the same time, you can use
430+// [method@Gtk.Actionable.set_detailed_action_name].
431+func (x *ExpanderRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
432+
433+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
434+
435+}
436+
437+// Sets the target value of an actionable widget.
438+//
439+// If @target_value is %NULL then the target value is unset.
440+//
441+// The target value has two purposes. First, it is used as the parameter
442+// to activation of the action associated with the `GtkActionable` widget.
443+// Second, it is used to determine if the widget should be rendered as
444+// “active” — the widget is active if the state is equal to the given target.
445+//
446+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
447+// with string state in a typical “radio button” situation. Each button
448+// will be associated with the same action, but with a different target
449+// value for that action. Clicking on a particular button will activate
450+// the action with the target of that button, which will typically cause
451+// the action’s state to change to that value. Since the action’s state
452+// is now equal to the target value of the button, the button will now
453+// be rendered as active (and the other buttons, with different targets,
454+// rendered inactive).
455+func (x *ExpanderRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
456+
457+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
458+
459+}
460+
461+// Sets the action-name and associated string target value of an
462+// actionable widget.
463+//
464+// @detailed_action_name is a string in the format accepted by
465+// [func@Gio.Action.parse_detailed_name].
466+func (x *ExpanderRow) SetDetailedActionName(DetailedActionNameVar string) {
467+
468+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
469+
470+}
471+
472+// Gets the ID of the @buildable object.
473+//
474+// `GtkBuilder` sets the name based on the ID attribute
475+// of the &lt;object&gt; tag used to construct the @buildable.
476+func (x *ExpanderRow) GetBuildableId() string {
477+
478+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
479+
480+}
481+
482+func init() {
483+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
484+ if err != nil {
485+ panic(err)
486+ }
487+
488+ core.PuregoSafeRegister(&xNewExpanderRow, lib, "adw_expander_row_new")
489+
490+ core.PuregoSafeRegister(&xExpanderRowAddAction, lib, "adw_expander_row_add_action")
491+ core.PuregoSafeRegister(&xExpanderRowAddPrefix, lib, "adw_expander_row_add_prefix")
492+ core.PuregoSafeRegister(&xExpanderRowAddRow, lib, "adw_expander_row_add_row")
493+ core.PuregoSafeRegister(&xExpanderRowGetEnableExpansion, lib, "adw_expander_row_get_enable_expansion")
494+ core.PuregoSafeRegister(&xExpanderRowGetExpanded, lib, "adw_expander_row_get_expanded")
495+ core.PuregoSafeRegister(&xExpanderRowGetIconName, lib, "adw_expander_row_get_icon_name")
496+ core.PuregoSafeRegister(&xExpanderRowGetShowEnableSwitch, lib, "adw_expander_row_get_show_enable_switch")
497+ core.PuregoSafeRegister(&xExpanderRowGetSubtitle, lib, "adw_expander_row_get_subtitle")
498+ core.PuregoSafeRegister(&xExpanderRowGetSubtitleLines, lib, "adw_expander_row_get_subtitle_lines")
499+ core.PuregoSafeRegister(&xExpanderRowGetTitleLines, lib, "adw_expander_row_get_title_lines")
500+ core.PuregoSafeRegister(&xExpanderRowRemove, lib, "adw_expander_row_remove")
501+ core.PuregoSafeRegister(&xExpanderRowSetEnableExpansion, lib, "adw_expander_row_set_enable_expansion")
502+ core.PuregoSafeRegister(&xExpanderRowSetExpanded, lib, "adw_expander_row_set_expanded")
503+ core.PuregoSafeRegister(&xExpanderRowSetIconName, lib, "adw_expander_row_set_icon_name")
504+ core.PuregoSafeRegister(&xExpanderRowSetShowEnableSwitch, lib, "adw_expander_row_set_show_enable_switch")
505+ core.PuregoSafeRegister(&xExpanderRowSetSubtitle, lib, "adw_expander_row_set_subtitle")
506+ core.PuregoSafeRegister(&xExpanderRowSetSubtitleLines, lib, "adw_expander_row_set_subtitle_lines")
507+ core.PuregoSafeRegister(&xExpanderRowSetTitleLines, lib, "adw_expander_row_set_title_lines")
508+
509+}
A v4/adw/adw-flap.go +739 -0
@@ -0,0 +1,739 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type FlapClass struct {
13+ ParentClass uintptr
14+}
15+
16+// Describes the possible folding behavior of a [class@Flap] widget.
17+type FlapFoldPolicy int
18+
19+const (
20+
21+ // Disable folding, the flap cannot reach narrow
22+ // sizes.
23+ FlapFoldPolicyNeverValue FlapFoldPolicy = 0
24+ // Keep the flap always folded.
25+ FlapFoldPolicyAlwaysValue FlapFoldPolicy = 1
26+ // Fold and unfold the flap based on available
27+ // space.
28+ FlapFoldPolicyAutoValue FlapFoldPolicy = 2
29+)
30+
31+// Describes transitions types of a [class@Flap] widget.
32+//
33+// It determines the type of animation when transitioning between children in a
34+// [class@Flap] widget, as well as which areas can be swiped via
35+// [property@Flap:swipe-to-open] and [property@Flap:swipe-to-close].
36+//
37+// New values may be added to this enum over time.
38+type FlapTransitionType int
39+
40+const (
41+
42+ // The flap slides over the content, which is
43+ // dimmed. When folded, only the flap can be swiped.
44+ FlapTransitionTypeOverValue FlapTransitionType = 0
45+ // The content slides over the flap. Only the
46+ // content can be swiped.
47+ FlapTransitionTypeUnderValue FlapTransitionType = 1
48+ // The flap slides offscreen when hidden,
49+ // neither the flap nor content overlap each other. Both widgets can be
50+ // swiped.
51+ FlapTransitionTypeSlideValue FlapTransitionType = 2
52+)
53+
54+// An adaptive container acting like a box or an overlay.
55+//
56+// &lt;picture&gt;
57+//
58+// &lt;source srcset="flap-wide-dark.png" media="(prefers-color-scheme: dark)"&gt;
59+// &lt;img src="flap-wide.png" alt="flap-wide"&gt;
60+//
61+// &lt;/picture&gt;
62+// &lt;picture&gt;
63+//
64+// &lt;source srcset="flap-narrow-dark.png" media="(prefers-color-scheme: dark)"&gt;
65+// &lt;img src="flap-narrow.png" alt="flap-narrow"&gt;
66+//
67+// &lt;/picture&gt;
68+//
69+// The `AdwFlap` widget can display its children like a [class@Gtk.Box] does or
70+// like a [class@Gtk.Overlay] does, according to the
71+// [property@Flap:fold-policy] value.
72+//
73+// `AdwFlap` has at most three children: [property@Flap:content],
74+// [property@Flap:flap] and [property@Flap:separator]. Content is the primary
75+// child, flap is displayed next to it when unfolded, or overlays it when
76+// folded. Flap can be shown or hidden by changing the
77+// [property@Flap:reveal-flap] value, as well as via swipe gestures if
78+// [property@Flap:swipe-to-open] and/or [property@Flap:swipe-to-close] are set
79+// to `TRUE`.
80+//
81+// Optionally, a separator can be provided, which would be displayed between
82+// the content and the flap when there's no shadow to separate them, depending
83+// on the transition type.
84+//
85+// [property@Flap:flap] is transparent by default; add the
86+// [`.background`](style-classes.html#background) style class to it if this is
87+// unwanted.
88+//
89+// If [property@Flap:modal] is set to `TRUE`, content becomes completely
90+// inaccessible when the flap is revealed while folded.
91+//
92+// The position of the flap and separator children relative to the content is
93+// determined by orientation, as well as the [property@Flap:flap-position]
94+// value.
95+//
96+// Folding the flap will automatically hide the flap widget, and unfolding it
97+// will automatically reveal it. If this behavior is not desired, the
98+// [property@Flap:locked] property can be used to override it.
99+//
100+// Common use cases include sidebars, header bars that need to be able to
101+// overlap the window content (for example, in fullscreen mode) and bottom
102+// sheets.
103+//
104+// ## AdwFlap as GtkBuildable
105+//
106+// The `AdwFlap` implementation of the [iface@Gtk.Buildable] interface supports
107+// setting the flap child by specifying “flap” as the “type” attribute of a
108+// `&lt;child&gt;` element, and separator by specifying “separator”. Specifying
109+// “content” child type or omitting it results in setting the content child.
110+//
111+// ## CSS nodes
112+//
113+// `AdwFlap` has a single CSS node with name `flap`. The node will get the style
114+// classes `.folded` when it is folded, and `.unfolded` when it's not.
115+type Flap struct {
116+ gtk.Widget
117+}
118+
119+func FlapNewFromInternalPtr(ptr uintptr) *Flap {
120+ cls := &Flap{}
121+ cls.Ptr = ptr
122+ return cls
123+}
124+
125+var xNewFlap func() uintptr
126+
127+// Creates a new `AdwFlap`.
128+func NewFlap() *gtk.Widget {
129+ NewFlapPtr := xNewFlap()
130+ if NewFlapPtr == 0 {
131+ return nil
132+ }
133+
134+ gobject.IncreaseRef(NewFlapPtr)
135+
136+ NewFlapCls := &gtk.Widget{}
137+ NewFlapCls.Ptr = NewFlapPtr
138+ return NewFlapCls
139+}
140+
141+var xFlapGetContent func(uintptr) uintptr
142+
143+// Gets the content widget for @self.
144+func (x *Flap) GetContent() *gtk.Widget {
145+
146+ GetContentPtr := xFlapGetContent(x.GoPointer())
147+ if GetContentPtr == 0 {
148+ return nil
149+ }
150+
151+ gobject.IncreaseRef(GetContentPtr)
152+
153+ GetContentCls := &gtk.Widget{}
154+ GetContentCls.Ptr = GetContentPtr
155+ return GetContentCls
156+
157+}
158+
159+var xFlapGetFlap func(uintptr) uintptr
160+
161+// Gets the flap widget for @self.
162+func (x *Flap) GetFlap() *gtk.Widget {
163+
164+ GetFlapPtr := xFlapGetFlap(x.GoPointer())
165+ if GetFlapPtr == 0 {
166+ return nil
167+ }
168+
169+ gobject.IncreaseRef(GetFlapPtr)
170+
171+ GetFlapCls := &gtk.Widget{}
172+ GetFlapCls.Ptr = GetFlapPtr
173+ return GetFlapCls
174+
175+}
176+
177+var xFlapGetFlapPosition func(uintptr) gtk.PackType
178+
179+// Gets the flap position for @self.
180+func (x *Flap) GetFlapPosition() gtk.PackType {
181+
182+ return xFlapGetFlapPosition(x.GoPointer())
183+
184+}
185+
186+var xFlapGetFoldDuration func(uintptr) uint
187+
188+// Gets the fold transition animation duration for @self, in milliseconds.
189+func (x *Flap) GetFoldDuration() uint {
190+
191+ return xFlapGetFoldDuration(x.GoPointer())
192+
193+}
194+
195+var xFlapGetFoldPolicy func(uintptr) FlapFoldPolicy
196+
197+// Gets the fold policy for @self.
198+func (x *Flap) GetFoldPolicy() FlapFoldPolicy {
199+
200+ return xFlapGetFoldPolicy(x.GoPointer())
201+
202+}
203+
204+var xFlapGetFoldThresholdPolicy func(uintptr) FoldThresholdPolicy
205+
206+// Gets the fold threshold policy for @self.
207+func (x *Flap) GetFoldThresholdPolicy() FoldThresholdPolicy {
208+
209+ return xFlapGetFoldThresholdPolicy(x.GoPointer())
210+
211+}
212+
213+var xFlapGetFolded func(uintptr) bool
214+
215+// Gets whether @self is currently folded.
216+//
217+// See [property@Flap:fold-policy].
218+func (x *Flap) GetFolded() bool {
219+
220+ return xFlapGetFolded(x.GoPointer())
221+
222+}
223+
224+var xFlapGetLocked func(uintptr) bool
225+
226+// Gets whether @self is locked.
227+func (x *Flap) GetLocked() bool {
228+
229+ return xFlapGetLocked(x.GoPointer())
230+
231+}
232+
233+var xFlapGetModal func(uintptr) bool
234+
235+// Gets whether @self is modal.
236+func (x *Flap) GetModal() bool {
237+
238+ return xFlapGetModal(x.GoPointer())
239+
240+}
241+
242+var xFlapGetRevealFlap func(uintptr) bool
243+
244+// Gets whether the flap widget is revealed for @self.
245+func (x *Flap) GetRevealFlap() bool {
246+
247+ return xFlapGetRevealFlap(x.GoPointer())
248+
249+}
250+
251+var xFlapGetRevealParams func(uintptr) *SpringParams
252+
253+// Gets the reveal animation spring parameters for @self.
254+func (x *Flap) GetRevealParams() *SpringParams {
255+
256+ return xFlapGetRevealParams(x.GoPointer())
257+
258+}
259+
260+var xFlapGetRevealProgress func(uintptr) float64
261+
262+// Gets the current reveal progress for @self.
263+//
264+// 0 means fully hidden, 1 means fully revealed.
265+//
266+// See [property@Flap:reveal-flap].
267+func (x *Flap) GetRevealProgress() float64 {
268+
269+ return xFlapGetRevealProgress(x.GoPointer())
270+
271+}
272+
273+var xFlapGetSeparator func(uintptr) uintptr
274+
275+// Gets the separator widget for @self.
276+func (x *Flap) GetSeparator() *gtk.Widget {
277+
278+ GetSeparatorPtr := xFlapGetSeparator(x.GoPointer())
279+ if GetSeparatorPtr == 0 {
280+ return nil
281+ }
282+
283+ gobject.IncreaseRef(GetSeparatorPtr)
284+
285+ GetSeparatorCls := &gtk.Widget{}
286+ GetSeparatorCls.Ptr = GetSeparatorPtr
287+ return GetSeparatorCls
288+
289+}
290+
291+var xFlapGetSwipeToClose func(uintptr) bool
292+
293+// Gets whether @self can be closed with a swipe gesture.
294+func (x *Flap) GetSwipeToClose() bool {
295+
296+ return xFlapGetSwipeToClose(x.GoPointer())
297+
298+}
299+
300+var xFlapGetSwipeToOpen func(uintptr) bool
301+
302+// Gets whether @self can be opened with a swipe gesture.
303+func (x *Flap) GetSwipeToOpen() bool {
304+
305+ return xFlapGetSwipeToOpen(x.GoPointer())
306+
307+}
308+
309+var xFlapGetTransitionType func(uintptr) FlapTransitionType
310+
311+// Gets the type of animation used for reveal and fold transitions in @self.
312+func (x *Flap) GetTransitionType() FlapTransitionType {
313+
314+ return xFlapGetTransitionType(x.GoPointer())
315+
316+}
317+
318+var xFlapSetContent func(uintptr, uintptr)
319+
320+// Sets the content widget for @self.
321+//
322+// It's always displayed when unfolded, and partially visible when folded.
323+func (x *Flap) SetContent(ContentVar *gtk.Widget) {
324+
325+ xFlapSetContent(x.GoPointer(), ContentVar.GoPointer())
326+
327+}
328+
329+var xFlapSetFlap func(uintptr, uintptr)
330+
331+// Sets the flap widget for @self.
332+//
333+// It's only visible when [property@Flap:reveal-progress] is greater than 0.
334+func (x *Flap) SetFlap(FlapVar *gtk.Widget) {
335+
336+ xFlapSetFlap(x.GoPointer(), FlapVar.GoPointer())
337+
338+}
339+
340+var xFlapSetFlapPosition func(uintptr, gtk.PackType)
341+
342+// Sets the flap position for @self.
343+//
344+// If it's set to `GTK_PACK_START`, the flap is displayed before the content,
345+// if `GTK_PACK_END`, it's displayed after the content.
346+func (x *Flap) SetFlapPosition(PositionVar gtk.PackType) {
347+
348+ xFlapSetFlapPosition(x.GoPointer(), PositionVar)
349+
350+}
351+
352+var xFlapSetFoldDuration func(uintptr, uint)
353+
354+// Sets the fold transition animation duration for @self, in milliseconds.
355+func (x *Flap) SetFoldDuration(DurationVar uint) {
356+
357+ xFlapSetFoldDuration(x.GoPointer(), DurationVar)
358+
359+}
360+
361+var xFlapSetFoldPolicy func(uintptr, FlapFoldPolicy)
362+
363+// Sets the fold policy for @self.
364+func (x *Flap) SetFoldPolicy(PolicyVar FlapFoldPolicy) {
365+
366+ xFlapSetFoldPolicy(x.GoPointer(), PolicyVar)
367+
368+}
369+
370+var xFlapSetFoldThresholdPolicy func(uintptr, FoldThresholdPolicy)
371+
372+// Sets the fold threshold policy for @self.
373+//
374+// If set to `ADW_FOLD_THRESHOLD_POLICY_MINIMUM`, flap will only fold when the
375+// children cannot fit anymore. With `ADW_FOLD_THRESHOLD_POLICY_NATURAL`, it
376+// will fold as soon as children don't get their natural size.
377+//
378+// This can be useful if you have a long ellipsizing label and want to let it
379+// ellipsize instead of immediately folding.
380+func (x *Flap) SetFoldThresholdPolicy(PolicyVar FoldThresholdPolicy) {
381+
382+ xFlapSetFoldThresholdPolicy(x.GoPointer(), PolicyVar)
383+
384+}
385+
386+var xFlapSetLocked func(uintptr, bool)
387+
388+// Sets whether @self is locked.
389+//
390+// If `FALSE`, folding when the flap is revealed automatically closes it, and
391+// unfolding it when the flap is not revealed opens it. If `TRUE`,
392+// [property@Flap:reveal-flap] value never changes on its own.
393+func (x *Flap) SetLocked(LockedVar bool) {
394+
395+ xFlapSetLocked(x.GoPointer(), LockedVar)
396+
397+}
398+
399+var xFlapSetModal func(uintptr, bool)
400+
401+// Sets whether @self is modal.
402+//
403+// If `TRUE`, clicking the content widget while flap is revealed, as well as
404+// pressing the &lt;kbd&gt;Esc&lt;/kbd&gt; key, will close the flap. If `FALSE`, clicks are
405+// passed through to the content widget.
406+func (x *Flap) SetModal(ModalVar bool) {
407+
408+ xFlapSetModal(x.GoPointer(), ModalVar)
409+
410+}
411+
412+var xFlapSetRevealFlap func(uintptr, bool)
413+
414+// Sets whether the flap widget is revealed for @self.
415+func (x *Flap) SetRevealFlap(RevealFlapVar bool) {
416+
417+ xFlapSetRevealFlap(x.GoPointer(), RevealFlapVar)
418+
419+}
420+
421+var xFlapSetRevealParams func(uintptr, *SpringParams)
422+
423+// Sets the reveal animation spring parameters for @self.
424+//
425+// The default value is equivalent to:
426+//
427+// ```c
428+// adw_spring_params_new (1, 0.5, 500)
429+// ```
430+func (x *Flap) SetRevealParams(ParamsVar *SpringParams) {
431+
432+ xFlapSetRevealParams(x.GoPointer(), ParamsVar)
433+
434+}
435+
436+var xFlapSetSeparator func(uintptr, uintptr)
437+
438+// Sets the separator widget for @self.
439+//
440+// It's displayed between content and flap when there's no shadow to display.
441+// When exactly it's visible depends on the [property@Flap:transition-type]
442+// value.
443+func (x *Flap) SetSeparator(SeparatorVar *gtk.Widget) {
444+
445+ xFlapSetSeparator(x.GoPointer(), SeparatorVar.GoPointer())
446+
447+}
448+
449+var xFlapSetSwipeToClose func(uintptr, bool)
450+
451+// Sets whether @self can be closed with a swipe gesture.
452+//
453+// The area that can be swiped depends on the [property@Flap:transition-type]
454+// value.
455+func (x *Flap) SetSwipeToClose(SwipeToCloseVar bool) {
456+
457+ xFlapSetSwipeToClose(x.GoPointer(), SwipeToCloseVar)
458+
459+}
460+
461+var xFlapSetSwipeToOpen func(uintptr, bool)
462+
463+// Sets whether @self can be opened with a swipe gesture.
464+//
465+// The area that can be swiped depends on the [property@Flap:transition-type]
466+// value.
467+func (x *Flap) SetSwipeToOpen(SwipeToOpenVar bool) {
468+
469+ xFlapSetSwipeToOpen(x.GoPointer(), SwipeToOpenVar)
470+
471+}
472+
473+var xFlapSetTransitionType func(uintptr, FlapTransitionType)
474+
475+// Sets the type of animation used for reveal and fold transitions in @self.
476+//
477+// [property@Flap:flap] is transparent by default, which means the content will
478+// be seen through it with `ADW_FLAP_TRANSITION_TYPE_OVER` transitions; add the
479+// [`.background`](style-classes.html#background) style class to it if this is
480+// unwanted.
481+func (x *Flap) SetTransitionType(TransitionTypeVar FlapTransitionType) {
482+
483+ xFlapSetTransitionType(x.GoPointer(), TransitionTypeVar)
484+
485+}
486+
487+func (c *Flap) GoPointer() uintptr {
488+ return c.Ptr
489+}
490+
491+func (c *Flap) SetGoPointer(ptr uintptr) {
492+ c.Ptr = ptr
493+}
494+
495+// Gets the progress @self will snap back to after the gesture is canceled.
496+func (x *Flap) GetCancelProgress() float64 {
497+
498+ return XAdwSwipeableGetCancelProgress(x.GoPointer())
499+
500+}
501+
502+// Gets the swipe distance of @self.
503+//
504+// This corresponds to how many pixels 1 unit represents.
505+func (x *Flap) GetDistance() float64 {
506+
507+ return XAdwSwipeableGetDistance(x.GoPointer())
508+
509+}
510+
511+// Gets the current progress of @self.
512+func (x *Flap) GetProgress() float64 {
513+
514+ return XAdwSwipeableGetProgress(x.GoPointer())
515+
516+}
517+
518+// Gets the snap points of @self.
519+//
520+// Each snap point represents a progress value that is considered acceptable to
521+// end the swipe on.
522+func (x *Flap) GetSnapPoints(NSnapPointsVar int32) uintptr {
523+
524+ return XAdwSwipeableGetSnapPoints(x.GoPointer(), NSnapPointsVar)
525+
526+}
527+
528+// Gets the area @self can start a swipe from for the given direction and
529+// gesture type.
530+//
531+// This can be used to restrict swipes to only be possible from a certain area,
532+// for example, to only allow edge swipes, or to have a draggable element and
533+// ignore swipes elsewhere.
534+//
535+// If not implemented, the default implementation returns the allocation of
536+// @self, allowing swipes from anywhere.
537+func (x *Flap) GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle) {
538+
539+ XAdwSwipeableGetSwipeArea(x.GoPointer(), NavigationDirectionVar, IsDragVar, RectVar)
540+
541+}
542+
543+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
544+func (x *Flap) GetAccessibleRole() gtk.AccessibleRole {
545+
546+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
547+
548+}
549+
550+// Resets the accessible @property to its default value.
551+func (x *Flap) ResetProperty(PropertyVar gtk.AccessibleProperty) {
552+
553+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
554+
555+}
556+
557+// Resets the accessible @relation to its default value.
558+func (x *Flap) ResetRelation(RelationVar gtk.AccessibleRelation) {
559+
560+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
561+
562+}
563+
564+// Resets the accessible @state to its default value.
565+func (x *Flap) ResetState(StateVar gtk.AccessibleState) {
566+
567+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
568+
569+}
570+
571+// Updates a list of accessible properties.
572+//
573+// See the [enum@Gtk.AccessibleProperty] documentation for the
574+// value types of accessible properties.
575+//
576+// This function should be called by `GtkWidget` types whenever
577+// an accessible property change must be communicated to assistive
578+// technologies.
579+//
580+// Example:
581+// ```c
582+// value = gtk_adjustment_get_value (adjustment);
583+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
584+//
585+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
586+// -1);
587+//
588+// ```
589+func (x *Flap) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
590+
591+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
592+
593+}
594+
595+// Updates an array of accessible properties.
596+//
597+// This function should be called by `GtkWidget` types whenever an accessible
598+// property change must be communicated to assistive technologies.
599+//
600+// This function is meant to be used by language bindings.
601+func (x *Flap) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
602+
603+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
604+
605+}
606+
607+// Updates a list of accessible relations.
608+//
609+// This function should be called by `GtkWidget` types whenever an accessible
610+// relation change must be communicated to assistive technologies.
611+//
612+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
613+// you should pass each reference individually, followed by %NULL, e.g.
614+//
615+// ```c
616+// gtk_accessible_update_relation (accessible,
617+//
618+// GTK_ACCESSIBLE_RELATION_CONTROLS,
619+// ref1, NULL,
620+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
621+// ref1, ref2, ref3, NULL,
622+// -1);
623+//
624+// ```
625+func (x *Flap) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
626+
627+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
628+
629+}
630+
631+// Updates an array of accessible relations.
632+//
633+// This function should be called by `GtkWidget` types whenever an accessible
634+// relation change must be communicated to assistive technologies.
635+//
636+// This function is meant to be used by language bindings.
637+func (x *Flap) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
638+
639+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
640+
641+}
642+
643+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
644+// documentation for the value types of accessible states.
645+//
646+// This function should be called by `GtkWidget` types whenever an accessible
647+// state change must be communicated to assistive technologies.
648+//
649+// Example:
650+// ```c
651+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
652+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
653+//
654+// GTK_ACCESSIBLE_STATE_CHECKED, value,
655+// -1);
656+//
657+// ```
658+func (x *Flap) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
659+
660+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
661+
662+}
663+
664+// Updates an array of accessible states.
665+//
666+// This function should be called by `GtkWidget` types whenever an accessible
667+// state change must be communicated to assistive technologies.
668+//
669+// This function is meant to be used by language bindings.
670+func (x *Flap) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
671+
672+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
673+
674+}
675+
676+// Gets the ID of the @buildable object.
677+//
678+// `GtkBuilder` sets the name based on the ID attribute
679+// of the &lt;object&gt; tag used to construct the @buildable.
680+func (x *Flap) GetBuildableId() string {
681+
682+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
683+
684+}
685+
686+// Retrieves the orientation of the @orientable.
687+func (x *Flap) GetOrientation() gtk.Orientation {
688+
689+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
690+
691+}
692+
693+// Sets the orientation of the @orientable.
694+func (x *Flap) SetOrientation(OrientationVar gtk.Orientation) {
695+
696+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
697+
698+}
699+
700+func init() {
701+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
702+ if err != nil {
703+ panic(err)
704+ }
705+
706+ core.PuregoSafeRegister(&xNewFlap, lib, "adw_flap_new")
707+
708+ core.PuregoSafeRegister(&xFlapGetContent, lib, "adw_flap_get_content")
709+ core.PuregoSafeRegister(&xFlapGetFlap, lib, "adw_flap_get_flap")
710+ core.PuregoSafeRegister(&xFlapGetFlapPosition, lib, "adw_flap_get_flap_position")
711+ core.PuregoSafeRegister(&xFlapGetFoldDuration, lib, "adw_flap_get_fold_duration")
712+ core.PuregoSafeRegister(&xFlapGetFoldPolicy, lib, "adw_flap_get_fold_policy")
713+ core.PuregoSafeRegister(&xFlapGetFoldThresholdPolicy, lib, "adw_flap_get_fold_threshold_policy")
714+ core.PuregoSafeRegister(&xFlapGetFolded, lib, "adw_flap_get_folded")
715+ core.PuregoSafeRegister(&xFlapGetLocked, lib, "adw_flap_get_locked")
716+ core.PuregoSafeRegister(&xFlapGetModal, lib, "adw_flap_get_modal")
717+ core.PuregoSafeRegister(&xFlapGetRevealFlap, lib, "adw_flap_get_reveal_flap")
718+ core.PuregoSafeRegister(&xFlapGetRevealParams, lib, "adw_flap_get_reveal_params")
719+ core.PuregoSafeRegister(&xFlapGetRevealProgress, lib, "adw_flap_get_reveal_progress")
720+ core.PuregoSafeRegister(&xFlapGetSeparator, lib, "adw_flap_get_separator")
721+ core.PuregoSafeRegister(&xFlapGetSwipeToClose, lib, "adw_flap_get_swipe_to_close")
722+ core.PuregoSafeRegister(&xFlapGetSwipeToOpen, lib, "adw_flap_get_swipe_to_open")
723+ core.PuregoSafeRegister(&xFlapGetTransitionType, lib, "adw_flap_get_transition_type")
724+ core.PuregoSafeRegister(&xFlapSetContent, lib, "adw_flap_set_content")
725+ core.PuregoSafeRegister(&xFlapSetFlap, lib, "adw_flap_set_flap")
726+ core.PuregoSafeRegister(&xFlapSetFlapPosition, lib, "adw_flap_set_flap_position")
727+ core.PuregoSafeRegister(&xFlapSetFoldDuration, lib, "adw_flap_set_fold_duration")
728+ core.PuregoSafeRegister(&xFlapSetFoldPolicy, lib, "adw_flap_set_fold_policy")
729+ core.PuregoSafeRegister(&xFlapSetFoldThresholdPolicy, lib, "adw_flap_set_fold_threshold_policy")
730+ core.PuregoSafeRegister(&xFlapSetLocked, lib, "adw_flap_set_locked")
731+ core.PuregoSafeRegister(&xFlapSetModal, lib, "adw_flap_set_modal")
732+ core.PuregoSafeRegister(&xFlapSetRevealFlap, lib, "adw_flap_set_reveal_flap")
733+ core.PuregoSafeRegister(&xFlapSetRevealParams, lib, "adw_flap_set_reveal_params")
734+ core.PuregoSafeRegister(&xFlapSetSeparator, lib, "adw_flap_set_separator")
735+ core.PuregoSafeRegister(&xFlapSetSwipeToClose, lib, "adw_flap_set_swipe_to_close")
736+ core.PuregoSafeRegister(&xFlapSetSwipeToOpen, lib, "adw_flap_set_swipe_to_open")
737+ core.PuregoSafeRegister(&xFlapSetTransitionType, lib, "adw_flap_set_transition_type")
738+
739+}
A v4/adw/adw-fold-threshold-policy.go +13 -0
@@ -0,0 +1,13 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+// Determines when [class@Flap] and [class@Leaflet] will fold.
5+type FoldThresholdPolicy int
6+
7+const (
8+
9+ // Folding is based on the minimum size
10+ FoldThresholdPolicyMinimumValue FoldThresholdPolicy = 0
11+ // Folding is based on the natural size
12+ FoldThresholdPolicyNaturalValue FoldThresholdPolicy = 1
13+)
A v4/adw/adw-header-bar.go +486 -0
@@ -0,0 +1,486 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type HeaderBarClass struct {
12+ ParentClass uintptr
13+}
14+
15+// Describes title centering behavior of a [class@HeaderBar] widget.
16+type CenteringPolicy int
17+
18+const (
19+
20+ // Keep the title centered when possible
21+ CenteringPolicyLooseValue CenteringPolicy = 0
22+ // Keep the title centered at all cost
23+ CenteringPolicyStrictValue CenteringPolicy = 1
24+)
25+
26+// A title bar widget.
27+//
28+// &lt;picture&gt;
29+//
30+// &lt;source srcset="header-bar-dark.png" media="(prefers-color-scheme: dark)"&gt;
31+// &lt;img src="header-bar.png" alt="header-bar"&gt;
32+//
33+// &lt;/picture&gt;
34+//
35+// `AdwHeaderBar` is similar to [class@Gtk.HeaderBar], but provides additional
36+// features compared to it. Refer to `GtkHeaderBar` for details.
37+//
38+// [property@HeaderBar:centering-policy] allows to enforce strict centering of
39+// the title widget, this is useful for [class@ViewSwitcherTitle].
40+//
41+// [property@HeaderBar:show-start-title-buttons] and
42+// [property@HeaderBar:show-end-title-buttons] allow to easily create split
43+// header bar layouts using [class@Leaflet], as follows:
44+//
45+// ```xml
46+// &lt;object class="AdwLeaflet" id="leaflet"&gt;
47+//
48+// &lt;child&gt;
49+// &lt;object class="GtkBox"&gt;
50+// &lt;property name="orientation"&gt;vertical&lt;/property&gt;
51+// &lt;child&gt;
52+// &lt;object class="AdwHeaderBar"&gt;
53+// &lt;binding name="show-end-title-buttons"&gt;
54+// &lt;lookup name="folded"&gt;leaflet&lt;/lookup&gt;
55+// &lt;/binding&gt;
56+// &lt;/object&gt;
57+// &lt;/child&gt;
58+// &lt;!-- ... --&gt;
59+// &lt;/object&gt;
60+// &lt;/child&gt;
61+// &lt;!-- ... --&gt;
62+// &lt;child&gt;
63+// &lt;object class="GtkBox"&gt;
64+// &lt;property name="orientation"&gt;vertical&lt;/property&gt;
65+// &lt;property name="hexpand"&gt;True&lt;/property&gt;
66+// &lt;child&gt;
67+// &lt;object class="AdwHeaderBar"&gt;
68+// &lt;binding name="show-start-title-buttons"&gt;
69+// &lt;lookup name="folded"&gt;leaflet&lt;/lookup&gt;
70+// &lt;/binding&gt;
71+// &lt;/object&gt;
72+// &lt;/child&gt;
73+// &lt;!-- ... --&gt;
74+// &lt;/object&gt;
75+// &lt;/child&gt;
76+//
77+// &lt;/object&gt;
78+// ```
79+//
80+// &lt;picture&gt;
81+//
82+// &lt;source srcset="header-bar-split-dark.png" media="(prefers-color-scheme: dark)"&gt;
83+// &lt;img src="header-bar-split.png" alt="header-bar-split"&gt;
84+//
85+// &lt;/picture&gt;
86+//
87+// ## CSS nodes
88+//
89+// ```
90+// headerbar
91+// ╰── windowhandle
92+//
93+// ╰── box
94+// ├── widget
95+// │ ╰── box.start
96+// │ ├── windowcontrols.start
97+// │ ╰── [other children]
98+// ├── [Title Widget]
99+// ╰── widget
100+// ╰── box.end
101+// ├── [other children]
102+// ╰── windowcontrols.end
103+//
104+// ```
105+//
106+// `AdwHeaderBar`'s CSS node is called `headerbar`. It contains a `windowhandle`
107+// subnode, which contains a `box` subnode, which contains two `widget` subnodes
108+// at the start and end of the header bar, each of which contains a `box`
109+// subnode with the `.start` and `.end` style classes respectively, as well as a
110+// center node that represents the title.
111+//
112+// Each of the boxes contains a `windowcontrols` subnode, see
113+// [class@Gtk.WindowControls] for details, as well as other children.
114+//
115+// ## Accessibility
116+//
117+// `AdwHeaderBar` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
118+type HeaderBar struct {
119+ gtk.Widget
120+}
121+
122+func HeaderBarNewFromInternalPtr(ptr uintptr) *HeaderBar {
123+ cls := &HeaderBar{}
124+ cls.Ptr = ptr
125+ return cls
126+}
127+
128+var xNewHeaderBar func() uintptr
129+
130+// Creates a new `AdwHeaderBar`.
131+func NewHeaderBar() *gtk.Widget {
132+ NewHeaderBarPtr := xNewHeaderBar()
133+ if NewHeaderBarPtr == 0 {
134+ return nil
135+ }
136+
137+ gobject.IncreaseRef(NewHeaderBarPtr)
138+
139+ NewHeaderBarCls := &gtk.Widget{}
140+ NewHeaderBarCls.Ptr = NewHeaderBarPtr
141+ return NewHeaderBarCls
142+}
143+
144+var xHeaderBarGetCenteringPolicy func(uintptr) CenteringPolicy
145+
146+// Gets the policy for aligning the center widget.
147+func (x *HeaderBar) GetCenteringPolicy() CenteringPolicy {
148+
149+ return xHeaderBarGetCenteringPolicy(x.GoPointer())
150+
151+}
152+
153+var xHeaderBarGetDecorationLayout func(uintptr) string
154+
155+// Gets the decoration layout for @self.
156+func (x *HeaderBar) GetDecorationLayout() string {
157+
158+ return xHeaderBarGetDecorationLayout(x.GoPointer())
159+
160+}
161+
162+var xHeaderBarGetShowEndTitleButtons func(uintptr) bool
163+
164+// Gets whether to show title buttons at the end of @self.
165+func (x *HeaderBar) GetShowEndTitleButtons() bool {
166+
167+ return xHeaderBarGetShowEndTitleButtons(x.GoPointer())
168+
169+}
170+
171+var xHeaderBarGetShowStartTitleButtons func(uintptr) bool
172+
173+// Gets whether to show title buttons at the start of @self.
174+func (x *HeaderBar) GetShowStartTitleButtons() bool {
175+
176+ return xHeaderBarGetShowStartTitleButtons(x.GoPointer())
177+
178+}
179+
180+var xHeaderBarGetTitleWidget func(uintptr) uintptr
181+
182+// Gets the title widget widget of @self.
183+func (x *HeaderBar) GetTitleWidget() *gtk.Widget {
184+
185+ GetTitleWidgetPtr := xHeaderBarGetTitleWidget(x.GoPointer())
186+ if GetTitleWidgetPtr == 0 {
187+ return nil
188+ }
189+
190+ gobject.IncreaseRef(GetTitleWidgetPtr)
191+
192+ GetTitleWidgetCls := &gtk.Widget{}
193+ GetTitleWidgetCls.Ptr = GetTitleWidgetPtr
194+ return GetTitleWidgetCls
195+
196+}
197+
198+var xHeaderBarPackEnd func(uintptr, uintptr)
199+
200+// Adds @child to @self, packed with reference to the end of @self.
201+func (x *HeaderBar) PackEnd(ChildVar *gtk.Widget) {
202+
203+ xHeaderBarPackEnd(x.GoPointer(), ChildVar.GoPointer())
204+
205+}
206+
207+var xHeaderBarPackStart func(uintptr, uintptr)
208+
209+// Adds @child to @self, packed with reference to the start of the @self.
210+func (x *HeaderBar) PackStart(ChildVar *gtk.Widget) {
211+
212+ xHeaderBarPackStart(x.GoPointer(), ChildVar.GoPointer())
213+
214+}
215+
216+var xHeaderBarRemove func(uintptr, uintptr)
217+
218+// Removes a child from @self.
219+//
220+// The child must have been added with [method@HeaderBar.pack_start],
221+// [method@HeaderBar.pack_end] or [property@HeaderBar:title-widget].
222+func (x *HeaderBar) Remove(ChildVar *gtk.Widget) {
223+
224+ xHeaderBarRemove(x.GoPointer(), ChildVar.GoPointer())
225+
226+}
227+
228+var xHeaderBarSetCenteringPolicy func(uintptr, CenteringPolicy)
229+
230+// Sets the policy for aligning the center widget.
231+func (x *HeaderBar) SetCenteringPolicy(CenteringPolicyVar CenteringPolicy) {
232+
233+ xHeaderBarSetCenteringPolicy(x.GoPointer(), CenteringPolicyVar)
234+
235+}
236+
237+var xHeaderBarSetDecorationLayout func(uintptr, string)
238+
239+// Sets the decoration layout for @self.
240+//
241+// If this property is not set, the
242+// [property@Gtk.Settings:gtk-decoration-layout] setting is used.
243+//
244+// The format of the string is button names, separated by commas. A colon
245+// separates the buttons that should appear at the start from those at the end.
246+// Recognized button names are minimize, maximize, close and icon (the window
247+// icon).
248+//
249+// For example, “icon:minimize,maximize,close” specifies an icon at the start,
250+// and minimize, maximize and close buttons at the end.
251+func (x *HeaderBar) SetDecorationLayout(LayoutVar string) {
252+
253+ xHeaderBarSetDecorationLayout(x.GoPointer(), LayoutVar)
254+
255+}
256+
257+var xHeaderBarSetShowEndTitleButtons func(uintptr, bool)
258+
259+// Sets whether to show title buttons at the end of @self.
260+//
261+// See [property@HeaderBar:show-start-title-buttons] for the other side.
262+//
263+// Which buttons are actually shown and where is determined by the
264+// [property@HeaderBar:decoration-layout] property, and by the state of the
265+// window (e.g. a close button will not be shown if the window can't be closed).
266+func (x *HeaderBar) SetShowEndTitleButtons(SettingVar bool) {
267+
268+ xHeaderBarSetShowEndTitleButtons(x.GoPointer(), SettingVar)
269+
270+}
271+
272+var xHeaderBarSetShowStartTitleButtons func(uintptr, bool)
273+
274+// Sets whether to show title buttons at the start of @self.
275+//
276+// See [property@HeaderBar:show-end-title-buttons] for the other side.
277+//
278+// Which buttons are actually shown and where is determined by the
279+// [property@HeaderBar:decoration-layout] property, and by the state of the
280+// window (e.g. a close button will not be shown if the window can't be closed).
281+func (x *HeaderBar) SetShowStartTitleButtons(SettingVar bool) {
282+
283+ xHeaderBarSetShowStartTitleButtons(x.GoPointer(), SettingVar)
284+
285+}
286+
287+var xHeaderBarSetTitleWidget func(uintptr, uintptr)
288+
289+// Sets the title widget for @self.
290+//
291+// When set to `NULL`, the header bar will display the title of the window it
292+// is contained in.
293+//
294+// To use a different title, use [class@WindowTitle]:
295+//
296+// ```xml
297+// &lt;object class="AdwHeaderBar"&gt;
298+//
299+// &lt;property name="title-widget"&gt;
300+// &lt;object class="AdwWindowTitle"&gt;
301+// &lt;property name="title" translatable="yes"&gt;Title&lt;/property&gt;
302+// &lt;/object&gt;
303+// &lt;/property&gt;
304+//
305+// &lt;/object&gt;
306+// ```
307+func (x *HeaderBar) SetTitleWidget(TitleWidgetVar *gtk.Widget) {
308+
309+ xHeaderBarSetTitleWidget(x.GoPointer(), TitleWidgetVar.GoPointer())
310+
311+}
312+
313+func (c *HeaderBar) GoPointer() uintptr {
314+ return c.Ptr
315+}
316+
317+func (c *HeaderBar) SetGoPointer(ptr uintptr) {
318+ c.Ptr = ptr
319+}
320+
321+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
322+func (x *HeaderBar) GetAccessibleRole() gtk.AccessibleRole {
323+
324+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
325+
326+}
327+
328+// Resets the accessible @property to its default value.
329+func (x *HeaderBar) ResetProperty(PropertyVar gtk.AccessibleProperty) {
330+
331+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
332+
333+}
334+
335+// Resets the accessible @relation to its default value.
336+func (x *HeaderBar) ResetRelation(RelationVar gtk.AccessibleRelation) {
337+
338+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
339+
340+}
341+
342+// Resets the accessible @state to its default value.
343+func (x *HeaderBar) ResetState(StateVar gtk.AccessibleState) {
344+
345+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
346+
347+}
348+
349+// Updates a list of accessible properties.
350+//
351+// See the [enum@Gtk.AccessibleProperty] documentation for the
352+// value types of accessible properties.
353+//
354+// This function should be called by `GtkWidget` types whenever
355+// an accessible property change must be communicated to assistive
356+// technologies.
357+//
358+// Example:
359+// ```c
360+// value = gtk_adjustment_get_value (adjustment);
361+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
362+//
363+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
364+// -1);
365+//
366+// ```
367+func (x *HeaderBar) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
368+
369+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
370+
371+}
372+
373+// Updates an array of accessible properties.
374+//
375+// This function should be called by `GtkWidget` types whenever an accessible
376+// property change must be communicated to assistive technologies.
377+//
378+// This function is meant to be used by language bindings.
379+func (x *HeaderBar) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
380+
381+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
382+
383+}
384+
385+// Updates a list of accessible relations.
386+//
387+// This function should be called by `GtkWidget` types whenever an accessible
388+// relation change must be communicated to assistive technologies.
389+//
390+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
391+// you should pass each reference individually, followed by %NULL, e.g.
392+//
393+// ```c
394+// gtk_accessible_update_relation (accessible,
395+//
396+// GTK_ACCESSIBLE_RELATION_CONTROLS,
397+// ref1, NULL,
398+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
399+// ref1, ref2, ref3, NULL,
400+// -1);
401+//
402+// ```
403+func (x *HeaderBar) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
404+
405+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
406+
407+}
408+
409+// Updates an array of accessible relations.
410+//
411+// This function should be called by `GtkWidget` types whenever an accessible
412+// relation change must be communicated to assistive technologies.
413+//
414+// This function is meant to be used by language bindings.
415+func (x *HeaderBar) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
416+
417+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
418+
419+}
420+
421+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
422+// documentation for the value types of accessible states.
423+//
424+// This function should be called by `GtkWidget` types whenever an accessible
425+// state change must be communicated to assistive technologies.
426+//
427+// Example:
428+// ```c
429+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
430+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
431+//
432+// GTK_ACCESSIBLE_STATE_CHECKED, value,
433+// -1);
434+//
435+// ```
436+func (x *HeaderBar) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
437+
438+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
439+
440+}
441+
442+// Updates an array of accessible states.
443+//
444+// This function should be called by `GtkWidget` types whenever an accessible
445+// state change must be communicated to assistive technologies.
446+//
447+// This function is meant to be used by language bindings.
448+func (x *HeaderBar) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
449+
450+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
451+
452+}
453+
454+// Gets the ID of the @buildable object.
455+//
456+// `GtkBuilder` sets the name based on the ID attribute
457+// of the &lt;object&gt; tag used to construct the @buildable.
458+func (x *HeaderBar) GetBuildableId() string {
459+
460+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
461+
462+}
463+
464+func init() {
465+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
466+ if err != nil {
467+ panic(err)
468+ }
469+
470+ core.PuregoSafeRegister(&xNewHeaderBar, lib, "adw_header_bar_new")
471+
472+ core.PuregoSafeRegister(&xHeaderBarGetCenteringPolicy, lib, "adw_header_bar_get_centering_policy")
473+ core.PuregoSafeRegister(&xHeaderBarGetDecorationLayout, lib, "adw_header_bar_get_decoration_layout")
474+ core.PuregoSafeRegister(&xHeaderBarGetShowEndTitleButtons, lib, "adw_header_bar_get_show_end_title_buttons")
475+ core.PuregoSafeRegister(&xHeaderBarGetShowStartTitleButtons, lib, "adw_header_bar_get_show_start_title_buttons")
476+ core.PuregoSafeRegister(&xHeaderBarGetTitleWidget, lib, "adw_header_bar_get_title_widget")
477+ core.PuregoSafeRegister(&xHeaderBarPackEnd, lib, "adw_header_bar_pack_end")
478+ core.PuregoSafeRegister(&xHeaderBarPackStart, lib, "adw_header_bar_pack_start")
479+ core.PuregoSafeRegister(&xHeaderBarRemove, lib, "adw_header_bar_remove")
480+ core.PuregoSafeRegister(&xHeaderBarSetCenteringPolicy, lib, "adw_header_bar_set_centering_policy")
481+ core.PuregoSafeRegister(&xHeaderBarSetDecorationLayout, lib, "adw_header_bar_set_decoration_layout")
482+ core.PuregoSafeRegister(&xHeaderBarSetShowEndTitleButtons, lib, "adw_header_bar_set_show_end_title_buttons")
483+ core.PuregoSafeRegister(&xHeaderBarSetShowStartTitleButtons, lib, "adw_header_bar_set_show_start_title_buttons")
484+ core.PuregoSafeRegister(&xHeaderBarSetTitleWidget, lib, "adw_header_bar_set_title_widget")
485+
486+}
A v4/adw/adw-leaflet.go +880 -0
@@ -0,0 +1,880 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type LeafletClass struct {
13+ ParentClass uintptr
14+}
15+
16+type LeafletPageClass struct {
17+ ParentClass uintptr
18+}
19+
20+// Describes the possible transitions in a [class@Leaflet] widget.
21+//
22+// New values may be added to this enumeration over time.
23+type LeafletTransitionType int
24+
25+const (
26+
27+ // Cover the old page or uncover the new page, sliding from or towards the end according to orientation, text direction and children order
28+ LeafletTransitionTypeOverValue LeafletTransitionType = 0
29+ // Uncover the new page or cover the old page, sliding from or towards the start according to orientation, text direction and children order
30+ LeafletTransitionTypeUnderValue LeafletTransitionType = 1
31+ // Slide from left, right, up or down according to the orientation, text direction and the children order
32+ LeafletTransitionTypeSlideValue LeafletTransitionType = 2
33+)
34+
35+// An adaptive container acting like a box or a stack.
36+//
37+// &lt;picture&gt;
38+//
39+// &lt;source srcset="leaflet-wide-dark.png" media="(prefers-color-scheme: dark)"&gt;
40+// &lt;img src="leaflet-wide.png" alt="leaflet-wide"&gt;
41+//
42+// &lt;/picture&gt;
43+// &lt;picture&gt;
44+//
45+// &lt;source srcset="leaflet-narrow-dark.png" media="(prefers-color-scheme: dark)"&gt;
46+// &lt;img src="leaflet-narrow.png" alt="leaflet-narrow"&gt;
47+//
48+// &lt;/picture&gt;
49+//
50+// The `AdwLeaflet` widget can display its children like a [class@Gtk.Box] does
51+// or like a [class@Gtk.Stack] does, adapting to size changes by switching
52+// between the two modes.
53+//
54+// When there is enough space the children are displayed side by side, otherwise
55+// only one is displayed and the leaflet is said to be “folded”.
56+// The threshold is dictated by the preferred minimum sizes of the children.
57+// When a leaflet is folded, the children can be navigated using swipe gestures.
58+//
59+// The “over” and “under” transition types stack the children one on top of the
60+// other, while the “slide” transition puts the children side by side. While
61+// navigating to a child on the side or below can be performed by swiping the
62+// current child away, navigating to an upper child requires dragging it from
63+// the edge where it resides. This doesn't affect non-dragging swipes.
64+//
65+// ## CSS nodes
66+//
67+// `AdwLeaflet` has a single CSS node with name `leaflet`. The node will get the
68+// style classes `.folded` when it is folded, `.unfolded` when it's not, or none
69+// if it hasn't computed its fold yet.
70+type Leaflet struct {
71+ gtk.Widget
72+}
73+
74+func LeafletNewFromInternalPtr(ptr uintptr) *Leaflet {
75+ cls := &Leaflet{}
76+ cls.Ptr = ptr
77+ return cls
78+}
79+
80+var xNewLeaflet func() uintptr
81+
82+// Creates a new `AdwLeaflet`.
83+func NewLeaflet() *gtk.Widget {
84+ NewLeafletPtr := xNewLeaflet()
85+ if NewLeafletPtr == 0 {
86+ return nil
87+ }
88+
89+ gobject.IncreaseRef(NewLeafletPtr)
90+
91+ NewLeafletCls := &gtk.Widget{}
92+ NewLeafletCls.Ptr = NewLeafletPtr
93+ return NewLeafletCls
94+}
95+
96+var xLeafletAppend func(uintptr, uintptr) uintptr
97+
98+// Adds a child to @self.
99+func (x *Leaflet) Append(ChildVar *gtk.Widget) *LeafletPage {
100+
101+ AppendPtr := xLeafletAppend(x.GoPointer(), ChildVar.GoPointer())
102+ if AppendPtr == 0 {
103+ return nil
104+ }
105+
106+ gobject.IncreaseRef(AppendPtr)
107+
108+ AppendCls := &LeafletPage{}
109+ AppendCls.Ptr = AppendPtr
110+ return AppendCls
111+
112+}
113+
114+var xLeafletGetAdjacentChild func(uintptr, NavigationDirection) uintptr
115+
116+// Finds the previous or next navigatable child.
117+//
118+// This will be the same child [method@Leaflet.navigate] or swipe gestures will
119+// navigate to.
120+//
121+// If there's no child to navigate to, `NULL` will be returned instead.
122+//
123+// See [property@LeafletPage:navigatable].
124+func (x *Leaflet) GetAdjacentChild(DirectionVar NavigationDirection) *gtk.Widget {
125+
126+ GetAdjacentChildPtr := xLeafletGetAdjacentChild(x.GoPointer(), DirectionVar)
127+ if GetAdjacentChildPtr == 0 {
128+ return nil
129+ }
130+
131+ gobject.IncreaseRef(GetAdjacentChildPtr)
132+
133+ GetAdjacentChildCls := &gtk.Widget{}
134+ GetAdjacentChildCls.Ptr = GetAdjacentChildPtr
135+ return GetAdjacentChildCls
136+
137+}
138+
139+var xLeafletGetCanNavigateBack func(uintptr) bool
140+
141+// Gets whether gestures and shortcuts for navigating backward are enabled.
142+func (x *Leaflet) GetCanNavigateBack() bool {
143+
144+ return xLeafletGetCanNavigateBack(x.GoPointer())
145+
146+}
147+
148+var xLeafletGetCanNavigateForward func(uintptr) bool
149+
150+// Gets whether gestures and shortcuts for navigating forward are enabled.
151+func (x *Leaflet) GetCanNavigateForward() bool {
152+
153+ return xLeafletGetCanNavigateForward(x.GoPointer())
154+
155+}
156+
157+var xLeafletGetCanUnfold func(uintptr) bool
158+
159+// Gets whether @self can unfold.
160+func (x *Leaflet) GetCanUnfold() bool {
161+
162+ return xLeafletGetCanUnfold(x.GoPointer())
163+
164+}
165+
166+var xLeafletGetChildByName func(uintptr, string) uintptr
167+
168+// Finds the child of @self with @name.
169+//
170+// Returns `NULL` if there is no child with this name.
171+//
172+// See [property@LeafletPage:name].
173+func (x *Leaflet) GetChildByName(NameVar string) *gtk.Widget {
174+
175+ GetChildByNamePtr := xLeafletGetChildByName(x.GoPointer(), NameVar)
176+ if GetChildByNamePtr == 0 {
177+ return nil
178+ }
179+
180+ gobject.IncreaseRef(GetChildByNamePtr)
181+
182+ GetChildByNameCls := &gtk.Widget{}
183+ GetChildByNameCls.Ptr = GetChildByNamePtr
184+ return GetChildByNameCls
185+
186+}
187+
188+var xLeafletGetChildTransitionParams func(uintptr) *SpringParams
189+
190+// Gets the child transition spring parameters for @self.
191+func (x *Leaflet) GetChildTransitionParams() *SpringParams {
192+
193+ return xLeafletGetChildTransitionParams(x.GoPointer())
194+
195+}
196+
197+var xLeafletGetChildTransitionRunning func(uintptr) bool
198+
199+// Gets whether a child transition is currently running for @self.
200+func (x *Leaflet) GetChildTransitionRunning() bool {
201+
202+ return xLeafletGetChildTransitionRunning(x.GoPointer())
203+
204+}
205+
206+var xLeafletGetFoldThresholdPolicy func(uintptr) FoldThresholdPolicy
207+
208+// Gets the fold threshold policy for @self.
209+func (x *Leaflet) GetFoldThresholdPolicy() FoldThresholdPolicy {
210+
211+ return xLeafletGetFoldThresholdPolicy(x.GoPointer())
212+
213+}
214+
215+var xLeafletGetFolded func(uintptr) bool
216+
217+// Gets whether @self is folded.
218+//
219+// The leaflet will be folded if the size allocated to it is smaller than the
220+// sum of the minimum or natural sizes of the children (see
221+// [property@Leaflet:fold-threshold-policy]), it will be unfolded otherwise.
222+func (x *Leaflet) GetFolded() bool {
223+
224+ return xLeafletGetFolded(x.GoPointer())
225+
226+}
227+
228+var xLeafletGetHomogeneous func(uintptr) bool
229+
230+// Gets whether @self is homogeneous.
231+func (x *Leaflet) GetHomogeneous() bool {
232+
233+ return xLeafletGetHomogeneous(x.GoPointer())
234+
235+}
236+
237+var xLeafletGetModeTransitionDuration func(uintptr) uint
238+
239+// Gets the mode transition animation duration for @self.
240+func (x *Leaflet) GetModeTransitionDuration() uint {
241+
242+ return xLeafletGetModeTransitionDuration(x.GoPointer())
243+
244+}
245+
246+var xLeafletGetPage func(uintptr, uintptr) uintptr
247+
248+// Returns the [class@LeafletPage] object for @child.
249+func (x *Leaflet) GetPage(ChildVar *gtk.Widget) *LeafletPage {
250+
251+ GetPagePtr := xLeafletGetPage(x.GoPointer(), ChildVar.GoPointer())
252+ if GetPagePtr == 0 {
253+ return nil
254+ }
255+
256+ gobject.IncreaseRef(GetPagePtr)
257+
258+ GetPageCls := &LeafletPage{}
259+ GetPageCls.Ptr = GetPagePtr
260+ return GetPageCls
261+
262+}
263+
264+var xLeafletGetPages func(uintptr) uintptr
265+
266+// Returns a [iface@Gio.ListModel] that contains the pages of the leaflet.
267+//
268+// This can be used to keep an up-to-date view. The model also implements
269+// [iface@Gtk.SelectionModel] and can be used to track and change the visible
270+// page.
271+func (x *Leaflet) GetPages() *gtk.SelectionModelBase {
272+
273+ GetPagesPtr := xLeafletGetPages(x.GoPointer())
274+ if GetPagesPtr == 0 {
275+ return nil
276+ }
277+
278+ GetPagesCls := &gtk.SelectionModelBase{}
279+ GetPagesCls.Ptr = GetPagesPtr
280+ return GetPagesCls
281+
282+}
283+
284+var xLeafletGetTransitionType func(uintptr) LeafletTransitionType
285+
286+// Gets the type of animation used for transitions between modes and children.
287+func (x *Leaflet) GetTransitionType() LeafletTransitionType {
288+
289+ return xLeafletGetTransitionType(x.GoPointer())
290+
291+}
292+
293+var xLeafletGetVisibleChild func(uintptr) uintptr
294+
295+// Gets the widget currently visible when the leaflet is folded.
296+func (x *Leaflet) GetVisibleChild() *gtk.Widget {
297+
298+ GetVisibleChildPtr := xLeafletGetVisibleChild(x.GoPointer())
299+ if GetVisibleChildPtr == 0 {
300+ return nil
301+ }
302+
303+ gobject.IncreaseRef(GetVisibleChildPtr)
304+
305+ GetVisibleChildCls := &gtk.Widget{}
306+ GetVisibleChildCls.Ptr = GetVisibleChildPtr
307+ return GetVisibleChildCls
308+
309+}
310+
311+var xLeafletGetVisibleChildName func(uintptr) string
312+
313+// Gets the name of the currently visible child widget.
314+func (x *Leaflet) GetVisibleChildName() string {
315+
316+ return xLeafletGetVisibleChildName(x.GoPointer())
317+
318+}
319+
320+var xLeafletInsertChildAfter func(uintptr, uintptr, uintptr) uintptr
321+
322+// Inserts @child in the position after @sibling in the list of children.
323+//
324+// If @sibling is `NULL`, inserts @child at the first position.
325+func (x *Leaflet) InsertChildAfter(ChildVar *gtk.Widget, SiblingVar *gtk.Widget) *LeafletPage {
326+
327+ InsertChildAfterPtr := xLeafletInsertChildAfter(x.GoPointer(), ChildVar.GoPointer(), SiblingVar.GoPointer())
328+ if InsertChildAfterPtr == 0 {
329+ return nil
330+ }
331+
332+ gobject.IncreaseRef(InsertChildAfterPtr)
333+
334+ InsertChildAfterCls := &LeafletPage{}
335+ InsertChildAfterCls.Ptr = InsertChildAfterPtr
336+ return InsertChildAfterCls
337+
338+}
339+
340+var xLeafletNavigate func(uintptr, NavigationDirection) bool
341+
342+// Navigates to the previous or next child.
343+//
344+// The child must have the [property@LeafletPage:navigatable] property set to
345+// `TRUE`, otherwise it will be skipped.
346+//
347+// This will be the same child as returned by
348+// [method@Leaflet.get_adjacent_child] or navigated to via swipe gestures.
349+func (x *Leaflet) Navigate(DirectionVar NavigationDirection) bool {
350+
351+ return xLeafletNavigate(x.GoPointer(), DirectionVar)
352+
353+}
354+
355+var xLeafletPrepend func(uintptr, uintptr) uintptr
356+
357+// Inserts @child at the first position in @self.
358+func (x *Leaflet) Prepend(ChildVar *gtk.Widget) *LeafletPage {
359+
360+ PrependPtr := xLeafletPrepend(x.GoPointer(), ChildVar.GoPointer())
361+ if PrependPtr == 0 {
362+ return nil
363+ }
364+
365+ gobject.IncreaseRef(PrependPtr)
366+
367+ PrependCls := &LeafletPage{}
368+ PrependCls.Ptr = PrependPtr
369+ return PrependCls
370+
371+}
372+
373+var xLeafletRemove func(uintptr, uintptr)
374+
375+// Removes a child widget from @self.
376+func (x *Leaflet) Remove(ChildVar *gtk.Widget) {
377+
378+ xLeafletRemove(x.GoPointer(), ChildVar.GoPointer())
379+
380+}
381+
382+var xLeafletReorderChildAfter func(uintptr, uintptr, uintptr)
383+
384+// Moves @child to the position after @sibling in the list of children.
385+//
386+// If @sibling is `NULL`, moves @child to the first position.
387+func (x *Leaflet) ReorderChildAfter(ChildVar *gtk.Widget, SiblingVar *gtk.Widget) {
388+
389+ xLeafletReorderChildAfter(x.GoPointer(), ChildVar.GoPointer(), SiblingVar.GoPointer())
390+
391+}
392+
393+var xLeafletSetCanNavigateBack func(uintptr, bool)
394+
395+// Sets whether gestures and shortcuts for navigating backward are enabled.
396+//
397+// The supported gestures are:
398+//
399+// - One-finger swipe on touchscreens
400+// - Horizontal scrolling on touchpads (usually two-finger swipe)
401+// - Back/forward mouse buttons
402+//
403+// The keyboard back/forward keys are also supported, as well as the
404+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;←&lt;/kbd&gt; shortcut for horizontal orientation, or
405+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;↑&lt;/kbd&gt; for vertical orientation.
406+//
407+// If the orientation is horizontal, for right-to-left locales, gestures and
408+// shortcuts are reversed.
409+//
410+// Only children that have [property@LeafletPage:navigatable] set to `TRUE` can
411+// be navigated to.
412+func (x *Leaflet) SetCanNavigateBack(CanNavigateBackVar bool) {
413+
414+ xLeafletSetCanNavigateBack(x.GoPointer(), CanNavigateBackVar)
415+
416+}
417+
418+var xLeafletSetCanNavigateForward func(uintptr, bool)
419+
420+// Sets whether gestures and shortcuts for navigating forward are enabled.
421+//
422+// The supported gestures are:
423+//
424+// - One-finger swipe on touchscreens
425+// - Horizontal scrolling on touchpads (usually two-finger swipe)
426+// - Back/forward mouse buttons
427+//
428+// The keyboard back/forward keys are also supported, as well as the
429+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;→&lt;/kbd&gt; shortcut for horizontal orientation, or
430+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;↓&lt;/kbd&gt; for vertical orientation.
431+//
432+// If the orientation is horizontal, for right-to-left locales, gestures and
433+// shortcuts are reversed.
434+//
435+// Only children that have [property@LeafletPage:navigatable] set to `TRUE` can
436+// be navigated to.
437+func (x *Leaflet) SetCanNavigateForward(CanNavigateForwardVar bool) {
438+
439+ xLeafletSetCanNavigateForward(x.GoPointer(), CanNavigateForwardVar)
440+
441+}
442+
443+var xLeafletSetCanUnfold func(uintptr, bool)
444+
445+// Sets whether @self can unfold.
446+func (x *Leaflet) SetCanUnfold(CanUnfoldVar bool) {
447+
448+ xLeafletSetCanUnfold(x.GoPointer(), CanUnfoldVar)
449+
450+}
451+
452+var xLeafletSetChildTransitionParams func(uintptr, *SpringParams)
453+
454+// Sets the child transition spring parameters for @self.
455+//
456+// The default value is equivalent to:
457+//
458+// ```c
459+// adw_spring_params_new (1, 0.5, 500)
460+// ```
461+func (x *Leaflet) SetChildTransitionParams(ParamsVar *SpringParams) {
462+
463+ xLeafletSetChildTransitionParams(x.GoPointer(), ParamsVar)
464+
465+}
466+
467+var xLeafletSetFoldThresholdPolicy func(uintptr, FoldThresholdPolicy)
468+
469+// Sets the fold threshold policy for @self.
470+//
471+// If set to `ADW_FOLD_THRESHOLD_POLICY_MINIMUM`, it will only fold when the
472+// children cannot fit anymore. With `ADW_FOLD_THRESHOLD_POLICY_NATURAL`, it
473+// will fold as soon as children don't get their natural size.
474+//
475+// This can be useful if you have a long ellipsizing label and want to let it
476+// ellipsize instead of immediately folding.
477+func (x *Leaflet) SetFoldThresholdPolicy(PolicyVar FoldThresholdPolicy) {
478+
479+ xLeafletSetFoldThresholdPolicy(x.GoPointer(), PolicyVar)
480+
481+}
482+
483+var xLeafletSetHomogeneous func(uintptr, bool)
484+
485+// Sets @self to be homogeneous or not.
486+//
487+// If set to `FALSE`, different children can have different size along the
488+// opposite orientation.
489+func (x *Leaflet) SetHomogeneous(HomogeneousVar bool) {
490+
491+ xLeafletSetHomogeneous(x.GoPointer(), HomogeneousVar)
492+
493+}
494+
495+var xLeafletSetModeTransitionDuration func(uintptr, uint)
496+
497+// Sets the mode transition animation duration for @self.
498+func (x *Leaflet) SetModeTransitionDuration(DurationVar uint) {
499+
500+ xLeafletSetModeTransitionDuration(x.GoPointer(), DurationVar)
501+
502+}
503+
504+var xLeafletSetTransitionType func(uintptr, LeafletTransitionType)
505+
506+// Sets the type of animation used for transitions between modes and children.
507+//
508+// The transition type can be changed without problems at runtime, so it is
509+// possible to change the animation based on the mode or child that is about to
510+// become current.
511+func (x *Leaflet) SetTransitionType(TransitionVar LeafletTransitionType) {
512+
513+ xLeafletSetTransitionType(x.GoPointer(), TransitionVar)
514+
515+}
516+
517+var xLeafletSetVisibleChild func(uintptr, uintptr)
518+
519+// Sets the widget currently visible when the leaflet is folded.
520+//
521+// The transition is determined by [property@Leaflet:transition-type] and
522+// [property@Leaflet:child-transition-params]. The transition can be cancelled
523+// by the user, in which case visible child will change back to the previously
524+// visible child.
525+func (x *Leaflet) SetVisibleChild(VisibleChildVar *gtk.Widget) {
526+
527+ xLeafletSetVisibleChild(x.GoPointer(), VisibleChildVar.GoPointer())
528+
529+}
530+
531+var xLeafletSetVisibleChildName func(uintptr, string)
532+
533+// Makes the child with the name @name visible.
534+//
535+// See [property@Leaflet:visible-child].
536+func (x *Leaflet) SetVisibleChildName(NameVar string) {
537+
538+ xLeafletSetVisibleChildName(x.GoPointer(), NameVar)
539+
540+}
541+
542+func (c *Leaflet) GoPointer() uintptr {
543+ return c.Ptr
544+}
545+
546+func (c *Leaflet) SetGoPointer(ptr uintptr) {
547+ c.Ptr = ptr
548+}
549+
550+// Gets the progress @self will snap back to after the gesture is canceled.
551+func (x *Leaflet) GetCancelProgress() float64 {
552+
553+ return XAdwSwipeableGetCancelProgress(x.GoPointer())
554+
555+}
556+
557+// Gets the swipe distance of @self.
558+//
559+// This corresponds to how many pixels 1 unit represents.
560+func (x *Leaflet) GetDistance() float64 {
561+
562+ return XAdwSwipeableGetDistance(x.GoPointer())
563+
564+}
565+
566+// Gets the current progress of @self.
567+func (x *Leaflet) GetProgress() float64 {
568+
569+ return XAdwSwipeableGetProgress(x.GoPointer())
570+
571+}
572+
573+// Gets the snap points of @self.
574+//
575+// Each snap point represents a progress value that is considered acceptable to
576+// end the swipe on.
577+func (x *Leaflet) GetSnapPoints(NSnapPointsVar int32) uintptr {
578+
579+ return XAdwSwipeableGetSnapPoints(x.GoPointer(), NSnapPointsVar)
580+
581+}
582+
583+// Gets the area @self can start a swipe from for the given direction and
584+// gesture type.
585+//
586+// This can be used to restrict swipes to only be possible from a certain area,
587+// for example, to only allow edge swipes, or to have a draggable element and
588+// ignore swipes elsewhere.
589+//
590+// If not implemented, the default implementation returns the allocation of
591+// @self, allowing swipes from anywhere.
592+func (x *Leaflet) GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle) {
593+
594+ XAdwSwipeableGetSwipeArea(x.GoPointer(), NavigationDirectionVar, IsDragVar, RectVar)
595+
596+}
597+
598+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
599+func (x *Leaflet) GetAccessibleRole() gtk.AccessibleRole {
600+
601+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
602+
603+}
604+
605+// Resets the accessible @property to its default value.
606+func (x *Leaflet) ResetProperty(PropertyVar gtk.AccessibleProperty) {
607+
608+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
609+
610+}
611+
612+// Resets the accessible @relation to its default value.
613+func (x *Leaflet) ResetRelation(RelationVar gtk.AccessibleRelation) {
614+
615+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
616+
617+}
618+
619+// Resets the accessible @state to its default value.
620+func (x *Leaflet) ResetState(StateVar gtk.AccessibleState) {
621+
622+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
623+
624+}
625+
626+// Updates a list of accessible properties.
627+//
628+// See the [enum@Gtk.AccessibleProperty] documentation for the
629+// value types of accessible properties.
630+//
631+// This function should be called by `GtkWidget` types whenever
632+// an accessible property change must be communicated to assistive
633+// technologies.
634+//
635+// Example:
636+// ```c
637+// value = gtk_adjustment_get_value (adjustment);
638+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
639+//
640+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
641+// -1);
642+//
643+// ```
644+func (x *Leaflet) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
645+
646+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
647+
648+}
649+
650+// Updates an array of accessible properties.
651+//
652+// This function should be called by `GtkWidget` types whenever an accessible
653+// property change must be communicated to assistive technologies.
654+//
655+// This function is meant to be used by language bindings.
656+func (x *Leaflet) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
657+
658+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
659+
660+}
661+
662+// Updates a list of accessible relations.
663+//
664+// This function should be called by `GtkWidget` types whenever an accessible
665+// relation change must be communicated to assistive technologies.
666+//
667+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
668+// you should pass each reference individually, followed by %NULL, e.g.
669+//
670+// ```c
671+// gtk_accessible_update_relation (accessible,
672+//
673+// GTK_ACCESSIBLE_RELATION_CONTROLS,
674+// ref1, NULL,
675+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
676+// ref1, ref2, ref3, NULL,
677+// -1);
678+//
679+// ```
680+func (x *Leaflet) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
681+
682+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
683+
684+}
685+
686+// Updates an array of accessible relations.
687+//
688+// This function should be called by `GtkWidget` types whenever an accessible
689+// relation change must be communicated to assistive technologies.
690+//
691+// This function is meant to be used by language bindings.
692+func (x *Leaflet) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
693+
694+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
695+
696+}
697+
698+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
699+// documentation for the value types of accessible states.
700+//
701+// This function should be called by `GtkWidget` types whenever an accessible
702+// state change must be communicated to assistive technologies.
703+//
704+// Example:
705+// ```c
706+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
707+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
708+//
709+// GTK_ACCESSIBLE_STATE_CHECKED, value,
710+// -1);
711+//
712+// ```
713+func (x *Leaflet) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
714+
715+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
716+
717+}
718+
719+// Updates an array of accessible states.
720+//
721+// This function should be called by `GtkWidget` types whenever an accessible
722+// state change must be communicated to assistive technologies.
723+//
724+// This function is meant to be used by language bindings.
725+func (x *Leaflet) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
726+
727+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
728+
729+}
730+
731+// Gets the ID of the @buildable object.
732+//
733+// `GtkBuilder` sets the name based on the ID attribute
734+// of the &lt;object&gt; tag used to construct the @buildable.
735+func (x *Leaflet) GetBuildableId() string {
736+
737+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
738+
739+}
740+
741+// Retrieves the orientation of the @orientable.
742+func (x *Leaflet) GetOrientation() gtk.Orientation {
743+
744+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
745+
746+}
747+
748+// Sets the orientation of the @orientable.
749+func (x *Leaflet) SetOrientation(OrientationVar gtk.Orientation) {
750+
751+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
752+
753+}
754+
755+// An auxiliary class used by [class@Leaflet].
756+type LeafletPage struct {
757+ gobject.Object
758+}
759+
760+func LeafletPageNewFromInternalPtr(ptr uintptr) *LeafletPage {
761+ cls := &LeafletPage{}
762+ cls.Ptr = ptr
763+ return cls
764+}
765+
766+var xLeafletPageGetChild func(uintptr) uintptr
767+
768+// Gets the leaflet child to which @self belongs.
769+func (x *LeafletPage) GetChild() *gtk.Widget {
770+
771+ GetChildPtr := xLeafletPageGetChild(x.GoPointer())
772+ if GetChildPtr == 0 {
773+ return nil
774+ }
775+
776+ gobject.IncreaseRef(GetChildPtr)
777+
778+ GetChildCls := &gtk.Widget{}
779+ GetChildCls.Ptr = GetChildPtr
780+ return GetChildCls
781+
782+}
783+
784+var xLeafletPageGetName func(uintptr) string
785+
786+// Gets the name of @self.
787+func (x *LeafletPage) GetName() string {
788+
789+ return xLeafletPageGetName(x.GoPointer())
790+
791+}
792+
793+var xLeafletPageGetNavigatable func(uintptr) bool
794+
795+// Gets whether the child can be navigated to when folded.
796+func (x *LeafletPage) GetNavigatable() bool {
797+
798+ return xLeafletPageGetNavigatable(x.GoPointer())
799+
800+}
801+
802+var xLeafletPageSetName func(uintptr, string)
803+
804+// Sets the name of the @self.
805+func (x *LeafletPage) SetName(NameVar string) {
806+
807+ xLeafletPageSetName(x.GoPointer(), NameVar)
808+
809+}
810+
811+var xLeafletPageSetNavigatable func(uintptr, bool)
812+
813+// Sets whether @self can be navigated to when folded.
814+//
815+// If `FALSE`, the child will be ignored by [method@Leaflet.get_adjacent_child],
816+// [method@Leaflet.navigate], and swipe gestures.
817+//
818+// This can be used used to prevent switching to widgets like separators.
819+func (x *LeafletPage) SetNavigatable(NavigatableVar bool) {
820+
821+ xLeafletPageSetNavigatable(x.GoPointer(), NavigatableVar)
822+
823+}
824+
825+func (c *LeafletPage) GoPointer() uintptr {
826+ return c.Ptr
827+}
828+
829+func (c *LeafletPage) SetGoPointer(ptr uintptr) {
830+ c.Ptr = ptr
831+}
832+
833+func init() {
834+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
835+ if err != nil {
836+ panic(err)
837+ }
838+
839+ core.PuregoSafeRegister(&xNewLeaflet, lib, "adw_leaflet_new")
840+
841+ core.PuregoSafeRegister(&xLeafletAppend, lib, "adw_leaflet_append")
842+ core.PuregoSafeRegister(&xLeafletGetAdjacentChild, lib, "adw_leaflet_get_adjacent_child")
843+ core.PuregoSafeRegister(&xLeafletGetCanNavigateBack, lib, "adw_leaflet_get_can_navigate_back")
844+ core.PuregoSafeRegister(&xLeafletGetCanNavigateForward, lib, "adw_leaflet_get_can_navigate_forward")
845+ core.PuregoSafeRegister(&xLeafletGetCanUnfold, lib, "adw_leaflet_get_can_unfold")
846+ core.PuregoSafeRegister(&xLeafletGetChildByName, lib, "adw_leaflet_get_child_by_name")
847+ core.PuregoSafeRegister(&xLeafletGetChildTransitionParams, lib, "adw_leaflet_get_child_transition_params")
848+ core.PuregoSafeRegister(&xLeafletGetChildTransitionRunning, lib, "adw_leaflet_get_child_transition_running")
849+ core.PuregoSafeRegister(&xLeafletGetFoldThresholdPolicy, lib, "adw_leaflet_get_fold_threshold_policy")
850+ core.PuregoSafeRegister(&xLeafletGetFolded, lib, "adw_leaflet_get_folded")
851+ core.PuregoSafeRegister(&xLeafletGetHomogeneous, lib, "adw_leaflet_get_homogeneous")
852+ core.PuregoSafeRegister(&xLeafletGetModeTransitionDuration, lib, "adw_leaflet_get_mode_transition_duration")
853+ core.PuregoSafeRegister(&xLeafletGetPage, lib, "adw_leaflet_get_page")
854+ core.PuregoSafeRegister(&xLeafletGetPages, lib, "adw_leaflet_get_pages")
855+ core.PuregoSafeRegister(&xLeafletGetTransitionType, lib, "adw_leaflet_get_transition_type")
856+ core.PuregoSafeRegister(&xLeafletGetVisibleChild, lib, "adw_leaflet_get_visible_child")
857+ core.PuregoSafeRegister(&xLeafletGetVisibleChildName, lib, "adw_leaflet_get_visible_child_name")
858+ core.PuregoSafeRegister(&xLeafletInsertChildAfter, lib, "adw_leaflet_insert_child_after")
859+ core.PuregoSafeRegister(&xLeafletNavigate, lib, "adw_leaflet_navigate")
860+ core.PuregoSafeRegister(&xLeafletPrepend, lib, "adw_leaflet_prepend")
861+ core.PuregoSafeRegister(&xLeafletRemove, lib, "adw_leaflet_remove")
862+ core.PuregoSafeRegister(&xLeafletReorderChildAfter, lib, "adw_leaflet_reorder_child_after")
863+ core.PuregoSafeRegister(&xLeafletSetCanNavigateBack, lib, "adw_leaflet_set_can_navigate_back")
864+ core.PuregoSafeRegister(&xLeafletSetCanNavigateForward, lib, "adw_leaflet_set_can_navigate_forward")
865+ core.PuregoSafeRegister(&xLeafletSetCanUnfold, lib, "adw_leaflet_set_can_unfold")
866+ core.PuregoSafeRegister(&xLeafletSetChildTransitionParams, lib, "adw_leaflet_set_child_transition_params")
867+ core.PuregoSafeRegister(&xLeafletSetFoldThresholdPolicy, lib, "adw_leaflet_set_fold_threshold_policy")
868+ core.PuregoSafeRegister(&xLeafletSetHomogeneous, lib, "adw_leaflet_set_homogeneous")
869+ core.PuregoSafeRegister(&xLeafletSetModeTransitionDuration, lib, "adw_leaflet_set_mode_transition_duration")
870+ core.PuregoSafeRegister(&xLeafletSetTransitionType, lib, "adw_leaflet_set_transition_type")
871+ core.PuregoSafeRegister(&xLeafletSetVisibleChild, lib, "adw_leaflet_set_visible_child")
872+ core.PuregoSafeRegister(&xLeafletSetVisibleChildName, lib, "adw_leaflet_set_visible_child_name")
873+
874+ core.PuregoSafeRegister(&xLeafletPageGetChild, lib, "adw_leaflet_page_get_child")
875+ core.PuregoSafeRegister(&xLeafletPageGetName, lib, "adw_leaflet_page_get_name")
876+ core.PuregoSafeRegister(&xLeafletPageGetNavigatable, lib, "adw_leaflet_page_get_navigatable")
877+ core.PuregoSafeRegister(&xLeafletPageSetName, lib, "adw_leaflet_page_set_name")
878+ core.PuregoSafeRegister(&xLeafletPageSetNavigatable, lib, "adw_leaflet_page_set_navigatable")
879+
880+}
A v4/adw/adw-main.go +46 -0
@@ -0,0 +1,46 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+)
8+
9+var xInit func()
10+
11+// Initializes Libadwaita.
12+//
13+// This function can be used instead of [func@Gtk.init] as it initializes GTK
14+// implicitly.
15+//
16+// There's no need to call this function if you're using [class@Application].
17+//
18+// If Libadwaita has already been initialized, the function will simply return.
19+//
20+// This makes sure translations, types, themes, and icons for the Adwaita
21+// library are set up properly.
22+func Init() {
23+
24+ xInit()
25+
26+}
27+
28+var xIsInitialized func() bool
29+
30+// Use this function to check if libadwaita has been initialized with
31+// [func@init].
32+func IsInitialized() bool {
33+
34+ return xIsInitialized()
35+
36+}
37+
38+func init() {
39+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
40+ if err != nil {
41+ panic(err)
42+ }
43+ core.PuregoSafeRegister(&xInit, lib, "adw_init")
44+ core.PuregoSafeRegister(&xIsInitialized, lib, "adw_is_initialized")
45+
46+}
A v4/adw/adw-message-dialog.go +928 -0
@@ -0,0 +1,928 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gio"
9+ "github.com/jwijenbergh/puregotk/v4/gobject"
10+ "github.com/jwijenbergh/puregotk/v4/gsk"
11+ "github.com/jwijenbergh/puregotk/v4/gtk"
12+)
13+
14+type MessageDialogClass struct {
15+ ParentClass uintptr
16+
17+ Padding uintptr
18+}
19+
20+// Describes the possible styles of [class@MessageDialog] response buttons.
21+//
22+// See [method@MessageDialog.set_response_appearance].
23+type ResponseAppearance int
24+
25+const (
26+
27+ // the default appearance.
28+ ResponseDefaultValue ResponseAppearance = 0
29+ // used to denote important responses such as the
30+ // affirmative action.
31+ ResponseSuggestedValue ResponseAppearance = 1
32+ // used to draw attention to the potentially damaging
33+ // consequences of using the response. This appearance acts as a warning to
34+ // the user.
35+ ResponseDestructiveValue ResponseAppearance = 2
36+)
37+
38+// A dialog presenting a message or a question.
39+//
40+// &lt;picture&gt;
41+//
42+// &lt;source srcset="message-dialog-dark.png" media="(prefers-color-scheme: dark)"&gt;
43+// &lt;img src="message-dialog.png" alt="message-dialog"&gt;
44+//
45+// &lt;/picture&gt;
46+//
47+// Message dialogs have a heading, a body, an optional child widget, and one or
48+// multiple responses, each presented as a button.
49+//
50+// Each response has a unique string ID, and a button label. Additionally, each
51+// response can be enabled or disabled, and can have a suggested or destructive
52+// appearance.
53+//
54+// When one of the responses is activated, or the dialog is closed, the
55+// [signal@MessageDialog::response] signal will be emitted. This signal is
56+// detailed, and the detail, as well as the `response` parameter will be set to
57+// the ID of the activated response, or to the value of the
58+// [property@MessageDialog:close-response] property if the dialog had been
59+// closed without activating any of the responses.
60+//
61+// Response buttons can be presented horizontally or vertically depending on
62+// available space.
63+//
64+// When a response is activated, `AdwMessageDialog` is closed automatically.
65+//
66+// An example of using a message dialog:
67+//
68+// ```c
69+// GtkWidget *dialog;
70+//
71+// dialog = adw_message_dialog_new (parent, _("Replace File?"), NULL);
72+//
73+// adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
74+//
75+// _("A file named “%s” already exists. Do you want to replace it?"),
76+// filename);
77+//
78+// adw_message_dialog_add_responses (ADW_MESSAGE_DIALOG (dialog),
79+//
80+// "cancel", _("_Cancel"),
81+// "replace", _("_Replace"),
82+// NULL);
83+//
84+// adw_message_dialog_set_response_appearance (ADW_MESSAGE_DIALOG (dialog), "replace", ADW_RESPONSE_DESTRUCTIVE);
85+//
86+// adw_message_dialog_set_default_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
87+// adw_message_dialog_set_close_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
88+//
89+// g_signal_connect (dialog, "response", G_CALLBACK (response_cb), self);
90+//
91+// gtk_window_present (GTK_WINDOW (dialog));
92+// ```
93+//
94+// ## Async API
95+//
96+// `AdwMessageDialog` can also be used via the [method@MessageDialog.choose]
97+// method. This API follows the GIO async pattern, and the result can be
98+// obtained by calling [method@MessageDialog.choose_finish], for example:
99+//
100+// ```c
101+// static void
102+// dialog_cb (AdwMessageDialog *dialog,
103+//
104+// GAsyncResult *result,
105+// MyWindow *self)
106+//
107+// {
108+// const char *response = adw_message_dialog_choose_finish (dialog, result);
109+//
110+// // ...
111+// }
112+//
113+// static void
114+// show_dialog (MyWindow *self)
115+//
116+// {
117+// GtkWidget *dialog;
118+//
119+// dialog = adw_message_dialog_new (GTK_WINDOW (self), _("Replace File?"), NULL);
120+//
121+// adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
122+// _("A file named “%s” already exists. Do you want to replace it?"),
123+// filename);
124+//
125+// adw_message_dialog_add_responses (ADW_MESSAGE_DIALOG (dialog),
126+// "cancel", _("_Cancel"),
127+// "replace", _("_Replace"),
128+// NULL);
129+//
130+// adw_message_dialog_set_response_appearance (ADW_MESSAGE_DIALOG (dialog), "replace", ADW_RESPONSE_DESTRUCTIVE);
131+//
132+// adw_message_dialog_set_default_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
133+// adw_message_dialog_set_close_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
134+//
135+// adw_message_dialog_choose (ADW_MESSAGE_DIALOG (dialog), NULL, (GAsyncReadyCallback) dialog_cb, self);
136+// }
137+//
138+// ```
139+//
140+// ## AdwMessageDialog as GtkBuildable
141+//
142+// `AdwMessageDialog` supports adding responses in UI definitions by via the
143+// `&lt;responses&gt;` element that may contain multiple `&lt;response&gt;` elements, each
144+// respresenting a response.
145+//
146+// Each of the `&lt;response&gt;` elements must have the `id` attribute specifying the
147+// response ID. The contents of the element are used as the response label.
148+//
149+// Response labels can be translated with the usual `translatable`, `context`
150+// and `comments` attributes.
151+//
152+// The `&lt;response&gt;` elements can also have `enabled` and/or `appearance`
153+// attributes. See [method@MessageDialog.set_response_enabled] and
154+// [method@MessageDialog.set_response_appearance] for details.
155+//
156+// Example of an `AdwMessageDialog` UI definition:
157+//
158+// ```xml
159+// &lt;object class="AdwMessageDialog" id="dialog"&gt;
160+//
161+// &lt;property name="heading" translatable="yes"&gt;Save Changes?&lt;/property&gt;
162+// &lt;property name="body" translatable="yes"&gt;Open documents contain unsaved changes. Changes which are not saved will be permanently lost.&lt;/property&gt;
163+// &lt;property name="default-response"&gt;save&lt;/property&gt;
164+// &lt;property name="close-response"&gt;cancel&lt;/property&gt;
165+// &lt;signal name="response" handler="response_cb"/&gt;
166+// &lt;responses&gt;
167+// &lt;response id="cancel" translatable="yes"&gt;_Cancel&lt;/response&gt;
168+// &lt;response id="discard" translatable="yes" appearance="destructive"&gt;_Discard&lt;/response&gt;
169+// &lt;response id="save" translatable="yes" appearance="suggested" enabled="false"&gt;_Save&lt;/response&gt;
170+// &lt;/responses&gt;
171+//
172+// &lt;/object&gt;
173+// ```
174+//
175+// ## Accessibility
176+//
177+// `AdwMessageDialog` uses the `GTK_ACCESSIBLE_ROLE_DIALOG` role.
178+type MessageDialog struct {
179+ gtk.Window
180+}
181+
182+func MessageDialogNewFromInternalPtr(ptr uintptr) *MessageDialog {
183+ cls := &MessageDialog{}
184+ cls.Ptr = ptr
185+ return cls
186+}
187+
188+var xNewMessageDialog func(uintptr, string, string) uintptr
189+
190+// Creates a new `AdwMessageDialog`.
191+//
192+// @heading and @body can be set to `NULL`. This can be useful if they need to
193+// be formatted or use markup. In that case, set them to `NULL` and call
194+// [method@MessageDialog.format_body] or similar methods afterwards:
195+//
196+// ```c
197+// GtkWidget *dialog;
198+//
199+// dialog = adw_message_dialog_new (parent, _("Replace File?"), NULL);
200+// adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
201+//
202+// _("A file named “%s” already exists. Do you want to replace it?"),
203+// filename);
204+//
205+// ```
206+func NewMessageDialog(ParentVar *gtk.Window, HeadingVar string, BodyVar string) *gtk.Widget {
207+ NewMessageDialogPtr := xNewMessageDialog(ParentVar.GoPointer(), HeadingVar, BodyVar)
208+ if NewMessageDialogPtr == 0 {
209+ return nil
210+ }
211+
212+ gobject.IncreaseRef(NewMessageDialogPtr)
213+
214+ NewMessageDialogCls := &gtk.Widget{}
215+ NewMessageDialogCls.Ptr = NewMessageDialogPtr
216+ return NewMessageDialogCls
217+}
218+
219+var xMessageDialogAddResponse func(uintptr, string, string)
220+
221+// Adds a response with @id and @label to @self.
222+//
223+// Responses are represented as buttons in the dialog.
224+//
225+// Response ID must be unique. It will be used in
226+// [signal@MessageDialog::response] to tell which response had been activated,
227+// as well as to inspect and modify the response later.
228+//
229+// An embedded underline in @label indicates a mnemonic.
230+//
231+// [method@MessageDialog.set_response_label] can be used to change the response
232+// label after it had been added.
233+//
234+// [method@MessageDialog.set_response_enabled] and
235+// [method@MessageDialog.set_response_appearance] can be used to customize the
236+// responses further.
237+func (x *MessageDialog) AddResponse(IdVar string, LabelVar string) {
238+
239+ xMessageDialogAddResponse(x.GoPointer(), IdVar, LabelVar)
240+
241+}
242+
243+var xMessageDialogAddResponses func(uintptr, string, ...interface{})
244+
245+// Adds multiple responses to @self.
246+//
247+// This is the same as calling [method@MessageDialog.add_response] repeatedly.
248+// The variable argument list should be `NULL`-terminated list of response IDs
249+// and labels.
250+//
251+// Example:
252+//
253+// ```c
254+// adw_message_dialog_add_responses (dialog,
255+//
256+// "cancel", _("_Cancel"),
257+// "discard", _("_Discard"),
258+// "save", _("_Save"),
259+// NULL);
260+//
261+// ```
262+func (x *MessageDialog) AddResponses(FirstIdVar string, varArgs ...interface{}) {
263+
264+ xMessageDialogAddResponses(x.GoPointer(), FirstIdVar, varArgs...)
265+
266+}
267+
268+var xMessageDialogChoose func(uintptr, uintptr, uintptr, uintptr)
269+
270+// This function shows @self to the user.
271+//
272+// The @callback will be called when the alert is dismissed. It should call
273+// [method@MessageDialog.choose_finish] to obtain the result.
274+func (x *MessageDialog) Choose(CancellableVar *gio.Cancellable, CallbackVar gio.AsyncReadyCallback, UserDataVar uintptr) {
275+
276+ xMessageDialogChoose(x.GoPointer(), CancellableVar.GoPointer(), purego.NewCallback(CallbackVar), UserDataVar)
277+
278+}
279+
280+var xMessageDialogChooseFinish func(uintptr, uintptr) string
281+
282+// Finishes the [method@MessageDialog.choose] call and returns the response ID.
283+func (x *MessageDialog) ChooseFinish(ResultVar gio.AsyncResult) string {
284+
285+ return xMessageDialogChooseFinish(x.GoPointer(), ResultVar.GoPointer())
286+
287+}
288+
289+var xMessageDialogFormatBody func(uintptr, string, ...interface{})
290+
291+// Sets the formatted body text of @self.
292+//
293+// See [property@MessageDialog:body].
294+func (x *MessageDialog) FormatBody(FormatVar string, varArgs ...interface{}) {
295+
296+ xMessageDialogFormatBody(x.GoPointer(), FormatVar, varArgs...)
297+
298+}
299+
300+var xMessageDialogFormatBodyMarkup func(uintptr, string, ...interface{})
301+
302+// Sets the formatted body text of @self with Pango markup.
303+//
304+// The @format is assumed to contain Pango markup.
305+//
306+// Special XML characters in the `printf()` arguments passed to this function
307+// will automatically be escaped as necessary, see
308+// [func@GLib.markup_printf_escaped].
309+//
310+// See [property@MessageDialog:body].
311+func (x *MessageDialog) FormatBodyMarkup(FormatVar string, varArgs ...interface{}) {
312+
313+ xMessageDialogFormatBodyMarkup(x.GoPointer(), FormatVar, varArgs...)
314+
315+}
316+
317+var xMessageDialogFormatHeading func(uintptr, string, ...interface{})
318+
319+// Sets the formatted heading of @self.
320+//
321+// See [property@MessageDialog:heading].
322+func (x *MessageDialog) FormatHeading(FormatVar string, varArgs ...interface{}) {
323+
324+ xMessageDialogFormatHeading(x.GoPointer(), FormatVar, varArgs...)
325+
326+}
327+
328+var xMessageDialogFormatHeadingMarkup func(uintptr, string, ...interface{})
329+
330+// Sets the formatted heading of @self with Pango markup.
331+//
332+// The @format is assumed to contain Pango markup.
333+//
334+// Special XML characters in the `printf()` arguments passed to this function
335+// will automatically be escaped as necessary, see
336+// [func@GLib.markup_printf_escaped].
337+//
338+// See [property@MessageDialog:heading].
339+func (x *MessageDialog) FormatHeadingMarkup(FormatVar string, varArgs ...interface{}) {
340+
341+ xMessageDialogFormatHeadingMarkup(x.GoPointer(), FormatVar, varArgs...)
342+
343+}
344+
345+var xMessageDialogGetBody func(uintptr) string
346+
347+// Gets the body text of @self.
348+func (x *MessageDialog) GetBody() string {
349+
350+ return xMessageDialogGetBody(x.GoPointer())
351+
352+}
353+
354+var xMessageDialogGetBodyUseMarkup func(uintptr) bool
355+
356+// Gets whether the body text of @self includes Pango markup.
357+func (x *MessageDialog) GetBodyUseMarkup() bool {
358+
359+ return xMessageDialogGetBodyUseMarkup(x.GoPointer())
360+
361+}
362+
363+var xMessageDialogGetCloseResponse func(uintptr) string
364+
365+// Gets the ID of the close response of @self.
366+func (x *MessageDialog) GetCloseResponse() string {
367+
368+ return xMessageDialogGetCloseResponse(x.GoPointer())
369+
370+}
371+
372+var xMessageDialogGetDefaultResponse func(uintptr) string
373+
374+// Gets the ID of the default response of @self.
375+func (x *MessageDialog) GetDefaultResponse() string {
376+
377+ return xMessageDialogGetDefaultResponse(x.GoPointer())
378+
379+}
380+
381+var xMessageDialogGetExtraChild func(uintptr) uintptr
382+
383+// Gets the child widget of @self.
384+func (x *MessageDialog) GetExtraChild() *gtk.Widget {
385+
386+ GetExtraChildPtr := xMessageDialogGetExtraChild(x.GoPointer())
387+ if GetExtraChildPtr == 0 {
388+ return nil
389+ }
390+
391+ gobject.IncreaseRef(GetExtraChildPtr)
392+
393+ GetExtraChildCls := &gtk.Widget{}
394+ GetExtraChildCls.Ptr = GetExtraChildPtr
395+ return GetExtraChildCls
396+
397+}
398+
399+var xMessageDialogGetHeading func(uintptr) string
400+
401+// Gets the heading of @self.
402+func (x *MessageDialog) GetHeading() string {
403+
404+ return xMessageDialogGetHeading(x.GoPointer())
405+
406+}
407+
408+var xMessageDialogGetHeadingUseMarkup func(uintptr) bool
409+
410+// Gets whether the heading of @self includes Pango markup.
411+func (x *MessageDialog) GetHeadingUseMarkup() bool {
412+
413+ return xMessageDialogGetHeadingUseMarkup(x.GoPointer())
414+
415+}
416+
417+var xMessageDialogGetResponseAppearance func(uintptr, string) ResponseAppearance
418+
419+// Gets the appearance of @response.
420+//
421+// See [method@MessageDialog.set_response_appearance].
422+func (x *MessageDialog) GetResponseAppearance(ResponseVar string) ResponseAppearance {
423+
424+ return xMessageDialogGetResponseAppearance(x.GoPointer(), ResponseVar)
425+
426+}
427+
428+var xMessageDialogGetResponseEnabled func(uintptr, string) bool
429+
430+// Gets whether @response is enabled.
431+//
432+// See [method@MessageDialog.set_response_enabled].
433+func (x *MessageDialog) GetResponseEnabled(ResponseVar string) bool {
434+
435+ return xMessageDialogGetResponseEnabled(x.GoPointer(), ResponseVar)
436+
437+}
438+
439+var xMessageDialogGetResponseLabel func(uintptr, string) string
440+
441+// Gets the label of @response.
442+//
443+// See [method@MessageDialog.set_response_label].
444+func (x *MessageDialog) GetResponseLabel(ResponseVar string) string {
445+
446+ return xMessageDialogGetResponseLabel(x.GoPointer(), ResponseVar)
447+
448+}
449+
450+var xMessageDialogHasResponse func(uintptr, string) bool
451+
452+// Gets whether @self has a response with the ID @response.
453+func (x *MessageDialog) HasResponse(ResponseVar string) bool {
454+
455+ return xMessageDialogHasResponse(x.GoPointer(), ResponseVar)
456+
457+}
458+
459+var xMessageDialogResponse func(uintptr, string)
460+
461+// Emits the [signal@MessageDialog::response] signal with the given response ID.
462+//
463+// Used to indicate that the user has responded to the dialog in some way.
464+func (x *MessageDialog) Response(ResponseVar string) {
465+
466+ xMessageDialogResponse(x.GoPointer(), ResponseVar)
467+
468+}
469+
470+var xMessageDialogSetBody func(uintptr, string)
471+
472+// Sets the body text of @self.
473+func (x *MessageDialog) SetBody(BodyVar string) {
474+
475+ xMessageDialogSetBody(x.GoPointer(), BodyVar)
476+
477+}
478+
479+var xMessageDialogSetBodyUseMarkup func(uintptr, bool)
480+
481+// Sets whether the body text of @self includes Pango markup.
482+//
483+// See [func@Pango.parse_markup].
484+func (x *MessageDialog) SetBodyUseMarkup(UseMarkupVar bool) {
485+
486+ xMessageDialogSetBodyUseMarkup(x.GoPointer(), UseMarkupVar)
487+
488+}
489+
490+var xMessageDialogSetCloseResponse func(uintptr, string)
491+
492+// Sets the ID of the close response of @self.
493+//
494+// It will be passed to [signal@MessageDialog::response] if the window is
495+// closed by pressing &lt;kbd&gt;Escape&lt;/kbd&gt; or with a system action.
496+//
497+// It doesn't have to correspond to any of the responses in the dialog.
498+//
499+// The default close response is `close`.
500+func (x *MessageDialog) SetCloseResponse(ResponseVar string) {
501+
502+ xMessageDialogSetCloseResponse(x.GoPointer(), ResponseVar)
503+
504+}
505+
506+var xMessageDialogSetDefaultResponse func(uintptr, string)
507+
508+// Sets the ID of the default response of @self.
509+//
510+// If set, pressing &lt;kbd&gt;Enter&lt;/kbd&gt; will activate the corresponding button.
511+//
512+// If set to `NULL` or to a non-existent response ID, pressing &lt;kbd&gt;Enter&lt;/kbd&gt;
513+// will do nothing.
514+func (x *MessageDialog) SetDefaultResponse(ResponseVar string) {
515+
516+ xMessageDialogSetDefaultResponse(x.GoPointer(), ResponseVar)
517+
518+}
519+
520+var xMessageDialogSetExtraChild func(uintptr, uintptr)
521+
522+// Sets the child widget of @self.
523+//
524+// The child widget is displayed below the heading and body.
525+func (x *MessageDialog) SetExtraChild(ChildVar *gtk.Widget) {
526+
527+ xMessageDialogSetExtraChild(x.GoPointer(), ChildVar.GoPointer())
528+
529+}
530+
531+var xMessageDialogSetHeading func(uintptr, string)
532+
533+// Sets the heading of @self.
534+func (x *MessageDialog) SetHeading(HeadingVar string) {
535+
536+ xMessageDialogSetHeading(x.GoPointer(), HeadingVar)
537+
538+}
539+
540+var xMessageDialogSetHeadingUseMarkup func(uintptr, bool)
541+
542+// Sets whether the heading of @self includes Pango markup.
543+//
544+// See [func@Pango.parse_markup].
545+func (x *MessageDialog) SetHeadingUseMarkup(UseMarkupVar bool) {
546+
547+ xMessageDialogSetHeadingUseMarkup(x.GoPointer(), UseMarkupVar)
548+
549+}
550+
551+var xMessageDialogSetResponseAppearance func(uintptr, string, ResponseAppearance)
552+
553+// Sets the appearance for @response.
554+//
555+// &lt;picture&gt;
556+//
557+// &lt;source srcset="message-dialog-appearance-dark.png" media="(prefers-color-scheme: dark)"&gt;
558+// &lt;img src="message-dialog-appearance.png" alt="message-dialog-appearance"&gt;
559+//
560+// &lt;/picture&gt;
561+//
562+// Use `ADW_RESPONSE_SUGGESTED` to mark important responses such as the
563+// affirmative action, like the Save button in the example.
564+//
565+// Use `ADW_RESPONSE_DESTRUCTIVE` to draw attention to the potentially damaging
566+// consequences of using @response. This appearance acts as a warning to the
567+// user. The Discard button in the example is using this appearance.
568+//
569+// The default appearance is `ADW_RESPONSE_DEFAULT`.
570+//
571+// Negative responses like Cancel or Close should use the default appearance.
572+func (x *MessageDialog) SetResponseAppearance(ResponseVar string, AppearanceVar ResponseAppearance) {
573+
574+ xMessageDialogSetResponseAppearance(x.GoPointer(), ResponseVar, AppearanceVar)
575+
576+}
577+
578+var xMessageDialogSetResponseEnabled func(uintptr, string, bool)
579+
580+// Sets whether @response is enabled.
581+//
582+// If @response is not enabled, the corresponding button will have
583+// [property@Gtk.Widget:sensitive] set to `FALSE` and it can't be activated as
584+// a default response.
585+//
586+// @response can still be used as [property@MessageDialog:close-response] while
587+// it's not enabled.
588+//
589+// Responses are enabled by default.
590+func (x *MessageDialog) SetResponseEnabled(ResponseVar string, EnabledVar bool) {
591+
592+ xMessageDialogSetResponseEnabled(x.GoPointer(), ResponseVar, EnabledVar)
593+
594+}
595+
596+var xMessageDialogSetResponseLabel func(uintptr, string, string)
597+
598+// Sets the label of @response to @label.
599+//
600+// Labels are displayed on the dialog buttons. An embedded underline in @label
601+// indicates a mnemonic.
602+func (x *MessageDialog) SetResponseLabel(ResponseVar string, LabelVar string) {
603+
604+ xMessageDialogSetResponseLabel(x.GoPointer(), ResponseVar, LabelVar)
605+
606+}
607+
608+func (c *MessageDialog) GoPointer() uintptr {
609+ return c.Ptr
610+}
611+
612+func (c *MessageDialog) SetGoPointer(ptr uintptr) {
613+ c.Ptr = ptr
614+}
615+
616+// This signal is emitted when the dialog is closed.
617+//
618+// @response will be set to the response ID of the button that had been
619+// activated.
620+//
621+// if the dialog was closed by pressing &lt;kbd&gt;Escape&lt;/kbd&gt; or with a system
622+// action, @response will be set to the value of
623+// [property@MessageDialog:close-response].
624+func (x *MessageDialog) ConnectResponse(cb func(MessageDialog, string)) {
625+ fcb := func(clsPtr uintptr, ResponseVarp string) {
626+ fa := MessageDialog{}
627+ fa.Ptr = clsPtr
628+
629+ cb(fa, ResponseVarp)
630+
631+ }
632+ gobject.ObjectConnect(x.GoPointer(), "signal::response", purego.NewCallback(fcb))
633+}
634+
635+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
636+func (x *MessageDialog) GetAccessibleRole() gtk.AccessibleRole {
637+
638+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
639+
640+}
641+
642+// Resets the accessible @property to its default value.
643+func (x *MessageDialog) ResetProperty(PropertyVar gtk.AccessibleProperty) {
644+
645+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
646+
647+}
648+
649+// Resets the accessible @relation to its default value.
650+func (x *MessageDialog) ResetRelation(RelationVar gtk.AccessibleRelation) {
651+
652+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
653+
654+}
655+
656+// Resets the accessible @state to its default value.
657+func (x *MessageDialog) ResetState(StateVar gtk.AccessibleState) {
658+
659+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
660+
661+}
662+
663+// Updates a list of accessible properties.
664+//
665+// See the [enum@Gtk.AccessibleProperty] documentation for the
666+// value types of accessible properties.
667+//
668+// This function should be called by `GtkWidget` types whenever
669+// an accessible property change must be communicated to assistive
670+// technologies.
671+//
672+// Example:
673+// ```c
674+// value = gtk_adjustment_get_value (adjustment);
675+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
676+//
677+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
678+// -1);
679+//
680+// ```
681+func (x *MessageDialog) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
682+
683+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
684+
685+}
686+
687+// Updates an array of accessible properties.
688+//
689+// This function should be called by `GtkWidget` types whenever an accessible
690+// property change must be communicated to assistive technologies.
691+//
692+// This function is meant to be used by language bindings.
693+func (x *MessageDialog) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
694+
695+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
696+
697+}
698+
699+// Updates a list of accessible relations.
700+//
701+// This function should be called by `GtkWidget` types whenever an accessible
702+// relation change must be communicated to assistive technologies.
703+//
704+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
705+// you should pass each reference individually, followed by %NULL, e.g.
706+//
707+// ```c
708+// gtk_accessible_update_relation (accessible,
709+//
710+// GTK_ACCESSIBLE_RELATION_CONTROLS,
711+// ref1, NULL,
712+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
713+// ref1, ref2, ref3, NULL,
714+// -1);
715+//
716+// ```
717+func (x *MessageDialog) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
718+
719+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
720+
721+}
722+
723+// Updates an array of accessible relations.
724+//
725+// This function should be called by `GtkWidget` types whenever an accessible
726+// relation change must be communicated to assistive technologies.
727+//
728+// This function is meant to be used by language bindings.
729+func (x *MessageDialog) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
730+
731+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
732+
733+}
734+
735+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
736+// documentation for the value types of accessible states.
737+//
738+// This function should be called by `GtkWidget` types whenever an accessible
739+// state change must be communicated to assistive technologies.
740+//
741+// Example:
742+// ```c
743+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
744+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
745+//
746+// GTK_ACCESSIBLE_STATE_CHECKED, value,
747+// -1);
748+//
749+// ```
750+func (x *MessageDialog) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
751+
752+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
753+
754+}
755+
756+// Updates an array of accessible states.
757+//
758+// This function should be called by `GtkWidget` types whenever an accessible
759+// state change must be communicated to assistive technologies.
760+//
761+// This function is meant to be used by language bindings.
762+func (x *MessageDialog) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
763+
764+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
765+
766+}
767+
768+// Gets the ID of the @buildable object.
769+//
770+// `GtkBuilder` sets the name based on the ID attribute
771+// of the &lt;object&gt; tag used to construct the @buildable.
772+func (x *MessageDialog) GetBuildableId() string {
773+
774+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
775+
776+}
777+
778+// Returns the renderer that is used for this `GtkNative`.
779+func (x *MessageDialog) GetRenderer() *gsk.Renderer {
780+
781+ GetRendererPtr := gtk.XGtkNativeGetRenderer(x.GoPointer())
782+ if GetRendererPtr == 0 {
783+ return nil
784+ }
785+
786+ gobject.IncreaseRef(GetRendererPtr)
787+
788+ GetRendererCls := &gsk.Renderer{}
789+ GetRendererCls.Ptr = GetRendererPtr
790+ return GetRendererCls
791+
792+}
793+
794+// Returns the surface of this `GtkNative`.
795+func (x *MessageDialog) GetSurface() *gdk.Surface {
796+
797+ GetSurfacePtr := gtk.XGtkNativeGetSurface(x.GoPointer())
798+ if GetSurfacePtr == 0 {
799+ return nil
800+ }
801+
802+ gobject.IncreaseRef(GetSurfacePtr)
803+
804+ GetSurfaceCls := &gdk.Surface{}
805+ GetSurfaceCls.Ptr = GetSurfacePtr
806+ return GetSurfaceCls
807+
808+}
809+
810+// Retrieves the surface transform of @self.
811+//
812+// This is the translation from @self's surface coordinates into
813+// @self's widget coordinates.
814+func (x *MessageDialog) GetSurfaceTransform(XVar float64, YVar float64) {
815+
816+ gtk.XGtkNativeGetSurfaceTransform(x.GoPointer(), XVar, YVar)
817+
818+}
819+
820+// Realizes a `GtkNative`.
821+//
822+// This should only be used by subclasses.
823+func (x *MessageDialog) Realize() {
824+
825+ gtk.XGtkNativeRealize(x.GoPointer())
826+
827+}
828+
829+// Unrealizes a `GtkNative`.
830+//
831+// This should only be used by subclasses.
832+func (x *MessageDialog) Unrealize() {
833+
834+ gtk.XGtkNativeUnrealize(x.GoPointer())
835+
836+}
837+
838+// Returns the display that this `GtkRoot` is on.
839+func (x *MessageDialog) GetDisplay() *gdk.Display {
840+
841+ GetDisplayPtr := gtk.XGtkRootGetDisplay(x.GoPointer())
842+ if GetDisplayPtr == 0 {
843+ return nil
844+ }
845+
846+ gobject.IncreaseRef(GetDisplayPtr)
847+
848+ GetDisplayCls := &gdk.Display{}
849+ GetDisplayCls.Ptr = GetDisplayPtr
850+ return GetDisplayCls
851+
852+}
853+
854+// Retrieves the current focused widget within the root.
855+//
856+// Note that this is the widget that would have the focus
857+// if the root is active; if the root is not focused then
858+// `gtk_widget_has_focus (widget)` will be %FALSE for the
859+// widget.
860+func (x *MessageDialog) GetFocus() *gtk.Widget {
861+
862+ GetFocusPtr := gtk.XGtkRootGetFocus(x.GoPointer())
863+ if GetFocusPtr == 0 {
864+ return nil
865+ }
866+
867+ gobject.IncreaseRef(GetFocusPtr)
868+
869+ GetFocusCls := &gtk.Widget{}
870+ GetFocusCls.Ptr = GetFocusPtr
871+ return GetFocusCls
872+
873+}
874+
875+// If @focus is not the current focus widget, and is focusable, sets
876+// it as the focus widget for the root.
877+//
878+// If @focus is %NULL, unsets the focus widget for the root.
879+//
880+// To set the focus to a particular widget in the root, it is usually
881+// more convenient to use [method@Gtk.Widget.grab_focus] instead of
882+// this function.
883+func (x *MessageDialog) SetFocus(FocusVar *gtk.Widget) {
884+
885+ gtk.XGtkRootSetFocus(x.GoPointer(), FocusVar.GoPointer())
886+
887+}
888+
889+func init() {
890+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
891+ if err != nil {
892+ panic(err)
893+ }
894+
895+ core.PuregoSafeRegister(&xNewMessageDialog, lib, "adw_message_dialog_new")
896+
897+ core.PuregoSafeRegister(&xMessageDialogAddResponse, lib, "adw_message_dialog_add_response")
898+ core.PuregoSafeRegister(&xMessageDialogAddResponses, lib, "adw_message_dialog_add_responses")
899+ core.PuregoSafeRegister(&xMessageDialogChoose, lib, "adw_message_dialog_choose")
900+ core.PuregoSafeRegister(&xMessageDialogChooseFinish, lib, "adw_message_dialog_choose_finish")
901+ core.PuregoSafeRegister(&xMessageDialogFormatBody, lib, "adw_message_dialog_format_body")
902+ core.PuregoSafeRegister(&xMessageDialogFormatBodyMarkup, lib, "adw_message_dialog_format_body_markup")
903+ core.PuregoSafeRegister(&xMessageDialogFormatHeading, lib, "adw_message_dialog_format_heading")
904+ core.PuregoSafeRegister(&xMessageDialogFormatHeadingMarkup, lib, "adw_message_dialog_format_heading_markup")
905+ core.PuregoSafeRegister(&xMessageDialogGetBody, lib, "adw_message_dialog_get_body")
906+ core.PuregoSafeRegister(&xMessageDialogGetBodyUseMarkup, lib, "adw_message_dialog_get_body_use_markup")
907+ core.PuregoSafeRegister(&xMessageDialogGetCloseResponse, lib, "adw_message_dialog_get_close_response")
908+ core.PuregoSafeRegister(&xMessageDialogGetDefaultResponse, lib, "adw_message_dialog_get_default_response")
909+ core.PuregoSafeRegister(&xMessageDialogGetExtraChild, lib, "adw_message_dialog_get_extra_child")
910+ core.PuregoSafeRegister(&xMessageDialogGetHeading, lib, "adw_message_dialog_get_heading")
911+ core.PuregoSafeRegister(&xMessageDialogGetHeadingUseMarkup, lib, "adw_message_dialog_get_heading_use_markup")
912+ core.PuregoSafeRegister(&xMessageDialogGetResponseAppearance, lib, "adw_message_dialog_get_response_appearance")
913+ core.PuregoSafeRegister(&xMessageDialogGetResponseEnabled, lib, "adw_message_dialog_get_response_enabled")
914+ core.PuregoSafeRegister(&xMessageDialogGetResponseLabel, lib, "adw_message_dialog_get_response_label")
915+ core.PuregoSafeRegister(&xMessageDialogHasResponse, lib, "adw_message_dialog_has_response")
916+ core.PuregoSafeRegister(&xMessageDialogResponse, lib, "adw_message_dialog_response")
917+ core.PuregoSafeRegister(&xMessageDialogSetBody, lib, "adw_message_dialog_set_body")
918+ core.PuregoSafeRegister(&xMessageDialogSetBodyUseMarkup, lib, "adw_message_dialog_set_body_use_markup")
919+ core.PuregoSafeRegister(&xMessageDialogSetCloseResponse, lib, "adw_message_dialog_set_close_response")
920+ core.PuregoSafeRegister(&xMessageDialogSetDefaultResponse, lib, "adw_message_dialog_set_default_response")
921+ core.PuregoSafeRegister(&xMessageDialogSetExtraChild, lib, "adw_message_dialog_set_extra_child")
922+ core.PuregoSafeRegister(&xMessageDialogSetHeading, lib, "adw_message_dialog_set_heading")
923+ core.PuregoSafeRegister(&xMessageDialogSetHeadingUseMarkup, lib, "adw_message_dialog_set_heading_use_markup")
924+ core.PuregoSafeRegister(&xMessageDialogSetResponseAppearance, lib, "adw_message_dialog_set_response_appearance")
925+ core.PuregoSafeRegister(&xMessageDialogSetResponseEnabled, lib, "adw_message_dialog_set_response_enabled")
926+ core.PuregoSafeRegister(&xMessageDialogSetResponseLabel, lib, "adw_message_dialog_set_response_label")
927+
928+}
A v4/adw/adw-navigation-direction.go +13 -0
@@ -0,0 +1,13 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+// Describes the direction of a swipe navigation gesture.
5+type NavigationDirection int
6+
7+const (
8+
9+ // Corresponds to start or top, depending on orientation and text direction
10+ NavigationDirectionBackValue NavigationDirection = 0
11+ // Corresponds to end or bottom, depending on orientation and text direction
12+ NavigationDirectionForwardValue NavigationDirection = 1
13+)
A v4/adw/adw-password-entry-row.go +548 -0
@@ -0,0 +1,548 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type PasswordEntryRowClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A [class@EntryRow] tailored for entering secrets.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="password-entry-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="password-entry-row.png" alt="password-entry-row"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// It does not show its contents in clear text, does not allow to copy it to the
26+// clipboard, and shows a warning when Caps Lock is engaged. If the underlying
27+// platform allows it, `AdwPasswordEntryRow` will also place the text in a
28+// non-pageable memory area, to avoid it being written out to disk by the
29+// operating system.
30+//
31+// It offer a way to reveal the contents in clear text.
32+//
33+// ## CSS Nodes
34+//
35+// `AdwPasswordEntryRow` has a single CSS node with name `row` that carries
36+// `.entry` and `.password` style classes.
37+type PasswordEntryRow struct {
38+ EntryRow
39+}
40+
41+func PasswordEntryRowNewFromInternalPtr(ptr uintptr) *PasswordEntryRow {
42+ cls := &PasswordEntryRow{}
43+ cls.Ptr = ptr
44+ return cls
45+}
46+
47+var xNewPasswordEntryRow func() uintptr
48+
49+// Creates a new `AdwPasswordEntryRow`.
50+func NewPasswordEntryRow() *gtk.Widget {
51+ NewPasswordEntryRowPtr := xNewPasswordEntryRow()
52+ if NewPasswordEntryRowPtr == 0 {
53+ return nil
54+ }
55+
56+ gobject.IncreaseRef(NewPasswordEntryRowPtr)
57+
58+ NewPasswordEntryRowCls := &gtk.Widget{}
59+ NewPasswordEntryRowCls.Ptr = NewPasswordEntryRowPtr
60+ return NewPasswordEntryRowCls
61+}
62+
63+func (c *PasswordEntryRow) GoPointer() uintptr {
64+ return c.Ptr
65+}
66+
67+func (c *PasswordEntryRow) SetGoPointer(ptr uintptr) {
68+ c.Ptr = ptr
69+}
70+
71+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
72+func (x *PasswordEntryRow) GetAccessibleRole() gtk.AccessibleRole {
73+
74+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
75+
76+}
77+
78+// Resets the accessible @property to its default value.
79+func (x *PasswordEntryRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
80+
81+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
82+
83+}
84+
85+// Resets the accessible @relation to its default value.
86+func (x *PasswordEntryRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
87+
88+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
89+
90+}
91+
92+// Resets the accessible @state to its default value.
93+func (x *PasswordEntryRow) ResetState(StateVar gtk.AccessibleState) {
94+
95+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
96+
97+}
98+
99+// Updates a list of accessible properties.
100+//
101+// See the [enum@Gtk.AccessibleProperty] documentation for the
102+// value types of accessible properties.
103+//
104+// This function should be called by `GtkWidget` types whenever
105+// an accessible property change must be communicated to assistive
106+// technologies.
107+//
108+// Example:
109+// ```c
110+// value = gtk_adjustment_get_value (adjustment);
111+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
112+//
113+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
114+// -1);
115+//
116+// ```
117+func (x *PasswordEntryRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
118+
119+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
120+
121+}
122+
123+// Updates an array of accessible properties.
124+//
125+// This function should be called by `GtkWidget` types whenever an accessible
126+// property change must be communicated to assistive technologies.
127+//
128+// This function is meant to be used by language bindings.
129+func (x *PasswordEntryRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
130+
131+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
132+
133+}
134+
135+// Updates a list of accessible relations.
136+//
137+// This function should be called by `GtkWidget` types whenever an accessible
138+// relation change must be communicated to assistive technologies.
139+//
140+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
141+// you should pass each reference individually, followed by %NULL, e.g.
142+//
143+// ```c
144+// gtk_accessible_update_relation (accessible,
145+//
146+// GTK_ACCESSIBLE_RELATION_CONTROLS,
147+// ref1, NULL,
148+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
149+// ref1, ref2, ref3, NULL,
150+// -1);
151+//
152+// ```
153+func (x *PasswordEntryRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
154+
155+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
156+
157+}
158+
159+// Updates an array of accessible relations.
160+//
161+// This function should be called by `GtkWidget` types whenever an accessible
162+// relation change must be communicated to assistive technologies.
163+//
164+// This function is meant to be used by language bindings.
165+func (x *PasswordEntryRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
166+
167+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
168+
169+}
170+
171+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
172+// documentation for the value types of accessible states.
173+//
174+// This function should be called by `GtkWidget` types whenever an accessible
175+// state change must be communicated to assistive technologies.
176+//
177+// Example:
178+// ```c
179+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
180+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
181+//
182+// GTK_ACCESSIBLE_STATE_CHECKED, value,
183+// -1);
184+//
185+// ```
186+func (x *PasswordEntryRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
187+
188+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
189+
190+}
191+
192+// Updates an array of accessible states.
193+//
194+// This function should be called by `GtkWidget` types whenever an accessible
195+// state change must be communicated to assistive technologies.
196+//
197+// This function is meant to be used by language bindings.
198+func (x *PasswordEntryRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
199+
200+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
201+
202+}
203+
204+// Gets the action name for @actionable.
205+func (x *PasswordEntryRow) GetActionName() string {
206+
207+ return gtk.XGtkActionableGetActionName(x.GoPointer())
208+
209+}
210+
211+// Gets the current target value of @actionable.
212+func (x *PasswordEntryRow) GetActionTargetValue() *glib.Variant {
213+
214+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
215+
216+}
217+
218+// Specifies the name of the action with which this widget should be
219+// associated.
220+//
221+// If @action_name is %NULL then the widget will be unassociated from
222+// any previous action.
223+//
224+// Usually this function is used when the widget is located (or will be
225+// located) within the hierarchy of a `GtkApplicationWindow`.
226+//
227+// Names are of the form “win.save” or “app.quit” for actions on the
228+// containing [class@ApplicationWindow] or its associated [class@Application],
229+// respectively. This is the same form used for actions in the [class@Gio.Menu]
230+// associated with the window.
231+func (x *PasswordEntryRow) SetActionName(ActionNameVar string) {
232+
233+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
234+
235+}
236+
237+// Sets the target of an actionable widget.
238+//
239+// This is a convenience function that calls [ctor@GLib.Variant.new] for
240+// @format_string and uses the result to call
241+// [method@Gtk.Actionable.set_action_target_value].
242+//
243+// If you are setting a string-valued target and want to set
244+// the action name at the same time, you can use
245+// [method@Gtk.Actionable.set_detailed_action_name].
246+func (x *PasswordEntryRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
247+
248+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
249+
250+}
251+
252+// Sets the target value of an actionable widget.
253+//
254+// If @target_value is %NULL then the target value is unset.
255+//
256+// The target value has two purposes. First, it is used as the parameter
257+// to activation of the action associated with the `GtkActionable` widget.
258+// Second, it is used to determine if the widget should be rendered as
259+// “active” — the widget is active if the state is equal to the given target.
260+//
261+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
262+// with string state in a typical “radio button” situation. Each button
263+// will be associated with the same action, but with a different target
264+// value for that action. Clicking on a particular button will activate
265+// the action with the target of that button, which will typically cause
266+// the action’s state to change to that value. Since the action’s state
267+// is now equal to the target value of the button, the button will now
268+// be rendered as active (and the other buttons, with different targets,
269+// rendered inactive).
270+func (x *PasswordEntryRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
271+
272+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
273+
274+}
275+
276+// Sets the action-name and associated string target value of an
277+// actionable widget.
278+//
279+// @detailed_action_name is a string in the format accepted by
280+// [func@Gio.Action.parse_detailed_name].
281+func (x *PasswordEntryRow) SetDetailedActionName(DetailedActionNameVar string) {
282+
283+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
284+
285+}
286+
287+// Gets the ID of the @buildable object.
288+//
289+// `GtkBuilder` sets the name based on the ID attribute
290+// of the &lt;object&gt; tag used to construct the @buildable.
291+func (x *PasswordEntryRow) GetBuildableId() string {
292+
293+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
294+
295+}
296+
297+// Deletes the currently selected text of the editable.
298+//
299+// This call doesn’t do anything if there is no selected text.
300+func (x *PasswordEntryRow) DeleteSelection() {
301+
302+ gtk.XGtkEditableDeleteSelection(x.GoPointer())
303+
304+}
305+
306+// Deletes a sequence of characters.
307+//
308+// The characters that are deleted are those characters at positions
309+// from @start_pos up to, but not including @end_pos. If @end_pos is
310+// negative, then the characters deleted are those from @start_pos to
311+// the end of the text.
312+//
313+// Note that the positions are specified in characters, not bytes.
314+func (x *PasswordEntryRow) DeleteText(StartPosVar int32, EndPosVar int32) {
315+
316+ gtk.XGtkEditableDeleteText(x.GoPointer(), StartPosVar, EndPosVar)
317+
318+}
319+
320+// Undoes the setup done by [method@Gtk.Editable.init_delegate].
321+//
322+// This is a helper function that should be called from dispose,
323+// before removing the delegate object.
324+func (x *PasswordEntryRow) FinishDelegate() {
325+
326+ gtk.XGtkEditableFinishDelegate(x.GoPointer())
327+
328+}
329+
330+// Gets the alignment of the editable.
331+func (x *PasswordEntryRow) GetAlignment() float32 {
332+
333+ return gtk.XGtkEditableGetAlignment(x.GoPointer())
334+
335+}
336+
337+// Retrieves a sequence of characters.
338+//
339+// The characters that are retrieved are those characters at positions
340+// from @start_pos up to, but not including @end_pos. If @end_pos is negative,
341+// then the characters retrieved are those characters from @start_pos to
342+// the end of the text.
343+//
344+// Note that positions are specified in characters, not bytes.
345+func (x *PasswordEntryRow) GetChars(StartPosVar int32, EndPosVar int32) string {
346+
347+ return gtk.XGtkEditableGetChars(x.GoPointer(), StartPosVar, EndPosVar)
348+
349+}
350+
351+// Gets the `GtkEditable` that @editable is delegating its
352+// implementation to.
353+//
354+// Typically, the delegate is a [class@Gtk.Text] widget.
355+func (x *PasswordEntryRow) GetDelegate() *gtk.EditableBase {
356+
357+ GetDelegatePtr := gtk.XGtkEditableGetDelegate(x.GoPointer())
358+ if GetDelegatePtr == 0 {
359+ return nil
360+ }
361+
362+ gobject.IncreaseRef(GetDelegatePtr)
363+
364+ GetDelegateCls := &gtk.EditableBase{}
365+ GetDelegateCls.Ptr = GetDelegatePtr
366+ return GetDelegateCls
367+
368+}
369+
370+// Retrieves whether @editable is editable.
371+func (x *PasswordEntryRow) GetEditable() bool {
372+
373+ return gtk.XGtkEditableGetEditable(x.GoPointer())
374+
375+}
376+
377+// Gets if undo/redo actions are enabled for @editable
378+func (x *PasswordEntryRow) GetEnableUndo() bool {
379+
380+ return gtk.XGtkEditableGetEnableUndo(x.GoPointer())
381+
382+}
383+
384+// Retrieves the desired maximum width of @editable, in characters.
385+func (x *PasswordEntryRow) GetMaxWidthChars() int32 {
386+
387+ return gtk.XGtkEditableGetMaxWidthChars(x.GoPointer())
388+
389+}
390+
391+// Retrieves the current position of the cursor relative
392+// to the start of the content of the editable.
393+//
394+// Note that this position is in characters, not in bytes.
395+func (x *PasswordEntryRow) GetPosition() int32 {
396+
397+ return gtk.XGtkEditableGetPosition(x.GoPointer())
398+
399+}
400+
401+// Retrieves the selection bound of the editable.
402+//
403+// @start_pos will be filled with the start of the selection and
404+// @end_pos with end. If no text was selected both will be identical
405+// and %FALSE will be returned.
406+//
407+// Note that positions are specified in characters, not bytes.
408+func (x *PasswordEntryRow) GetSelectionBounds(StartPosVar int32, EndPosVar int32) bool {
409+
410+ return gtk.XGtkEditableGetSelectionBounds(x.GoPointer(), StartPosVar, EndPosVar)
411+
412+}
413+
414+// Retrieves the contents of @editable.
415+//
416+// The returned string is owned by GTK and must not be modified or freed.
417+func (x *PasswordEntryRow) GetText() string {
418+
419+ return gtk.XGtkEditableGetText(x.GoPointer())
420+
421+}
422+
423+// Gets the number of characters of space reserved
424+// for the contents of the editable.
425+func (x *PasswordEntryRow) GetWidthChars() int32 {
426+
427+ return gtk.XGtkEditableGetWidthChars(x.GoPointer())
428+
429+}
430+
431+// Sets up a delegate for `GtkEditable`.
432+//
433+// This is assuming that the get_delegate vfunc in the `GtkEditable`
434+// interface has been set up for the @editable's type.
435+//
436+// This is a helper function that should be called in instance init,
437+// after creating the delegate object.
438+func (x *PasswordEntryRow) InitDelegate() {
439+
440+ gtk.XGtkEditableInitDelegate(x.GoPointer())
441+
442+}
443+
444+// Inserts @length bytes of @text into the contents of the
445+// widget, at position @position.
446+//
447+// Note that the position is in characters, not in bytes.
448+// The function updates @position to point after the newly
449+// inserted text.
450+func (x *PasswordEntryRow) InsertText(TextVar string, LengthVar int32, PositionVar int32) {
451+
452+ gtk.XGtkEditableInsertText(x.GoPointer(), TextVar, LengthVar, PositionVar)
453+
454+}
455+
456+// Selects a region of text.
457+//
458+// The characters that are selected are those characters at positions
459+// from @start_pos up to, but not including @end_pos. If @end_pos is
460+// negative, then the characters selected are those characters from
461+// @start_pos to the end of the text.
462+//
463+// Note that positions are specified in characters, not bytes.
464+func (x *PasswordEntryRow) SelectRegion(StartPosVar int32, EndPosVar int32) {
465+
466+ gtk.XGtkEditableSelectRegion(x.GoPointer(), StartPosVar, EndPosVar)
467+
468+}
469+
470+// Sets the alignment for the contents of the editable.
471+//
472+// This controls the horizontal positioning of the contents when
473+// the displayed text is shorter than the width of the editable.
474+func (x *PasswordEntryRow) SetAlignment(XalignVar float32) {
475+
476+ gtk.XGtkEditableSetAlignment(x.GoPointer(), XalignVar)
477+
478+}
479+
480+// Determines if the user can edit the text in the editable widget.
481+func (x *PasswordEntryRow) SetEditable(IsEditableVar bool) {
482+
483+ gtk.XGtkEditableSetEditable(x.GoPointer(), IsEditableVar)
484+
485+}
486+
487+// If enabled, changes to @editable will be saved for undo/redo
488+// actions.
489+//
490+// This results in an additional copy of text changes and are not
491+// stored in secure memory. As such, undo is forcefully disabled
492+// when [property@Gtk.Text:visibility] is set to %FALSE.
493+func (x *PasswordEntryRow) SetEnableUndo(EnableUndoVar bool) {
494+
495+ gtk.XGtkEditableSetEnableUndo(x.GoPointer(), EnableUndoVar)
496+
497+}
498+
499+// Sets the desired maximum width in characters of @editable.
500+func (x *PasswordEntryRow) SetMaxWidthChars(NCharsVar int32) {
501+
502+ gtk.XGtkEditableSetMaxWidthChars(x.GoPointer(), NCharsVar)
503+
504+}
505+
506+// Sets the cursor position in the editable to the given value.
507+//
508+// The cursor is displayed before the character with the given (base 0)
509+// index in the contents of the editable. The value must be less than
510+// or equal to the number of characters in the editable. A value of -1
511+// indicates that the position should be set after the last character
512+// of the editable. Note that @position is in characters, not in bytes.
513+func (x *PasswordEntryRow) SetPosition(PositionVar int32) {
514+
515+ gtk.XGtkEditableSetPosition(x.GoPointer(), PositionVar)
516+
517+}
518+
519+// Sets the text in the editable to the given value.
520+//
521+// This is replacing the current contents.
522+func (x *PasswordEntryRow) SetText(TextVar string) {
523+
524+ gtk.XGtkEditableSetText(x.GoPointer(), TextVar)
525+
526+}
527+
528+// Changes the size request of the editable to be about the
529+// right size for @n_chars characters.
530+//
531+// Note that it changes the size request, the size can still
532+// be affected by how you pack the widget into containers.
533+// If @n_chars is -1, the size reverts to the default size.
534+func (x *PasswordEntryRow) SetWidthChars(NCharsVar int32) {
535+
536+ gtk.XGtkEditableSetWidthChars(x.GoPointer(), NCharsVar)
537+
538+}
539+
540+func init() {
541+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
542+ if err != nil {
543+ panic(err)
544+ }
545+
546+ core.PuregoSafeRegister(&xNewPasswordEntryRow, lib, "adw_password_entry_row_new")
547+
548+}
A v4/adw/adw-preferences-group.go +329 -0
@@ -0,0 +1,329 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type PreferencesGroupClass struct {
12+ ParentClass uintptr
13+
14+ Padding uintptr
15+}
16+
17+// A group of preference rows.
18+//
19+// &lt;picture&gt;
20+//
21+// &lt;source srcset="preferences-group-dark.png" media="(prefers-color-scheme: dark)"&gt;
22+// &lt;img src="preferences-group.png" alt="preferences-group"&gt;
23+//
24+// &lt;/picture&gt;
25+//
26+// An `AdwPreferencesGroup` represents a group or tightly related preferences,
27+// which in turn are represented by [class@PreferencesRow].
28+//
29+// To summarize the role of the preferences it gathers, a group can have both a
30+// title and a description. The title will be used by [class@PreferencesWindow]
31+// to let the user look for a preference.
32+//
33+// ## AdwPreferencesGroup as GtkBuildable
34+//
35+// The `AdwPreferencesGroup` implementation of the [iface@Gtk.Buildable] interface
36+// supports adding [class@PreferencesRow]s to the list by omitting "type". If "type"
37+// is omitted and the widget isn't a [class@PreferencesRow] the child is added to
38+// a box below the list.
39+//
40+// When the "type" attribute of a child is `header-suffix`, the child
41+// is set as the suffix on the end of the title and description.
42+//
43+// ## CSS nodes
44+//
45+// `AdwPreferencesGroup` has a single CSS node with name `preferencesgroup`.
46+//
47+// ## Accessibility
48+//
49+// `AdwPreferencesGroup` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
50+type PreferencesGroup struct {
51+ gtk.Widget
52+}
53+
54+func PreferencesGroupNewFromInternalPtr(ptr uintptr) *PreferencesGroup {
55+ cls := &PreferencesGroup{}
56+ cls.Ptr = ptr
57+ return cls
58+}
59+
60+var xNewPreferencesGroup func() uintptr
61+
62+// Creates a new `AdwPreferencesGroup`.
63+func NewPreferencesGroup() *gtk.Widget {
64+ NewPreferencesGroupPtr := xNewPreferencesGroup()
65+ if NewPreferencesGroupPtr == 0 {
66+ return nil
67+ }
68+
69+ gobject.IncreaseRef(NewPreferencesGroupPtr)
70+
71+ NewPreferencesGroupCls := &gtk.Widget{}
72+ NewPreferencesGroupCls.Ptr = NewPreferencesGroupPtr
73+ return NewPreferencesGroupCls
74+}
75+
76+var xPreferencesGroupAdd func(uintptr, uintptr)
77+
78+// Adds a child to @self.
79+func (x *PreferencesGroup) Add(ChildVar *gtk.Widget) {
80+
81+ xPreferencesGroupAdd(x.GoPointer(), ChildVar.GoPointer())
82+
83+}
84+
85+var xPreferencesGroupGetDescription func(uintptr) string
86+
87+// Gets the description of @self.
88+func (x *PreferencesGroup) GetDescription() string {
89+
90+ return xPreferencesGroupGetDescription(x.GoPointer())
91+
92+}
93+
94+var xPreferencesGroupGetHeaderSuffix func(uintptr) uintptr
95+
96+// Gets the suffix for @self's header.
97+func (x *PreferencesGroup) GetHeaderSuffix() *gtk.Widget {
98+
99+ GetHeaderSuffixPtr := xPreferencesGroupGetHeaderSuffix(x.GoPointer())
100+ if GetHeaderSuffixPtr == 0 {
101+ return nil
102+ }
103+
104+ gobject.IncreaseRef(GetHeaderSuffixPtr)
105+
106+ GetHeaderSuffixCls := &gtk.Widget{}
107+ GetHeaderSuffixCls.Ptr = GetHeaderSuffixPtr
108+ return GetHeaderSuffixCls
109+
110+}
111+
112+var xPreferencesGroupGetTitle func(uintptr) string
113+
114+// Gets the title of @self.
115+func (x *PreferencesGroup) GetTitle() string {
116+
117+ return xPreferencesGroupGetTitle(x.GoPointer())
118+
119+}
120+
121+var xPreferencesGroupRemove func(uintptr, uintptr)
122+
123+// Removes a child from @self.
124+func (x *PreferencesGroup) Remove(ChildVar *gtk.Widget) {
125+
126+ xPreferencesGroupRemove(x.GoPointer(), ChildVar.GoPointer())
127+
128+}
129+
130+var xPreferencesGroupSetDescription func(uintptr, string)
131+
132+// Sets the description for @self.
133+func (x *PreferencesGroup) SetDescription(DescriptionVar string) {
134+
135+ xPreferencesGroupSetDescription(x.GoPointer(), DescriptionVar)
136+
137+}
138+
139+var xPreferencesGroupSetHeaderSuffix func(uintptr, uintptr)
140+
141+// Sets the suffix for @self's header.
142+//
143+// Displayed above the list, next to the title and description.
144+//
145+// Suffixes are commonly used to show a button or a spinner for the whole group.
146+func (x *PreferencesGroup) SetHeaderSuffix(SuffixVar *gtk.Widget) {
147+
148+ xPreferencesGroupSetHeaderSuffix(x.GoPointer(), SuffixVar.GoPointer())
149+
150+}
151+
152+var xPreferencesGroupSetTitle func(uintptr, string)
153+
154+// Sets the title for @self.
155+func (x *PreferencesGroup) SetTitle(TitleVar string) {
156+
157+ xPreferencesGroupSetTitle(x.GoPointer(), TitleVar)
158+
159+}
160+
161+func (c *PreferencesGroup) GoPointer() uintptr {
162+ return c.Ptr
163+}
164+
165+func (c *PreferencesGroup) SetGoPointer(ptr uintptr) {
166+ c.Ptr = ptr
167+}
168+
169+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
170+func (x *PreferencesGroup) GetAccessibleRole() gtk.AccessibleRole {
171+
172+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
173+
174+}
175+
176+// Resets the accessible @property to its default value.
177+func (x *PreferencesGroup) ResetProperty(PropertyVar gtk.AccessibleProperty) {
178+
179+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
180+
181+}
182+
183+// Resets the accessible @relation to its default value.
184+func (x *PreferencesGroup) ResetRelation(RelationVar gtk.AccessibleRelation) {
185+
186+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
187+
188+}
189+
190+// Resets the accessible @state to its default value.
191+func (x *PreferencesGroup) ResetState(StateVar gtk.AccessibleState) {
192+
193+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
194+
195+}
196+
197+// Updates a list of accessible properties.
198+//
199+// See the [enum@Gtk.AccessibleProperty] documentation for the
200+// value types of accessible properties.
201+//
202+// This function should be called by `GtkWidget` types whenever
203+// an accessible property change must be communicated to assistive
204+// technologies.
205+//
206+// Example:
207+// ```c
208+// value = gtk_adjustment_get_value (adjustment);
209+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
210+//
211+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
212+// -1);
213+//
214+// ```
215+func (x *PreferencesGroup) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
216+
217+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
218+
219+}
220+
221+// Updates an array of accessible properties.
222+//
223+// This function should be called by `GtkWidget` types whenever an accessible
224+// property change must be communicated to assistive technologies.
225+//
226+// This function is meant to be used by language bindings.
227+func (x *PreferencesGroup) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
228+
229+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
230+
231+}
232+
233+// Updates a list of accessible relations.
234+//
235+// This function should be called by `GtkWidget` types whenever an accessible
236+// relation change must be communicated to assistive technologies.
237+//
238+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
239+// you should pass each reference individually, followed by %NULL, e.g.
240+//
241+// ```c
242+// gtk_accessible_update_relation (accessible,
243+//
244+// GTK_ACCESSIBLE_RELATION_CONTROLS,
245+// ref1, NULL,
246+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
247+// ref1, ref2, ref3, NULL,
248+// -1);
249+//
250+// ```
251+func (x *PreferencesGroup) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
252+
253+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
254+
255+}
256+
257+// Updates an array of accessible relations.
258+//
259+// This function should be called by `GtkWidget` types whenever an accessible
260+// relation change must be communicated to assistive technologies.
261+//
262+// This function is meant to be used by language bindings.
263+func (x *PreferencesGroup) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
264+
265+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
266+
267+}
268+
269+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
270+// documentation for the value types of accessible states.
271+//
272+// This function should be called by `GtkWidget` types whenever an accessible
273+// state change must be communicated to assistive technologies.
274+//
275+// Example:
276+// ```c
277+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
278+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
279+//
280+// GTK_ACCESSIBLE_STATE_CHECKED, value,
281+// -1);
282+//
283+// ```
284+func (x *PreferencesGroup) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
285+
286+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
287+
288+}
289+
290+// Updates an array of accessible states.
291+//
292+// This function should be called by `GtkWidget` types whenever an accessible
293+// state change must be communicated to assistive technologies.
294+//
295+// This function is meant to be used by language bindings.
296+func (x *PreferencesGroup) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
297+
298+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
299+
300+}
301+
302+// Gets the ID of the @buildable object.
303+//
304+// `GtkBuilder` sets the name based on the ID attribute
305+// of the &lt;object&gt; tag used to construct the @buildable.
306+func (x *PreferencesGroup) GetBuildableId() string {
307+
308+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
309+
310+}
311+
312+func init() {
313+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
314+ if err != nil {
315+ panic(err)
316+ }
317+
318+ core.PuregoSafeRegister(&xNewPreferencesGroup, lib, "adw_preferences_group_new")
319+
320+ core.PuregoSafeRegister(&xPreferencesGroupAdd, lib, "adw_preferences_group_add")
321+ core.PuregoSafeRegister(&xPreferencesGroupGetDescription, lib, "adw_preferences_group_get_description")
322+ core.PuregoSafeRegister(&xPreferencesGroupGetHeaderSuffix, lib, "adw_preferences_group_get_header_suffix")
323+ core.PuregoSafeRegister(&xPreferencesGroupGetTitle, lib, "adw_preferences_group_get_title")
324+ core.PuregoSafeRegister(&xPreferencesGroupRemove, lib, "adw_preferences_group_remove")
325+ core.PuregoSafeRegister(&xPreferencesGroupSetDescription, lib, "adw_preferences_group_set_description")
326+ core.PuregoSafeRegister(&xPreferencesGroupSetHeaderSuffix, lib, "adw_preferences_group_set_header_suffix")
327+ core.PuregoSafeRegister(&xPreferencesGroupSetTitle, lib, "adw_preferences_group_set_title")
328+
329+}
A v4/adw/adw-preferences-page.go +332 -0
@@ -0,0 +1,332 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type PreferencesPageClass struct {
12+ ParentClass uintptr
13+
14+ Padding uintptr
15+}
16+
17+// A page from [class@PreferencesWindow].
18+//
19+// &lt;picture&gt;
20+//
21+// &lt;source srcset="preferences-page-dark.png" media="(prefers-color-scheme: dark)"&gt;
22+// &lt;img src="preferences-page.png" alt="preferences-page"&gt;
23+//
24+// &lt;/picture&gt;
25+//
26+// The `AdwPreferencesPage` widget gathers preferences groups into a single page
27+// of a preferences window.
28+//
29+// ## CSS nodes
30+//
31+// `AdwPreferencesPage` has a single CSS node with name `preferencespage`.
32+//
33+// ## Accessibility
34+//
35+// `AdwPreferencesPage` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
36+type PreferencesPage struct {
37+ gtk.Widget
38+}
39+
40+func PreferencesPageNewFromInternalPtr(ptr uintptr) *PreferencesPage {
41+ cls := &PreferencesPage{}
42+ cls.Ptr = ptr
43+ return cls
44+}
45+
46+var xNewPreferencesPage func() uintptr
47+
48+// Creates a new `AdwPreferencesPage`.
49+func NewPreferencesPage() *gtk.Widget {
50+ NewPreferencesPagePtr := xNewPreferencesPage()
51+ if NewPreferencesPagePtr == 0 {
52+ return nil
53+ }
54+
55+ gobject.IncreaseRef(NewPreferencesPagePtr)
56+
57+ NewPreferencesPageCls := &gtk.Widget{}
58+ NewPreferencesPageCls.Ptr = NewPreferencesPagePtr
59+ return NewPreferencesPageCls
60+}
61+
62+var xPreferencesPageAdd func(uintptr, uintptr)
63+
64+// Adds a preferences group to @self.
65+func (x *PreferencesPage) Add(GroupVar *PreferencesGroup) {
66+
67+ xPreferencesPageAdd(x.GoPointer(), GroupVar.GoPointer())
68+
69+}
70+
71+var xPreferencesPageGetIconName func(uintptr) string
72+
73+// Gets the icon name for @self.
74+func (x *PreferencesPage) GetIconName() string {
75+
76+ return xPreferencesPageGetIconName(x.GoPointer())
77+
78+}
79+
80+var xPreferencesPageGetName func(uintptr) string
81+
82+// Gets the name of @self.
83+func (x *PreferencesPage) GetName() string {
84+
85+ return xPreferencesPageGetName(x.GoPointer())
86+
87+}
88+
89+var xPreferencesPageGetTitle func(uintptr) string
90+
91+// Gets the title of @self.
92+func (x *PreferencesPage) GetTitle() string {
93+
94+ return xPreferencesPageGetTitle(x.GoPointer())
95+
96+}
97+
98+var xPreferencesPageGetUseUnderline func(uintptr) bool
99+
100+// Gets whether an embedded underline in the title indicates a mnemonic.
101+func (x *PreferencesPage) GetUseUnderline() bool {
102+
103+ return xPreferencesPageGetUseUnderline(x.GoPointer())
104+
105+}
106+
107+var xPreferencesPageRemove func(uintptr, uintptr)
108+
109+// Removes a group from @self.
110+func (x *PreferencesPage) Remove(GroupVar *PreferencesGroup) {
111+
112+ xPreferencesPageRemove(x.GoPointer(), GroupVar.GoPointer())
113+
114+}
115+
116+var xPreferencesPageScrollToTop func(uintptr)
117+
118+// Scrolls the scrolled window of @self to the top.
119+func (x *PreferencesPage) ScrollToTop() {
120+
121+ xPreferencesPageScrollToTop(x.GoPointer())
122+
123+}
124+
125+var xPreferencesPageSetIconName func(uintptr, string)
126+
127+// Sets the icon name for @self.
128+func (x *PreferencesPage) SetIconName(IconNameVar string) {
129+
130+ xPreferencesPageSetIconName(x.GoPointer(), IconNameVar)
131+
132+}
133+
134+var xPreferencesPageSetName func(uintptr, string)
135+
136+// Sets the name of @self.
137+func (x *PreferencesPage) SetName(NameVar string) {
138+
139+ xPreferencesPageSetName(x.GoPointer(), NameVar)
140+
141+}
142+
143+var xPreferencesPageSetTitle func(uintptr, string)
144+
145+// Sets the title of @self.
146+func (x *PreferencesPage) SetTitle(TitleVar string) {
147+
148+ xPreferencesPageSetTitle(x.GoPointer(), TitleVar)
149+
150+}
151+
152+var xPreferencesPageSetUseUnderline func(uintptr, bool)
153+
154+// Sets whether an embedded underline in the title indicates a mnemonic.
155+func (x *PreferencesPage) SetUseUnderline(UseUnderlineVar bool) {
156+
157+ xPreferencesPageSetUseUnderline(x.GoPointer(), UseUnderlineVar)
158+
159+}
160+
161+func (c *PreferencesPage) GoPointer() uintptr {
162+ return c.Ptr
163+}
164+
165+func (c *PreferencesPage) SetGoPointer(ptr uintptr) {
166+ c.Ptr = ptr
167+}
168+
169+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
170+func (x *PreferencesPage) GetAccessibleRole() gtk.AccessibleRole {
171+
172+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
173+
174+}
175+
176+// Resets the accessible @property to its default value.
177+func (x *PreferencesPage) ResetProperty(PropertyVar gtk.AccessibleProperty) {
178+
179+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
180+
181+}
182+
183+// Resets the accessible @relation to its default value.
184+func (x *PreferencesPage) ResetRelation(RelationVar gtk.AccessibleRelation) {
185+
186+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
187+
188+}
189+
190+// Resets the accessible @state to its default value.
191+func (x *PreferencesPage) ResetState(StateVar gtk.AccessibleState) {
192+
193+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
194+
195+}
196+
197+// Updates a list of accessible properties.
198+//
199+// See the [enum@Gtk.AccessibleProperty] documentation for the
200+// value types of accessible properties.
201+//
202+// This function should be called by `GtkWidget` types whenever
203+// an accessible property change must be communicated to assistive
204+// technologies.
205+//
206+// Example:
207+// ```c
208+// value = gtk_adjustment_get_value (adjustment);
209+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
210+//
211+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
212+// -1);
213+//
214+// ```
215+func (x *PreferencesPage) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
216+
217+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
218+
219+}
220+
221+// Updates an array of accessible properties.
222+//
223+// This function should be called by `GtkWidget` types whenever an accessible
224+// property change must be communicated to assistive technologies.
225+//
226+// This function is meant to be used by language bindings.
227+func (x *PreferencesPage) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
228+
229+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
230+
231+}
232+
233+// Updates a list of accessible relations.
234+//
235+// This function should be called by `GtkWidget` types whenever an accessible
236+// relation change must be communicated to assistive technologies.
237+//
238+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
239+// you should pass each reference individually, followed by %NULL, e.g.
240+//
241+// ```c
242+// gtk_accessible_update_relation (accessible,
243+//
244+// GTK_ACCESSIBLE_RELATION_CONTROLS,
245+// ref1, NULL,
246+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
247+// ref1, ref2, ref3, NULL,
248+// -1);
249+//
250+// ```
251+func (x *PreferencesPage) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
252+
253+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
254+
255+}
256+
257+// Updates an array of accessible relations.
258+//
259+// This function should be called by `GtkWidget` types whenever an accessible
260+// relation change must be communicated to assistive technologies.
261+//
262+// This function is meant to be used by language bindings.
263+func (x *PreferencesPage) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
264+
265+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
266+
267+}
268+
269+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
270+// documentation for the value types of accessible states.
271+//
272+// This function should be called by `GtkWidget` types whenever an accessible
273+// state change must be communicated to assistive technologies.
274+//
275+// Example:
276+// ```c
277+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
278+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
279+//
280+// GTK_ACCESSIBLE_STATE_CHECKED, value,
281+// -1);
282+//
283+// ```
284+func (x *PreferencesPage) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
285+
286+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
287+
288+}
289+
290+// Updates an array of accessible states.
291+//
292+// This function should be called by `GtkWidget` types whenever an accessible
293+// state change must be communicated to assistive technologies.
294+//
295+// This function is meant to be used by language bindings.
296+func (x *PreferencesPage) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
297+
298+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
299+
300+}
301+
302+// Gets the ID of the @buildable object.
303+//
304+// `GtkBuilder` sets the name based on the ID attribute
305+// of the &lt;object&gt; tag used to construct the @buildable.
306+func (x *PreferencesPage) GetBuildableId() string {
307+
308+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
309+
310+}
311+
312+func init() {
313+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
314+ if err != nil {
315+ panic(err)
316+ }
317+
318+ core.PuregoSafeRegister(&xNewPreferencesPage, lib, "adw_preferences_page_new")
319+
320+ core.PuregoSafeRegister(&xPreferencesPageAdd, lib, "adw_preferences_page_add")
321+ core.PuregoSafeRegister(&xPreferencesPageGetIconName, lib, "adw_preferences_page_get_icon_name")
322+ core.PuregoSafeRegister(&xPreferencesPageGetName, lib, "adw_preferences_page_get_name")
323+ core.PuregoSafeRegister(&xPreferencesPageGetTitle, lib, "adw_preferences_page_get_title")
324+ core.PuregoSafeRegister(&xPreferencesPageGetUseUnderline, lib, "adw_preferences_page_get_use_underline")
325+ core.PuregoSafeRegister(&xPreferencesPageRemove, lib, "adw_preferences_page_remove")
326+ core.PuregoSafeRegister(&xPreferencesPageScrollToTop, lib, "adw_preferences_page_scroll_to_top")
327+ core.PuregoSafeRegister(&xPreferencesPageSetIconName, lib, "adw_preferences_page_set_icon_name")
328+ core.PuregoSafeRegister(&xPreferencesPageSetName, lib, "adw_preferences_page_set_name")
329+ core.PuregoSafeRegister(&xPreferencesPageSetTitle, lib, "adw_preferences_page_set_title")
330+ core.PuregoSafeRegister(&xPreferencesPageSetUseUnderline, lib, "adw_preferences_page_set_use_underline")
331+
332+}
A v4/adw/adw-preferences-row.go +385 -0
@@ -0,0 +1,385 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type PreferencesRowClass struct {
13+ ParentClass uintptr
14+
15+ Padding uintptr
16+}
17+
18+// A [class@Gtk.ListBoxRow] used to present preferences.
19+//
20+// The `AdwPreferencesRow` widget has a title that [class@PreferencesWindow]
21+// will use to let the user look for a preference. It doesn't present the title
22+// in any way and lets you present the preference as you please.
23+//
24+// [class@ActionRow] and its derivatives are convenient to use as preference
25+// rows as they take care of presenting the preference's title while letting you
26+// compose the inputs of the preference around it.
27+type PreferencesRow struct {
28+ gtk.ListBoxRow
29+}
30+
31+func PreferencesRowNewFromInternalPtr(ptr uintptr) *PreferencesRow {
32+ cls := &PreferencesRow{}
33+ cls.Ptr = ptr
34+ return cls
35+}
36+
37+var xNewPreferencesRow func() uintptr
38+
39+// Creates a new `AdwPreferencesRow`.
40+func NewPreferencesRow() *gtk.Widget {
41+ NewPreferencesRowPtr := xNewPreferencesRow()
42+ if NewPreferencesRowPtr == 0 {
43+ return nil
44+ }
45+
46+ gobject.IncreaseRef(NewPreferencesRowPtr)
47+
48+ NewPreferencesRowCls := &gtk.Widget{}
49+ NewPreferencesRowCls.Ptr = NewPreferencesRowPtr
50+ return NewPreferencesRowCls
51+}
52+
53+var xPreferencesRowGetTitle func(uintptr) string
54+
55+// Gets the title of the preference represented by @self.
56+func (x *PreferencesRow) GetTitle() string {
57+
58+ return xPreferencesRowGetTitle(x.GoPointer())
59+
60+}
61+
62+var xPreferencesRowGetTitleSelectable func(uintptr) bool
63+
64+// Gets whether the user can copy the title from the label
65+func (x *PreferencesRow) GetTitleSelectable() bool {
66+
67+ return xPreferencesRowGetTitleSelectable(x.GoPointer())
68+
69+}
70+
71+var xPreferencesRowGetUseMarkup func(uintptr) bool
72+
73+// Gets whether to use Pango markup for the title label.
74+func (x *PreferencesRow) GetUseMarkup() bool {
75+
76+ return xPreferencesRowGetUseMarkup(x.GoPointer())
77+
78+}
79+
80+var xPreferencesRowGetUseUnderline func(uintptr) bool
81+
82+// Gets whether an embedded underline in the title indicates a mnemonic.
83+func (x *PreferencesRow) GetUseUnderline() bool {
84+
85+ return xPreferencesRowGetUseUnderline(x.GoPointer())
86+
87+}
88+
89+var xPreferencesRowSetTitle func(uintptr, string)
90+
91+// Sets the title of the preference represented by @self.
92+//
93+// The title is interpreted as Pango markup unless
94+// [property@PreferencesRow:use-markup] is set to `FALSE`.
95+func (x *PreferencesRow) SetTitle(TitleVar string) {
96+
97+ xPreferencesRowSetTitle(x.GoPointer(), TitleVar)
98+
99+}
100+
101+var xPreferencesRowSetTitleSelectable func(uintptr, bool)
102+
103+// Sets whether the user can copy the title from the label
104+//
105+// See also [property@Gtk.Label:selectable].
106+func (x *PreferencesRow) SetTitleSelectable(TitleSelectableVar bool) {
107+
108+ xPreferencesRowSetTitleSelectable(x.GoPointer(), TitleSelectableVar)
109+
110+}
111+
112+var xPreferencesRowSetUseMarkup func(uintptr, bool)
113+
114+// Sets whether to use Pango markup for the title label.
115+//
116+// Subclasses may also use it for other labels, such as subtitle.
117+//
118+// See also [func@Pango.parse_markup].
119+func (x *PreferencesRow) SetUseMarkup(UseMarkupVar bool) {
120+
121+ xPreferencesRowSetUseMarkup(x.GoPointer(), UseMarkupVar)
122+
123+}
124+
125+var xPreferencesRowSetUseUnderline func(uintptr, bool)
126+
127+// Sets whether an embedded underline in the title indicates a mnemonic.
128+func (x *PreferencesRow) SetUseUnderline(UseUnderlineVar bool) {
129+
130+ xPreferencesRowSetUseUnderline(x.GoPointer(), UseUnderlineVar)
131+
132+}
133+
134+func (c *PreferencesRow) GoPointer() uintptr {
135+ return c.Ptr
136+}
137+
138+func (c *PreferencesRow) SetGoPointer(ptr uintptr) {
139+ c.Ptr = ptr
140+}
141+
142+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
143+func (x *PreferencesRow) GetAccessibleRole() gtk.AccessibleRole {
144+
145+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
146+
147+}
148+
149+// Resets the accessible @property to its default value.
150+func (x *PreferencesRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
151+
152+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
153+
154+}
155+
156+// Resets the accessible @relation to its default value.
157+func (x *PreferencesRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
158+
159+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
160+
161+}
162+
163+// Resets the accessible @state to its default value.
164+func (x *PreferencesRow) ResetState(StateVar gtk.AccessibleState) {
165+
166+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
167+
168+}
169+
170+// Updates a list of accessible properties.
171+//
172+// See the [enum@Gtk.AccessibleProperty] documentation for the
173+// value types of accessible properties.
174+//
175+// This function should be called by `GtkWidget` types whenever
176+// an accessible property change must be communicated to assistive
177+// technologies.
178+//
179+// Example:
180+// ```c
181+// value = gtk_adjustment_get_value (adjustment);
182+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
183+//
184+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
185+// -1);
186+//
187+// ```
188+func (x *PreferencesRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
189+
190+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
191+
192+}
193+
194+// Updates an array of accessible properties.
195+//
196+// This function should be called by `GtkWidget` types whenever an accessible
197+// property change must be communicated to assistive technologies.
198+//
199+// This function is meant to be used by language bindings.
200+func (x *PreferencesRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
201+
202+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
203+
204+}
205+
206+// Updates a list of accessible relations.
207+//
208+// This function should be called by `GtkWidget` types whenever an accessible
209+// relation change must be communicated to assistive technologies.
210+//
211+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
212+// you should pass each reference individually, followed by %NULL, e.g.
213+//
214+// ```c
215+// gtk_accessible_update_relation (accessible,
216+//
217+// GTK_ACCESSIBLE_RELATION_CONTROLS,
218+// ref1, NULL,
219+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
220+// ref1, ref2, ref3, NULL,
221+// -1);
222+//
223+// ```
224+func (x *PreferencesRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
225+
226+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
227+
228+}
229+
230+// Updates an array of accessible relations.
231+//
232+// This function should be called by `GtkWidget` types whenever an accessible
233+// relation change must be communicated to assistive technologies.
234+//
235+// This function is meant to be used by language bindings.
236+func (x *PreferencesRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
237+
238+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
239+
240+}
241+
242+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
243+// documentation for the value types of accessible states.
244+//
245+// This function should be called by `GtkWidget` types whenever an accessible
246+// state change must be communicated to assistive technologies.
247+//
248+// Example:
249+// ```c
250+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
251+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
252+//
253+// GTK_ACCESSIBLE_STATE_CHECKED, value,
254+// -1);
255+//
256+// ```
257+func (x *PreferencesRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
258+
259+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
260+
261+}
262+
263+// Updates an array of accessible states.
264+//
265+// This function should be called by `GtkWidget` types whenever an accessible
266+// state change must be communicated to assistive technologies.
267+//
268+// This function is meant to be used by language bindings.
269+func (x *PreferencesRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
270+
271+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
272+
273+}
274+
275+// Gets the action name for @actionable.
276+func (x *PreferencesRow) GetActionName() string {
277+
278+ return gtk.XGtkActionableGetActionName(x.GoPointer())
279+
280+}
281+
282+// Gets the current target value of @actionable.
283+func (x *PreferencesRow) GetActionTargetValue() *glib.Variant {
284+
285+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
286+
287+}
288+
289+// Specifies the name of the action with which this widget should be
290+// associated.
291+//
292+// If @action_name is %NULL then the widget will be unassociated from
293+// any previous action.
294+//
295+// Usually this function is used when the widget is located (or will be
296+// located) within the hierarchy of a `GtkApplicationWindow`.
297+//
298+// Names are of the form “win.save” or “app.quit” for actions on the
299+// containing [class@ApplicationWindow] or its associated [class@Application],
300+// respectively. This is the same form used for actions in the [class@Gio.Menu]
301+// associated with the window.
302+func (x *PreferencesRow) SetActionName(ActionNameVar string) {
303+
304+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
305+
306+}
307+
308+// Sets the target of an actionable widget.
309+//
310+// This is a convenience function that calls [ctor@GLib.Variant.new] for
311+// @format_string and uses the result to call
312+// [method@Gtk.Actionable.set_action_target_value].
313+//
314+// If you are setting a string-valued target and want to set
315+// the action name at the same time, you can use
316+// [method@Gtk.Actionable.set_detailed_action_name].
317+func (x *PreferencesRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
318+
319+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
320+
321+}
322+
323+// Sets the target value of an actionable widget.
324+//
325+// If @target_value is %NULL then the target value is unset.
326+//
327+// The target value has two purposes. First, it is used as the parameter
328+// to activation of the action associated with the `GtkActionable` widget.
329+// Second, it is used to determine if the widget should be rendered as
330+// “active” — the widget is active if the state is equal to the given target.
331+//
332+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
333+// with string state in a typical “radio button” situation. Each button
334+// will be associated with the same action, but with a different target
335+// value for that action. Clicking on a particular button will activate
336+// the action with the target of that button, which will typically cause
337+// the action’s state to change to that value. Since the action’s state
338+// is now equal to the target value of the button, the button will now
339+// be rendered as active (and the other buttons, with different targets,
340+// rendered inactive).
341+func (x *PreferencesRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
342+
343+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
344+
345+}
346+
347+// Sets the action-name and associated string target value of an
348+// actionable widget.
349+//
350+// @detailed_action_name is a string in the format accepted by
351+// [func@Gio.Action.parse_detailed_name].
352+func (x *PreferencesRow) SetDetailedActionName(DetailedActionNameVar string) {
353+
354+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
355+
356+}
357+
358+// Gets the ID of the @buildable object.
359+//
360+// `GtkBuilder` sets the name based on the ID attribute
361+// of the &lt;object&gt; tag used to construct the @buildable.
362+func (x *PreferencesRow) GetBuildableId() string {
363+
364+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
365+
366+}
367+
368+func init() {
369+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
370+ if err != nil {
371+ panic(err)
372+ }
373+
374+ core.PuregoSafeRegister(&xNewPreferencesRow, lib, "adw_preferences_row_new")
375+
376+ core.PuregoSafeRegister(&xPreferencesRowGetTitle, lib, "adw_preferences_row_get_title")
377+ core.PuregoSafeRegister(&xPreferencesRowGetTitleSelectable, lib, "adw_preferences_row_get_title_selectable")
378+ core.PuregoSafeRegister(&xPreferencesRowGetUseMarkup, lib, "adw_preferences_row_get_use_markup")
379+ core.PuregoSafeRegister(&xPreferencesRowGetUseUnderline, lib, "adw_preferences_row_get_use_underline")
380+ core.PuregoSafeRegister(&xPreferencesRowSetTitle, lib, "adw_preferences_row_set_title")
381+ core.PuregoSafeRegister(&xPreferencesRowSetTitleSelectable, lib, "adw_preferences_row_set_title_selectable")
382+ core.PuregoSafeRegister(&xPreferencesRowSetUseMarkup, lib, "adw_preferences_row_set_use_markup")
383+ core.PuregoSafeRegister(&xPreferencesRowSetUseUnderline, lib, "adw_preferences_row_set_use_underline")
384+
385+}
A v4/adw/adw-preferences-window.go +491 -0
@@ -0,0 +1,491 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gsk"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type PreferencesWindowClass struct {
14+ ParentClass uintptr
15+
16+ Padding uintptr
17+}
18+
19+// A window to present an application's preferences.
20+//
21+// &lt;picture&gt;
22+//
23+// &lt;source srcset="preferences-window-dark.png" media="(prefers-color-scheme: dark)"&gt;
24+// &lt;img src="preferences-window.png" alt="preferences-window"&gt;
25+//
26+// &lt;/picture&gt;
27+//
28+// The `AdwPreferencesWindow` widget presents an application's preferences
29+// gathered into pages and groups. The preferences are searchable by the user.
30+//
31+// ## CSS nodes
32+//
33+// `AdwPreferencesWindow` has a main CSS node with the name `window` and the
34+// style class `.preferences`.
35+type PreferencesWindow struct {
36+ Window
37+}
38+
39+func PreferencesWindowNewFromInternalPtr(ptr uintptr) *PreferencesWindow {
40+ cls := &PreferencesWindow{}
41+ cls.Ptr = ptr
42+ return cls
43+}
44+
45+var xNewPreferencesWindow func() uintptr
46+
47+// Creates a new `AdwPreferencesWindow`.
48+func NewPreferencesWindow() *gtk.Widget {
49+ NewPreferencesWindowPtr := xNewPreferencesWindow()
50+ if NewPreferencesWindowPtr == 0 {
51+ return nil
52+ }
53+
54+ gobject.IncreaseRef(NewPreferencesWindowPtr)
55+
56+ NewPreferencesWindowCls := &gtk.Widget{}
57+ NewPreferencesWindowCls.Ptr = NewPreferencesWindowPtr
58+ return NewPreferencesWindowCls
59+}
60+
61+var xPreferencesWindowAdd func(uintptr, uintptr)
62+
63+// Adds a preferences page to @self.
64+func (x *PreferencesWindow) Add(PageVar *PreferencesPage) {
65+
66+ xPreferencesWindowAdd(x.GoPointer(), PageVar.GoPointer())
67+
68+}
69+
70+var xPreferencesWindowAddToast func(uintptr, uintptr)
71+
72+// Displays @toast.
73+//
74+// See [method@ToastOverlay.add_toast].
75+func (x *PreferencesWindow) AddToast(ToastVar *Toast) {
76+
77+ xPreferencesWindowAddToast(x.GoPointer(), ToastVar.GoPointer())
78+
79+}
80+
81+var xPreferencesWindowCloseSubpage func(uintptr)
82+
83+// Closes the current subpage.
84+//
85+// If there is no presented subpage, this does nothing.
86+func (x *PreferencesWindow) CloseSubpage() {
87+
88+ xPreferencesWindowCloseSubpage(x.GoPointer())
89+
90+}
91+
92+var xPreferencesWindowGetCanNavigateBack func(uintptr) bool
93+
94+// Gets whether gestures and shortcuts for closing subpages are enabled.
95+func (x *PreferencesWindow) GetCanNavigateBack() bool {
96+
97+ return xPreferencesWindowGetCanNavigateBack(x.GoPointer())
98+
99+}
100+
101+var xPreferencesWindowGetSearchEnabled func(uintptr) bool
102+
103+// Gets whether search is enabled for @self.
104+func (x *PreferencesWindow) GetSearchEnabled() bool {
105+
106+ return xPreferencesWindowGetSearchEnabled(x.GoPointer())
107+
108+}
109+
110+var xPreferencesWindowGetVisiblePage func(uintptr) uintptr
111+
112+// Gets the currently visible page of @self.
113+func (x *PreferencesWindow) GetVisiblePage() *PreferencesPage {
114+
115+ GetVisiblePagePtr := xPreferencesWindowGetVisiblePage(x.GoPointer())
116+ if GetVisiblePagePtr == 0 {
117+ return nil
118+ }
119+
120+ gobject.IncreaseRef(GetVisiblePagePtr)
121+
122+ GetVisiblePageCls := &PreferencesPage{}
123+ GetVisiblePageCls.Ptr = GetVisiblePagePtr
124+ return GetVisiblePageCls
125+
126+}
127+
128+var xPreferencesWindowGetVisiblePageName func(uintptr) string
129+
130+// Gets the name of currently visible page of @self.
131+func (x *PreferencesWindow) GetVisiblePageName() string {
132+
133+ return xPreferencesWindowGetVisiblePageName(x.GoPointer())
134+
135+}
136+
137+var xPreferencesWindowPresentSubpage func(uintptr, uintptr)
138+
139+// Sets @subpage as the window's subpage and opens it.
140+//
141+// The transition can be cancelled by the user, in which case visible child will
142+// change back to the previously visible child.
143+func (x *PreferencesWindow) PresentSubpage(SubpageVar *gtk.Widget) {
144+
145+ xPreferencesWindowPresentSubpage(x.GoPointer(), SubpageVar.GoPointer())
146+
147+}
148+
149+var xPreferencesWindowRemove func(uintptr, uintptr)
150+
151+// Removes a page from @self.
152+func (x *PreferencesWindow) Remove(PageVar *PreferencesPage) {
153+
154+ xPreferencesWindowRemove(x.GoPointer(), PageVar.GoPointer())
155+
156+}
157+
158+var xPreferencesWindowSetCanNavigateBack func(uintptr, bool)
159+
160+// Sets whether gestures and shortcuts for closing subpages are enabled.
161+//
162+// The supported gestures are:
163+//
164+// - One-finger swipe on touchscreens
165+// - Horizontal scrolling on touchpads (usually two-finger swipe)
166+// - Back mouse button
167+//
168+// The keyboard back key is also supported, as well as the
169+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;←&lt;/kbd&gt; shortcut.
170+//
171+// For right-to-left locales, gestures and shortcuts are reversed.
172+func (x *PreferencesWindow) SetCanNavigateBack(CanNavigateBackVar bool) {
173+
174+ xPreferencesWindowSetCanNavigateBack(x.GoPointer(), CanNavigateBackVar)
175+
176+}
177+
178+var xPreferencesWindowSetSearchEnabled func(uintptr, bool)
179+
180+// Sets whether search is enabled for @self.
181+func (x *PreferencesWindow) SetSearchEnabled(SearchEnabledVar bool) {
182+
183+ xPreferencesWindowSetSearchEnabled(x.GoPointer(), SearchEnabledVar)
184+
185+}
186+
187+var xPreferencesWindowSetVisiblePage func(uintptr, uintptr)
188+
189+// Makes @page the visible page of @self.
190+func (x *PreferencesWindow) SetVisiblePage(PageVar *PreferencesPage) {
191+
192+ xPreferencesWindowSetVisiblePage(x.GoPointer(), PageVar.GoPointer())
193+
194+}
195+
196+var xPreferencesWindowSetVisiblePageName func(uintptr, string)
197+
198+// Makes the page with the given name visible.
199+//
200+// See [property@ViewStack:visible-child].
201+func (x *PreferencesWindow) SetVisiblePageName(NameVar string) {
202+
203+ xPreferencesWindowSetVisiblePageName(x.GoPointer(), NameVar)
204+
205+}
206+
207+func (c *PreferencesWindow) GoPointer() uintptr {
208+ return c.Ptr
209+}
210+
211+func (c *PreferencesWindow) SetGoPointer(ptr uintptr) {
212+ c.Ptr = ptr
213+}
214+
215+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
216+func (x *PreferencesWindow) GetAccessibleRole() gtk.AccessibleRole {
217+
218+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
219+
220+}
221+
222+// Resets the accessible @property to its default value.
223+func (x *PreferencesWindow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
224+
225+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
226+
227+}
228+
229+// Resets the accessible @relation to its default value.
230+func (x *PreferencesWindow) ResetRelation(RelationVar gtk.AccessibleRelation) {
231+
232+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
233+
234+}
235+
236+// Resets the accessible @state to its default value.
237+func (x *PreferencesWindow) ResetState(StateVar gtk.AccessibleState) {
238+
239+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
240+
241+}
242+
243+// Updates a list of accessible properties.
244+//
245+// See the [enum@Gtk.AccessibleProperty] documentation for the
246+// value types of accessible properties.
247+//
248+// This function should be called by `GtkWidget` types whenever
249+// an accessible property change must be communicated to assistive
250+// technologies.
251+//
252+// Example:
253+// ```c
254+// value = gtk_adjustment_get_value (adjustment);
255+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
256+//
257+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
258+// -1);
259+//
260+// ```
261+func (x *PreferencesWindow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
262+
263+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
264+
265+}
266+
267+// Updates an array of accessible properties.
268+//
269+// This function should be called by `GtkWidget` types whenever an accessible
270+// property change must be communicated to assistive technologies.
271+//
272+// This function is meant to be used by language bindings.
273+func (x *PreferencesWindow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
274+
275+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
276+
277+}
278+
279+// Updates a list of accessible relations.
280+//
281+// This function should be called by `GtkWidget` types whenever an accessible
282+// relation change must be communicated to assistive technologies.
283+//
284+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
285+// you should pass each reference individually, followed by %NULL, e.g.
286+//
287+// ```c
288+// gtk_accessible_update_relation (accessible,
289+//
290+// GTK_ACCESSIBLE_RELATION_CONTROLS,
291+// ref1, NULL,
292+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
293+// ref1, ref2, ref3, NULL,
294+// -1);
295+//
296+// ```
297+func (x *PreferencesWindow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
298+
299+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
300+
301+}
302+
303+// Updates an array of accessible relations.
304+//
305+// This function should be called by `GtkWidget` types whenever an accessible
306+// relation change must be communicated to assistive technologies.
307+//
308+// This function is meant to be used by language bindings.
309+func (x *PreferencesWindow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
310+
311+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
312+
313+}
314+
315+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
316+// documentation for the value types of accessible states.
317+//
318+// This function should be called by `GtkWidget` types whenever an accessible
319+// state change must be communicated to assistive technologies.
320+//
321+// Example:
322+// ```c
323+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
324+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
325+//
326+// GTK_ACCESSIBLE_STATE_CHECKED, value,
327+// -1);
328+//
329+// ```
330+func (x *PreferencesWindow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
331+
332+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
333+
334+}
335+
336+// Updates an array of accessible states.
337+//
338+// This function should be called by `GtkWidget` types whenever an accessible
339+// state change must be communicated to assistive technologies.
340+//
341+// This function is meant to be used by language bindings.
342+func (x *PreferencesWindow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
343+
344+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
345+
346+}
347+
348+// Gets the ID of the @buildable object.
349+//
350+// `GtkBuilder` sets the name based on the ID attribute
351+// of the &lt;object&gt; tag used to construct the @buildable.
352+func (x *PreferencesWindow) GetBuildableId() string {
353+
354+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
355+
356+}
357+
358+// Returns the renderer that is used for this `GtkNative`.
359+func (x *PreferencesWindow) GetRenderer() *gsk.Renderer {
360+
361+ GetRendererPtr := gtk.XGtkNativeGetRenderer(x.GoPointer())
362+ if GetRendererPtr == 0 {
363+ return nil
364+ }
365+
366+ gobject.IncreaseRef(GetRendererPtr)
367+
368+ GetRendererCls := &gsk.Renderer{}
369+ GetRendererCls.Ptr = GetRendererPtr
370+ return GetRendererCls
371+
372+}
373+
374+// Returns the surface of this `GtkNative`.
375+func (x *PreferencesWindow) GetSurface() *gdk.Surface {
376+
377+ GetSurfacePtr := gtk.XGtkNativeGetSurface(x.GoPointer())
378+ if GetSurfacePtr == 0 {
379+ return nil
380+ }
381+
382+ gobject.IncreaseRef(GetSurfacePtr)
383+
384+ GetSurfaceCls := &gdk.Surface{}
385+ GetSurfaceCls.Ptr = GetSurfacePtr
386+ return GetSurfaceCls
387+
388+}
389+
390+// Retrieves the surface transform of @self.
391+//
392+// This is the translation from @self's surface coordinates into
393+// @self's widget coordinates.
394+func (x *PreferencesWindow) GetSurfaceTransform(XVar float64, YVar float64) {
395+
396+ gtk.XGtkNativeGetSurfaceTransform(x.GoPointer(), XVar, YVar)
397+
398+}
399+
400+// Realizes a `GtkNative`.
401+//
402+// This should only be used by subclasses.
403+func (x *PreferencesWindow) Realize() {
404+
405+ gtk.XGtkNativeRealize(x.GoPointer())
406+
407+}
408+
409+// Unrealizes a `GtkNative`.
410+//
411+// This should only be used by subclasses.
412+func (x *PreferencesWindow) Unrealize() {
413+
414+ gtk.XGtkNativeUnrealize(x.GoPointer())
415+
416+}
417+
418+// Returns the display that this `GtkRoot` is on.
419+func (x *PreferencesWindow) GetDisplay() *gdk.Display {
420+
421+ GetDisplayPtr := gtk.XGtkRootGetDisplay(x.GoPointer())
422+ if GetDisplayPtr == 0 {
423+ return nil
424+ }
425+
426+ gobject.IncreaseRef(GetDisplayPtr)
427+
428+ GetDisplayCls := &gdk.Display{}
429+ GetDisplayCls.Ptr = GetDisplayPtr
430+ return GetDisplayCls
431+
432+}
433+
434+// Retrieves the current focused widget within the root.
435+//
436+// Note that this is the widget that would have the focus
437+// if the root is active; if the root is not focused then
438+// `gtk_widget_has_focus (widget)` will be %FALSE for the
439+// widget.
440+func (x *PreferencesWindow) GetFocus() *gtk.Widget {
441+
442+ GetFocusPtr := gtk.XGtkRootGetFocus(x.GoPointer())
443+ if GetFocusPtr == 0 {
444+ return nil
445+ }
446+
447+ gobject.IncreaseRef(GetFocusPtr)
448+
449+ GetFocusCls := &gtk.Widget{}
450+ GetFocusCls.Ptr = GetFocusPtr
451+ return GetFocusCls
452+
453+}
454+
455+// If @focus is not the current focus widget, and is focusable, sets
456+// it as the focus widget for the root.
457+//
458+// If @focus is %NULL, unsets the focus widget for the root.
459+//
460+// To set the focus to a particular widget in the root, it is usually
461+// more convenient to use [method@Gtk.Widget.grab_focus] instead of
462+// this function.
463+func (x *PreferencesWindow) SetFocus(FocusVar *gtk.Widget) {
464+
465+ gtk.XGtkRootSetFocus(x.GoPointer(), FocusVar.GoPointer())
466+
467+}
468+
469+func init() {
470+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
471+ if err != nil {
472+ panic(err)
473+ }
474+
475+ core.PuregoSafeRegister(&xNewPreferencesWindow, lib, "adw_preferences_window_new")
476+
477+ core.PuregoSafeRegister(&xPreferencesWindowAdd, lib, "adw_preferences_window_add")
478+ core.PuregoSafeRegister(&xPreferencesWindowAddToast, lib, "adw_preferences_window_add_toast")
479+ core.PuregoSafeRegister(&xPreferencesWindowCloseSubpage, lib, "adw_preferences_window_close_subpage")
480+ core.PuregoSafeRegister(&xPreferencesWindowGetCanNavigateBack, lib, "adw_preferences_window_get_can_navigate_back")
481+ core.PuregoSafeRegister(&xPreferencesWindowGetSearchEnabled, lib, "adw_preferences_window_get_search_enabled")
482+ core.PuregoSafeRegister(&xPreferencesWindowGetVisiblePage, lib, "adw_preferences_window_get_visible_page")
483+ core.PuregoSafeRegister(&xPreferencesWindowGetVisiblePageName, lib, "adw_preferences_window_get_visible_page_name")
484+ core.PuregoSafeRegister(&xPreferencesWindowPresentSubpage, lib, "adw_preferences_window_present_subpage")
485+ core.PuregoSafeRegister(&xPreferencesWindowRemove, lib, "adw_preferences_window_remove")
486+ core.PuregoSafeRegister(&xPreferencesWindowSetCanNavigateBack, lib, "adw_preferences_window_set_can_navigate_back")
487+ core.PuregoSafeRegister(&xPreferencesWindowSetSearchEnabled, lib, "adw_preferences_window_set_search_enabled")
488+ core.PuregoSafeRegister(&xPreferencesWindowSetVisiblePage, lib, "adw_preferences_window_set_visible_page")
489+ core.PuregoSafeRegister(&xPreferencesWindowSetVisiblePageName, lib, "adw_preferences_window_set_visible_page_name")
490+
491+}
A v4/adw/adw-split-button.go +594 -0
@@ -0,0 +1,594 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gio"
8+ "github.com/jwijenbergh/puregotk/v4/glib"
9+ "github.com/jwijenbergh/puregotk/v4/gobject"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type SplitButtonClass struct {
14+ ParentClass uintptr
15+}
16+
17+// A combined button and dropdown widget.
18+//
19+// &lt;picture&gt;
20+//
21+// &lt;source srcset="split-button-dark.png" media="(prefers-color-scheme: dark)"&gt;
22+// &lt;img src="split-button.png" alt="split-button"&gt;
23+//
24+// &lt;/picture&gt;
25+//
26+// `AdwSplitButton` is typically used to present a set of actions in a menu,
27+// but allow access to one of them with a single click.
28+//
29+// The API is very similar to [class@Gtk.Button] and [class@Gtk.MenuButton], see
30+// their documentation for details.
31+//
32+// ## CSS nodes
33+//
34+// ```
35+// splitbutton[.image-button][.text-button]
36+// ├── button
37+// │ ╰── &lt;content&gt;
38+// ├── separator
39+// ╰── menubutton
40+//
41+// ╰── button.toggle
42+// ╰── arrow
43+//
44+// ```
45+//
46+// `AdwSplitButton`'s CSS node is called `splitbutton`. It contains the css
47+// nodes: `button`, `separator`, `menubutton`. See [class@Gtk.MenuButton]
48+// documentation for the `menubutton` contents.
49+//
50+// The main CSS node will contain the `.image-button` or `.text-button` style
51+// classes matching the button contents. The nested button nodes will never
52+// contain them.
53+//
54+// ## Accessibility
55+//
56+// `AdwSplitButton` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
57+type SplitButton struct {
58+ gtk.Widget
59+}
60+
61+func SplitButtonNewFromInternalPtr(ptr uintptr) *SplitButton {
62+ cls := &SplitButton{}
63+ cls.Ptr = ptr
64+ return cls
65+}
66+
67+var xNewSplitButton func() uintptr
68+
69+// Creates a new `AdwSplitButton`.
70+func NewSplitButton() *gtk.Widget {
71+ NewSplitButtonPtr := xNewSplitButton()
72+ if NewSplitButtonPtr == 0 {
73+ return nil
74+ }
75+
76+ gobject.IncreaseRef(NewSplitButtonPtr)
77+
78+ NewSplitButtonCls := &gtk.Widget{}
79+ NewSplitButtonCls.Ptr = NewSplitButtonPtr
80+ return NewSplitButtonCls
81+}
82+
83+var xSplitButtonGetChild func(uintptr) uintptr
84+
85+// Gets the child widget.
86+func (x *SplitButton) GetChild() *gtk.Widget {
87+
88+ GetChildPtr := xSplitButtonGetChild(x.GoPointer())
89+ if GetChildPtr == 0 {
90+ return nil
91+ }
92+
93+ gobject.IncreaseRef(GetChildPtr)
94+
95+ GetChildCls := &gtk.Widget{}
96+ GetChildCls.Ptr = GetChildPtr
97+ return GetChildCls
98+
99+}
100+
101+var xSplitButtonGetDirection func(uintptr) gtk.ArrowType
102+
103+// Gets the direction in which the popup will be popped up.
104+func (x *SplitButton) GetDirection() gtk.ArrowType {
105+
106+ return xSplitButtonGetDirection(x.GoPointer())
107+
108+}
109+
110+var xSplitButtonGetDropdownTooltip func(uintptr) string
111+
112+// Gets the tooltip of the dropdown button of @self.
113+func (x *SplitButton) GetDropdownTooltip() string {
114+
115+ return xSplitButtonGetDropdownTooltip(x.GoPointer())
116+
117+}
118+
119+var xSplitButtonGetIconName func(uintptr) string
120+
121+// Gets the name of the icon used to automatically populate the button.
122+func (x *SplitButton) GetIconName() string {
123+
124+ return xSplitButtonGetIconName(x.GoPointer())
125+
126+}
127+
128+var xSplitButtonGetLabel func(uintptr) string
129+
130+// Gets the label for @self.
131+func (x *SplitButton) GetLabel() string {
132+
133+ return xSplitButtonGetLabel(x.GoPointer())
134+
135+}
136+
137+var xSplitButtonGetMenuModel func(uintptr) uintptr
138+
139+// Gets the menu model from which the popup will be created.
140+func (x *SplitButton) GetMenuModel() *gio.MenuModel {
141+
142+ GetMenuModelPtr := xSplitButtonGetMenuModel(x.GoPointer())
143+ if GetMenuModelPtr == 0 {
144+ return nil
145+ }
146+
147+ gobject.IncreaseRef(GetMenuModelPtr)
148+
149+ GetMenuModelCls := &gio.MenuModel{}
150+ GetMenuModelCls.Ptr = GetMenuModelPtr
151+ return GetMenuModelCls
152+
153+}
154+
155+var xSplitButtonGetPopover func(uintptr) uintptr
156+
157+// Gets the popover that will be popped up when the dropdown is clicked.
158+func (x *SplitButton) GetPopover() *gtk.Popover {
159+
160+ GetPopoverPtr := xSplitButtonGetPopover(x.GoPointer())
161+ if GetPopoverPtr == 0 {
162+ return nil
163+ }
164+
165+ gobject.IncreaseRef(GetPopoverPtr)
166+
167+ GetPopoverCls := &gtk.Popover{}
168+ GetPopoverCls.Ptr = GetPopoverPtr
169+ return GetPopoverCls
170+
171+}
172+
173+var xSplitButtonGetUseUnderline func(uintptr) bool
174+
175+// Gets whether an underline in the text indicates a mnemonic.
176+func (x *SplitButton) GetUseUnderline() bool {
177+
178+ return xSplitButtonGetUseUnderline(x.GoPointer())
179+
180+}
181+
182+var xSplitButtonPopdown func(uintptr)
183+
184+// Dismisses the menu.
185+func (x *SplitButton) Popdown() {
186+
187+ xSplitButtonPopdown(x.GoPointer())
188+
189+}
190+
191+var xSplitButtonPopup func(uintptr)
192+
193+// Pops up the menu.
194+func (x *SplitButton) Popup() {
195+
196+ xSplitButtonPopup(x.GoPointer())
197+
198+}
199+
200+var xSplitButtonSetChild func(uintptr, uintptr)
201+
202+// Sets the child widget.
203+//
204+// Setting the child widget will set [property@SplitButton:label] and
205+// [property@SplitButton:icon-name] to `NULL`.
206+func (x *SplitButton) SetChild(ChildVar *gtk.Widget) {
207+
208+ xSplitButtonSetChild(x.GoPointer(), ChildVar.GoPointer())
209+
210+}
211+
212+var xSplitButtonSetDirection func(uintptr, gtk.ArrowType)
213+
214+// Sets the direction in which the popup will be popped up.
215+//
216+// The dropdown arrow icon will point at the same direction.
217+//
218+// If the does not fit in the available space in the given direction, GTK will
219+// try its best to keep it inside the screen and fully visible.
220+//
221+// If you pass `GTK_ARROW_NONE`, it's equivalent to `GTK_ARROW_DOWN`.
222+func (x *SplitButton) SetDirection(DirectionVar gtk.ArrowType) {
223+
224+ xSplitButtonSetDirection(x.GoPointer(), DirectionVar)
225+
226+}
227+
228+var xSplitButtonSetDropdownTooltip func(uintptr, string)
229+
230+// Sets the tooltip of the dropdown button of @self.
231+//
232+// The tooltip can be marked up with the Pango text markup language.
233+func (x *SplitButton) SetDropdownTooltip(TooltipVar string) {
234+
235+ xSplitButtonSetDropdownTooltip(x.GoPointer(), TooltipVar)
236+
237+}
238+
239+var xSplitButtonSetIconName func(uintptr, string)
240+
241+// Sets the name of the icon used to automatically populate the button.
242+//
243+// Setting the icon name will set [property@SplitButton:label] and
244+// [property@SplitButton:child] to `NULL`.
245+func (x *SplitButton) SetIconName(IconNameVar string) {
246+
247+ xSplitButtonSetIconName(x.GoPointer(), IconNameVar)
248+
249+}
250+
251+var xSplitButtonSetLabel func(uintptr, string)
252+
253+// Sets the label for @self.
254+//
255+// Setting the label will set [property@SplitButton:icon-name] and
256+// [property@SplitButton:child] to `NULL`.
257+func (x *SplitButton) SetLabel(LabelVar string) {
258+
259+ xSplitButtonSetLabel(x.GoPointer(), LabelVar)
260+
261+}
262+
263+var xSplitButtonSetMenuModel func(uintptr, uintptr)
264+
265+// Sets the menu model from which the popup will be created.
266+//
267+// If the menu model is `NULL`, the dropdown is disabled.
268+//
269+// A [class@Gtk.Popover] will be created from the menu model with
270+// [ctor@Gtk.PopoverMenu.new_from_model]. Actions will be connected as
271+// documented for this function.
272+//
273+// If [property@SplitButton:popover] is already set, it will be dissociated from
274+// the button, and the property is set to `NULL`.
275+func (x *SplitButton) SetMenuModel(MenuModelVar *gio.MenuModel) {
276+
277+ xSplitButtonSetMenuModel(x.GoPointer(), MenuModelVar.GoPointer())
278+
279+}
280+
281+var xSplitButtonSetPopover func(uintptr, uintptr)
282+
283+// Sets the popover that will be popped up when the dropdown is clicked.
284+//
285+// If the popover is `NULL`, the dropdown is disabled.
286+//
287+// If [property@SplitButton:menu-model] is set, the menu model is dissociated
288+// from the button, and the property is set to `NULL`.
289+func (x *SplitButton) SetPopover(PopoverVar *gtk.Popover) {
290+
291+ xSplitButtonSetPopover(x.GoPointer(), PopoverVar.GoPointer())
292+
293+}
294+
295+var xSplitButtonSetUseUnderline func(uintptr, bool)
296+
297+// Sets whether an underline in the text indicates a mnemonic.
298+//
299+// See [property@SplitButton:label].
300+func (x *SplitButton) SetUseUnderline(UseUnderlineVar bool) {
301+
302+ xSplitButtonSetUseUnderline(x.GoPointer(), UseUnderlineVar)
303+
304+}
305+
306+func (c *SplitButton) GoPointer() uintptr {
307+ return c.Ptr
308+}
309+
310+func (c *SplitButton) SetGoPointer(ptr uintptr) {
311+ c.Ptr = ptr
312+}
313+
314+// Emitted to animate press then release.
315+//
316+// This is an action signal. Applications should never connect to this signal,
317+// but use the [signal@SplitButton::clicked] signal.
318+func (x *SplitButton) ConnectActivate(cb func(SplitButton)) {
319+ fcb := func(clsPtr uintptr) {
320+ fa := SplitButton{}
321+ fa.Ptr = clsPtr
322+
323+ cb(fa)
324+
325+ }
326+ gobject.ObjectConnect(x.GoPointer(), "signal::activate", purego.NewCallback(fcb))
327+}
328+
329+// Emitted when the button has been activated (pressed and released).
330+func (x *SplitButton) ConnectClicked(cb func(SplitButton)) {
331+ fcb := func(clsPtr uintptr) {
332+ fa := SplitButton{}
333+ fa.Ptr = clsPtr
334+
335+ cb(fa)
336+
337+ }
338+ gobject.ObjectConnect(x.GoPointer(), "signal::clicked", purego.NewCallback(fcb))
339+}
340+
341+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
342+func (x *SplitButton) GetAccessibleRole() gtk.AccessibleRole {
343+
344+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
345+
346+}
347+
348+// Resets the accessible @property to its default value.
349+func (x *SplitButton) ResetProperty(PropertyVar gtk.AccessibleProperty) {
350+
351+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
352+
353+}
354+
355+// Resets the accessible @relation to its default value.
356+func (x *SplitButton) ResetRelation(RelationVar gtk.AccessibleRelation) {
357+
358+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
359+
360+}
361+
362+// Resets the accessible @state to its default value.
363+func (x *SplitButton) ResetState(StateVar gtk.AccessibleState) {
364+
365+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
366+
367+}
368+
369+// Updates a list of accessible properties.
370+//
371+// See the [enum@Gtk.AccessibleProperty] documentation for the
372+// value types of accessible properties.
373+//
374+// This function should be called by `GtkWidget` types whenever
375+// an accessible property change must be communicated to assistive
376+// technologies.
377+//
378+// Example:
379+// ```c
380+// value = gtk_adjustment_get_value (adjustment);
381+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
382+//
383+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
384+// -1);
385+//
386+// ```
387+func (x *SplitButton) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
388+
389+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
390+
391+}
392+
393+// Updates an array of accessible properties.
394+//
395+// This function should be called by `GtkWidget` types whenever an accessible
396+// property change must be communicated to assistive technologies.
397+//
398+// This function is meant to be used by language bindings.
399+func (x *SplitButton) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
400+
401+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
402+
403+}
404+
405+// Updates a list of accessible relations.
406+//
407+// This function should be called by `GtkWidget` types whenever an accessible
408+// relation change must be communicated to assistive technologies.
409+//
410+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
411+// you should pass each reference individually, followed by %NULL, e.g.
412+//
413+// ```c
414+// gtk_accessible_update_relation (accessible,
415+//
416+// GTK_ACCESSIBLE_RELATION_CONTROLS,
417+// ref1, NULL,
418+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
419+// ref1, ref2, ref3, NULL,
420+// -1);
421+//
422+// ```
423+func (x *SplitButton) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
424+
425+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
426+
427+}
428+
429+// Updates an array of accessible relations.
430+//
431+// This function should be called by `GtkWidget` types whenever an accessible
432+// relation change must be communicated to assistive technologies.
433+//
434+// This function is meant to be used by language bindings.
435+func (x *SplitButton) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
436+
437+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
438+
439+}
440+
441+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
442+// documentation for the value types of accessible states.
443+//
444+// This function should be called by `GtkWidget` types whenever an accessible
445+// state change must be communicated to assistive technologies.
446+//
447+// Example:
448+// ```c
449+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
450+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
451+//
452+// GTK_ACCESSIBLE_STATE_CHECKED, value,
453+// -1);
454+//
455+// ```
456+func (x *SplitButton) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
457+
458+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
459+
460+}
461+
462+// Updates an array of accessible states.
463+//
464+// This function should be called by `GtkWidget` types whenever an accessible
465+// state change must be communicated to assistive technologies.
466+//
467+// This function is meant to be used by language bindings.
468+func (x *SplitButton) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
469+
470+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
471+
472+}
473+
474+// Gets the action name for @actionable.
475+func (x *SplitButton) GetActionName() string {
476+
477+ return gtk.XGtkActionableGetActionName(x.GoPointer())
478+
479+}
480+
481+// Gets the current target value of @actionable.
482+func (x *SplitButton) GetActionTargetValue() *glib.Variant {
483+
484+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
485+
486+}
487+
488+// Specifies the name of the action with which this widget should be
489+// associated.
490+//
491+// If @action_name is %NULL then the widget will be unassociated from
492+// any previous action.
493+//
494+// Usually this function is used when the widget is located (or will be
495+// located) within the hierarchy of a `GtkApplicationWindow`.
496+//
497+// Names are of the form “win.save” or “app.quit” for actions on the
498+// containing [class@ApplicationWindow] or its associated [class@Application],
499+// respectively. This is the same form used for actions in the [class@Gio.Menu]
500+// associated with the window.
501+func (x *SplitButton) SetActionName(ActionNameVar string) {
502+
503+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
504+
505+}
506+
507+// Sets the target of an actionable widget.
508+//
509+// This is a convenience function that calls [ctor@GLib.Variant.new] for
510+// @format_string and uses the result to call
511+// [method@Gtk.Actionable.set_action_target_value].
512+//
513+// If you are setting a string-valued target and want to set
514+// the action name at the same time, you can use
515+// [method@Gtk.Actionable.set_detailed_action_name].
516+func (x *SplitButton) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
517+
518+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
519+
520+}
521+
522+// Sets the target value of an actionable widget.
523+//
524+// If @target_value is %NULL then the target value is unset.
525+//
526+// The target value has two purposes. First, it is used as the parameter
527+// to activation of the action associated with the `GtkActionable` widget.
528+// Second, it is used to determine if the widget should be rendered as
529+// “active” — the widget is active if the state is equal to the given target.
530+//
531+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
532+// with string state in a typical “radio button” situation. Each button
533+// will be associated with the same action, but with a different target
534+// value for that action. Clicking on a particular button will activate
535+// the action with the target of that button, which will typically cause
536+// the action’s state to change to that value. Since the action’s state
537+// is now equal to the target value of the button, the button will now
538+// be rendered as active (and the other buttons, with different targets,
539+// rendered inactive).
540+func (x *SplitButton) SetActionTargetValue(TargetValueVar *glib.Variant) {
541+
542+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
543+
544+}
545+
546+// Sets the action-name and associated string target value of an
547+// actionable widget.
548+//
549+// @detailed_action_name is a string in the format accepted by
550+// [func@Gio.Action.parse_detailed_name].
551+func (x *SplitButton) SetDetailedActionName(DetailedActionNameVar string) {
552+
553+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
554+
555+}
556+
557+// Gets the ID of the @buildable object.
558+//
559+// `GtkBuilder` sets the name based on the ID attribute
560+// of the &lt;object&gt; tag used to construct the @buildable.
561+func (x *SplitButton) GetBuildableId() string {
562+
563+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
564+
565+}
566+
567+func init() {
568+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
569+ if err != nil {
570+ panic(err)
571+ }
572+
573+ core.PuregoSafeRegister(&xNewSplitButton, lib, "adw_split_button_new")
574+
575+ core.PuregoSafeRegister(&xSplitButtonGetChild, lib, "adw_split_button_get_child")
576+ core.PuregoSafeRegister(&xSplitButtonGetDirection, lib, "adw_split_button_get_direction")
577+ core.PuregoSafeRegister(&xSplitButtonGetDropdownTooltip, lib, "adw_split_button_get_dropdown_tooltip")
578+ core.PuregoSafeRegister(&xSplitButtonGetIconName, lib, "adw_split_button_get_icon_name")
579+ core.PuregoSafeRegister(&xSplitButtonGetLabel, lib, "adw_split_button_get_label")
580+ core.PuregoSafeRegister(&xSplitButtonGetMenuModel, lib, "adw_split_button_get_menu_model")
581+ core.PuregoSafeRegister(&xSplitButtonGetPopover, lib, "adw_split_button_get_popover")
582+ core.PuregoSafeRegister(&xSplitButtonGetUseUnderline, lib, "adw_split_button_get_use_underline")
583+ core.PuregoSafeRegister(&xSplitButtonPopdown, lib, "adw_split_button_popdown")
584+ core.PuregoSafeRegister(&xSplitButtonPopup, lib, "adw_split_button_popup")
585+ core.PuregoSafeRegister(&xSplitButtonSetChild, lib, "adw_split_button_set_child")
586+ core.PuregoSafeRegister(&xSplitButtonSetDirection, lib, "adw_split_button_set_direction")
587+ core.PuregoSafeRegister(&xSplitButtonSetDropdownTooltip, lib, "adw_split_button_set_dropdown_tooltip")
588+ core.PuregoSafeRegister(&xSplitButtonSetIconName, lib, "adw_split_button_set_icon_name")
589+ core.PuregoSafeRegister(&xSplitButtonSetLabel, lib, "adw_split_button_set_label")
590+ core.PuregoSafeRegister(&xSplitButtonSetMenuModel, lib, "adw_split_button_set_menu_model")
591+ core.PuregoSafeRegister(&xSplitButtonSetPopover, lib, "adw_split_button_set_popover")
592+ core.PuregoSafeRegister(&xSplitButtonSetUseUnderline, lib, "adw_split_button_set_use_underline")
593+
594+}
A v4/adw/adw-spring-animation.go +288 -0
@@ -0,0 +1,288 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type SpringAnimationClass struct {
12+}
13+
14+// A spring-based [class@Animation].
15+//
16+// `AdwSpringAnimation` implements an animation driven by a physical model of a
17+// spring described by [struct@SpringParams], with a resting position in
18+// [property@SpringAnimation:value-to], stretched to
19+// [property@SpringAnimation:value-from].
20+//
21+// Since the animation is physically simulated, spring animations don't have a
22+// fixed duration. The animation will stop when the simulated spring comes to a
23+// rest - when the amplitude of the oscillations becomes smaller than
24+// [property@SpringAnimation:epsilon], or immediately when it reaches
25+// [property@SpringAnimation:value-to] if
26+// [property@SpringAnimation:clamp] is set to `TRUE`. The estimated duration can
27+// be obtained with [property@SpringAnimation:estimated-duration].
28+//
29+// Due to the nature of spring-driven motion the animation can overshoot
30+// [property@SpringAnimation:value-to] before coming to a rest. Whether the
31+// animation will overshoot or not depends on the damping ratio of the spring.
32+// See [struct@SpringParams] for more information about specific damping ratio
33+// values.
34+//
35+// If [property@SpringAnimation:clamp] is `TRUE`, the animation will abruptly
36+// end as soon as it reaches the final value, preventing overshooting.
37+//
38+// Animations can have an initial velocity value, set via
39+// [property@SpringAnimation:initial-velocity], which adjusts the curve without
40+// changing the duration. This makes spring animations useful for deceleration
41+// at the end of gestures.
42+//
43+// If the initial and final values are equal, and the initial velocity is not 0,
44+// the animation value will bounce and return to its resting position.
45+type SpringAnimation struct {
46+ Animation
47+}
48+
49+func SpringAnimationNewFromInternalPtr(ptr uintptr) *SpringAnimation {
50+ cls := &SpringAnimation{}
51+ cls.Ptr = ptr
52+ return cls
53+}
54+
55+var xNewSpringAnimation func(uintptr, float64, float64, *SpringParams, uintptr) uintptr
56+
57+// Creates a new `AdwSpringAnimation` on @widget.
58+//
59+// The animation will animate @target from @from to @to with the dynamics of a
60+// spring described by @spring_params.
61+func NewSpringAnimation(WidgetVar *gtk.Widget, FromVar float64, ToVar float64, SpringParamsVar *SpringParams, TargetVar *AnimationTarget) *Animation {
62+ NewSpringAnimationPtr := xNewSpringAnimation(WidgetVar.GoPointer(), FromVar, ToVar, SpringParamsVar, TargetVar.GoPointer())
63+ if NewSpringAnimationPtr == 0 {
64+ return nil
65+ }
66+
67+ gobject.IncreaseRef(NewSpringAnimationPtr)
68+
69+ NewSpringAnimationCls := &Animation{}
70+ NewSpringAnimationCls.Ptr = NewSpringAnimationPtr
71+ return NewSpringAnimationCls
72+}
73+
74+var xSpringAnimationCalculateValue func(uintptr, uint) float64
75+
76+// Calculates the value @self will have at @time.
77+//
78+// The time starts at 0 and ends at
79+// [property@SpringAnimation:estimated_duration].
80+//
81+// See also [method@SpringAnimation.calculate_velocity].
82+func (x *SpringAnimation) CalculateValue(TimeVar uint) float64 {
83+
84+ return xSpringAnimationCalculateValue(x.GoPointer(), TimeVar)
85+
86+}
87+
88+var xSpringAnimationCalculateVelocity func(uintptr, uint) float64
89+
90+// Calculates the velocity @self will have at @time.
91+//
92+// The time starts at 0 and ends at
93+// [property@SpringAnimation:estimated_duration].
94+//
95+// See also [method@SpringAnimation.calculate_value].
96+func (x *SpringAnimation) CalculateVelocity(TimeVar uint) float64 {
97+
98+ return xSpringAnimationCalculateVelocity(x.GoPointer(), TimeVar)
99+
100+}
101+
102+var xSpringAnimationGetClamp func(uintptr) bool
103+
104+// Gets whether @self should be clamped.
105+func (x *SpringAnimation) GetClamp() bool {
106+
107+ return xSpringAnimationGetClamp(x.GoPointer())
108+
109+}
110+
111+var xSpringAnimationGetEpsilon func(uintptr) float64
112+
113+// Gets the precision of the spring.
114+func (x *SpringAnimation) GetEpsilon() float64 {
115+
116+ return xSpringAnimationGetEpsilon(x.GoPointer())
117+
118+}
119+
120+var xSpringAnimationGetEstimatedDuration func(uintptr) uint
121+
122+// Gets the estimated duration of @self, in milliseconds.
123+//
124+// Can be [const@DURATION_INFINITE] if the spring damping is set to 0.
125+func (x *SpringAnimation) GetEstimatedDuration() uint {
126+
127+ return xSpringAnimationGetEstimatedDuration(x.GoPointer())
128+
129+}
130+
131+var xSpringAnimationGetInitialVelocity func(uintptr) float64
132+
133+// Gets the initial velocity of @self.
134+func (x *SpringAnimation) GetInitialVelocity() float64 {
135+
136+ return xSpringAnimationGetInitialVelocity(x.GoPointer())
137+
138+}
139+
140+var xSpringAnimationGetSpringParams func(uintptr) *SpringParams
141+
142+// Gets the physical parameters of the spring of @self.
143+func (x *SpringAnimation) GetSpringParams() *SpringParams {
144+
145+ return xSpringAnimationGetSpringParams(x.GoPointer())
146+
147+}
148+
149+var xSpringAnimationGetValueFrom func(uintptr) float64
150+
151+// Gets the value @self will animate from.
152+func (x *SpringAnimation) GetValueFrom() float64 {
153+
154+ return xSpringAnimationGetValueFrom(x.GoPointer())
155+
156+}
157+
158+var xSpringAnimationGetValueTo func(uintptr) float64
159+
160+// Gets the value @self will animate to.
161+func (x *SpringAnimation) GetValueTo() float64 {
162+
163+ return xSpringAnimationGetValueTo(x.GoPointer())
164+
165+}
166+
167+var xSpringAnimationGetVelocity func(uintptr) float64
168+
169+// Gets the current velocity of @self.
170+func (x *SpringAnimation) GetVelocity() float64 {
171+
172+ return xSpringAnimationGetVelocity(x.GoPointer())
173+
174+}
175+
176+var xSpringAnimationSetClamp func(uintptr, bool)
177+
178+// Sets whether @self should be clamped.
179+//
180+// If set to `TRUE`, the animation will abruptly end as soon as it reaches the
181+// final value, preventing overshooting.
182+//
183+// It won't prevent overshooting [property@SpringAnimation:value-from] if a
184+// relative negative [property@SpringAnimation:initial-velocity] is set.
185+func (x *SpringAnimation) SetClamp(ClampVar bool) {
186+
187+ xSpringAnimationSetClamp(x.GoPointer(), ClampVar)
188+
189+}
190+
191+var xSpringAnimationSetEpsilon func(uintptr, float64)
192+
193+// Sets the precision of the spring.
194+//
195+// The level of precision used to determine when the animation has come to a
196+// rest, that is, when the amplitude of the oscillations becomes smaller than
197+// this value.
198+//
199+// If the epsilon value is too small, the animation will take a long time to
200+// stop after the animated value has stopped visibly changing.
201+//
202+// If the epsilon value is too large, the animation will end prematurely.
203+//
204+// The default value is 0.001.
205+func (x *SpringAnimation) SetEpsilon(EpsilonVar float64) {
206+
207+ xSpringAnimationSetEpsilon(x.GoPointer(), EpsilonVar)
208+
209+}
210+
211+var xSpringAnimationSetInitialVelocity func(uintptr, float64)
212+
213+// Sets the initial velocity of @self.
214+//
215+// Initial velocity affects only the animation curve, but not its duration.
216+func (x *SpringAnimation) SetInitialVelocity(VelocityVar float64) {
217+
218+ xSpringAnimationSetInitialVelocity(x.GoPointer(), VelocityVar)
219+
220+}
221+
222+var xSpringAnimationSetSpringParams func(uintptr, *SpringParams)
223+
224+// Sets the physical parameters of the spring of @self.
225+func (x *SpringAnimation) SetSpringParams(SpringParamsVar *SpringParams) {
226+
227+ xSpringAnimationSetSpringParams(x.GoPointer(), SpringParamsVar)
228+
229+}
230+
231+var xSpringAnimationSetValueFrom func(uintptr, float64)
232+
233+// Sets the value @self will animate from.
234+//
235+// The animation will start at this value and end at
236+// [property@SpringAnimation:value-to].
237+func (x *SpringAnimation) SetValueFrom(ValueVar float64) {
238+
239+ xSpringAnimationSetValueFrom(x.GoPointer(), ValueVar)
240+
241+}
242+
243+var xSpringAnimationSetValueTo func(uintptr, float64)
244+
245+// Sets the value @self will animate to.
246+//
247+// The animation will start at [property@SpringAnimation:value-from] and end at
248+// this value.
249+func (x *SpringAnimation) SetValueTo(ValueVar float64) {
250+
251+ xSpringAnimationSetValueTo(x.GoPointer(), ValueVar)
252+
253+}
254+
255+func (c *SpringAnimation) GoPointer() uintptr {
256+ return c.Ptr
257+}
258+
259+func (c *SpringAnimation) SetGoPointer(ptr uintptr) {
260+ c.Ptr = ptr
261+}
262+
263+func init() {
264+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
265+ if err != nil {
266+ panic(err)
267+ }
268+
269+ core.PuregoSafeRegister(&xNewSpringAnimation, lib, "adw_spring_animation_new")
270+
271+ core.PuregoSafeRegister(&xSpringAnimationCalculateValue, lib, "adw_spring_animation_calculate_value")
272+ core.PuregoSafeRegister(&xSpringAnimationCalculateVelocity, lib, "adw_spring_animation_calculate_velocity")
273+ core.PuregoSafeRegister(&xSpringAnimationGetClamp, lib, "adw_spring_animation_get_clamp")
274+ core.PuregoSafeRegister(&xSpringAnimationGetEpsilon, lib, "adw_spring_animation_get_epsilon")
275+ core.PuregoSafeRegister(&xSpringAnimationGetEstimatedDuration, lib, "adw_spring_animation_get_estimated_duration")
276+ core.PuregoSafeRegister(&xSpringAnimationGetInitialVelocity, lib, "adw_spring_animation_get_initial_velocity")
277+ core.PuregoSafeRegister(&xSpringAnimationGetSpringParams, lib, "adw_spring_animation_get_spring_params")
278+ core.PuregoSafeRegister(&xSpringAnimationGetValueFrom, lib, "adw_spring_animation_get_value_from")
279+ core.PuregoSafeRegister(&xSpringAnimationGetValueTo, lib, "adw_spring_animation_get_value_to")
280+ core.PuregoSafeRegister(&xSpringAnimationGetVelocity, lib, "adw_spring_animation_get_velocity")
281+ core.PuregoSafeRegister(&xSpringAnimationSetClamp, lib, "adw_spring_animation_set_clamp")
282+ core.PuregoSafeRegister(&xSpringAnimationSetEpsilon, lib, "adw_spring_animation_set_epsilon")
283+ core.PuregoSafeRegister(&xSpringAnimationSetInitialVelocity, lib, "adw_spring_animation_set_initial_velocity")
284+ core.PuregoSafeRegister(&xSpringAnimationSetSpringParams, lib, "adw_spring_animation_set_spring_params")
285+ core.PuregoSafeRegister(&xSpringAnimationSetValueFrom, lib, "adw_spring_animation_set_value_from")
286+ core.PuregoSafeRegister(&xSpringAnimationSetValueTo, lib, "adw_spring_animation_set_value_to")
287+
288+}
A v4/adw/adw-spring-params.go +35 -0
@@ -0,0 +1,35 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+// Physical parameters of a spring for [class@SpringAnimation].
5+//
6+// Any spring can be described by three parameters: mass, stiffness and damping.
7+//
8+// An undamped spring will produce an oscillatory motion which will go on
9+// forever.
10+//
11+// The frequency and amplitude of the oscillations will be determined by the
12+// stiffness (how "strong" the spring is) and its mass (how much "inertia" it
13+// has).
14+//
15+// If damping is larger than 0, the amplitude of that oscillating motion will
16+// exponientally decrease over time. If that damping is strong enough that the
17+// spring can't complete a full oscillation, it's called an overdamped spring.
18+//
19+// If we the spring can oscillate, it's called an underdamped spring.
20+//
21+// The value between these two behaviors is called critical damping; a
22+// critically damped spring will comes to rest in the minimum possible time
23+// without producing oscillations.
24+//
25+// The damping can be replaced by damping ratio, which produces the following
26+// springs:
27+//
28+// * 0: an undamped spring.
29+// * Between 0 and 1: an underdamped spring.
30+// * 1: a critically damped spring.
31+// * Larger than 1: an overdamped spring.
32+//
33+// As such
34+type SpringParams struct {
35+}
A v4/adw/adw-squeezer.go +619 -0 collapsed to keep the page light
A v4/adw/adw-status-page.go +347 -0
@@ -0,0 +1,347 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type StatusPageClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A page used for empty/error states and similar use-cases.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="status-page-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="status-page.png" alt="status-page"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// The `AdwStatusPage` widget can have an icon, a title, a description and a
26+// custom widget which is displayed below them.
27+//
28+// ## CSS nodes
29+//
30+// `AdwStatusPage` has a main CSS node with name `statuspage`.
31+//
32+// `AdwStatusPage` can use the
33+// [`.compact`](style-classes.html#compact-status-page) style class for when it
34+// needs to fit into a small space such a sidebar or a popover.
35+type StatusPage struct {
36+ gtk.Widget
37+}
38+
39+func StatusPageNewFromInternalPtr(ptr uintptr) *StatusPage {
40+ cls := &StatusPage{}
41+ cls.Ptr = ptr
42+ return cls
43+}
44+
45+var xNewStatusPage func() uintptr
46+
47+// Creates a new `AdwStatusPage`.
48+func NewStatusPage() *gtk.Widget {
49+ NewStatusPagePtr := xNewStatusPage()
50+ if NewStatusPagePtr == 0 {
51+ return nil
52+ }
53+
54+ gobject.IncreaseRef(NewStatusPagePtr)
55+
56+ NewStatusPageCls := &gtk.Widget{}
57+ NewStatusPageCls.Ptr = NewStatusPagePtr
58+ return NewStatusPageCls
59+}
60+
61+var xStatusPageGetChild func(uintptr) uintptr
62+
63+// Gets the child widget of @self.
64+func (x *StatusPage) GetChild() *gtk.Widget {
65+
66+ GetChildPtr := xStatusPageGetChild(x.GoPointer())
67+ if GetChildPtr == 0 {
68+ return nil
69+ }
70+
71+ gobject.IncreaseRef(GetChildPtr)
72+
73+ GetChildCls := &gtk.Widget{}
74+ GetChildCls.Ptr = GetChildPtr
75+ return GetChildCls
76+
77+}
78+
79+var xStatusPageGetDescription func(uintptr) string
80+
81+// Gets the description for @self.
82+func (x *StatusPage) GetDescription() string {
83+
84+ return xStatusPageGetDescription(x.GoPointer())
85+
86+}
87+
88+var xStatusPageGetIconName func(uintptr) string
89+
90+// Gets the icon name for @self.
91+func (x *StatusPage) GetIconName() string {
92+
93+ return xStatusPageGetIconName(x.GoPointer())
94+
95+}
96+
97+var xStatusPageGetPaintable func(uintptr) uintptr
98+
99+// Gets the paintable for @self.
100+func (x *StatusPage) GetPaintable() *gdk.PaintableBase {
101+
102+ GetPaintablePtr := xStatusPageGetPaintable(x.GoPointer())
103+ if GetPaintablePtr == 0 {
104+ return nil
105+ }
106+
107+ gobject.IncreaseRef(GetPaintablePtr)
108+
109+ GetPaintableCls := &gdk.PaintableBase{}
110+ GetPaintableCls.Ptr = GetPaintablePtr
111+ return GetPaintableCls
112+
113+}
114+
115+var xStatusPageGetTitle func(uintptr) string
116+
117+// Gets the title for @self.
118+func (x *StatusPage) GetTitle() string {
119+
120+ return xStatusPageGetTitle(x.GoPointer())
121+
122+}
123+
124+var xStatusPageSetChild func(uintptr, uintptr)
125+
126+// Sets the child widget of @self.
127+func (x *StatusPage) SetChild(ChildVar *gtk.Widget) {
128+
129+ xStatusPageSetChild(x.GoPointer(), ChildVar.GoPointer())
130+
131+}
132+
133+var xStatusPageSetDescription func(uintptr, string)
134+
135+// Sets the description for @self.
136+//
137+// The description is displayed below the title.
138+func (x *StatusPage) SetDescription(DescriptionVar string) {
139+
140+ xStatusPageSetDescription(x.GoPointer(), DescriptionVar)
141+
142+}
143+
144+var xStatusPageSetIconName func(uintptr, string)
145+
146+// Sets the icon name for @self.
147+//
148+// Changing this will set [property@StatusPage:paintable] to `NULL`.
149+func (x *StatusPage) SetIconName(IconNameVar string) {
150+
151+ xStatusPageSetIconName(x.GoPointer(), IconNameVar)
152+
153+}
154+
155+var xStatusPageSetPaintable func(uintptr, uintptr)
156+
157+// Sets the paintable for @self.
158+//
159+// Changing this will set [property@StatusPage:icon-name] to `NULL`.
160+func (x *StatusPage) SetPaintable(PaintableVar gdk.Paintable) {
161+
162+ xStatusPageSetPaintable(x.GoPointer(), PaintableVar.GoPointer())
163+
164+}
165+
166+var xStatusPageSetTitle func(uintptr, string)
167+
168+// Sets the title for @self.
169+//
170+// The title is displayed below the icon.
171+func (x *StatusPage) SetTitle(TitleVar string) {
172+
173+ xStatusPageSetTitle(x.GoPointer(), TitleVar)
174+
175+}
176+
177+func (c *StatusPage) GoPointer() uintptr {
178+ return c.Ptr
179+}
180+
181+func (c *StatusPage) SetGoPointer(ptr uintptr) {
182+ c.Ptr = ptr
183+}
184+
185+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
186+func (x *StatusPage) GetAccessibleRole() gtk.AccessibleRole {
187+
188+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
189+
190+}
191+
192+// Resets the accessible @property to its default value.
193+func (x *StatusPage) ResetProperty(PropertyVar gtk.AccessibleProperty) {
194+
195+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
196+
197+}
198+
199+// Resets the accessible @relation to its default value.
200+func (x *StatusPage) ResetRelation(RelationVar gtk.AccessibleRelation) {
201+
202+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
203+
204+}
205+
206+// Resets the accessible @state to its default value.
207+func (x *StatusPage) ResetState(StateVar gtk.AccessibleState) {
208+
209+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
210+
211+}
212+
213+// Updates a list of accessible properties.
214+//
215+// See the [enum@Gtk.AccessibleProperty] documentation for the
216+// value types of accessible properties.
217+//
218+// This function should be called by `GtkWidget` types whenever
219+// an accessible property change must be communicated to assistive
220+// technologies.
221+//
222+// Example:
223+// ```c
224+// value = gtk_adjustment_get_value (adjustment);
225+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
226+//
227+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
228+// -1);
229+//
230+// ```
231+func (x *StatusPage) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
232+
233+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
234+
235+}
236+
237+// Updates an array of accessible properties.
238+//
239+// This function should be called by `GtkWidget` types whenever an accessible
240+// property change must be communicated to assistive technologies.
241+//
242+// This function is meant to be used by language bindings.
243+func (x *StatusPage) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
244+
245+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
246+
247+}
248+
249+// Updates a list of accessible relations.
250+//
251+// This function should be called by `GtkWidget` types whenever an accessible
252+// relation change must be communicated to assistive technologies.
253+//
254+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
255+// you should pass each reference individually, followed by %NULL, e.g.
256+//
257+// ```c
258+// gtk_accessible_update_relation (accessible,
259+//
260+// GTK_ACCESSIBLE_RELATION_CONTROLS,
261+// ref1, NULL,
262+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
263+// ref1, ref2, ref3, NULL,
264+// -1);
265+//
266+// ```
267+func (x *StatusPage) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
268+
269+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
270+
271+}
272+
273+// Updates an array of accessible relations.
274+//
275+// This function should be called by `GtkWidget` types whenever an accessible
276+// relation change must be communicated to assistive technologies.
277+//
278+// This function is meant to be used by language bindings.
279+func (x *StatusPage) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
280+
281+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
282+
283+}
284+
285+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
286+// documentation for the value types of accessible states.
287+//
288+// This function should be called by `GtkWidget` types whenever an accessible
289+// state change must be communicated to assistive technologies.
290+//
291+// Example:
292+// ```c
293+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
294+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
295+//
296+// GTK_ACCESSIBLE_STATE_CHECKED, value,
297+// -1);
298+//
299+// ```
300+func (x *StatusPage) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
301+
302+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
303+
304+}
305+
306+// Updates an array of accessible states.
307+//
308+// This function should be called by `GtkWidget` types whenever an accessible
309+// state change must be communicated to assistive technologies.
310+//
311+// This function is meant to be used by language bindings.
312+func (x *StatusPage) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
313+
314+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
315+
316+}
317+
318+// Gets the ID of the @buildable object.
319+//
320+// `GtkBuilder` sets the name based on the ID attribute
321+// of the &lt;object&gt; tag used to construct the @buildable.
322+func (x *StatusPage) GetBuildableId() string {
323+
324+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
325+
326+}
327+
328+func init() {
329+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
330+ if err != nil {
331+ panic(err)
332+ }
333+
334+ core.PuregoSafeRegister(&xNewStatusPage, lib, "adw_status_page_new")
335+
336+ core.PuregoSafeRegister(&xStatusPageGetChild, lib, "adw_status_page_get_child")
337+ core.PuregoSafeRegister(&xStatusPageGetDescription, lib, "adw_status_page_get_description")
338+ core.PuregoSafeRegister(&xStatusPageGetIconName, lib, "adw_status_page_get_icon_name")
339+ core.PuregoSafeRegister(&xStatusPageGetPaintable, lib, "adw_status_page_get_paintable")
340+ core.PuregoSafeRegister(&xStatusPageGetTitle, lib, "adw_status_page_get_title")
341+ core.PuregoSafeRegister(&xStatusPageSetChild, lib, "adw_status_page_set_child")
342+ core.PuregoSafeRegister(&xStatusPageSetDescription, lib, "adw_status_page_set_description")
343+ core.PuregoSafeRegister(&xStatusPageSetIconName, lib, "adw_status_page_set_icon_name")
344+ core.PuregoSafeRegister(&xStatusPageSetPaintable, lib, "adw_status_page_set_paintable")
345+ core.PuregoSafeRegister(&xStatusPageSetTitle, lib, "adw_status_page_set_title")
346+
347+}
A v4/adw/adw-style-manager.go +180 -0 collapsed to keep the page light
A v4/adw/adw-swipe-tracker.go +258 -0 collapsed to keep the page light
A v4/adw/adw-swipeable.go +109 -0
@@ -0,0 +1,109 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+)
9+
10+// An interface for swipeable widgets.
11+type SwipeableInterface struct {
12+ Parent uintptr
13+
14+ Padding uintptr
15+}
16+
17+// An interface for swipeable widgets.
18+//
19+// The `AdwSwipeable` interface is implemented by all swipeable widgets.
20+//
21+// See [class@SwipeTracker] for details about implementing it.
22+type Swipeable interface {
23+ GoPointer() uintptr
24+ SetGoPointer(uintptr)
25+ GetCancelProgress() float64
26+ GetDistance() float64
27+ GetProgress() float64
28+ GetSnapPoints(NSnapPointsVar int32) uintptr
29+ GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle)
30+}
31+type SwipeableBase struct {
32+ Ptr uintptr
33+}
34+
35+func (x *SwipeableBase) GoPointer() uintptr {
36+ return x.Ptr
37+}
38+
39+func (x *SwipeableBase) SetGoPointer(ptr uintptr) {
40+ x.Ptr = ptr
41+}
42+
43+// Gets the progress @self will snap back to after the gesture is canceled.
44+func (x *SwipeableBase) GetCancelProgress() float64 {
45+
46+ return XAdwSwipeableGetCancelProgress(x.GoPointer())
47+
48+}
49+
50+// Gets the swipe distance of @self.
51+//
52+// This corresponds to how many pixels 1 unit represents.
53+func (x *SwipeableBase) GetDistance() float64 {
54+
55+ return XAdwSwipeableGetDistance(x.GoPointer())
56+
57+}
58+
59+// Gets the current progress of @self.
60+func (x *SwipeableBase) GetProgress() float64 {
61+
62+ return XAdwSwipeableGetProgress(x.GoPointer())
63+
64+}
65+
66+// Gets the snap points of @self.
67+//
68+// Each snap point represents a progress value that is considered acceptable to
69+// end the swipe on.
70+func (x *SwipeableBase) GetSnapPoints(NSnapPointsVar int32) uintptr {
71+
72+ return XAdwSwipeableGetSnapPoints(x.GoPointer(), NSnapPointsVar)
73+
74+}
75+
76+// Gets the area @self can start a swipe from for the given direction and
77+// gesture type.
78+//
79+// This can be used to restrict swipes to only be possible from a certain area,
80+// for example, to only allow edge swipes, or to have a draggable element and
81+// ignore swipes elsewhere.
82+//
83+// If not implemented, the default implementation returns the allocation of
84+// @self, allowing swipes from anywhere.
85+func (x *SwipeableBase) GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle) {
86+
87+ XAdwSwipeableGetSwipeArea(x.GoPointer(), NavigationDirectionVar, IsDragVar, RectVar)
88+
89+}
90+
91+var XAdwSwipeableGetCancelProgress func(uintptr) float64
92+var XAdwSwipeableGetDistance func(uintptr) float64
93+var XAdwSwipeableGetProgress func(uintptr) float64
94+var XAdwSwipeableGetSnapPoints func(uintptr, int32) uintptr
95+var XAdwSwipeableGetSwipeArea func(uintptr, NavigationDirection, bool, *gdk.Rectangle)
96+
97+func init() {
98+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
99+ if err != nil {
100+ panic(err)
101+ }
102+
103+ core.PuregoSafeRegister(&XAdwSwipeableGetCancelProgress, lib, "adw_swipeable_get_cancel_progress")
104+ core.PuregoSafeRegister(&XAdwSwipeableGetDistance, lib, "adw_swipeable_get_distance")
105+ core.PuregoSafeRegister(&XAdwSwipeableGetProgress, lib, "adw_swipeable_get_progress")
106+ core.PuregoSafeRegister(&XAdwSwipeableGetSnapPoints, lib, "adw_swipeable_get_snap_points")
107+ core.PuregoSafeRegister(&XAdwSwipeableGetSwipeArea, lib, "adw_swipeable_get_swipe_area")
108+
109+}
A v4/adw/adw-tab-bar.go +485 -0 collapsed to keep the page light
A v4/adw/adw-tab-button.go +373 -0 collapsed to keep the page light
A v4/adw/adw-tab-overview.go +601 -0 collapsed to keep the page light
A v4/adw/adw-tab-view.go +1637 -0 collapsed to keep the page light
A v4/adw/adw-timed-animation.go +232 -0 collapsed to keep the page light
A v4/adw/adw-toast-overlay.go +292 -0 collapsed to keep the page light
A v4/adw/adw-toast.go +484 -0 collapsed to keep the page light
A v4/adw/adw-version.go +66 -0 collapsed to keep the page light
A v4/adw/adw-view-stack.go +842 -0 collapsed to keep the page light
A v4/adw/adw-view-switcher-bar.go +308 -0 collapsed to keep the page light
A v4/adw/adw-view-switcher-title.go +379 -0 collapsed to keep the page light
A v4/adw/adw-view-switcher.go +290 -0 collapsed to keep the page light
A v4/adw/adw-window-title.go +261 -0 collapsed to keep the page light
A v4/adw/adw-window.go +382 -0 collapsed to keep the page light
A v4/cairo/main.go +510 -0 collapsed to keep the page light
A v4/gdk/gdkapplaunchcontext.go +149 -0 collapsed to keep the page light
A v4/gdk/gdkcairo.go +101 -0 collapsed to keep the page light
A v4/gdk/gdkcairocontext.go +58 -0 collapsed to keep the page light
A v4/gdk/gdkclipboard.go +378 -0 collapsed to keep the page light
A v4/gdk/gdkcontentdeserializer.go +267 -0 collapsed to keep the page light
A v4/gdk/gdkcontentformats.go +54 -0 collapsed to keep the page light
A v4/gdk/gdkcontentprovider.go +231 -0 collapsed to keep the page light
A v4/gdk/gdkcontentserializer.go +268 -0 collapsed to keep the page light
A v4/gdk/gdkcursor.go +205 -0 collapsed to keep the page light
A v4/gdk/gdkdevice.go +375 -0 collapsed to keep the page light
A v4/gdk/gdkdevicepad.go +112 -0 collapsed to keep the page light
A v4/gdk/gdkdevicetool.go +113 -0 collapsed to keep the page light
A v4/gdk/gdkdisplay.go +564 -0 collapsed to keep the page light
A v4/gdk/gdkdisplaymanager.go +196 -0 collapsed to keep the page light
A v4/gdk/gdkdrag.go +274 -0 collapsed to keep the page light
A v4/gdk/gdkdragsurface.go +48 -0
@@ -0,0 +1,48 @@
1+// Package gdk was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package gdk
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+)
8+
9+// The `GdkDragSurfaceInterface` implementation is private to GDK.
10+type DragSurfaceInterface struct {
11+}
12+
13+// A `GdkDragSurface` is an interface for surfaces used during DND.
14+type DragSurface interface {
15+ GoPointer() uintptr
16+ SetGoPointer(uintptr)
17+ Present(WidthVar int32, HeightVar int32) bool
18+}
19+type DragSurfaceBase struct {
20+ Ptr uintptr
21+}
22+
23+func (x *DragSurfaceBase) GoPointer() uintptr {
24+ return x.Ptr
25+}
26+
27+func (x *DragSurfaceBase) SetGoPointer(ptr uintptr) {
28+ x.Ptr = ptr
29+}
30+
31+// Present @drag_surface.
32+func (x *DragSurfaceBase) Present(WidthVar int32, HeightVar int32) bool {
33+
34+ return XGdkDragSurfacePresent(x.GoPointer(), WidthVar, HeightVar)
35+
36+}
37+
38+var XGdkDragSurfacePresent func(uintptr, int32, int32) bool
39+
40+func init() {
41+ lib, err := purego.Dlopen(core.GetPath("GDK"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
42+ if err != nil {
43+ panic(err)
44+ }
45+
46+ core.PuregoSafeRegister(&XGdkDragSurfacePresent, lib, "gdk_drag_surface_present")
47+
48+}
A v4/gdk/gdkdrawcontext.go +164 -0 collapsed to keep the page light
A v4/gdk/gdkdrop.go +264 -0 collapsed to keep the page light
A v4/gdk/gdkenums.go +255 -0 collapsed to keep the page light
A v4/gdk/gdkevents.go +1222 -0 collapsed to keep the page light
A v4/gdk/gdkframeclock.go +351 -0 collapsed to keep the page light
A v4/gdk/gdkframetimings.go +13 -0 collapsed to keep the page light
A v4/gdk/gdkglcontext.go +399 -0 collapsed to keep the page light
A v4/gdk/gdkgltexture.go +296 -0 collapsed to keep the page light
A v4/gdk/gdkkeys.go +120 -0 collapsed to keep the page light
A v4/gdk/gdkmemorytexture.go +280 -0 collapsed to keep the page light
A v4/gdk/gdkmonitor.go +222 -0 collapsed to keep the page light
A v4/gdk/gdkpaintable.go +301 -0 collapsed to keep the page light
A v4/gdk/gdkpango.go +60 -0 collapsed to keep the page light
A v4/gdk/gdkpixbuf.go +61 -0 collapsed to keep the page light
A v4/gdk/gdkpopup.go +143 -0 collapsed to keep the page light
A v4/gdk/gdkpopuplayout.go +77 -0 collapsed to keep the page light
A v4/gdk/gdkrgba.go +21 -0 collapsed to keep the page light
A v4/gdk/gdkseat.go +202 -0 collapsed to keep the page light
A v4/gdk/gdksnapshot.go +28 -0 collapsed to keep the page light
A v4/gdk/gdksurface.go +566 -0 collapsed to keep the page light
A v4/gdk/gdktexture.go +536 -0 collapsed to keep the page light
A v4/gdk/gdktoplevel.go +399 -0 collapsed to keep the page light
A v4/gdk/gdktoplevellayout.go +14 -0 collapsed to keep the page light
A v4/gdk/gdktoplevelsize.go +29 -0 collapsed to keep the page light
A v4/gdk/gdktypes.go +71 -0 collapsed to keep the page light
A v4/gdk/gdkvulkancontext.go +94 -0 collapsed to keep the page light
A v4/gdk/main.go +53 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-animation.go +405 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-core.go +86 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-io.go +245 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-loader.go +359 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-simple-anim.go +86 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-transform.go +59 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf.go +1394 -0 collapsed to keep the page light
A v4/gdkpixbuf/main.go +76 -0 collapsed to keep the page light
A v4/gio/gaction.go +276 -0 collapsed to keep the page light
A v4/gio/gactiongroup.go +357 -0 collapsed to keep the page light
A v4/gio/gactionmap.go +168 -0 collapsed to keep the page light
A v4/gio/gappinfo.go +777 -0 collapsed to keep the page light
A v4/gio/gapplication.go +1388 -0 collapsed to keep the page light
A v4/gio/gapplicationcommandline.go +463 -0 collapsed to keep the page light
A v4/gio/gasyncinitable.go +237 -0 collapsed to keep the page light
A v4/gio/gasyncresult.go +186 -0 collapsed to keep the page light
A v4/gio/gbufferedinputstream.go +281 -0 collapsed to keep the page light
A v4/gio/gbufferedoutputstream.go +187 -0 collapsed to keep the page light
A v4/gio/gcancellable.go +362 -0 collapsed to keep the page light
A v4/gio/gcharsetconverter.go +228 -0 collapsed to keep the page light
A v4/gio/gcontenttype.go +240 -0 collapsed to keep the page light
A v4/gio/gconverter.go +150 -0 collapsed to keep the page light
A v4/gio/gconverterinputstream.go +141 -0 collapsed to keep the page light
A v4/gio/gconverteroutputstream.go +167 -0 collapsed to keep the page light
A v4/gio/gcredentials.go +194 -0 collapsed to keep the page light
A v4/gio/gdatagrambased.go +282 -0 collapsed to keep the page light
A v4/gio/gdatainputstream.go +451 -0 collapsed to keep the page light
A v4/gio/gdataoutputstream.go +217 -0 collapsed to keep the page light
A v4/gio/gdbusaddress.go +140 -0 collapsed to keep the page light
A v4/gio/gdbusconnection.go +277 -0 collapsed to keep the page light
A v4/gio/gdbuserror.go +156 -0 collapsed to keep the page light
A v4/gio/gdbusinterface.go +105 -0 collapsed to keep the page light
A v4/gio/gdbusinterfaceskeleton.go +298 -0 collapsed to keep the page light
A v4/gio/gdbusintrospection.go +114 -0 collapsed to keep the page light
A v4/gio/gdbusnameowning.go +134 -0 collapsed to keep the page light
A v4/gio/gdbusnamewatching.go +115 -0 collapsed to keep the page light
A v4/gio/gdbusobject.go +81 -0 collapsed to keep the page light
A v4/gio/gdbusobjectmanager.go +101 -0 collapsed to keep the page light
A v4/gio/gdbusobjectmanagerclient.go +437 -0 collapsed to keep the page light
A v4/gio/gdbusobjectmanagerserver.go +217 -0 collapsed to keep the page light
A v4/gio/gdbusobjectproxy.go +115 -0 collapsed to keep the page light
A v4/gio/gdbusobjectskeleton.go +176 -0 collapsed to keep the page light
A v4/gio/gdbusproxy.go +712 -0 collapsed to keep the page light
A v4/gio/gdbusutils.go +213 -0 collapsed to keep the page light
A v4/gio/gdebugcontroller.go +73 -0 collapsed to keep the page light
A v4/gio/gdebugcontrollerdbus.go +287 -0 collapsed to keep the page light
A v4/gio/gdesktopappinfo.go +663 -0 collapsed to keep the page light
A v4/gio/gdrive.go +388 -0 collapsed to keep the page light
A v4/gio/gdtlsclientconnection.go +130 -0 collapsed to keep the page light
A v4/gio/gdtlsconnection.go +536 -0 collapsed to keep the page light
A v4/gio/gdtlsserverconnection.go +55 -0 collapsed to keep the page light
A v4/gio/gemblem.go +145 -0 collapsed to keep the page light
A v4/gio/gemblemedicon.go +154 -0 collapsed to keep the page light
A v4/gio/gfile.go +2758 -0 large diff (2758 lines changed): collapsed
A v4/gio/gfileattribute.go +19 -0 collapsed to keep the page light
A v4/gio/gfiledescriptorbased.go +54 -0 collapsed to keep the page light
A v4/gio/gfileenumerator.go +313 -0 collapsed to keep the page light
A v4/gio/gfileicon.go +154 -0 collapsed to keep the page light
A v4/gio/gfileinfo.go +876 -0 collapsed to keep the page light
A v4/gio/gfileinputstream.go +166 -0 collapsed to keep the page light
A v4/gio/gfileiostream.go +197 -0 collapsed to keep the page light
A v4/gio/gfilemonitor.go +142 -0 collapsed to keep the page light
A v4/gio/gfilenamecompleter.go +101 -0 collapsed to keep the page light
A v4/gio/gfileoutputstream.go +191 -0 collapsed to keep the page light
A v4/gio/gfilterinputstream.go +83 -0 collapsed to keep the page light
A v4/gio/gfilteroutputstream.go +83 -0 collapsed to keep the page light
A v4/gio/gicon.go +167 -0 collapsed to keep the page light
A v4/gio/ginetaddress.go +272 -0 collapsed to keep the page light
A v4/gio/ginetaddressmask.go +194 -0 collapsed to keep the page light
A v4/gio/ginetsocketaddress.go +176 -0 collapsed to keep the page light
A v4/gio/ginitable.go +130 -0 collapsed to keep the page light
A v4/gio/ginputstream.go +430 -0 collapsed to keep the page light
A v4/gio/gio-2.0.go +5784 -0 large diff (5784 lines changed): collapsed
A v4/gio/gioenums.go +1790 -0 collapsed to keep the page light
A v4/gio/gioerror.go +31 -0 collapsed to keep the page light
A v4/gio/giomodule.go +248 -0 collapsed to keep the page light
A v4/gio/gioscheduler.go +46 -0 collapsed to keep the page light
A v4/gio/giostream.go +257 -0 collapsed to keep the page light
A v4/gio/giotypes.go +351 -0 collapsed to keep the page light
A v4/gio/glistmodel.go +192 -0 collapsed to keep the page light
A v4/gio/gliststore.go +286 -0 collapsed to keep the page light
A v4/gio/gloadableicon.go +87 -0 collapsed to keep the page light
A v4/gio/gmemoryinputstream.go +228 -0 collapsed to keep the page light
A v4/gio/gmemorymonitor.go +102 -0 collapsed to keep the page light
A v4/gio/gmemoryoutputstream.go +340 -0 collapsed to keep the page light
A v4/gio/gmenumodel.go +534 -0 collapsed to keep the page light
A v4/gio/gmount.go +448 -0 collapsed to keep the page light
A v4/gio/gmountoperation.go +383 -0 collapsed to keep the page light
A v4/gio/gnativesocketaddress.go +104 -0 collapsed to keep the page light
A v4/gio/gnativevolumemonitor.go +24 -0 collapsed to keep the page light
A v4/gio/gnetworkaddress.go +179 -0 collapsed to keep the page light
A v4/gio/gnetworking.go +28 -0 collapsed to keep the page light
A v4/gio/gnetworkmonitor.go +171 -0 collapsed to keep the page light
A v4/gio/gnetworkservice.go +169 -0 collapsed to keep the page light
A v4/gio/goutputstream.go +660 -0 collapsed to keep the page light
A v4/gio/gpermission.go +211 -0 collapsed to keep the page light
A v4/gio/gpollableinputstream.go +122 -0 collapsed to keep the page light
A v4/gio/gpollableoutputstream.go +157 -0 collapsed to keep the page light
A v4/gio/gpollableutils.go +108 -0 collapsed to keep the page light
A v4/gio/gpowerprofilemonitor.go +91 -0 collapsed to keep the page light
A v4/gio/gproxy.go +125 -0 collapsed to keep the page light
A v4/gio/gproxyaddress.go +186 -0 collapsed to keep the page light
A v4/gio/gproxyaddressenumerator.go +37 -0 collapsed to keep the page light
A v4/gio/gproxyresolver.go +124 -0 collapsed to keep the page light
A v4/gio/gremoteactiongroup.go +96 -0 collapsed to keep the page light
A v4/gio/gresolver.go +348 -0 collapsed to keep the page light
A v4/gio/gresource.go +143 -0 collapsed to keep the page light
A v4/gio/gseekable.go +125 -0 collapsed to keep the page light
A v4/gio/gsettings.go +1357 -0 collapsed to keep the page light
A v4/gio/gsettingsbackend.go +310 -0 collapsed to keep the page light
A v4/gio/gsettingsschema.go +146 -0 collapsed to keep the page light
A v4/gio/gsimpleactiongroup.go +441 -0 collapsed to keep the page light
A v4/gio/gsimpleasyncresult.go +576 -0 collapsed to keep the page light
A v4/gio/gsimpleproxyresolver.go +143 -0 collapsed to keep the page light
A v4/gio/gsocket.go +1353 -0 collapsed to keep the page light
A v4/gio/gsocketaddress.go +143 -0 collapsed to keep the page light
A v4/gio/gsocketaddressenumerator.go +117 -0 collapsed to keep the page light
A v4/gio/gsocketclient.go +713 -0 collapsed to keep the page light
A v4/gio/gsocketconnectable.go +155 -0 collapsed to keep the page light
A v4/gio/gsocketconnection.go +166 -0 collapsed to keep the page light
A v4/gio/gsocketcontrolmessage.go +111 -0 collapsed to keep the page light
A v4/gio/gsocketlistener.go +327 -0 collapsed to keep the page light
A v4/gio/gsocketservice.go +162 -0 collapsed to keep the page light
A v4/gio/gsrvtarget.go +26 -0 collapsed to keep the page light
A v4/gio/gtask.go +1138 -0 collapsed to keep the page light
A v4/gio/gtcpconnection.go +72 -0 collapsed to keep the page light
A v4/gio/gtcpwrapperconnection.go +82 -0 collapsed to keep the page light
A v4/gio/gthemedicon.go +183 -0 collapsed to keep the page light
A v4/gio/gthreadedsocketservice.go +88 -0 collapsed to keep the page light
A v4/gio/gtlsbackend.go +175 -0 collapsed to keep the page light
A v4/gio/gtlscertificate.go +357 -0 collapsed to keep the page light
A v4/gio/gtlsclientconnection.go +210 -0 collapsed to keep the page light
A v4/gio/gtlsconnection.go +521 -0 collapsed to keep the page light
A v4/gio/gtlsdatabase.go +339 -0 collapsed to keep the page light
A v4/gio/gtlsfiledatabase.go +61 -0 collapsed to keep the page light
A v4/gio/gtlsinteraction.go +260 -0
@@ -0,0 +1,260 @@
1+// Package gio was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package gio
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+)
9+
10+// The class for #GTlsInteraction. Derived classes implement the various
11+// virtual interaction methods to handle TLS interactions.
12+//
13+// Derived classes can choose to implement whichever interactions methods they'd
14+// like to support by overriding those virtual methods in their class
15+// initialization function. If a derived class implements an async method,
16+// it must also implement the corresponding finish method.
17+//
18+// The synchronous interaction methods should implement to display modal dialogs,
19+// and the asynchronous methods to display modeless dialogs.
20+//
21+// If the user cancels an interaction, then the result should be
22+// %G_TLS_INTERACTION_FAILED and the error should be set with a domain of
23+// %G_IO_ERROR and code of %G_IO_ERROR_CANCELLED.
24+type TlsInteractionClass struct {
25+ ParentClass uintptr
26+
27+ Padding uintptr
28+}
29+
30+type TlsInteractionPrivate struct {
31+}
32+
33+// #GTlsInteraction provides a mechanism for the TLS connection and database
34+// code to interact with the user. It can be used to ask the user for passwords.
35+//
36+// To use a #GTlsInteraction with a TLS connection use
37+// g_tls_connection_set_interaction().
38+//
39+// Callers should instantiate a derived class that implements the various
40+// interaction methods to show the required dialogs.
41+//
42+// Callers should use the 'invoke' functions like
43+// g_tls_interaction_invoke_ask_password() to run interaction methods. These
44+// functions make sure that the interaction is invoked in the main loop
45+// and not in the current thread, if the current thread is not running the
46+// main loop.
47+//
48+// Derived classes can choose to implement whichever interactions methods they'd
49+// like to support by overriding those virtual methods in their class
50+// initialization function. Any interactions not implemented will return
51+// %G_TLS_INTERACTION_UNHANDLED. If a derived class implements an async method,
52+// it must also implement the corresponding finish method.
53+type TlsInteraction struct {
54+ gobject.Object
55+}
56+
57+func TlsInteractionNewFromInternalPtr(ptr uintptr) *TlsInteraction {
58+ cls := &TlsInteraction{}
59+ cls.Ptr = ptr
60+ return cls
61+}
62+
63+var xTlsInteractionAskPassword func(uintptr, uintptr, uintptr) TlsInteractionResult
64+
65+// Run synchronous interaction to ask the user for a password. In general,
66+// g_tls_interaction_invoke_ask_password() should be used instead of this
67+// function.
68+//
69+// Derived subclasses usually implement a password prompt, although they may
70+// also choose to provide a password from elsewhere. The @password value will
71+// be filled in and then @callback will be called. Alternatively the user may
72+// abort this password request, which will usually abort the TLS connection.
73+//
74+// If the interaction is cancelled by the cancellation object, or by the
75+// user then %G_TLS_INTERACTION_FAILED will be returned with an error that
76+// contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
77+// not support immediate cancellation.
78+func (x *TlsInteraction) AskPassword(PasswordVar *TlsPassword, CancellableVar *Cancellable) TlsInteractionResult {
79+
80+ return xTlsInteractionAskPassword(x.GoPointer(), PasswordVar.GoPointer(), CancellableVar.GoPointer())
81+
82+}
83+
84+var xTlsInteractionAskPasswordAsync func(uintptr, uintptr, uintptr, uintptr, uintptr)
85+
86+// Run asynchronous interaction to ask the user for a password. In general,
87+// g_tls_interaction_invoke_ask_password() should be used instead of this
88+// function.
89+//
90+// Derived subclasses usually implement a password prompt, although they may
91+// also choose to provide a password from elsewhere. The @password value will
92+// be filled in and then @callback will be called. Alternatively the user may
93+// abort this password request, which will usually abort the TLS connection.
94+//
95+// If the interaction is cancelled by the cancellation object, or by the
96+// user then %G_TLS_INTERACTION_FAILED will be returned with an error that
97+// contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
98+// not support immediate cancellation.
99+//
100+// Certain implementations may not support immediate cancellation.
101+func (x *TlsInteraction) AskPasswordAsync(PasswordVar *TlsPassword, CancellableVar *Cancellable, CallbackVar AsyncReadyCallback, UserDataVar uintptr) {
102+
103+ xTlsInteractionAskPasswordAsync(x.GoPointer(), PasswordVar.GoPointer(), CancellableVar.GoPointer(), purego.NewCallback(CallbackVar), UserDataVar)
104+
105+}
106+
107+var xTlsInteractionAskPasswordFinish func(uintptr, uintptr) TlsInteractionResult
108+
109+// Complete an ask password user interaction request. This should be once
110+// the g_tls_interaction_ask_password_async() completion callback is called.
111+//
112+// If %G_TLS_INTERACTION_HANDLED is returned, then the #GTlsPassword passed
113+// to g_tls_interaction_ask_password() will have its password filled in.
114+//
115+// If the interaction is cancelled by the cancellation object, or by the
116+// user then %G_TLS_INTERACTION_FAILED will be returned with an error that
117+// contains a %G_IO_ERROR_CANCELLED error code.
118+func (x *TlsInteraction) AskPasswordFinish(ResultVar AsyncResult) TlsInteractionResult {
119+
120+ return xTlsInteractionAskPasswordFinish(x.GoPointer(), ResultVar.GoPointer())
121+
122+}
123+
124+var xTlsInteractionInvokeAskPassword func(uintptr, uintptr, uintptr) TlsInteractionResult
125+
126+// Invoke the interaction to ask the user for a password. It invokes this
127+// interaction in the main loop, specifically the #GMainContext returned by
128+// g_main_context_get_thread_default() when the interaction is created. This
129+// is called by called by #GTlsConnection or #GTlsDatabase to ask the user
130+// for a password.
131+//
132+// Derived subclasses usually implement a password prompt, although they may
133+// also choose to provide a password from elsewhere. The @password value will
134+// be filled in and then @callback will be called. Alternatively the user may
135+// abort this password request, which will usually abort the TLS connection.
136+//
137+// The implementation can either be a synchronous (eg: modal dialog) or an
138+// asynchronous one (eg: modeless dialog). This function will take care of
139+// calling which ever one correctly.
140+//
141+// If the interaction is cancelled by the cancellation object, or by the
142+// user then %G_TLS_INTERACTION_FAILED will be returned with an error that
143+// contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
144+// not support immediate cancellation.
145+func (x *TlsInteraction) InvokeAskPassword(PasswordVar *TlsPassword, CancellableVar *Cancellable) TlsInteractionResult {
146+
147+ return xTlsInteractionInvokeAskPassword(x.GoPointer(), PasswordVar.GoPointer(), CancellableVar.GoPointer())
148+
149+}
150+
151+var xTlsInteractionInvokeRequestCertificate func(uintptr, uintptr, TlsCertificateRequestFlags, uintptr) TlsInteractionResult
152+
153+// Invoke the interaction to ask the user to choose a certificate to
154+// use with the connection. It invokes this interaction in the main
155+// loop, specifically the #GMainContext returned by
156+// g_main_context_get_thread_default() when the interaction is
157+// created. This is called by called by #GTlsConnection when the peer
158+// requests a certificate during the handshake.
159+//
160+// Derived subclasses usually implement a certificate selector,
161+// although they may also choose to provide a certificate from
162+// elsewhere. Alternatively the user may abort this certificate
163+// request, which may or may not abort the TLS connection.
164+//
165+// The implementation can either be a synchronous (eg: modal dialog) or an
166+// asynchronous one (eg: modeless dialog). This function will take care of
167+// calling which ever one correctly.
168+//
169+// If the interaction is cancelled by the cancellation object, or by the
170+// user then %G_TLS_INTERACTION_FAILED will be returned with an error that
171+// contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
172+// not support immediate cancellation.
173+func (x *TlsInteraction) InvokeRequestCertificate(ConnectionVar *TlsConnection, FlagsVar TlsCertificateRequestFlags, CancellableVar *Cancellable) TlsInteractionResult {
174+
175+ return xTlsInteractionInvokeRequestCertificate(x.GoPointer(), ConnectionVar.GoPointer(), FlagsVar, CancellableVar.GoPointer())
176+
177+}
178+
179+var xTlsInteractionRequestCertificate func(uintptr, uintptr, TlsCertificateRequestFlags, uintptr) TlsInteractionResult
180+
181+// Run synchronous interaction to ask the user to choose a certificate to use
182+// with the connection. In general, g_tls_interaction_invoke_request_certificate()
183+// should be used instead of this function.
184+//
185+// Derived subclasses usually implement a certificate selector, although they may
186+// also choose to provide a certificate from elsewhere. Alternatively the user may
187+// abort this certificate request, which will usually abort the TLS connection.
188+//
189+// If %G_TLS_INTERACTION_HANDLED is returned, then the #GTlsConnection
190+// passed to g_tls_interaction_request_certificate() will have had its
191+// #GTlsConnection:certificate filled in.
192+//
193+// If the interaction is cancelled by the cancellation object, or by the
194+// user then %G_TLS_INTERACTION_FAILED will be returned with an error that
195+// contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
196+// not support immediate cancellation.
197+func (x *TlsInteraction) RequestCertificate(ConnectionVar *TlsConnection, FlagsVar TlsCertificateRequestFlags, CancellableVar *Cancellable) TlsInteractionResult {
198+
199+ return xTlsInteractionRequestCertificate(x.GoPointer(), ConnectionVar.GoPointer(), FlagsVar, CancellableVar.GoPointer())
200+
201+}
202+
203+var xTlsInteractionRequestCertificateAsync func(uintptr, uintptr, TlsCertificateRequestFlags, uintptr, uintptr, uintptr)
204+
205+// Run asynchronous interaction to ask the user for a certificate to use with
206+// the connection. In general, g_tls_interaction_invoke_request_certificate() should
207+// be used instead of this function.
208+//
209+// Derived subclasses usually implement a certificate selector, although they may
210+// also choose to provide a certificate from elsewhere. @callback will be called
211+// when the operation completes. Alternatively the user may abort this certificate
212+// request, which will usually abort the TLS connection.
213+func (x *TlsInteraction) RequestCertificateAsync(ConnectionVar *TlsConnection, FlagsVar TlsCertificateRequestFlags, CancellableVar *Cancellable, CallbackVar AsyncReadyCallback, UserDataVar uintptr) {
214+
215+ xTlsInteractionRequestCertificateAsync(x.GoPointer(), ConnectionVar.GoPointer(), FlagsVar, CancellableVar.GoPointer(), purego.NewCallback(CallbackVar), UserDataVar)
216+
217+}
218+
219+var xTlsInteractionRequestCertificateFinish func(uintptr, uintptr) TlsInteractionResult
220+
221+// Complete a request certificate user interaction request. This should be once
222+// the g_tls_interaction_request_certificate_async() completion callback is called.
223+//
224+// If %G_TLS_INTERACTION_HANDLED is returned, then the #GTlsConnection
225+// passed to g_tls_interaction_request_certificate_async() will have had its
226+// #GTlsConnection:certificate filled in.
227+//
228+// If the interaction is cancelled by the cancellation object, or by the
229+// user then %G_TLS_INTERACTION_FAILED will be returned with an error that
230+// contains a %G_IO_ERROR_CANCELLED error code.
231+func (x *TlsInteraction) RequestCertificateFinish(ResultVar AsyncResult) TlsInteractionResult {
232+
233+ return xTlsInteractionRequestCertificateFinish(x.GoPointer(), ResultVar.GoPointer())
234+
235+}
236+
237+func (c *TlsInteraction) GoPointer() uintptr {
238+ return c.Ptr
239+}
240+
241+func (c *TlsInteraction) SetGoPointer(ptr uintptr) {
242+ c.Ptr = ptr
243+}
244+
245+func init() {
246+ lib, err := purego.Dlopen(core.GetPath("GIO"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
247+ if err != nil {
248+ panic(err)
249+ }
250+
251+ core.PuregoSafeRegister(&xTlsInteractionAskPassword, lib, "g_tls_interaction_ask_password")
252+ core.PuregoSafeRegister(&xTlsInteractionAskPasswordAsync, lib, "g_tls_interaction_ask_password_async")
253+ core.PuregoSafeRegister(&xTlsInteractionAskPasswordFinish, lib, "g_tls_interaction_ask_password_finish")
254+ core.PuregoSafeRegister(&xTlsInteractionInvokeAskPassword, lib, "g_tls_interaction_invoke_ask_password")
255+ core.PuregoSafeRegister(&xTlsInteractionInvokeRequestCertificate, lib, "g_tls_interaction_invoke_request_certificate")
256+ core.PuregoSafeRegister(&xTlsInteractionRequestCertificate, lib, "g_tls_interaction_request_certificate")
257+ core.PuregoSafeRegister(&xTlsInteractionRequestCertificateAsync, lib, "g_tls_interaction_request_certificate_async")
258+ core.PuregoSafeRegister(&xTlsInteractionRequestCertificateFinish, lib, "g_tls_interaction_request_certificate_finish")
259+
260+}
A v4/gio/gtlspassword.go +175 -0 collapsed to keep the page light
A v4/gio/gtlsserverconnection.go +60 -0 collapsed to keep the page light
A v4/gio/gunixconnection.go +208 -0 collapsed to keep the page light
A v4/gio/gunixcredentialsmessage.go +112 -0 collapsed to keep the page light
A v4/gio/gunixfdlist.go +192 -0 collapsed to keep the page light
A v4/gio/gunixfdmessage.go +151 -0 collapsed to keep the page light
A v4/gio/gunixinputstream.go +160 -0 collapsed to keep the page light
A v4/gio/gunixmounts.go +429 -0 collapsed to keep the page light
A v4/gio/gunixoutputstream.go +186 -0 collapsed to keep the page light
A v4/gio/gunixsocketaddress.go +233 -0 collapsed to keep the page light
A v4/gio/gvfs.go +166 -0 collapsed to keep the page light
A v4/gio/gvolume.go +352 -0 collapsed to keep the page light
A v4/gio/gvolumemonitor.go +271 -0 collapsed to keep the page light
A v4/gio/gzlibcompressor.go +190 -0 collapsed to keep the page light
A v4/gio/gzlibdecompressor.go +177 -0 collapsed to keep the page light
A v4/gio/main.go +25 -0 collapsed to keep the page light
A v4/glib/garray.go +177 -0 collapsed to keep the page light
A v4/glib/gasyncqueue.go +8 -0 collapsed to keep the page light
A v4/glib/gatomic.go +321 -0 collapsed to keep the page light
A v4/glib/gbacktrace.go +96 -0 collapsed to keep the page light
A v4/glib/gbase64.go +110 -0 collapsed to keep the page light
A v4/glib/gbitlock.go +128 -0 collapsed to keep the page light
A v4/glib/gbookmarkfile.go +31 -0 collapsed to keep the page light
A v4/glib/gcharset.go +143 -0 collapsed to keep the page light
A v4/glib/gchecksum.go +93 -0 collapsed to keep the page light
A v4/glib/gconvert.go +356 -0 collapsed to keep the page light
A v4/glib/gdataset.go +261 -0 collapsed to keep the page light
A v4/glib/gdate.go +296 -0 collapsed to keep the page light
A v4/glib/gdatetime.go +9 -0 collapsed to keep the page light
A v4/glib/gdir.go +6 -0 collapsed to keep the page light
A v4/glib/genviron.go +154 -0 collapsed to keep the page light
A v4/glib/gerror.go +143 -0 collapsed to keep the page light
A v4/glib/gfileutils.go +716 -0 collapsed to keep the page light
A v4/glib/ggettext.go +135 -0 collapsed to keep the page light
A v4/glib/ghash.go +441 -0 collapsed to keep the page light
A v4/glib/ghmac.go +61 -0 collapsed to keep the page light
A v4/glib/ghook.go +154 -0 collapsed to keep the page light
A v4/glib/ghostutils.go +89 -0 collapsed to keep the page light
A v4/glib/giochannel.go +237 -0 collapsed to keep the page light
A v4/glib/gkeyfile.go +46 -0 collapsed to keep the page light
A v4/glib/glib-2.0.go +46 -0 collapsed to keep the page light
A v4/glib/glib-types.go +35 -0 collapsed to keep the page light
A v4/glib/glib-unix.go +174 -0 collapsed to keep the page light
A v4/glib/glibconfig.go +11 -0 collapsed to keep the page light
A v4/glib/glist.go +36 -0 collapsed to keep the page light
A v4/glib/gmain.go +826 -0 collapsed to keep the page light
A v4/glib/gmappedfile.go +8 -0 collapsed to keep the page light
A v4/glib/gmarkup.go +228 -0 collapsed to keep the page light
A v4/glib/gmem.go +273 -0 collapsed to keep the page light
A v4/glib/gmessages.go +815 -0 collapsed to keep the page light
A v4/glib/gnode.go +83 -0 collapsed to keep the page light
A v4/glib/goption.go +136 -0 collapsed to keep the page light
A v4/glib/gpattern.go +71 -0 collapsed to keep the page light
A v4/glib/gpoll.go +55 -0 collapsed to keep the page light
A v4/glib/gprimes.go +30 -0 collapsed to keep the page light
A v4/glib/gprintf.go +122 -0 collapsed to keep the page light
A v4/glib/gqsort.go +28 -0 collapsed to keep the page light
A v4/glib/gquark.go +120 -0 collapsed to keep the page light
A v4/glib/gqueue.go +12 -0 collapsed to keep the page light
A v4/glib/grand.go +74 -0 collapsed to keep the page light
A v4/glib/grcbox.go +205 -0 collapsed to keep the page light
A v4/glib/grefcount.go +103 -0 collapsed to keep the page light
A v4/glib/grefstring.go +95 -0 collapsed to keep the page light
A v4/glib/gregex.go +536 -0 collapsed to keep the page light
A v4/glib/gscanner.go +203 -0 collapsed to keep the page light
A v4/glib/gsequence.go +145 -0 collapsed to keep the page light
A v4/glib/gshell.go +110 -0 collapsed to keep the page light
A v4/glib/gslice.go +142 -0 collapsed to keep the page light
A v4/glib/gslist.go +35 -0 collapsed to keep the page light
A v4/glib/gspawn.go +550 -0 collapsed to keep the page light
A v4/glib/gstdio.go +103 -0 collapsed to keep the page light
A v4/glib/gstrfuncs.go +1089 -0 collapsed to keep the page light
A v4/glib/gstring.go +11 -0 collapsed to keep the page light
A v4/glib/gstringchunk.go +7 -0 collapsed to keep the page light
A v4/glib/gstrvbuilder.go +18 -0 collapsed to keep the page light
A v4/glib/gtestutils.go +1164 -0 collapsed to keep the page light
A v4/glib/gthread.go +436 -0 collapsed to keep the page light
A v4/glib/gthreadpool.go +105 -0 collapsed to keep the page light
A v4/glib/gtimer.go +60 -0 collapsed to keep the page light
A v4/glib/gtimezone.go +27 -0 collapsed to keep the page light
A v4/glib/gtrashstack.go +65 -0 collapsed to keep the page light
A v4/glib/gtree.go +24 -0 collapsed to keep the page light
A v4/glib/gtypes.go +106 -0 collapsed to keep the page light
A v4/glib/gunicode.go +1566 -0 collapsed to keep the page light
A v4/glib/guri.go +600 -0 collapsed to keep the page light
A v4/glib/gutils.go +744 -0 collapsed to keep the page light
A v4/glib/guuid.go +44 -0 collapsed to keep the page light
A v4/glib/gvariant.go +582 -0 collapsed to keep the page light
A v4/glib/gvarianttype.go +238 -0 collapsed to keep the page light
A v4/glib/gversion.go +39 -0 collapsed to keep the page light
A v4/glib/main.go +159 -0 collapsed to keep the page light
A v4/gmodule/gmodule.go +106 -0 collapsed to keep the page light
A v4/gmodule/main.go +25 -0 collapsed to keep the page light
A v4/gobject/gbinding.go +38 -0 collapsed to keep the page light
A v4/gobject/gboxed.go +61 -0 collapsed to keep the page light
A v4/gobject/gclosure.go +172 -0 collapsed to keep the page light
A v4/gobject/genums.go +220 -0 collapsed to keep the page light
A v4/gobject/gmarshal.go +260 -0 collapsed to keep the page light
A v4/gobject/gobject-2.0.go +723 -0 collapsed to keep the page light
A v4/gobject/gobject.go +1326 -0 collapsed to keep the page light
A v4/gobject/gparam.go +411 -0 collapsed to keep the page light
A v4/gobject/gparamspecs.go +929 -0 collapsed to keep the page light
A v4/gobject/gsignal.go +765 -0 collapsed to keep the page light
A v4/gobject/gsourceclosure.go +49 -0 collapsed to keep the page light
A v4/gobject/gtype.go +1114 -0 collapsed to keep the page light
A v4/gobject/gtypemodule.go +204 -0 collapsed to keep the page light
A v4/gobject/gtypeplugin.go +29 -0 collapsed to keep the page light
A v4/gobject/gvalue.go +73 -0 collapsed to keep the page light
A v4/gobject/gvaluearray.go +11 -0 collapsed to keep the page light
A v4/gobject/gvaluetypes.go +48 -0 collapsed to keep the page light
A v4/gobject/main.go +4 -0 collapsed to keep the page light
A v4/gobject/more.go +94 -0 collapsed to keep the page light
A v4/graphene/graphene-box.go +98 -0 collapsed to keep the page light
A v4/graphene/graphene-config.go +22 -0 collapsed to keep the page light
A v4/graphene/graphene-euler.go +91 -0 collapsed to keep the page light
A v4/graphene/graphene-frustum.go +10 -0 collapsed to keep the page light
A v4/graphene/graphene-matrix.go +10 -0 collapsed to keep the page light
A v4/graphene/graphene-plane.go +12 -0 collapsed to keep the page light
A v4/graphene/graphene-point.go +32 -0 collapsed to keep the page light
A v4/graphene/graphene-point3d.go +34 -0 collapsed to keep the page light
A v4/graphene/graphene-quad.go +10 -0 collapsed to keep the page light
A v4/graphene/graphene-quaternion.go +16 -0 collapsed to keep the page light
A v4/graphene/graphene-ray.go +27 -0 collapsed to keep the page light
A v4/graphene/graphene-rect.go +56 -0 collapsed to keep the page light
A v4/graphene/graphene-size.go +33 -0 collapsed to keep the page light
A v4/graphene/graphene-sphere.go +9 -0 collapsed to keep the page light
A v4/graphene/graphene-triangle.go +11 -0 collapsed to keep the page light
A v4/graphene/graphene-vec2.go +63 -0 collapsed to keep the page light
A v4/graphene/graphene-vec3.go +78 -0 collapsed to keep the page light
A v4/graphene/graphene-vec4.go +89 -0 collapsed to keep the page light
A v4/gsk/gskbroadwayrenderer.go +59 -0 collapsed to keep the page light
A v4/gsk/gskcairorenderer.go +63 -0 collapsed to keep the page light
A v4/gsk/gskenums.go +221 -0 collapsed to keep the page light
A v4/gsk/gskglrenderer.go +52 -0 collapsed to keep the page light
A v4/gsk/gskglshader.go +432 -0 collapsed to keep the page light
A v4/gsk/gskrenderer.go +177 -0 collapsed to keep the page light
A v4/gsk/gskrendernode.go +250 -0 collapsed to keep the page light
A v4/gsk/gskrendernodeimpl.go +1884 -0 collapsed to keep the page light
A v4/gsk/gskroundedrect.go +21 -0 collapsed to keep the page light
A v4/gsk/gsktransform.go +32 -0 collapsed to keep the page light
A v4/gsk/gsktypes.go +14 -0 collapsed to keep the page light
A v4/gsk/main.go +59 -0 collapsed to keep the page light
A v4/gtk/gtkaboutdialog.go +819 -0 collapsed to keep the page light
A v4/gtk/gtkaccelgroup.go +161 -0 collapsed to keep the page light
A v4/gtk/gtkaccessible.go +243 -0 collapsed to keep the page light
A v4/gtk/gtkactionable.go +153 -0 collapsed to keep the page light
A v4/gtk/gtkactionbar.go +321 -0 collapsed to keep the page light
A v4/gtk/gtkadjustment.go +299 -0 collapsed to keep the page light
A v4/gtk/gtkappchooser.go +91 -0 collapsed to keep the page light
A v4/gtk/gtkappchooserbutton.go +426 -0 collapsed to keep the page light
A v4/gtk/gtkappchooserdialog.go +413 -0 collapsed to keep the page light
A v4/gtk/gtkappchooserwidget.go +410 -0 collapsed to keep the page light
A v4/gtk/gtkapplication.go +812 -0 collapsed to keep the page light
A v4/gtk/gtkapplicationwindow.go +778 -0 collapsed to keep the page light
A v4/gtk/gtkaspectframe.go +320 -0 collapsed to keep the page light
A v4/gtk/gtkassistant.go +809 -0 collapsed to keep the page light
A v4/gtk/gtkatcontext.go +107 -0 collapsed to keep the page light
A v4/gtk/gtkbinlayout.go +60 -0 collapsed to keep the page light
A v4/gtk/gtkbitset.go +64 -0 collapsed to keep the page light
A v4/gtk/gtkbookmarklist.go +225 -0 collapsed to keep the page light
A v4/gtk/gtkboolfilter.go +110 -0 collapsed to keep the page light
A v4/gtk/gtkborder.go +15 -0 collapsed to keep the page light
A v4/gtk/gtkbox.go +376 -0 collapsed to keep the page light
A v4/gtk/gtkboxlayout.go +149 -0 collapsed to keep the page light
A v4/gtk/gtkbuildable.go +75 -0 collapsed to keep the page light
A v4/gtk/gtkbuilder.go +706 -0 collapsed to keep the page light
A v4/gtk/gtkbuilderlistitemfactory.go +137 -0 collapsed to keep the page light
A v4/gtk/gtkbuilderscope.go +168 -0 collapsed to keep the page light
A v4/gtk/gtkbutton.go +543 -0 collapsed to keep the page light
A v4/gtk/gtkcalendar.go +445 -0 collapsed to keep the page light
A v4/gtk/gtkcellarea.go +1168 -0 collapsed to keep the page light
A v4/gtk/gtkcellareabox.go +234 -0 collapsed to keep the page light
A v4/gtk/gtkcellareacontext.go +236 -0 collapsed to keep the page light
A v4/gtk/gtkcelleditable.go +82 -0 collapsed to keep the page light
A v4/gtk/gtkcelllayout.go +303 -0 collapsed to keep the page light
A v4/gtk/gtkcellrenderer.go +483 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendereraccel.go +93 -0 collapsed to keep the page light
A v4/gtk/gtkcellrenderercombo.go +92 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendererpixbuf.go +72 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendererprogress.go +70 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendererspin.go +67 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendererspinner.go +65 -0 collapsed to keep the page light
A v4/gtk/gtkcellrenderertext.go +104 -0 collapsed to keep the page light
A v4/gtk/gtkcellrenderertoggle.go +149 -0 collapsed to keep the page light
A v4/gtk/gtkcellview.go +530 -0 collapsed to keep the page light
A v4/gtk/gtkcenterbox.go +364 -0 collapsed to keep the page light
A v4/gtk/gtkcenterlayout.go +195 -0 collapsed to keep the page light
A v4/gtk/gtkcheckbutton.go +553 -0 collapsed to keep the page light
A v4/gtk/gtkcolorbutton.go +365 -0 collapsed to keep the page light
A v4/gtk/gtkcolorchooser.go +114 -0 collapsed to keep the page light
A v4/gtk/gtkcolorchooserdialog.go +371 -0 collapsed to keep the page light
A v4/gtk/gtkcolorchooserwidget.go +271 -0 collapsed to keep the page light
A v4/gtk/gtkcolorutils.go +41 -0 collapsed to keep the page light
A v4/gtk/gtkcolumnview.go +627 -0 collapsed to keep the page light
A v4/gtk/gtkcolumnviewcolumn.go +311 -0 collapsed to keep the page light
A v4/gtk/gtkcombobox.go +918 -0 collapsed to keep the page light
A v4/gtk/gtkcomboboxtext.go +538 -0 collapsed to keep the page light
A v4/gtk/gtkconstraint.go +253 -0 collapsed to keep the page light
A v4/gtk/gtkconstraintguide.go +179 -0 collapsed to keep the page light
A v4/gtk/gtkconstraintlayout.go +490 -0 collapsed to keep the page light
A v4/gtk/gtkcssenums.go +40 -0 collapsed to keep the page light
A v4/gtk/gtkcsserror.go +25 -0 collapsed to keep the page light
A v4/gtk/gtkcsslocation.go +26 -0 collapsed to keep the page light
A v4/gtk/gtkcssprovider.go +190 -0 collapsed to keep the page light
A v4/gtk/gtkcsssection.go +9 -0 collapsed to keep the page light
A v4/gtk/gtkcustomfilter.go +86 -0 collapsed to keep the page light
A v4/gtk/gtkcustomlayout.go +72 -0 collapsed to keep the page light
A v4/gtk/gtkcustomsorter.go +78 -0 collapsed to keep the page light
A v4/gtk/gtkdebug.go +89 -0 collapsed to keep the page light
A v4/gtk/gtkdialog.go +741 -0 collapsed to keep the page light
A v4/gtk/gtkdirectorylist.go +317 -0 collapsed to keep the page light
A v4/gtk/gtkdragicon.go +335 -0 collapsed to keep the page light
A v4/gtk/gtkdragsource.go +318 -0 collapsed to keep the page light
A v4/gtk/gtkdrawingarea.go +388 -0 collapsed to keep the page light
A v4/gtk/gtkdropcontrollermotion.go +142 -0 collapsed to keep the page light
A v4/gtk/gtkdropdown.go +489 -0 collapsed to keep the page light
A v4/gtk/gtkdroptarget.go +365 -0 collapsed to keep the page light
A v4/gtk/gtkdroptargetasync.go +237 -0 collapsed to keep the page light
A v4/gtk/gtkeditable.go +572 -0 collapsed to keep the page light
A v4/gtk/gtkeditablelabel.go +508 -0 collapsed to keep the page light
A v4/gtk/gtkemojichooser.go +302 -0 collapsed to keep the page light
A v4/gtk/gtkentry.go +1419 -0 collapsed to keep the page light
A v4/gtk/gtkentrybuffer.go +226 -0 collapsed to keep the page light
A v4/gtk/gtkentrycompletion.go +595 -0 collapsed to keep the page light
A v4/gtk/gtkenums.go +1512 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontroller.go +226 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollerfocus.go +124 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollerkey.go +165 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollerlegacy.go +70 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollermotion.go +119 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollerscroll.go +203 -0 collapsed to keep the page light
A v4/gtk/gtkexpander.go +507 -0 collapsed to keep the page light
A v4/gtk/gtkexpression.go +711 -0 collapsed to keep the page light
A v4/gtk/gtkfilechooser.go +532 -0 collapsed to keep the page light
A v4/gtk/gtkfilechooserdialog.go +820 -0 collapsed to keep the page light
A v4/gtk/gtkfilechoosernative.go +596 -0 collapsed to keep the page light
A v4/gtk/gtkfilechooserwidget.go +783 -0 collapsed to keep the page light
A v4/gtk/gtkfilefilter.go +244 -0 collapsed to keep the page light
A v4/gtk/gtkfilter.go +170 -0 collapsed to keep the page light
A v4/gtk/gtkfilterlistmodel.go +282 -0 collapsed to keep the page light
A v4/gtk/gtkfixed.go +309 -0 collapsed to keep the page light
A v4/gtk/gtkfixedlayout.go +129 -0 collapsed to keep the page light
A v4/gtk/gtkflattenlistmodel.go +200 -0 collapsed to keep the page light
A v4/gtk/gtkflowbox.go +1130 -0 collapsed to keep the page light
A v4/gtk/gtkfontbutton.go +565 -0 collapsed to keep the page light
A v4/gtk/gtkfontchooser.go +347 -0 collapsed to keep the page light
A v4/gtk/gtkfontchooserdialog.go +539 -0 collapsed to keep the page light
A v4/gtk/gtkfontchooserwidget.go +429 -0 collapsed to keep the page light
A v4/gtk/gtkframe.go +355 -0 collapsed to keep the page light
A v4/gtk/gtkgesture.go +506 -0 collapsed to keep the page light
A v4/gtk/gtkgestureclick.go +119 -0 collapsed to keep the page light
A v4/gtk/gtkgesturedrag.go +127 -0 collapsed to keep the page light
A v4/gtk/gtkgesturelongpress.go +118 -0 collapsed to keep the page light
A v4/gtk/gtkgesturepan.go +100 -0 collapsed to keep the page light
A v4/gtk/gtkgesturerotate.go +85 -0 collapsed to keep the page light
A v4/gtk/gtkgesturesingle.go +152 -0 collapsed to keep the page light
A v4/gtk/gtkgesturestylus.go +183 -0 collapsed to keep the page light
A v4/gtk/gtkgestureswipe.go +94 -0 collapsed to keep the page light
A v4/gtk/gtkgesturezoom.go +87 -0 collapsed to keep the page light
A v4/gtk/gtkglarea.go +592 -0 collapsed to keep the page light
A v4/gtk/gtkgrid.go +577 -0 collapsed to keep the page light
A v4/gtk/gtkgridlayout.go +302 -0 collapsed to keep the page light
A v4/gtk/gtkgridview.go +519 -0 collapsed to keep the page light
A v4/gtk/gtkheaderbar.go +407 -0 collapsed to keep the page light
A v4/gtk/gtkicontheme.go +622 -0 collapsed to keep the page light
A v4/gtk/gtkiconview.go +1373 -0 collapsed to keep the page light
A v4/gtk/gtkimage.go +618 -0 collapsed to keep the page light
A v4/gtk/gtkimcontext.go +384 -0 collapsed to keep the page light
A v4/gtk/gtkimcontextsimple.go +122 -0 collapsed to keep the page light
A v4/gtk/gtkimmulticontext.go +90 -0 collapsed to keep the page light
A v4/gtk/gtkinfobar.go +528 -0 collapsed to keep the page light
A v4/gtk/gtkinscription.go +469 -0 collapsed to keep the page light
A v4/gtk/gtklabel.go +1201 -0 collapsed to keep the page light
A v4/gtk/gtklayoutchild.go +87 -0 collapsed to keep the page light
A v4/gtk/gtklayoutmanager.go +191 -0 collapsed to keep the page light
A v4/gtk/gtklevelbar.go +494 -0 collapsed to keep the page light
A v4/gtk/gtklinkbutton.go +391 -0 collapsed to keep the page light
A v4/gtk/gtklistbase.go +275 -0 collapsed to keep the page light
A v4/gtk/gtklistbox.go +1290 -0 collapsed to keep the page light
A v4/gtk/gtklistitem.go +195 -0 collapsed to keep the page light
A v4/gtk/gtklistitemfactory.go +73 -0 collapsed to keep the page light
A v4/gtk/gtkliststore.go +955 -0 collapsed to keep the page light
A v4/gtk/gtklistview.go +560 -0 collapsed to keep the page light
A v4/gtk/gtklockbutton.go +347 -0 collapsed to keep the page light
A v4/gtk/gtkmain.go +148 -0 collapsed to keep the page light
A v4/gtk/gtkmaplistmodel.go +250 -0 collapsed to keep the page light
A v4/gtk/gtkmediacontrols.go +234 -0 collapsed to keep the page light
A v4/gtk/gtkmediafile.go +385 -0 collapsed to keep the page light
A v4/gtk/gtkmediastream.go +687 -0 collapsed to keep the page light
A v4/gtk/gtkmenubutton.go +607 -0 collapsed to keep the page light
A v4/gtk/gtkmessagedialog.go +526 -0 collapsed to keep the page light
A v4/gtk/gtkmountoperation.go +144 -0 collapsed to keep the page light
A v4/gtk/gtkmultifilter.go +459 -0 collapsed to keep the page light
A v4/gtk/gtkmultiselection.go +305 -0 collapsed to keep the page light
A v4/gtk/gtkmultisorter.go +193 -0 collapsed to keep the page light
A v4/gtk/gtknative.go +148 -0 collapsed to keep the page light
A v4/gtk/gtknativedialog.go +217 -0 collapsed to keep the page light
A v4/gtk/gtknoselection.go +308 -0 collapsed to keep the page light
A v4/gtk/gtknotebook.go +1060 -0 collapsed to keep the page light
A v4/gtk/gtknumericsorter.go +117 -0 collapsed to keep the page light
A v4/gtk/gtkorientable.go +62 -0 collapsed to keep the page light
A v4/gtk/gtkoverlay.go +354 -0 collapsed to keep the page light
A v4/gtk/gtkoverlaylayout.go +124 -0 collapsed to keep the page light
A v4/gtk/gtkpadcontroller.go +173 -0 collapsed to keep the page light
A v4/gtk/gtkpagesetup.go +412 -0 collapsed to keep the page light
A v4/gtk/gtkpagesetupunixdialog.go +377 -0 collapsed to keep the page light
A v4/gtk/gtkpaned.go +561 -0 collapsed to keep the page light
A v4/gtk/gtkpapersize.go +51 -0 collapsed to keep the page light
A v4/gtk/gtkpasswordentry.go +545 -0 collapsed to keep the page light
A v4/gtk/gtkpasswordentrybuffer.go +57 -0 collapsed to keep the page light
A v4/gtk/gtkpicture.go +569 -0 collapsed to keep the page light
A v4/gtk/gtkpopover.go +620 -0 collapsed to keep the page light
A v4/gtk/gtkpopovermenu.go +471 -0 collapsed to keep the page light
A v4/gtk/gtkpopovermenubar.go +282 -0 collapsed to keep the page light
A v4/gtk/gtkprintcontext.go +264 -0 collapsed to keep the page light
A v4/gtk/gtkprinter.go +399 -0 collapsed to keep the page light
A v4/gtk/gtkprintjob.go +429 -0 collapsed to keep the page light
A v4/gtk/gtkprintoperation.go +1049 -0 collapsed to keep the page light
A v4/gtk/gtkprintoperationpreview.go +86 -0 collapsed to keep the page light
A v4/gtk/gtkprintsettings.go +901 -0 collapsed to keep the page light
A v4/gtk/gtkprintunixdialog.go +579 -0 collapsed to keep the page light
A v4/gtk/gtkprogressbar.go +434 -0 collapsed to keep the page light
A v4/gtk/gtkrange.go +572 -0 collapsed to keep the page light
A v4/gtk/gtkrecentmanager.go +307 -0 collapsed to keep the page light
A v4/gtk/gtkrender.go +187 -0 collapsed to keep the page light
A v4/gtk/gtkrevealer.go +360 -0 collapsed to keep the page light
A v4/gtk/gtkroot.go +111 -0 collapsed to keep the page light
A v4/gtk/gtkscale.go +510 -0 collapsed to keep the page light
A v4/gtk/gtkscalebutton.go +401 -0 collapsed to keep the page light
A v4/gtk/gtkscrollable.go +185 -0 collapsed to keep the page light
A v4/gtk/gtkscrollbar.go +283 -0 collapsed to keep the page light
A v4/gtk/gtkscrolledwindow.go +814 -0 collapsed to keep the page light
A v4/gtk/gtksearchbar.go +373 -0 collapsed to keep the page light
A v4/gtk/gtksearchentry.go +649 -0 collapsed to keep the page light
A v4/gtk/gtkselectionfiltermodel.go +184 -0 collapsed to keep the page light
A v4/gtk/gtkselectionmodel.go +244 -0 collapsed to keep the page light
A v4/gtk/gtkseparator.go +225 -0 collapsed to keep the page light
A v4/gtk/gtksettings.go +75 -0 collapsed to keep the page light
A v4/gtk/gtkshortcut.go +166 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutaction.go +368 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutcontroller.go +307 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutlabel.go +242 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutmanager.go +39 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutsgroup.go +188 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutssection.go +209 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutsshortcut.go +201 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutswindow.go +354 -0 collapsed to keep the page light
A v4/gtk/gtkshortcuttrigger.go +437 -0 collapsed to keep the page light
A v4/gtk/gtkshow.go +55 -0 collapsed to keep the page light
A v4/gtk/gtksignallistitemfactory.go +167 -0 collapsed to keep the page light
A v4/gtk/gtksingleselection.go +411 -0 collapsed to keep the page light
A v4/gtk/gtksizegroup.go +194 -0 collapsed to keep the page light
A v4/gtk/gtksizerequest.go +41 -0 collapsed to keep the page light
A v4/gtk/gtkslicelistmodel.go +233 -0 collapsed to keep the page light
A v4/gtk/gtksnapshot.go +688 -0 collapsed to keep the page light
A v4/gtk/gtksorter.go +175 -0 collapsed to keep the page light
A v4/gtk/gtksortlistmodel.go +289 -0 collapsed to keep the page light
A v4/gtk/gtkspinbutton.go +1050 -0 collapsed to keep the page light
A v4/gtk/gtkspinner.go +251 -0 collapsed to keep the page light
A v4/gtk/gtkstack.go +948 -0 collapsed to keep the page light
A v4/gtk/gtkstacksidebar.go +243 -0 collapsed to keep the page light
A v4/gtk/gtkstackswitcher.go +272 -0 collapsed to keep the page light
A v4/gtk/gtkstatusbar.go +316 -0 collapsed to keep the page light
A v4/gtk/gtkstringfilter.go +180 -0 collapsed to keep the page light
A v4/gtk/gtkstringlist.go +318 -0 collapsed to keep the page light
A v4/gtk/gtkstringsorter.go +118 -0 collapsed to keep the page light
A v4/gtk/gtkstylecontext.go +353 -0 collapsed to keep the page light
A v4/gtk/gtkstyleprovider.go +27 -0 collapsed to keep the page light
A v4/gtk/gtkswitch.go +393 -0 collapsed to keep the page light
A v4/gtk/gtksymbolicpaintable.go +65 -0 collapsed to keep the page light
A v4/gtk/gtktestatcontext.go +98 -0 collapsed to keep the page light
A v4/gtk/gtktestutils.go +74 -0 collapsed to keep the page light
A v4/gtk/gtktext.go +1176 -0 collapsed to keep the page light
A v4/gtk/gtktextbuffer.go +1494 -0 collapsed to keep the page light
A v4/gtk/gtktextchild.go +111 -0 collapsed to keep the page light
A v4/gtk/gtktextiter.go +62 -0 collapsed to keep the page light
A v4/gtk/gtktextmark.go +177 -0 collapsed to keep the page light
A v4/gtk/gtktexttag.go +125 -0 collapsed to keep the page light
A v4/gtk/gtktexttagtable.go +201 -0 collapsed to keep the page light
A v4/gtk/gtktextview.go +1722 -0 collapsed to keep the page light
A v4/gtk/gtktogglebutton.go +473 -0 collapsed to keep the page light
A v4/gtk/gtktooltip.go +157 -0 collapsed to keep the page light
A v4/gtk/gtktreednd.go +167 -0 collapsed to keep the page light
A v4/gtk/gtktreeexpander.go +340 -0 collapsed to keep the page light
A v4/gtk/gtktreelistmodel.go +472 -0 collapsed to keep the page light
A v4/gtk/gtktreelistrowsorter.go +104 -0 collapsed to keep the page light
A v4/gtk/gtktreemodel.go +739 -0 collapsed to keep the page light
A v4/gtk/gtktreemodelfilter.go +662 -0 collapsed to keep the page light
A v4/gtk/gtktreemodelsort.go +697 -0 collapsed to keep the page light
A v4/gtk/gtktreeselection.go +323 -0 collapsed to keep the page light
A v4/gtk/gtktreesortable.go +140 -0 collapsed to keep the page light
A v4/gtk/gtktreestore.go +868 -0 collapsed to keep the page light
A v4/gtk/gtktreeview.go +1829 -0 collapsed to keep the page light
A v4/gtk/gtktreeviewcolumn.go +819 -0 collapsed to keep the page light
A v4/gtk/gtktypes.go +23 -0 collapsed to keep the page light
A v4/gtk/gtkversion.go +122 -0 collapsed to keep the page light
A v4/gtk/gtkvideo.go +420 -0 collapsed to keep the page light
A v4/gtk/gtkviewport.go +358 -0 collapsed to keep the page light
A v4/gtk/gtkvolumebutton.go +217 -0 collapsed to keep the page light
A v4/gtk/gtkwidget.go +3604 -0 collapsed to keep the page light
A v4/gtk/gtkwidgetpaintable.go +249 -0 collapsed to keep the page light
A v4/gtk/gtkwindow.go +1301 -0 collapsed to keep the page light
A v4/gtk/gtkwindowcontrols.go +318 -0 collapsed to keep the page light
A v4/gtk/gtkwindowgroup.go +105 -0 collapsed to keep the page light
A v4/gtk/gtkwindowhandle.go +241 -0 collapsed to keep the page light
A v4/gtk/main.go +61 -0 collapsed to keep the page light
A v4/pango/main.go +25 -0 collapsed to keep the page light
A v4/pango/pango-attributes.go +854 -0 collapsed to keep the page light
A v4/pango/pango-bidi-type.go +127 -0 collapsed to keep the page light
A v4/pango/pango-break.go +131 -0 collapsed to keep the page light
A v4/pango/pango-color.go +12 -0 collapsed to keep the page light
A v4/pango/pango-context.go +406 -0 collapsed to keep the page light
A v4/pango/pango-coverage.go +174 -0 collapsed to keep the page light
A v4/pango/pango-direction.go +42 -0 collapsed to keep the page light
A v4/pango/pango-font.go +688 -0 collapsed to keep the page light
A v4/pango/pango-fontmap.go +174 -0 collapsed to keep the page light
A v4/pango/pango-fontset.go +157 -0 collapsed to keep the page light
A v4/pango/pango-glyph-item.go +81 -0 collapsed to keep the page light
A v4/pango/pango-glyph.go +199 -0 collapsed to keep the page light
A v4/pango/pango-gravity.go +132 -0 collapsed to keep the page light
A v4/pango/pango-item.go +105 -0 collapsed to keep the page light
A v4/pango/pango-language.go +96 -0 collapsed to keep the page light
A v4/pango/pango-layout.go +1265 -0 collapsed to keep the page light
A v4/pango/pango-markup.go +88 -0 collapsed to keep the page light
A v4/pango/pango-matrix.go +25 -0 collapsed to keep the page light
A v4/pango/pango-renderer.go +362 -0 collapsed to keep the page light
A v4/pango/pango-script.go +332 -0 collapsed to keep the page light
A v4/pango/pango-tabs.go +59 -0 collapsed to keep the page light
A v4/pango/pango-types.go +92 -0 collapsed to keep the page light
A v4/pango/pango-utils.go +304 -0 collapsed to keep the page light
A v4/pangocairo/pangocairo.go +543 -0 collapsed to keep the page light

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