VideoTools/third_party/gotk3/gtk/gtk_since_3_16.go
Stu d4efa91ce1 Add vendored gotk3 GTK3 bindings for Go
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>
2025-12-15 05:40:43 -05:00

372 lines
9.2 KiB
Go

// +build !gtk_3_6,!gtk_3_8,!gtk_3_10,!gtk_3_12,!gtk_3_14
// See: https://developer.gnome.org/gtk3/3.16/api-index-3-16.html
package gtk
// #include <gtk/gtk.h>
// #include "gtk_since_3_16.go.h"
import "C"
import (
"unsafe"
"github.com/gotk3/gotk3/gdk"
"github.com/gotk3/gotk3/glib"
)
const (
POLICY_EXTERNAL PolicyType = C.GTK_POLICY_EXTERNAL
)
func init() {
tm := []glib.TypeMarshaler{
// Objects/Interfaces
{glib.Type(C.gtk_button_role_get_type()), marshalButtonRole},
{glib.Type(C.gtk_popover_menu_get_type()), marshalPopoverMenu},
{glib.Type(C.gtk_model_button_get_type()), marshalModelButton},
{glib.Type(C.gtk_stack_sidebar_get_type()), marshalStackSidebar},
{glib.Type(C.gtk_text_extend_selection_get_type()), marshalTextExtendSelection},
}
glib.RegisterGValueMarshalers(tm)
//Contribute to casting
for k, v := range map[string]WrapFn{
"GtkPopoverMenu": wrapPopoverMenu,
"GtkModelButton": wrapModelButton,
"GtkStackSidebar": wrapStackSidebar,
} {
WrapMap[k] = v
}
}
/*
* Constants
*/
// ButtonRole is a representation of GTK's GtkButtonRole.
type ButtonRole int
const (
BUTTON_ROLE_NORMAL ButtonRole = C.GTK_BUTTON_ROLE_NORMAL
BUTTON_ROLE_CHECK ButtonRole = C.GTK_BUTTON_ROLE_CHECK
BUTTON_ROLE_RADIO ButtonRole = C.GTK_BUTTON_ROLE_RADIO
)
func marshalButtonRole(p uintptr) (interface{}, error) {
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
return ButtonRole(c), nil
}
/*
* TextView
*/
// TextExtendSelection is a representation of GTK's GtkTextExtendSelection.
type TextExtendSelection int
const (
TEXT_EXTEND_SELECTION_WORD TextExtendSelection = C.GTK_TEXT_EXTEND_SELECTION_WORD
TEXT_EXTEND_SELECTION_LINE TextExtendSelection = C.GTK_TEXT_EXTEND_SELECTION_LINE
)
func marshalTextExtendSelection(p uintptr) (interface{}, error) {
c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
return TextExtendSelection(c), nil
}
/*
* GtkStack
*/
// SetHHomogeneous is a wrapper around gtk_stack_set_hhomogeneous().
func (v *Stack) SetHHomogeneous(hhomogeneous bool) {
C.gtk_stack_set_hhomogeneous(v.native(), gbool(hhomogeneous))
}
// GetHHomogeneous is a wrapper around gtk_stack_get_hhomogeneous().
func (v *Stack) GetHHomogeneous() bool {
return gobool(C.gtk_stack_get_hhomogeneous(v.native()))
}
// SetVHomogeneous is a wrapper around gtk_stack_set_vhomogeneous().
func (v *Stack) SetVHomogeneous(vhomogeneous bool) {
C.gtk_stack_set_vhomogeneous(v.native(), gbool(vhomogeneous))
}
// GetVHomogeneous is a wrapper around gtk_stack_get_vhomogeneous().
func (v *Stack) GetVHomogeneous() bool {
return gobool(C.gtk_stack_get_vhomogeneous(v.native()))
}
/*
* GtkNotebook
*/
// DetachTab is a wrapper around gtk_notebook_detach_tab().
func (v *Notebook) DetachTab(child IWidget) {
C.gtk_notebook_detach_tab(v.native(), child.toWidget())
}
/*
* GtkListBox
*/
// ListBoxCreateWidgetFunc is a representation of GtkListBoxCreateWidgetFunc.
type ListBoxCreateWidgetFunc func(item interface{}) int
/*
* GtkScrolledWindow
*/
// SetOverlayScrolling is a wrapper around gtk_scrolled_window_set_overlay_scrolling().
func (v *ScrolledWindow) SetOverlayScrolling(scrolling bool) {
C.gtk_scrolled_window_set_overlay_scrolling(v.native(), gbool(scrolling))
}
// GetOverlayScrolling is a wrapper around gtk_scrolled_window_get_overlay_scrolling().
func (v *ScrolledWindow) GetOverlayScrolling() bool {
return gobool(C.gtk_scrolled_window_get_overlay_scrolling(v.native()))
}
/*
* GtkPaned
*/
// SetWideHandle is a wrapper around gtk_paned_set_wide_handle().
func (v *Paned) SetWideHandle(wide bool) {
C.gtk_paned_set_wide_handle(v.native(), gbool(wide))
}
// GetWideHandle is a wrapper around gtk_paned_get_wide_handle().
func (v *Paned) GetWideHandle() bool {
return gobool(C.gtk_paned_get_wide_handle(v.native()))
}
/*
* GtkLabel
*/
// GetXAlign is a wrapper around gtk_label_get_xalign().
func (v *Label) GetXAlign() float64 {
c := C.gtk_label_get_xalign(v.native())
return float64(c)
}
// GetYAlign is a wrapper around gtk_label_get_yalign().
func (v *Label) GetYAlign() float64 {
c := C.gtk_label_get_yalign(v.native())
return float64(c)
}
// SetXAlign is a wrapper around gtk_label_set_xalign().
func (v *Label) SetXAlign(n float64) {
C.gtk_label_set_xalign(v.native(), C.gfloat(n))
}
// SetYAlign is a wrapper around gtk_label_set_yalign().
func (v *Label) SetYAlign(n float64) {
C.gtk_label_set_yalign(v.native(), C.gfloat(n))
}
/*
* GtkModelButton
*/
// ModelButton is a representation of GTK's GtkModelButton.
type ModelButton struct {
Button
}
func (v *ModelButton) native() *C.GtkModelButton {
if v == nil || v.GObject == nil {
return nil
}
p := unsafe.Pointer(v.GObject)
return C.toGtkModelButton(p)
}
func marshalModelButton(p uintptr) (interface{}, error) {
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
return wrapModelButton(glib.Take(unsafe.Pointer(c))), nil
}
func wrapModelButton(obj *glib.Object) *ModelButton {
if obj == nil {
return nil
}
actionable := wrapActionable(obj)
return &ModelButton{Button{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}, actionable}}
}
// ModelButtonNew is a wrapper around gtk_model_button_new
func ModelButtonNew() (*ModelButton, error) {
c := C.gtk_model_button_new()
if c == nil {
return nil, nilPtrErr
}
return wrapModelButton(glib.Take(unsafe.Pointer(c))), nil
}
/*
* GtkPopoverMenu
*/
// PopoverMenu is a representation of GTK's GtkPopoverMenu.
type PopoverMenu struct {
Popover
}
func (v *PopoverMenu) native() *C.GtkPopoverMenu {
if v == nil || v.GObject == nil {
return nil
}
p := unsafe.Pointer(v.GObject)
return C.toGtkPopoverMenu(p)
}
func marshalPopoverMenu(p uintptr) (interface{}, error) {
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
return wrapPopoverMenu(glib.Take(unsafe.Pointer(c))), nil
}
func wrapPopoverMenu(obj *glib.Object) *PopoverMenu {
if obj == nil {
return nil
}
return &PopoverMenu{Popover{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}}
}
// PopoverMenuNew is a wrapper around gtk_popover_menu_new
func PopoverMenuNew() (*PopoverMenu, error) {
c := C.gtk_popover_menu_new()
if c == nil {
return nil, nilPtrErr
}
return wrapPopoverMenu(glib.Take(unsafe.Pointer(c))), nil
}
// OpenSubmenu is a wrapper around gtk_popover_menu_open_submenu
func (v *PopoverMenu) OpenSubmenu(name string) {
cstr1 := (*C.gchar)(C.CString(name))
defer C.free(unsafe.Pointer(cstr1))
C.gtk_popover_menu_open_submenu(v.native(), cstr1)
}
/*
* GtkStackSidebar
*/
// StackSidebar is a representation of GTK's GtkStackSidebar.
type StackSidebar struct {
Bin
}
// native returns a pointer to the underlying GtkStack.
func (v *StackSidebar) native() *C.GtkStackSidebar {
if v == nil || v.GObject == nil {
return nil
}
p := unsafe.Pointer(v.GObject)
return C.toGtkStackSidebar(p)
}
func marshalStackSidebar(p uintptr) (interface{}, error) {
c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
obj := glib.Take(unsafe.Pointer(c))
return wrapStackSidebar(obj), nil
}
func wrapStackSidebar(obj *glib.Object) *StackSidebar {
if obj == nil {
return nil
}
return &StackSidebar{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
}
// StackSidebarNew is a wrapper around gtk_stack_sidebar_new().
func StackSidebarNew() (*StackSidebar, error) {
c := C.gtk_stack_sidebar_new()
if c == nil {
return nil, nilPtrErr
}
return wrapStackSidebar(glib.Take(unsafe.Pointer(c))), nil
}
// SetStack is a wrapper around gtk_stack_sidebar_set_stack().
func (v *StackSidebar) SetStack(stack *Stack) {
C.gtk_stack_sidebar_set_stack(v.native(), stack.native())
}
// GetStack is a wrapper around gtk_stack_sidebar_get_stack().
func (v *StackSidebar) GetStack() *Stack {
c := C.gtk_stack_sidebar_get_stack(v.native())
if c == nil {
return nil
}
return wrapStack(glib.Take(unsafe.Pointer(c)))
}
/*
* GtkEntry
*/
// GrabFocusWithoutSelecting is a wrapper for gtk_entry_grab_focus_without_selecting()
func (v *Entry) GrabFocusWithoutSelecting() {
C.gtk_entry_grab_focus_without_selecting(v.native())
}
/*
* GtkSearchEntry
*/
// HandleEvent is a wrapper around gtk_search_entry_handle_event().
func (v *SearchEntry) HandleEvent(event *gdk.Event) {
e := (*C.GdkEvent)(unsafe.Pointer(event.Native()))
C.gtk_search_entry_handle_event(v.native(), e)
}
/*
* GtkTextBuffer
*/
// InsertMarkup is a wrapper around gtk_text_buffer_insert_markup()
func (v *TextBuffer) InsertMarkup(start *TextIter, text string) {
cstr := C.CString(text)
defer C.free(unsafe.Pointer(cstr))
C.gtk_text_buffer_insert_markup(v.native(), (*C.GtkTextIter)(start), (*C.gchar)(cstr), C.gint(len(text)))
}
/*
* CssProvider
*/
// LoadFromResource is a wrapper around gtk_css_provider_load_from_resource().
//
// See: https://developer.gnome.org/gtk3/stable/GtkCssProvider.html#gtk-css-provider-load-from-resource
func (v *CssProvider) LoadFromResource(path string) {
cpath := C.CString(path)
defer C.free(unsafe.Pointer(cpath))
C.gtk_css_provider_load_from_resource(v.native(), (*C.gchar)(cpath))
}
/*
* GtkTextView
*/
// SetMonospace is a wrapper around gtk_text_view_set_monospace()
func (v *TextView) SetMonospace(monospace bool) {
C.gtk_text_view_set_monospace(v.native(), gbool(monospace))
}
// GetMonospace is a wrapper around gtk_text_view_get_monospace()
func (v *TextView) GetMonospace() bool {
return gobool(C.gtk_text_view_get_monospace(v.native()))
}