1// Package gtk was automatically generated by github.com/bnema/puregotk DO NOT EDIT
2package gtk
3
4import (
5 "structs"
6 "unsafe"
7
8 "github.com/ebitengine/purego"
9
10 "github.com/bnema/puregotk/pkg/core"
11 "github.com/bnema/puregotk/v4/gdk"
12 "github.com/bnema/puregotk/v4/glib"
13 "github.com/bnema/puregotk/v4/gobject"
14 "github.com/bnema/puregotk/v4/gobject/types"
15)
16
17type EventControllerKeyClass struct {
18 _ structs.HostLayout
19}
20
21func (x *EventControllerKeyClass) GoPointer() uintptr {
22 return uintptr(unsafe.Pointer(x))
23}
24
25// Provides access to key events.
26type EventControllerKey struct {
27 EventController
28}
29
30var xEventControllerKeyGLibType func() types.GType
31
32func EventControllerKeyGLibType() types.GType {
33 return xEventControllerKeyGLibType()
34}
35
36func EventControllerKeyNewFromInternalPtr(ptr uintptr) *EventControllerKey {
37 cls := &EventControllerKey{}
38 cls.Ptr = ptr
39 return cls
40}
41
42var xNewEventControllerKey func() uintptr
43
44// Creates a new event controller that will handle key events.
45func NewEventControllerKey() *EventControllerKey {
46 var cls *EventControllerKey
47
48 cret := xNewEventControllerKey()
49
50 if cret == 0 {
51 return nil
52 }
53 cls = &EventControllerKey{}
54 cls.Ptr = cret
55 return cls
56}
57
58var xEventControllerKeyForward func(uintptr, uintptr) bool
59
60// Forwards the current event of this @controller to a @widget.
61//
62// This function can only be used in handlers for the
63// [signal@Gtk.EventControllerKey::key-pressed],
64// [signal@Gtk.EventControllerKey::key-released]
65// or [signal@Gtk.EventControllerKey::modifiers] signals.
66func (x *EventControllerKey) Forward(WidgetVar *Widget) bool {
67
68 cret := xEventControllerKeyForward(x.GoPointer(), WidgetVar.GoPointer())
69 return cret
70}
71
72var xEventControllerKeyGetGroup func(uintptr) uint
73
74// Gets the key group of the current event of this @controller.
75//
76// See [method@Gdk.KeyEvent.get_layout].
77func (x *EventControllerKey) GetGroup() uint {
78
79 cret := xEventControllerKeyGetGroup(x.GoPointer())
80 return cret
81}
82
83var xEventControllerKeyGetImContext func(uintptr) uintptr
84
85// Gets the input method context of the key @controller.
86func (x *EventControllerKey) GetImContext() *IMContext {
87 var cls *IMContext
88
89 cret := xEventControllerKeyGetImContext(x.GoPointer())
90
91 if cret == 0 {
92 return nil
93 }
94 gobject.IncreaseRef(cret)
95 cls = &IMContext{}
96 cls.Ptr = cret
97 return cls
98}
99
100var xEventControllerKeySetImContext func(uintptr, uintptr)
101
102// Sets the input method context of the key @controller.
103func (x *EventControllerKey) SetImContext(ImContextVar *IMContext) {
104
105 xEventControllerKeySetImContext(x.GoPointer(), ImContextVar.GoPointer())
106
107}
108
109func (c *EventControllerKey) GoPointer() uintptr {
110 if c == nil {
111 return 0
112 }
113 return c.Ptr
114}
115
116func (c *EventControllerKey) SetGoPointer(ptr uintptr) {
117 c.Ptr = ptr
118}
119
120// Emitted whenever the input method context filters away
121// a keypress and prevents the @controller receiving it.
122//
123// See [method@Gtk.EventControllerKey.set_im_context] and
124// [method@Gtk.IMContext.filter_keypress].
125func (x *EventControllerKey) ConnectImUpdate(cb *func(EventControllerKey)) uint {
126 cbPtr := uintptr(unsafe.Pointer(cb))
127 if cbRefPtr, ok := glib.GetCallback(cbPtr); ok {
128 handlerID := gobject.SignalConnect(x.GoPointer(), "im-update", cbRefPtr)
129 glib.SaveHandlerMapping(handlerID, cbPtr)
130 return handlerID
131 }
132
133 fcb := func(clsPtr uintptr) {
134 fa := EventControllerKey{}
135 fa.Ptr = clsPtr
136 cbFn := *cb
137
138 cbFn(fa)
139
140 }
141 cbRefPtr := purego.NewCallback(fcb)
142 glib.SaveCallbackWithClosure(cbPtr, cbRefPtr, cb)
143 handlerID := gobject.SignalConnect(x.GoPointer(), "im-update", cbRefPtr)
144 glib.SaveHandlerMapping(handlerID, cbPtr)
145 return handlerID
146}
147
148// Emitted whenever a key is pressed.
149func (x *EventControllerKey) ConnectKeyPressed(cb *func(EventControllerKey, uint, uint, gdk.ModifierType) bool) uint {
150 cbPtr := uintptr(unsafe.Pointer(cb))
151 if cbRefPtr, ok := glib.GetCallback(cbPtr); ok {
152 handlerID := gobject.SignalConnect(x.GoPointer(), "key-pressed", cbRefPtr)
153 glib.SaveHandlerMapping(handlerID, cbPtr)
154 return handlerID
155 }
156
157 fcb := func(clsPtr uintptr, KeyvalVarp uint, KeycodeVarp uint, StateVarp gdk.ModifierType) bool {
158 fa := EventControllerKey{}
159 fa.Ptr = clsPtr
160 cbFn := *cb
161
162 return cbFn(fa, KeyvalVarp, KeycodeVarp, StateVarp)
163
164 }
165 cbRefPtr := purego.NewCallback(fcb)
166 glib.SaveCallbackWithClosure(cbPtr, cbRefPtr, cb)
167 handlerID := gobject.SignalConnect(x.GoPointer(), "key-pressed", cbRefPtr)
168 glib.SaveHandlerMapping(handlerID, cbPtr)
169 return handlerID
170}
171
172// Emitted whenever a key is released.
173func (x *EventControllerKey) ConnectKeyReleased(cb *func(EventControllerKey, uint, uint, gdk.ModifierType)) uint {
174 cbPtr := uintptr(unsafe.Pointer(cb))
175 if cbRefPtr, ok := glib.GetCallback(cbPtr); ok {
176 handlerID := gobject.SignalConnect(x.GoPointer(), "key-released", cbRefPtr)
177 glib.SaveHandlerMapping(handlerID, cbPtr)
178 return handlerID
179 }
180
181 fcb := func(clsPtr uintptr, KeyvalVarp uint, KeycodeVarp uint, StateVarp gdk.ModifierType) {
182 fa := EventControllerKey{}
183 fa.Ptr = clsPtr
184 cbFn := *cb
185
186 cbFn(fa, KeyvalVarp, KeycodeVarp, StateVarp)
187
188 }
189 cbRefPtr := purego.NewCallback(fcb)
190 glib.SaveCallbackWithClosure(cbPtr, cbRefPtr, cb)
191 handlerID := gobject.SignalConnect(x.GoPointer(), "key-released", cbRefPtr)
192 glib.SaveHandlerMapping(handlerID, cbPtr)
193 return handlerID
194}
195
196// Emitted whenever the state of modifier keys and pointer buttons change.
197func (x *EventControllerKey) ConnectModifiers(cb *func(EventControllerKey, gdk.ModifierType) bool) uint {
198 cbPtr := uintptr(unsafe.Pointer(cb))
199 if cbRefPtr, ok := glib.GetCallback(cbPtr); ok {
200 handlerID := gobject.SignalConnect(x.GoPointer(), "modifiers", cbRefPtr)
201 glib.SaveHandlerMapping(handlerID, cbPtr)
202 return handlerID
203 }
204
205 fcb := func(clsPtr uintptr, StateVarp gdk.ModifierType) bool {
206 fa := EventControllerKey{}
207 fa.Ptr = clsPtr
208 cbFn := *cb
209
210 return cbFn(fa, StateVarp)
211
212 }
213 cbRefPtr := purego.NewCallback(fcb)
214 glib.SaveCallbackWithClosure(cbPtr, cbRefPtr, cb)
215 handlerID := gobject.SignalConnect(x.GoPointer(), "modifiers", cbRefPtr)
216 glib.SaveHandlerMapping(handlerID, cbPtr)
217 return handlerID
218}
219
220func init() {
221 core.SetPackageName("GTK", "gtk4")
222 core.SetSharedLibraries("GTK", []string{"libgtk-4.so.1"})
223 var libs []uintptr
224 for _, libPath := range core.GetPaths("GTK") {
225 lib, err := purego.Dlopen(libPath, purego.RTLD_NOW|purego.RTLD_GLOBAL)
226 if err != nil {
227 panic(err)
228 }
229 libs = append(libs, lib)
230 }
231
232 core.PuregoSafeRegister(&xEventControllerKeyGLibType, libs, "gtk_event_controller_key_get_type")
233
234 core.PuregoSafeRegister(&xNewEventControllerKey, libs, "gtk_event_controller_key_new")
235
236 core.PuregoSafeRegister(&xEventControllerKeyForward, libs, "gtk_event_controller_key_forward")
237 core.PuregoSafeRegister(&xEventControllerKeyGetGroup, libs, "gtk_event_controller_key_get_group")
238 core.PuregoSafeRegister(&xEventControllerKeyGetImContext, libs, "gtk_event_controller_key_get_im_context")
239 core.PuregoSafeRegister(&xEventControllerKeySetImContext, libs, "gtk_event_controller_key_set_im_context")
240
241}