forked from Leak_Technologies/VideoTools
Vendor gotk3 library to ensure consistent GTK3 bindings across environments and simplify dependency management. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
228 lines
6.4 KiB
Go
228 lines
6.4 KiB
Go
package glib
|
|
|
|
// #include <gio/gio.h>
|
|
// #include <glib.h>
|
|
// #include <glib-object.h>
|
|
// #include "glib.go.h"
|
|
import "C"
|
|
import (
|
|
"unsafe"
|
|
)
|
|
|
|
func init() {
|
|
tm := []TypeMarshaler{
|
|
// Objects/Interfaces
|
|
{Type(C.g_simple_action_get_type()), marshalSimpleAction},
|
|
{Type(C.g_action_get_type()), marshalAction},
|
|
{Type(C.g_property_action_get_type()), marshalPropertyAction},
|
|
}
|
|
RegisterGValueMarshalers(tm)
|
|
}
|
|
|
|
// Action is a representation of glib's GAction GInterface.
|
|
type Action struct {
|
|
*Object
|
|
}
|
|
|
|
// IAction is an interface type implemented by all structs
|
|
// embedding an Action. It is meant to be used as an argument type
|
|
// for wrapper functions that wrap around a C function taking a
|
|
// GAction.
|
|
type IAction interface {
|
|
toGAction() *C.GAction
|
|
toAction() *Action
|
|
}
|
|
|
|
func (v *Action) toGAction() *C.GAction {
|
|
if v == nil {
|
|
return nil
|
|
}
|
|
return v.native()
|
|
}
|
|
|
|
func (v *Action) toAction() *Action {
|
|
return v
|
|
}
|
|
|
|
// gboolean g_action_parse_detailed_name (const gchar *detailed_name, gchar **action_name, GVariant **target_value, GError **error);
|
|
|
|
// ActionPrintDetailedName is a wrapper around g_action_print_detailed_name().
|
|
func ActionPrintDetailedName(action_name string, target_value *Variant) string {
|
|
cstr := C.CString(action_name)
|
|
defer C.free(unsafe.Pointer(cstr))
|
|
return C.GoString((*C.char)(C.g_action_print_detailed_name((*C.gchar)(cstr), target_value.native())))
|
|
}
|
|
|
|
// native() returns a pointer to the underlying GAction.
|
|
func (v *Action) native() *C.GAction {
|
|
if v == nil || v.GObject == nil {
|
|
return nil
|
|
}
|
|
return C.toGAction(unsafe.Pointer(v.GObject))
|
|
}
|
|
|
|
func (v *Action) Native() uintptr {
|
|
return uintptr(unsafe.Pointer(v.native()))
|
|
}
|
|
|
|
func marshalAction(p uintptr) (interface{}, error) {
|
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
|
return wrapAction(wrapObject(unsafe.Pointer(c))), nil
|
|
}
|
|
|
|
func wrapAction(obj *Object) *Action {
|
|
return &Action{obj}
|
|
}
|
|
|
|
// ActionNameIsValid is a wrapper around g_action_name_is_valid
|
|
func ActionNameIsValid(actionName string) bool {
|
|
cstr := (*C.gchar)(C.CString(actionName))
|
|
return gobool(C.g_action_name_is_valid(cstr))
|
|
}
|
|
|
|
// GetName is a wrapper around g_action_get_name
|
|
func (v *Action) GetName() string {
|
|
return C.GoString((*C.char)(C.g_action_get_name(v.native())))
|
|
}
|
|
|
|
// GetEnabled is a wrapper around g_action_get_enabled
|
|
func (v *Action) GetEnabled() bool {
|
|
return gobool(C.g_action_get_enabled(v.native()))
|
|
}
|
|
|
|
// GetState is a wrapper around g_action_get_state
|
|
func (v *Action) GetState() *Variant {
|
|
c := C.g_action_get_state(v.native())
|
|
if c == nil {
|
|
return nil
|
|
}
|
|
return newVariant((*C.GVariant)(c))
|
|
}
|
|
|
|
// GetStateHint is a wrapper around g_action_get_state_hint
|
|
func (v *Action) GetStateHint() *Variant {
|
|
c := C.g_action_get_state_hint(v.native())
|
|
if c == nil {
|
|
return nil
|
|
}
|
|
return newVariant((*C.GVariant)(c))
|
|
}
|
|
|
|
// GetParameterType is a wrapper around g_action_get_parameter_type
|
|
func (v *Action) GetParameterType() *VariantType {
|
|
c := C.g_action_get_parameter_type(v.native())
|
|
if c == nil {
|
|
return nil
|
|
}
|
|
return newVariantType((*C.GVariantType)(c))
|
|
}
|
|
|
|
// GetStateType is a wrapper around g_action_get_state_type
|
|
func (v *Action) GetStateType() *VariantType {
|
|
c := C.g_action_get_state_type(v.native())
|
|
if c == nil {
|
|
return nil
|
|
}
|
|
return newVariantType((*C.GVariantType)(c))
|
|
}
|
|
|
|
// ChangeState is a wrapper around g_action_change_state
|
|
func (v *Action) ChangeState(value *Variant) {
|
|
C.g_action_change_state(v.native(), value.native())
|
|
}
|
|
|
|
// Activate is a wrapper around g_action_activate
|
|
func (v *Action) Activate(parameter *Variant) {
|
|
C.g_action_activate(v.native(), parameter.native())
|
|
}
|
|
|
|
// SimpleAction is a representation of GSimpleAction
|
|
type SimpleAction struct {
|
|
Action
|
|
}
|
|
|
|
func (v *SimpleAction) native() *C.GSimpleAction {
|
|
if v == nil || v.GObject == nil {
|
|
return nil
|
|
}
|
|
return C.toGSimpleAction(unsafe.Pointer(v.GObject))
|
|
}
|
|
|
|
func (v *SimpleAction) Native() uintptr {
|
|
return uintptr(unsafe.Pointer(v.native()))
|
|
}
|
|
|
|
func marshalSimpleAction(p uintptr) (interface{}, error) {
|
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
|
return wrapSimpleAction(wrapObject(unsafe.Pointer(c))), nil
|
|
}
|
|
|
|
func wrapSimpleAction(obj *Object) *SimpleAction {
|
|
return &SimpleAction{Action{obj}}
|
|
}
|
|
|
|
// SimpleActionNew is a wrapper around g_simple_action_new
|
|
func SimpleActionNew(name string, parameterType *VariantType) *SimpleAction {
|
|
c := C.g_simple_action_new((*C.gchar)(C.CString(name)), parameterType.native())
|
|
if c == nil {
|
|
return nil
|
|
}
|
|
return wrapSimpleAction(wrapObject(unsafe.Pointer(c)))
|
|
}
|
|
|
|
// SimpleActionNewStateful is a wrapper around g_simple_action_new_stateful
|
|
func SimpleActionNewStateful(name string, parameterType *VariantType, state *Variant) *SimpleAction {
|
|
c := C.g_simple_action_new_stateful((*C.gchar)(C.CString(name)), parameterType.native(), state.native())
|
|
if c == nil {
|
|
return nil
|
|
}
|
|
return wrapSimpleAction(wrapObject(unsafe.Pointer(c)))
|
|
}
|
|
|
|
// SetEnabled is a wrapper around g_simple_action_set_enabled
|
|
func (v *SimpleAction) SetEnabled(enabled bool) {
|
|
C.g_simple_action_set_enabled(v.native(), gbool(enabled))
|
|
}
|
|
|
|
// SetState is a wrapper around g_simple_action_set_state
|
|
// This should only be called by the implementor of the action.
|
|
// Users of the action should not attempt to directly modify the 'state' property.
|
|
// Instead, they should call ChangeState [g_action_change_state()] to request the change.
|
|
func (v *SimpleAction) SetState(value *Variant) {
|
|
C.g_simple_action_set_state(v.native(), value.native())
|
|
}
|
|
|
|
// PropertyAction is a representation of GPropertyAction
|
|
type PropertyAction struct {
|
|
Action
|
|
}
|
|
|
|
func (v *PropertyAction) native() *C.GPropertyAction {
|
|
if v == nil || v.GObject == nil {
|
|
return nil
|
|
}
|
|
return C.toGPropertyAction(unsafe.Pointer(v.GObject))
|
|
}
|
|
|
|
func (v *PropertyAction) Native() uintptr {
|
|
return uintptr(unsafe.Pointer(v.native()))
|
|
}
|
|
|
|
func marshalPropertyAction(p uintptr) (interface{}, error) {
|
|
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
|
|
return wrapPropertyAction(wrapObject(unsafe.Pointer(c))), nil
|
|
}
|
|
|
|
func wrapPropertyAction(obj *Object) *PropertyAction {
|
|
return &PropertyAction{Action{obj}}
|
|
}
|
|
|
|
// PropertyActionNew is a wrapper around g_property_action_new
|
|
func PropertyActionNew(name string, object *Object, propertyName string) *PropertyAction {
|
|
c := C.g_property_action_new((*C.gchar)(C.CString(name)), C.gpointer(unsafe.Pointer(object.native())), (*C.gchar)(C.CString(propertyName)))
|
|
if c == nil {
|
|
return nil
|
|
}
|
|
return wrapPropertyAction(wrapObject(unsafe.Pointer(c)))
|
|
}
|