summaryrefslogtreecommitdiff
path: root/vendor/github.com/gotk3/gotk3/gtk/gtk.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/gotk3/gotk3/gtk/gtk.go')
-rw-r--r--vendor/github.com/gotk3/gotk3/gtk/gtk.go8935
1 files changed, 8935 insertions, 0 deletions
diff --git a/vendor/github.com/gotk3/gotk3/gtk/gtk.go b/vendor/github.com/gotk3/gotk3/gtk/gtk.go
new file mode 100644
index 0000000..3ed6ca0
--- /dev/null
+++ b/vendor/github.com/gotk3/gotk3/gtk/gtk.go
@@ -0,0 +1,8935 @@
+// Copyright (c) 2013-2014 Conformal Systems <info@conformal.com>
+//
+// This file originated from: http://opensource.conformal.com/
+//
+// Permission to use, copy, modify, and distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+// Go bindings for GTK+ 3. Supports version 3.6 and later.
+//
+// Functions use the same names as the native C function calls, but use
+// CamelCase. In cases where native GTK uses pointers to values to
+// simulate multiple return values, Go's native multiple return values
+// are used instead. Whenever a native GTK call could return an
+// unexpected NULL pointer, an additional error is returned in the Go
+// binding.
+//
+// GTK's C API documentation can be very useful for understanding how the
+// functions in this package work and what each type is for. This
+// documentation can be found at https://developer.gnome.org/gtk3/.
+//
+// In addition to Go versions of the C GTK functions, every struct type
+// includes a method named Native (either by direct implementation, or
+// by means of struct embedding). These methods return a uintptr of the
+// native C object the binding type represents. These pointers may be
+// type switched to a native C pointer using unsafe and used with cgo
+// function calls outside this package.
+//
+// Memory management is handled in proper Go fashion, using runtime
+// finalizers to properly free memory when it is no longer needed. Each
+// time a Go type is created with a pointer to a GObject, a reference is
+// added for Go, sinking the floating reference when necessary. After
+// going out of scope and the next time Go's garbage collector is run, a
+// finalizer is run to remove Go's reference to the GObject. When this
+// reference count hits zero (when neither Go nor GTK holds ownership)
+// the object will be freed internally by GTK.
+package gtk
+
+// #cgo pkg-config: gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0
+// #include <gtk/gtk.h>
+// #include "gtk.go.h"
+import "C"
+import (
+ "errors"
+ "fmt"
+ "reflect"
+ "runtime"
+ "sync"
+ "unsafe"
+
+ "github.com/gotk3/gotk3/cairo"
+ "github.com/gotk3/gotk3/gdk"
+ "github.com/gotk3/gotk3/glib"
+)
+
+func init() {
+ tm := []glib.TypeMarshaler{
+ // Enums
+ {glib.Type(C.gtk_align_get_type()), marshalAlign},
+ {glib.Type(C.gtk_accel_flags_get_type()), marshalAccelFlags},
+ {glib.Type(C.gtk_accel_group_get_type()), marshalAccelGroup},
+ {glib.Type(C.gtk_accel_map_get_type()), marshalAccelMap},
+ {glib.Type(C.gtk_arrow_placement_get_type()), marshalArrowPlacement},
+ {glib.Type(C.gtk_arrow_type_get_type()), marshalArrowType},
+ {glib.Type(C.gtk_assistant_page_type_get_type()), marshalAssistantPageType},
+ {glib.Type(C.gtk_buttons_type_get_type()), marshalButtonsType},
+ {glib.Type(C.gtk_calendar_display_options_get_type()), marshalCalendarDisplayOptions},
+ {glib.Type(C.gtk_dest_defaults_get_type()), marshalDestDefaults},
+ {glib.Type(C.gtk_dialog_flags_get_type()), marshalDialogFlags},
+ {glib.Type(C.gtk_entry_icon_position_get_type()), marshalEntryIconPosition},
+ {glib.Type(C.gtk_file_chooser_action_get_type()), marshalFileChooserAction},
+ {glib.Type(C.gtk_icon_lookup_flags_get_type()), marshalSortType},
+ {glib.Type(C.gtk_icon_size_get_type()), marshalIconSize},
+ {glib.Type(C.gtk_image_type_get_type()), marshalImageType},
+ {glib.Type(C.gtk_input_hints_get_type()), marshalInputHints},
+ {glib.Type(C.gtk_input_purpose_get_type()), marshalInputPurpose},
+ {glib.Type(C.gtk_justification_get_type()), marshalJustification},
+ {glib.Type(C.gtk_license_get_type()), marshalLicense},
+ {glib.Type(C.gtk_message_type_get_type()), marshalMessageType},
+ {glib.Type(C.gtk_orientation_get_type()), marshalOrientation},
+ {glib.Type(C.gtk_pack_type_get_type()), marshalPackType},
+ {glib.Type(C.gtk_path_type_get_type()), marshalPathType},
+ {glib.Type(C.gtk_policy_type_get_type()), marshalPolicyType},
+ {glib.Type(C.gtk_position_type_get_type()), marshalPositionType},
+ {glib.Type(C.gtk_relief_style_get_type()), marshalReliefStyle},
+ {glib.Type(C.gtk_response_type_get_type()), marshalResponseType},
+ {glib.Type(C.gtk_selection_mode_get_type()), marshalSelectionMode},
+ {glib.Type(C.gtk_shadow_type_get_type()), marshalShadowType},
+ {glib.Type(C.gtk_sort_type_get_type()), marshalSortType},
+ {glib.Type(C.gtk_state_flags_get_type()), marshalStateFlags},
+ {glib.Type(C.gtk_target_flags_get_type()), marshalTargetFlags},
+ {glib.Type(C.gtk_text_direction_get_type()), marshalTextDirection},
+ {glib.Type(C.gtk_toolbar_style_get_type()), marshalToolbarStyle},
+ {glib.Type(C.gtk_tree_model_flags_get_type()), marshalTreeModelFlags},
+ {glib.Type(C.gtk_window_position_get_type()), marshalWindowPosition},
+ {glib.Type(C.gtk_window_type_get_type()), marshalWindowType},
+ {glib.Type(C.gtk_wrap_mode_get_type()), marshalWrapMode},
+
+ // Objects/Interfaces
+ {glib.Type(C.gtk_accel_group_get_type()), marshalAccelGroup},
+ {glib.Type(C.gtk_accel_map_get_type()), marshalAccelMap},
+ {glib.Type(C.gtk_adjustment_get_type()), marshalAdjustment},
+ {glib.Type(C.gtk_application_get_type()), marshalApplication},
+ {glib.Type(C.gtk_application_window_get_type()), marshalApplicationWindow},
+ {glib.Type(C.gtk_assistant_get_type()), marshalAssistant},
+ {glib.Type(C.gtk_bin_get_type()), marshalBin},
+ {glib.Type(C.gtk_builder_get_type()), marshalBuilder},
+ {glib.Type(C.gtk_button_get_type()), marshalButton},
+ {glib.Type(C.gtk_box_get_type()), marshalBox},
+ {glib.Type(C.gtk_calendar_get_type()), marshalCalendar},
+ {glib.Type(C.gtk_cell_layout_get_type()), marshalCellLayout},
+ {glib.Type(C.gtk_cell_renderer_get_type()), marshalCellRenderer},
+ {glib.Type(C.gtk_cell_renderer_spinner_get_type()), marshalCellRendererSpinner},
+ {glib.Type(C.gtk_cell_renderer_pixbuf_get_type()), marshalCellRendererPixbuf},
+ {glib.Type(C.gtk_cell_renderer_text_get_type()), marshalCellRendererText},
+ {glib.Type(C.gtk_cell_renderer_toggle_get_type()), marshalCellRendererToggle},
+ {glib.Type(C.gtk_check_button_get_type()), marshalCheckButton},
+ {glib.Type(C.gtk_check_menu_item_get_type()), marshalCheckMenuItem},
+ {glib.Type(C.gtk_clipboard_get_type()), marshalClipboard},
+ {glib.Type(C.gtk_container_get_type()), marshalContainer},
+ {glib.Type(C.gtk_dialog_get_type()), marshalDialog},
+ {glib.Type(C.gtk_drawing_area_get_type()), marshalDrawingArea},
+ {glib.Type(C.gtk_editable_get_type()), marshalEditable},
+ {glib.Type(C.gtk_entry_get_type()), marshalEntry},
+ {glib.Type(C.gtk_entry_buffer_get_type()), marshalEntryBuffer},
+ {glib.Type(C.gtk_entry_completion_get_type()), marshalEntryCompletion},
+ {glib.Type(C.gtk_event_box_get_type()), marshalEventBox},
+ {glib.Type(C.gtk_expander_get_type()), marshalExpander},
+ {glib.Type(C.gtk_file_chooser_get_type()), marshalFileChooser},
+ {glib.Type(C.gtk_file_chooser_button_get_type()), marshalFileChooserButton},
+ {glib.Type(C.gtk_file_chooser_dialog_get_type()), marshalFileChooserDialog},
+ {glib.Type(C.gtk_file_chooser_widget_get_type()), marshalFileChooserWidget},
+ {glib.Type(C.gtk_frame_get_type()), marshalFrame},
+ {glib.Type(C.gtk_aspect_frame_get_type()), marshalAspectFrame},
+ {glib.Type(C.gtk_grid_get_type()), marshalGrid},
+ {glib.Type(C.gtk_icon_view_get_type()), marshalIconView},
+ {glib.Type(C.gtk_image_get_type()), marshalImage},
+ {glib.Type(C.gtk_label_get_type()), marshalLabel},
+ {glib.Type(C.gtk_link_button_get_type()), marshalLinkButton},
+ {glib.Type(C.gtk_layout_get_type()), marshalLayout},
+ {glib.Type(C.gtk_list_store_get_type()), marshalListStore},
+ {glib.Type(C.gtk_menu_get_type()), marshalMenu},
+ {glib.Type(C.gtk_menu_bar_get_type()), marshalMenuBar},
+ {glib.Type(C.gtk_menu_button_get_type()), marshalMenuButton},
+ {glib.Type(C.gtk_menu_item_get_type()), marshalMenuItem},
+ {glib.Type(C.gtk_menu_shell_get_type()), marshalMenuShell},
+ {glib.Type(C.gtk_message_dialog_get_type()), marshalMessageDialog},
+ {glib.Type(C.gtk_notebook_get_type()), marshalNotebook},
+ {glib.Type(C.gtk_offscreen_window_get_type()), marshalOffscreenWindow},
+ {glib.Type(C.gtk_orientable_get_type()), marshalOrientable},
+ {glib.Type(C.gtk_overlay_get_type()), marshalOverlay},
+ {glib.Type(C.gtk_paned_get_type()), marshalPaned},
+ {glib.Type(C.gtk_progress_bar_get_type()), marshalProgressBar},
+ {glib.Type(C.gtk_radio_button_get_type()), marshalRadioButton},
+ {glib.Type(C.gtk_radio_menu_item_get_type()), marshalRadioMenuItem},
+ {glib.Type(C.gtk_range_get_type()), marshalRange},
+ {glib.Type(C.gtk_scale_button_get_type()), marshalScaleButton},
+ {glib.Type(C.gtk_scale_get_type()), marshalScale},
+ {glib.Type(C.gtk_scrollbar_get_type()), marshalScrollbar},
+ {glib.Type(C.gtk_scrolled_window_get_type()), marshalScrolledWindow},
+ {glib.Type(C.gtk_search_entry_get_type()), marshalSearchEntry},
+ //{glib.Type(C.gtk_selection_data_get_type()), marshalSelectionData},
+ {glib.Type(C.gtk_separator_get_type()), marshalSeparator},
+ {glib.Type(C.gtk_separator_menu_item_get_type()), marshalSeparatorMenuItem},
+ {glib.Type(C.gtk_separator_tool_item_get_type()), marshalSeparatorToolItem},
+ {glib.Type(C.gtk_spin_button_get_type()), marshalSpinButton},
+ {glib.Type(C.gtk_spinner_get_type()), marshalSpinner},
+ {glib.Type(C.gtk_statusbar_get_type()), marshalStatusbar},
+ {glib.Type(C.gtk_switch_get_type()), marshalSwitch},
+ {glib.Type(C.gtk_text_view_get_type()), marshalTextView},
+ {glib.Type(C.gtk_text_tag_get_type()), marshalTextTag},
+ {glib.Type(C.gtk_text_tag_table_get_type()), marshalTextTagTable},
+ {glib.Type(C.gtk_text_buffer_get_type()), marshalTextBuffer},
+ {glib.Type(C.gtk_toggle_button_get_type()), marshalToggleButton},
+ {glib.Type(C.gtk_toolbar_get_type()), marshalToolbar},
+ {glib.Type(C.gtk_tool_button_get_type()), marshalToolButton},
+ {glib.Type(C.gtk_tool_item_get_type()), marshalToolItem},
+ {glib.Type(C.gtk_tooltip_get_type()), marshalTooltip},
+ {glib.Type(C.gtk_tree_model_get_type()), marshalTreeModel},
+ {glib.Type(C.gtk_tree_selection_get_type()), marshalTreeSelection},
+ {glib.Type(C.gtk_tree_store_get_type()), marshalTreeStore},
+ {glib.Type(C.gtk_tree_view_get_type()), marshalTreeView},
+ {glib.Type(C.gtk_tree_view_column_get_type()), marshalTreeViewColumn},
+ {glib.Type(C.gtk_volume_button_get_type()), marshalVolumeButton},
+ {glib.Type(C.gtk_widget_get_type()), marshalWidget},
+ {glib.Type(C.gtk_window_get_type()), marshalWindow},
+
+ // Boxed
+ {glib.Type(C.gtk_target_entry_get_type()), marshalTargetEntry},
+ {glib.Type(C.gtk_text_iter_get_type()), marshalTextIter},
+ {glib.Type(C.gtk_text_mark_get_type()), marshalTextMark},
+ {glib.Type(C.gtk_tree_iter_get_type()), marshalTreeIter},
+ {glib.Type(C.gtk_tree_path_get_type()), marshalTreePath},
+ }
+ glib.RegisterGValueMarshalers(tm)
+}
+
+/*
+ * Type conversions
+ */
+
+func gbool(b bool) C.gboolean {
+ if b {
+ return C.gboolean(1)
+ }
+ return C.gboolean(0)
+}
+
+func gobool(b C.gboolean) bool {
+ return b != C.FALSE
+}
+
+func cGSList(clist *glib.SList) *C.GSList {
+ if clist == nil {
+ return nil
+ }
+ return (*C.GSList)(unsafe.Pointer(clist.Native()))
+}
+
+func free(str ...interface{}) {
+ for _, s := range str {
+ switch x := s.(type) {
+ case *C.char:
+ C.free(unsafe.Pointer(x))
+ case []*C.char:
+ for _, cp := range x {
+ C.free(unsafe.Pointer(cp))
+ }
+ /*
+ case C.gpointer:
+ C.g_free(C.gpointer(c))
+ */
+ default:
+ fmt.Printf("utils.go free(): Unknown type: %T\n", x)
+ }
+
+ }
+}
+
+func goString(cstr *C.gchar) string {
+ return C.GoString((*C.char)(cstr))
+}
+
+// Wrapper function for TestBoolConvs since cgo can't be used with
+// testing package
+func testBoolConvs() error {
+ b := gobool(gbool(true))
+ if b != true {
+ return errors.New("Unexpected bool conversion result")
+ }
+
+ cb := gbool(gobool(C.gboolean(0)))
+ if cb != C.gboolean(0) {
+ return errors.New("Unexpected bool conversion result")
+ }
+
+ return nil
+}
+
+/*
+ * Unexported vars
+ */
+
+var nilPtrErr = errors.New("cgo returned unexpected nil pointer")
+
+/*
+ * Constants
+ */
+
+// Align is a representation of GTK's GtkAlign.
+type Align int
+
+const (
+ ALIGN_FILL Align = C.GTK_ALIGN_FILL
+ ALIGN_START Align = C.GTK_ALIGN_START
+ ALIGN_END Align = C.GTK_ALIGN_END
+ ALIGN_CENTER Align = C.GTK_ALIGN_CENTER
+)
+
+func marshalAlign(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return Align(c), nil
+}
+
+// ArrowPlacement is a representation of GTK's GtkArrowPlacement.
+type ArrowPlacement int
+
+const (
+ ARROWS_BOTH ArrowPlacement = C.GTK_ARROWS_BOTH
+ ARROWS_START ArrowPlacement = C.GTK_ARROWS_START
+ ARROWS_END ArrowPlacement = C.GTK_ARROWS_END
+)
+
+func marshalArrowPlacement(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return ArrowPlacement(c), nil
+}
+
+// ArrowType is a representation of GTK's GtkArrowType.
+type ArrowType int
+
+const (
+ ARROW_UP ArrowType = C.GTK_ARROW_UP
+ ARROW_DOWN ArrowType = C.GTK_ARROW_DOWN
+ ARROW_LEFT ArrowType = C.GTK_ARROW_LEFT
+ ARROW_RIGHT ArrowType = C.GTK_ARROW_RIGHT
+ ARROW_NONE ArrowType = C.GTK_ARROW_NONE
+)
+
+func marshalArrowType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return ArrowType(c), nil
+}
+
+// AssistantPageType is a representation of GTK's GtkAssistantPageType.
+type AssistantPageType int
+
+const (
+ ASSISTANT_PAGE_CONTENT AssistantPageType = C.GTK_ASSISTANT_PAGE_CONTENT
+ ASSISTANT_PAGE_INTRO AssistantPageType = C.GTK_ASSISTANT_PAGE_INTRO
+ ASSISTANT_PAGE_CONFIRM AssistantPageType = C.GTK_ASSISTANT_PAGE_CONFIRM
+ ASSISTANT_PAGE_SUMMARY AssistantPageType = C.GTK_ASSISTANT_PAGE_SUMMARY
+ ASSISTANT_PAGE_PROGRESS AssistantPageType = C.GTK_ASSISTANT_PAGE_PROGRESS
+ ASSISTANT_PAGE_CUSTOM AssistantPageType = C.GTK_ASSISTANT_PAGE_CUSTOM
+)
+
+func marshalAssistantPageType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return AssistantPageType(c), nil
+}
+
+// ButtonsType is a representation of GTK's GtkButtonsType.
+type ButtonsType int
+
+const (
+ BUTTONS_NONE ButtonsType = C.GTK_BUTTONS_NONE
+ BUTTONS_OK ButtonsType = C.GTK_BUTTONS_OK
+ BUTTONS_CLOSE ButtonsType = C.GTK_BUTTONS_CLOSE
+ BUTTONS_CANCEL ButtonsType = C.GTK_BUTTONS_CANCEL
+ BUTTONS_YES_NO ButtonsType = C.GTK_BUTTONS_YES_NO
+ BUTTONS_OK_CANCEL ButtonsType = C.GTK_BUTTONS_OK_CANCEL
+)
+
+func marshalButtonsType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return ButtonsType(c), nil
+}
+
+// CalendarDisplayOptions is a representation of GTK's GtkCalendarDisplayOptions
+type CalendarDisplayOptions int
+
+const (
+ CALENDAR_SHOW_HEADING CalendarDisplayOptions = C.GTK_CALENDAR_SHOW_HEADING
+ CALENDAR_SHOW_DAY_NAMES CalendarDisplayOptions = C.GTK_CALENDAR_SHOW_DAY_NAMES
+ CALENDAR_NO_MONTH_CHANGE CalendarDisplayOptions = C.GTK_CALENDAR_NO_MONTH_CHANGE
+ CALENDAR_SHOW_WEEK_NUMBERS CalendarDisplayOptions = C.GTK_CALENDAR_SHOW_WEEK_NUMBERS
+ CALENDAR_SHOW_DETAILS CalendarDisplayOptions = C.GTK_CALENDAR_SHOW_DETAILS
+)
+
+func marshalCalendarDisplayOptions(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return CalendarDisplayOptions(c), nil
+}
+
+// DestDefaults is a representation of GTK's GtkDestDefaults.
+type DestDefaults int
+
+const (
+ DEST_DEFAULT_MOTION DestDefaults = C.GTK_DEST_DEFAULT_MOTION
+ DEST_DEFAULT_HIGHLIGHT DestDefaults = C.GTK_DEST_DEFAULT_HIGHLIGHT
+ DEST_DEFAULT_DROP DestDefaults = C.GTK_DEST_DEFAULT_DROP
+ DEST_DEFAULT_ALL DestDefaults = C.GTK_DEST_DEFAULT_ALL
+)
+
+func marshalDestDefaults(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return DestDefaults(c), nil
+}
+
+// DialogFlags is a representation of GTK's GtkDialogFlags.
+type DialogFlags int
+
+const (
+ DIALOG_MODAL DialogFlags = C.GTK_DIALOG_MODAL
+ DIALOG_DESTROY_WITH_PARENT DialogFlags = C.GTK_DIALOG_DESTROY_WITH_PARENT
+)
+
+func marshalDialogFlags(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return DialogFlags(c), nil
+}
+
+// EntryIconPosition is a representation of GTK's GtkEntryIconPosition.
+type EntryIconPosition int
+
+const (
+ ENTRY_ICON_PRIMARY EntryIconPosition = C.GTK_ENTRY_ICON_PRIMARY
+ ENTRY_ICON_SECONDARY EntryIconPosition = C.GTK_ENTRY_ICON_SECONDARY
+)
+
+func marshalEntryIconPosition(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return EntryIconPosition(c), nil
+}
+
+// FileChooserAction is a representation of GTK's GtkFileChooserAction.
+type FileChooserAction int
+
+const (
+ FILE_CHOOSER_ACTION_OPEN FileChooserAction = C.GTK_FILE_CHOOSER_ACTION_OPEN
+ FILE_CHOOSER_ACTION_SAVE FileChooserAction = C.GTK_FILE_CHOOSER_ACTION_SAVE
+ FILE_CHOOSER_ACTION_SELECT_FOLDER FileChooserAction = C.GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
+ FILE_CHOOSER_ACTION_CREATE_FOLDER FileChooserAction = C.GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
+)
+
+func marshalFileChooserAction(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return FileChooserAction(c), nil
+}
+
+// IconLookupFlags is a representation of GTK's GtkIconLookupFlags.
+type IconLookupFlags int
+
+const (
+ ICON_LOOKUP_NO_SVG IconLookupFlags = C.GTK_ICON_LOOKUP_NO_SVG
+ ICON_LOOKUP_FORCE_SVG = C.GTK_ICON_LOOKUP_FORCE_SVG
+ ICON_LOOKUP_USE_BUILTIN = C.GTK_ICON_LOOKUP_USE_BUILTIN
+ ICON_LOOKUP_GENERIC_FALLBACK = C.GTK_ICON_LOOKUP_GENERIC_FALLBACK
+ ICON_LOOKUP_FORCE_SIZE = C.GTK_ICON_LOOKUP_FORCE_SIZE
+)
+
+func marshalIconLookupFlags(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return IconLookupFlags(c), nil
+}
+
+// IconSize is a representation of GTK's GtkIconSize.
+type IconSize int
+
+const (
+ ICON_SIZE_INVALID IconSize = C.GTK_ICON_SIZE_INVALID
+ ICON_SIZE_MENU IconSize = C.GTK_ICON_SIZE_MENU
+ ICON_SIZE_SMALL_TOOLBAR IconSize = C.GTK_ICON_SIZE_SMALL_TOOLBAR
+ ICON_SIZE_LARGE_TOOLBAR IconSize = C.GTK_ICON_SIZE_LARGE_TOOLBAR
+ ICON_SIZE_BUTTON IconSize = C.GTK_ICON_SIZE_BUTTON
+ ICON_SIZE_DND IconSize = C.GTK_ICON_SIZE_DND
+ ICON_SIZE_DIALOG IconSize = C.GTK_ICON_SIZE_DIALOG
+)
+
+func marshalIconSize(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return IconSize(c), nil
+}
+
+// ImageType is a representation of GTK's GtkImageType.
+type ImageType int
+
+const (
+ IMAGE_EMPTY ImageType = C.GTK_IMAGE_EMPTY
+ IMAGE_PIXBUF ImageType = C.GTK_IMAGE_PIXBUF
+ IMAGE_STOCK ImageType = C.GTK_IMAGE_STOCK
+ IMAGE_ICON_SET ImageType = C.GTK_IMAGE_ICON_SET
+ IMAGE_ANIMATION ImageType = C.GTK_IMAGE_ANIMATION
+ IMAGE_ICON_NAME ImageType = C.GTK_IMAGE_ICON_NAME
+ IMAGE_GICON ImageType = C.GTK_IMAGE_GICON
+)
+
+func marshalImageType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return ImageType(c), nil
+}
+
+// InputHints is a representation of GTK's GtkInputHints.
+type InputHints int
+
+const (
+ INPUT_HINT_NONE InputHints = C.GTK_INPUT_HINT_NONE
+ INPUT_HINT_SPELLCHECK InputHints = C.GTK_INPUT_HINT_SPELLCHECK
+ INPUT_HINT_NO_SPELLCHECK InputHints = C.GTK_INPUT_HINT_NO_SPELLCHECK
+ INPUT_HINT_WORD_COMPLETION InputHints = C.GTK_INPUT_HINT_WORD_COMPLETION
+ INPUT_HINT_LOWERCASE InputHints = C.GTK_INPUT_HINT_LOWERCASE
+ INPUT_HINT_UPPERCASE_CHARS InputHints = C.GTK_INPUT_HINT_UPPERCASE_CHARS
+ INPUT_HINT_UPPERCASE_WORDS InputHints = C.GTK_INPUT_HINT_UPPERCASE_WORDS
+ INPUT_HINT_UPPERCASE_SENTENCES InputHints = C.GTK_INPUT_HINT_UPPERCASE_SENTENCES
+ INPUT_HINT_INHIBIT_OSK InputHints = C.GTK_INPUT_HINT_INHIBIT_OSK
+)
+
+func marshalInputHints(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return InputHints(c), nil
+}
+
+// InputPurpose is a representation of GTK's GtkInputPurpose.
+type InputPurpose int
+
+const (
+ INPUT_PURPOSE_FREE_FORM InputPurpose = C.GTK_INPUT_PURPOSE_FREE_FORM
+ INPUT_PURPOSE_ALPHA InputPurpose = C.GTK_INPUT_PURPOSE_ALPHA
+ INPUT_PURPOSE_DIGITS InputPurpose = C.GTK_INPUT_PURPOSE_DIGITS
+ INPUT_PURPOSE_NUMBER InputPurpose = C.GTK_INPUT_PURPOSE_NUMBER
+ INPUT_PURPOSE_PHONE InputPurpose = C.GTK_INPUT_PURPOSE_PHONE
+ INPUT_PURPOSE_URL InputPurpose = C.GTK_INPUT_PURPOSE_URL
+ INPUT_PURPOSE_EMAIL InputPurpose = C.GTK_INPUT_PURPOSE_EMAIL
+ INPUT_PURPOSE_NAME InputPurpose = C.GTK_INPUT_PURPOSE_NAME
+ INPUT_PURPOSE_PASSWORD InputPurpose = C.GTK_INPUT_PURPOSE_PASSWORD
+ INPUT_PURPOSE_PIN InputPurpose = C.GTK_INPUT_PURPOSE_PIN
+)
+
+func marshalInputPurpose(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return InputPurpose(c), nil
+}
+
+// Justify is a representation of GTK's GtkJustification.
+type Justification int
+
+const (
+ JUSTIFY_LEFT Justification = C.GTK_JUSTIFY_LEFT
+ JUSTIFY_RIGHT Justification = C.GTK_JUSTIFY_RIGHT
+ JUSTIFY_CENTER Justification = C.GTK_JUSTIFY_CENTER
+ JUSTIFY_FILL Justification = C.GTK_JUSTIFY_FILL
+)
+
+func marshalJustification(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return Justification(c), nil
+}
+
+// License is a representation of GTK's GtkLicense.
+type License int
+
+const (
+ LICENSE_UNKNOWN License = C.GTK_LICENSE_UNKNOWN
+ LICENSE_CUSTOM License = C.GTK_LICENSE_CUSTOM
+ LICENSE_GPL_2_0 License = C.GTK_LICENSE_GPL_2_0
+ LICENSE_GPL_3_0 License = C.GTK_LICENSE_GPL_3_0
+ LICENSE_LGPL_2_1 License = C.GTK_LICENSE_LGPL_2_1
+ LICENSE_LGPL_3_0 License = C.GTK_LICENSE_LGPL_3_0
+ LICENSE_BSD License = C.GTK_LICENSE_BSD
+ LICENSE_MIT_X11 License = C.GTK_LICENSE_MIT_X11
+ LICENSE_GTK_ARTISTIC License = C.GTK_LICENSE_ARTISTIC
+)
+
+func marshalLicense(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return License(c), nil
+}
+
+// MessageType is a representation of GTK's GtkMessageType.
+type MessageType int
+
+const (
+ MESSAGE_INFO MessageType = C.GTK_MESSAGE_INFO
+ MESSAGE_WARNING MessageType = C.GTK_MESSAGE_WARNING
+ MESSAGE_QUESTION MessageType = C.GTK_MESSAGE_QUESTION
+ MESSAGE_ERROR MessageType = C.GTK_MESSAGE_ERROR
+ MESSAGE_OTHER MessageType = C.GTK_MESSAGE_OTHER
+)
+
+func marshalMessageType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return MessageType(c), nil
+}
+
+// Orientation is a representation of GTK's GtkOrientation.
+type Orientation int
+
+const (
+ ORIENTATION_HORIZONTAL Orientation = C.GTK_ORIENTATION_HORIZONTAL
+ ORIENTATION_VERTICAL Orientation = C.GTK_ORIENTATION_VERTICAL
+)
+
+func marshalOrientation(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return Orientation(c), nil
+}
+
+// PackType is a representation of GTK's GtkPackType.
+type PackType int
+
+const (
+ PACK_START PackType = C.GTK_PACK_START
+ PACK_END PackType = C.GTK_PACK_END
+)
+
+func marshalPackType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return PackType(c), nil
+}
+
+// PathType is a representation of GTK's GtkPathType.
+type PathType int
+
+const (
+ PATH_WIDGET PathType = C.GTK_PATH_WIDGET
+ PATH_WIDGET_CLASS PathType = C.GTK_PATH_WIDGET_CLASS
+ PATH_CLASS PathType = C.GTK_PATH_CLASS
+)
+
+func marshalPathType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return PathType(c), nil
+}
+
+// PolicyType is a representation of GTK's GtkPolicyType.
+type PolicyType int
+
+const (
+ POLICY_ALWAYS PolicyType = C.GTK_POLICY_ALWAYS
+ POLICY_AUTOMATIC PolicyType = C.GTK_POLICY_AUTOMATIC
+ POLICY_NEVER PolicyType = C.GTK_POLICY_NEVER
+)
+
+func marshalPolicyType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return PolicyType(c), nil
+}
+
+// PositionType is a representation of GTK's GtkPositionType.
+type PositionType int
+
+const (
+ POS_LEFT PositionType = C.GTK_POS_LEFT
+ POS_RIGHT PositionType = C.GTK_POS_RIGHT
+ POS_TOP PositionType = C.GTK_POS_TOP
+ POS_BOTTOM PositionType = C.GTK_POS_BOTTOM
+)
+
+func marshalPositionType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return PositionType(c), nil
+}
+
+// ReliefStyle is a representation of GTK's GtkReliefStyle.
+type ReliefStyle int
+
+const (
+ RELIEF_NORMAL ReliefStyle = C.GTK_RELIEF_NORMAL
+ RELIEF_HALF ReliefStyle = C.GTK_RELIEF_HALF
+ RELIEF_NONE ReliefStyle = C.GTK_RELIEF_NONE
+)
+
+func marshalReliefStyle(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return ReliefStyle(c), nil
+}
+
+// ResponseType is a representation of GTK's GtkResponseType.
+type ResponseType int
+
+const (
+ RESPONSE_NONE ResponseType = C.GTK_RESPONSE_NONE
+ RESPONSE_REJECT ResponseType = C.GTK_RESPONSE_REJECT
+ RESPONSE_ACCEPT ResponseType = C.GTK_RESPONSE_ACCEPT
+ RESPONSE_DELETE_EVENT ResponseType = C.GTK_RESPONSE_DELETE_EVENT
+ RESPONSE_OK ResponseType = C.GTK_RESPONSE_OK
+ RESPONSE_CANCEL ResponseType = C.GTK_RESPONSE_CANCEL
+ RESPONSE_CLOSE ResponseType = C.GTK_RESPONSE_CLOSE
+ RESPONSE_YES ResponseType = C.GTK_RESPONSE_YES
+ RESPONSE_NO ResponseType = C.GTK_RESPONSE_NO
+ RESPONSE_APPLY ResponseType = C.GTK_RESPONSE_APPLY
+ RESPONSE_HELP ResponseType = C.GTK_RESPONSE_HELP
+)
+
+func marshalResponseType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return ResponseType(c), nil
+}
+
+// SelectionMode is a representation of GTK's GtkSelectionMode.
+type SelectionMode int
+
+const (
+ SELECTION_NONE SelectionMode = C.GTK_SELECTION_NONE
+ SELECTION_SINGLE SelectionMode = C.GTK_SELECTION_SINGLE
+ SELECTION_BROWSE SelectionMode = C.GTK_SELECTION_BROWSE
+ SELECTION_MULTIPLE SelectionMode = C.GTK_SELECTION_MULTIPLE
+)
+
+func marshalSelectionMode(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return SelectionMode(c), nil
+}
+
+// ShadowType is a representation of GTK's GtkShadowType.
+type ShadowType int
+
+const (
+ SHADOW_NONE ShadowType = C.GTK_SHADOW_NONE
+ SHADOW_IN ShadowType = C.GTK_SHADOW_IN
+ SHADOW_OUT ShadowType = C.GTK_SHADOW_OUT
+ SHADOW_ETCHED_IN ShadowType = C.GTK_SHADOW_ETCHED_IN
+ SHADOW_ETCHED_OUT ShadowType = C.GTK_SHADOW_ETCHED_OUT
+)
+
+func marshalShadowType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return ShadowType(c), nil
+}
+
+// SizeGroupMode is a representation of GTK's GtkSizeGroupMode
+type SizeGroupMode int
+
+const (
+ SIZE_GROUP_NONE SizeGroupMode = C.GTK_SIZE_GROUP_NONE
+ SIZE_GROUP_HORIZONTAL SizeGroupMode = C.GTK_SIZE_GROUP_HORIZONTAL
+ SIZE_GROUP_VERTICAL SizeGroupMode = C.GTK_SIZE_GROUP_VERTICAL
+ SIZE_GROUP_BOTH SizeGroupMode = C.GTK_SIZE_GROUP_BOTH
+)
+
+func marshalSizeGroupMode(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return SizeGroupMode(c), nil
+}
+
+// SortType is a representation of GTK's GtkSortType.
+type SortType int
+
+const (
+ SORT_ASCENDING SortType = C.GTK_SORT_ASCENDING
+ SORT_DESCENDING = C.GTK_SORT_DESCENDING
+)
+
+// Use as column id in SetSortColumnId to specify ListStore sorted
+// by default column or unsorted
+const (
+ SORT_COLUMN_DEFAULT int = -1
+ SORT_COLUMN_UNSORTED int = -2
+)
+
+func marshalSortType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return SortType(c), nil
+}
+
+// StateFlags is a representation of GTK's GtkStateFlags.
+type StateFlags int
+
+const (
+ STATE_FLAG_NORMAL StateFlags = C.GTK_STATE_FLAG_NORMAL
+ STATE_FLAG_ACTIVE StateFlags = C.GTK_STATE_FLAG_ACTIVE
+ STATE_FLAG_PRELIGHT StateFlags = C.GTK_STATE_FLAG_PRELIGHT
+ STATE_FLAG_SELECTED StateFlags = C.GTK_STATE_FLAG_SELECTED
+ STATE_FLAG_INSENSITIVE StateFlags = C.GTK_STATE_FLAG_INSENSITIVE
+ STATE_FLAG_INCONSISTENT StateFlags = C.GTK_STATE_FLAG_INCONSISTENT
+ STATE_FLAG_FOCUSED StateFlags = C.GTK_STATE_FLAG_FOCUSED
+ STATE_FLAG_BACKDROP StateFlags = C.GTK_STATE_FLAG_BACKDROP
+)
+
+func marshalStateFlags(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return StateFlags(c), nil
+}
+
+// TextDirection is a representation of GTK's GtkTextDirection.
+type TextDirection int
+
+const (
+ TEXT_DIR_NONE TextDirection = C.GTK_TEXT_DIR_NONE
+ TEXT_DIR_LTR TextDirection = C.GTK_TEXT_DIR_LTR
+ TEXT_DIR_RTL TextDirection = C.GTK_TEXT_DIR_RTL
+)
+
+func marshalTextDirection(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return TextDirection(c), nil
+}
+
+// TargetFlags is a representation of GTK's GtkTargetFlags.
+type TargetFlags int
+
+const (
+ TARGET_SAME_APP TargetFlags = C.GTK_TARGET_SAME_APP
+ TARGET_SAME_WIDGET TargetFlags = C.GTK_TARGET_SAME_WIDGET
+ TARGET_OTHER_APP TargetFlags = C.GTK_TARGET_OTHER_APP
+ TARGET_OTHER_WIDGET TargetFlags = C.GTK_TARGET_OTHER_WIDGET
+)
+
+func marshalTargetFlags(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return TargetFlags(c), nil
+}
+
+// ToolbarStyle is a representation of GTK's GtkToolbarStyle.
+type ToolbarStyle int
+
+const (
+ TOOLBAR_ICONS ToolbarStyle = C.GTK_TOOLBAR_ICONS
+ TOOLBAR_TEXT ToolbarStyle = C.GTK_TOOLBAR_TEXT
+ TOOLBAR_BOTH ToolbarStyle = C.GTK_TOOLBAR_BOTH
+ TOOLBAR_BOTH_HORIZ ToolbarStyle = C.GTK_TOOLBAR_BOTH_HORIZ
+)
+
+func marshalToolbarStyle(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return ToolbarStyle(c), nil
+}
+
+// TreeModelFlags is a representation of GTK's GtkTreeModelFlags.
+type TreeModelFlags int
+
+const (
+ TREE_MODEL_ITERS_PERSIST TreeModelFlags = C.GTK_TREE_MODEL_ITERS_PERSIST
+ TREE_MODEL_LIST_ONLY TreeModelFlags = C.GTK_TREE_MODEL_LIST_ONLY
+)
+
+func marshalTreeModelFlags(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return TreeModelFlags(c), nil
+}
+
+// WindowPosition is a representation of GTK's GtkWindowPosition.
+type WindowPosition int
+
+const (
+ WIN_POS_NONE WindowPosition = C.GTK_WIN_POS_NONE
+ WIN_POS_CENTER WindowPosition = C.GTK_WIN_POS_CENTER
+ WIN_POS_MOUSE WindowPosition = C.GTK_WIN_POS_MOUSE
+ WIN_POS_CENTER_ALWAYS WindowPosition = C.GTK_WIN_POS_CENTER_ALWAYS
+ WIN_POS_CENTER_ON_PARENT WindowPosition = C.GTK_WIN_POS_CENTER_ON_PARENT
+)
+
+func marshalWindowPosition(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return WindowPosition(c), nil
+}
+
+// WindowType is a representation of GTK's GtkWindowType.
+type WindowType int
+
+const (
+ WINDOW_TOPLEVEL WindowType = C.GTK_WINDOW_TOPLEVEL
+ WINDOW_POPUP WindowType = C.GTK_WINDOW_POPUP
+)
+
+func marshalWindowType(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return WindowType(c), nil
+}
+
+// WrapMode is a representation of GTK's GtkWrapMode.
+type WrapMode int
+
+const (
+ WRAP_NONE WrapMode = C.GTK_WRAP_NONE
+ WRAP_CHAR WrapMode = C.GTK_WRAP_CHAR
+ WRAP_WORD WrapMode = C.GTK_WRAP_WORD
+ WRAP_WORD_CHAR WrapMode = C.GTK_WRAP_WORD_CHAR
+)
+
+func marshalWrapMode(p uintptr) (interface{}, error) {
+ c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p)))
+ return WrapMode(c), nil
+}
+
+/*
+ * Init and main event loop
+ */
+
+/*
+Init() is a wrapper around gtk_init() and must be called before any
+other GTK calls and is used to initialize everything necessary.
+
+In addition to setting up GTK for usage, a pointer to a slice of
+strings may be passed in to parse standard GTK command line arguments.
+args will be modified to remove any flags that were handled.
+Alternatively, nil may be passed in to not perform any command line
+parsing.
+*/
+func Init(args *[]string) {
+ if args != nil {
+ argc := C.int(len(*args))
+ argv := C.make_strings(argc)
+ defer C.destroy_strings(argv)
+
+ for i, arg := range *args {
+ cstr := C.CString(arg)
+ C.set_string(argv, C.int(i), (*C.gchar)(cstr))
+ }
+
+ C.gtk_init((*C.int)(unsafe.Pointer(&argc)),
+ (***C.char)(unsafe.Pointer(&argv)))
+
+ unhandled := make([]string, argc)
+ for i := 0; i < int(argc); i++ {
+ cstr := C.get_string(argv, C.int(i))
+ unhandled[i] = goString(cstr)
+ C.free(unsafe.Pointer(cstr))
+ }
+ *args = unhandled
+ } else {
+ C.gtk_init(nil, nil)
+ }
+}
+
+/*
+InitCheck() is a wrapper around gtk_init_check() and works exactly like Init()
+only that it doesn't terminate the program if initialization fails.
+*/
+func InitCheck(args *[]string) error {
+ success := false
+ if args != nil {
+ argc := C.int(len(*args))
+ argv := C.make_strings(argc)
+ defer C.destroy_strings(argv)
+
+ for i, arg := range *args {
+ cstr := C.CString(arg)
+ C.set_string(argv, C.int(i), (*C.gchar)(cstr))
+ }
+
+ success = gobool(C.gtk_init_check((*C.int)(unsafe.Pointer(&argc)),
+ (***C.char)(unsafe.Pointer(&argv))))
+
+ unhandled := make([]string, argc)
+ for i := 0; i < int(argc); i++ {
+ cstr := C.get_string(argv, C.int(i))
+ unhandled[i] = goString(cstr)
+ C.free(unsafe.Pointer(cstr))
+ }
+ *args = unhandled
+ } else {
+ success = gobool(C.gtk_init_check(nil, nil))
+ }
+ if success {
+ return nil
+ } else {
+ return errors.New("Unable to initialize GTK")
+ }
+}
+
+// Main() is a wrapper around gtk_main() and runs the GTK main loop,
+// blocking until MainQuit() is called.
+func Main() {
+ C.gtk_main()
+}
+
+// MainIteration is a wrapper around gtk_main_iteration.
+func MainIteration() bool {
+ return gobool(C.gtk_main_iteration())
+}
+
+// MainIterationDo is a wrapper around gtk_main_iteration_do.
+func MainIterationDo(blocking bool) bool {
+ return gobool(C.gtk_main_iteration_do(gbool(blocking)))
+}
+
+// EventsPending is a wrapper around gtk_events_pending.
+func EventsPending() bool {
+ return gobool(C.gtk_events_pending())
+}
+
+// MainQuit() is a wrapper around gtk_main_quit() is used to terminate
+// the GTK main loop (started by Main()).
+func MainQuit() {
+ C.gtk_main_quit()
+}
+
+/*
+ * GtkAdjustment
+ */
+
+// Adjustment is a representation of GTK's GtkAdjustment.
+type Adjustment struct {
+ glib.InitiallyUnowned
+}
+
+// native returns a pointer to the underlying GtkAdjustment.
+func (v *Adjustment) native() *C.GtkAdjustment {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkAdjustment(p)
+}
+
+func marshalAdjustment(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapAdjustment(obj), nil
+}
+
+func wrapAdjustment(obj *glib.Object) *Adjustment {
+ return &Adjustment{glib.InitiallyUnowned{obj}}
+}
+
+// AdjustmentNew is a wrapper around gtk_adjustment_new().
+func AdjustmentNew(value, lower, upper, stepIncrement, pageIncrement, pageSize float64) (*Adjustment, error) {
+ c := C.gtk_adjustment_new(C.gdouble(value),
+ C.gdouble(lower),
+ C.gdouble(upper),
+ C.gdouble(stepIncrement),
+ C.gdouble(pageIncrement),
+ C.gdouble(pageSize))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapAdjustment(obj), nil
+}
+
+// GetValue is a wrapper around gtk_adjustment_get_value().
+func (v *Adjustment) GetValue() float64 {
+ c := C.gtk_adjustment_get_value(v.native())
+ return float64(c)
+}
+
+// SetValue is a wrapper around gtk_adjustment_set_value().
+func (v *Adjustment) SetValue(value float64) {
+ C.gtk_adjustment_set_value(v.native(), C.gdouble(value))
+}
+
+// GetLower is a wrapper around gtk_adjustment_get_lower().
+func (v *Adjustment) GetLower() float64 {
+ c := C.gtk_adjustment_get_lower(v.native())
+ return float64(c)
+}
+
+// GetPageSize is a wrapper around gtk_adjustment_get_page_size().
+func (v *Adjustment) GetPageSize() float64 {
+ return float64(C.gtk_adjustment_get_page_size(v.native()))
+}
+
+// SetPageSize is a wrapper around gtk_adjustment_set_page_size().
+func (v *Adjustment) SetPageSize(value float64) {
+ C.gtk_adjustment_set_page_size(v.native(), C.gdouble(value))
+}
+
+// Configure is a wrapper around gtk_adjustment_configure().
+func (v *Adjustment) Configure(value, lower, upper, stepIncrement, pageIncrement, pageSize float64) {
+ C.gtk_adjustment_configure(v.native(), C.gdouble(value),
+ C.gdouble(lower), C.gdouble(upper), C.gdouble(stepIncrement),
+ C.gdouble(pageIncrement), C.gdouble(pageSize))
+}
+
+// SetLower is a wrapper around gtk_adjustment_set_lower().
+func (v *Adjustment) SetLower(value float64) {
+ C.gtk_adjustment_set_lower(v.native(), C.gdouble(value))
+}
+
+// GetUpper is a wrapper around gtk_adjustment_get_upper().
+func (v *Adjustment) GetUpper() float64 {
+ c := C.gtk_adjustment_get_upper(v.native())
+ return float64(c)
+}
+
+// SetUpper is a wrapper around gtk_adjustment_set_upper().
+func (v *Adjustment) SetUpper(value float64) {
+ C.gtk_adjustment_set_upper(v.native(), C.gdouble(value))
+}
+
+// GetPageIncrement is a wrapper around gtk_adjustment_get_page_increment().
+func (v *Adjustment) GetPageIncrement() float64 {
+ c := C.gtk_adjustment_get_page_increment(v.native())
+ return float64(c)
+}
+
+// SetPageIncrement is a wrapper around gtk_adjustment_set_page_increment().
+func (v *Adjustment) SetPageIncrement(value float64) {
+ C.gtk_adjustment_set_page_increment(v.native(), C.gdouble(value))
+}
+
+// GetStepIncrement is a wrapper around gtk_adjustment_get_step_increment().
+func (v *Adjustment) GetStepIncrement() float64 {
+ c := C.gtk_adjustment_get_step_increment(v.native())
+ return float64(c)
+}
+
+// SetStepIncrement is a wrapper around gtk_adjustment_set_step_increment().
+func (v *Adjustment) SetStepIncrement(value float64) {
+ C.gtk_adjustment_set_step_increment(v.native(), C.gdouble(value))
+}
+
+// GetMinimumIncrement is a wrapper around gtk_adjustment_get_minimum_increment().
+func (v *Adjustment) GetMinimumIncrement() float64 {
+ c := C.gtk_adjustment_get_minimum_increment(v.native())
+ return float64(c)
+}
+
+/*
+void gtk_adjustment_clamp_page ()
+void gtk_adjustment_changed ()
+void gtk_adjustment_value_changed ()
+void gtk_adjustment_configure ()
+*/
+
+/*
+ * GtkAssistant
+ */
+
+// Assistant is a representation of GTK's GtkAssistant.
+type Assistant struct {
+ Window
+}
+
+// native returns a pointer to the underlying GtkAssistant.
+func (v *Assistant) native() *C.GtkAssistant {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkAssistant(p)
+}
+
+func marshalAssistant(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapAssistant(obj), nil
+}
+
+func wrapAssistant(obj *glib.Object) *Assistant {
+ return &Assistant{Window{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}}
+}
+
+// AssistantNew is a wrapper around gtk_assistant_new().
+func AssistantNew() (*Assistant, error) {
+ c := C.gtk_assistant_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapAssistant(obj), nil
+}
+
+// GetCurrentPage is a wrapper around gtk_assistant_get_current_page().
+func (v *Assistant) GetCurrentPage() int {
+ c := C.gtk_assistant_get_current_page(v.native())
+ return int(c)
+}
+
+// SetCurrentPage is a wrapper around gtk_assistant_set_current_page().
+func (v *Assistant) SetCurrentPage(pageNum int) {
+ C.gtk_assistant_set_current_page(v.native(), C.gint(pageNum))
+}
+
+// GetNPages is a wrapper around gtk_assistant_get_n_pages().
+func (v *Assistant) GetNPages() int {
+ c := C.gtk_assistant_get_n_pages(v.native())
+ return int(c)
+}
+
+// GetNthPage is a wrapper around gtk_assistant_get_nth_page().
+func (v *Assistant) GetNthPage(pageNum int) (*Widget, error) {
+ c := C.gtk_assistant_get_nth_page(v.native(), C.gint(pageNum))
+ if c == nil {
+ return nil, fmt.Errorf("page %d is out of bounds", pageNum)
+ }
+
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapWidget(obj), nil
+}
+
+// PrependPage is a wrapper around gtk_assistant_prepend_page().
+func (v *Assistant) PrependPage(page IWidget) int {
+ c := C.gtk_assistant_prepend_page(v.native(), page.toWidget())
+ return int(c)
+}
+
+// AppendPage is a wrapper around gtk_assistant_append_page().
+func (v *Assistant) AppendPage(page IWidget) int {
+ c := C.gtk_assistant_append_page(v.native(), page.toWidget())
+ return int(c)
+}
+
+// InsertPage is a wrapper around gtk_assistant_insert_page().
+func (v *Assistant) InsertPage(page IWidget, position int) int {
+ c := C.gtk_assistant_insert_page(v.native(), page.toWidget(),
+ C.gint(position))
+ return int(c)
+}
+
+// RemovePage is a wrapper around gtk_assistant_remove_page().
+func (v *Assistant) RemovePage(pageNum int) {
+ C.gtk_assistant_remove_page(v.native(), C.gint(pageNum))
+}
+
+// TODO: gtk_assistant_set_forward_page_func
+
+// SetPageType is a wrapper around gtk_assistant_set_page_type().
+func (v *Assistant) SetPageType(page IWidget, ptype AssistantPageType) {
+ C.gtk_assistant_set_page_type(v.native(), page.toWidget(),
+ C.GtkAssistantPageType(ptype))
+}
+
+// GetPageType is a wrapper around gtk_assistant_get_page_type().
+func (v *Assistant) GetPageType(page IWidget) AssistantPageType {
+ c := C.gtk_assistant_get_page_type(v.native(), page.toWidget())
+ return AssistantPageType(c)
+}
+
+// SetPageTitle is a wrapper around gtk_assistant_set_page_title().
+func (v *Assistant) SetPageTitle(page IWidget, title string) {
+ cstr := C.CString(title)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_assistant_set_page_title(v.native(), page.toWidget(),
+ (*C.gchar)(cstr))
+}
+
+// GetPageTitle is a wrapper around gtk_assistant_get_page_title().
+func (v *Assistant) GetPageTitle(page IWidget) string {
+ return goString(C.gtk_assistant_get_page_title(v.native(), page.toWidget()))
+}
+
+// SetPageComplete is a wrapper around gtk_assistant_set_page_complete().
+func (v *Assistant) SetPageComplete(page IWidget, complete bool) {
+ C.gtk_assistant_set_page_complete(v.native(), page.toWidget(),
+ gbool(complete))
+}
+
+// GetPageComplete is a wrapper around gtk_assistant_get_page_complete().
+func (v *Assistant) GetPageComplete(page IWidget) bool {
+ c := C.gtk_assistant_get_page_complete(v.native(), page.toWidget())
+ return gobool(c)
+}
+
+// AddActionWidget is a wrapper around gtk_assistant_add_action_widget().
+func (v *Assistant) AddActionWidget(child IWidget) {
+ C.gtk_assistant_add_action_widget(v.native(), child.toWidget())
+}
+
+// RemoveActionWidget is a wrapper around gtk_assistant_remove_action_widget().
+func (v *Assistant) RemoveActionWidget(child IWidget) {
+ C.gtk_assistant_remove_action_widget(v.native(), child.toWidget())
+}
+
+// UpdateButtonsState is a wrapper around gtk_assistant_update_buttons_state().
+func (v *Assistant) UpdateButtonsState() {
+ C.gtk_assistant_update_buttons_state(v.native())
+}
+
+// Commit is a wrapper around gtk_assistant_commit().
+func (v *Assistant) Commit() {
+ C.gtk_assistant_commit(v.native())
+}
+
+// NextPage is a wrapper around gtk_assistant_next_page().
+func (v *Assistant) NextPage() {
+ C.gtk_assistant_next_page(v.native())
+}
+
+// PreviousPage is a wrapper around gtk_assistant_previous_page().
+func (v *Assistant) PreviousPage() {
+ C.gtk_assistant_previous_page(v.native())
+}
+
+/*
+ * GtkBin
+ */
+
+// Bin is a representation of GTK's GtkBin.
+type Bin struct {
+ Container
+}
+
+// native returns a pointer to the underlying GtkBin.
+func (v *Bin) native() *C.GtkBin {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkBin(p)
+}
+
+func marshalBin(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapBin(obj), nil
+}
+
+func wrapBin(obj *glib.Object) *Bin {
+ return &Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}
+}
+
+// GetChild is a wrapper around gtk_bin_get_child().
+func (v *Bin) GetChild() (*Widget, error) {
+ c := C.gtk_bin_get_child(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapWidget(obj), nil
+}
+
+/*
+ * GtkBuilder
+ */
+
+// Builder is a representation of GTK's GtkBuilder.
+type Builder struct {
+ *glib.Object
+}
+
+// native() returns a pointer to the underlying GtkBuilder.
+func (b *Builder) native() *C.GtkBuilder {
+ if b == nil || b.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(b.GObject)
+ return C.toGtkBuilder(p)
+}
+
+func marshalBuilder(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return &Builder{obj}, nil
+}
+
+// BuilderNew is a wrapper around gtk_builder_new().
+func BuilderNew() (*Builder, error) {
+ c := C.gtk_builder_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return &Builder{obj}, nil
+}
+
+// BuilderNewFromFile is a wrapper around gtk_builder_new_from_file().
+func BuilderNewFromFile(filePath string) (*Builder, error) {
+ cstr := C.CString(filePath)
+ defer C.free(unsafe.Pointer(cstr))
+
+ c := C.gtk_builder_new_from_file((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ obj := glib.Take(unsafe.Pointer(c))
+ return &Builder{obj}, nil
+}
+
+// BuilderNewFromResource is a wrapper around gtk_builder_new_from_resource().
+func BuilderNewFromResource(resourcePath string) (*Builder, error) {
+ cstr := C.CString(resourcePath)
+ defer C.free(unsafe.Pointer(cstr))
+
+ c := C.gtk_builder_new_from_resource((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ obj := glib.Take(unsafe.Pointer(c))
+ return &Builder{obj}, nil
+}
+
+// AddFromFile is a wrapper around gtk_builder_add_from_file().
+func (b *Builder) AddFromFile(filename string) error {
+ cstr := C.CString(filename)
+ defer C.free(unsafe.Pointer(cstr))
+ var err *C.GError = nil
+ res := C.gtk_builder_add_from_file(b.native(), (*C.gchar)(cstr), &err)
+ if res == 0 {
+ defer C.g_error_free(err)
+ return errors.New(goString(err.message))
+ }
+ return nil
+}
+
+// AddFromResource is a wrapper around gtk_builder_add_from_resource().
+func (b *Builder) AddFromResource(path string) error {
+ cstr := C.CString(path)
+ defer C.free(unsafe.Pointer(cstr))
+ var err *C.GError = nil
+ res := C.gtk_builder_add_from_resource(b.native(), (*C.gchar)(cstr), &err)
+ if res == 0 {
+ defer C.g_error_free(err)
+ return errors.New(goString(err.message))
+ }
+ return nil
+}
+
+// AddFromString is a wrapper around gtk_builder_add_from_string().
+func (b *Builder) AddFromString(str string) error {
+ cstr := C.CString(str)
+ defer C.free(unsafe.Pointer(cstr))
+ length := (C.gsize)(len(str))
+ var err *C.GError = nil
+ res := C.gtk_builder_add_from_string(b.native(), (*C.gchar)(cstr), length, &err)
+ if res == 0 {
+ defer C.g_error_free(err)
+ return errors.New(goString(err.message))
+ }
+ return nil
+}
+
+// GetObject is a wrapper around gtk_builder_get_object(). The returned result
+// is an IObject, so it will need to be type-asserted to the appropriate type before
+// being used. For example, to get an object and type assert it as a window:
+//
+// obj, err := builder.GetObject("window")
+// if err != nil {
+// // object not found
+// return
+// }
+// if w, ok := obj.(*gtk.Window); ok {
+// // do stuff with w here
+// } else {
+// // not a *gtk.Window
+// }
+//
+func (b *Builder) GetObject(name string) (glib.IObject, error) {
+ cstr := C.CString(name)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_builder_get_object(b.native(), (*C.gchar)(cstr))
+ if c == nil {
+ return nil, errors.New("object '" + name + "' not found")
+ }
+ obj, err := cast(c)
+ if err != nil {
+ return nil, err
+ }
+ return obj, nil
+}
+
+var (
+ builderSignals = struct {
+ sync.RWMutex
+ m map[*C.GtkBuilder]map[string]interface{}
+ }{
+ m: make(map[*C.GtkBuilder]map[string]interface{}),
+ }
+)
+
+// ConnectSignals is a wrapper around gtk_builder_connect_signals_full().
+func (b *Builder) ConnectSignals(signals map[string]interface{}) {
+ builderSignals.Lock()
+ builderSignals.m[b.native()] = signals
+ builderSignals.Unlock()
+
+ C._gtk_builder_connect_signals_full(b.native())
+}
+
+/*
+ * GtkButton
+ */
+
+// Button is a representation of GTK's GtkButton.
+type Button struct {
+ Bin
+
+ // Interfaces
+ IActionable
+}
+
+// native() returns a pointer to the underlying GtkButton.
+func (v *Button) native() *C.GtkButton {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkButton(p)
+}
+
+func marshalButton(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapButton(obj), nil
+}
+
+func wrapButton(obj *glib.Object) *Button {
+ actionable := &Actionable{obj}
+ return &Button{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}, actionable}
+}
+
+// ButtonNew() is a wrapper around gtk_button_new().
+func ButtonNew() (*Button, error) {
+ c := C.gtk_button_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapButton(obj), nil
+}
+
+// ButtonNewWithLabel() is a wrapper around gtk_button_new_with_label().
+func ButtonNewWithLabel(label string) (*Button, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_button_new_with_label((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapButton(obj), nil
+}
+
+// ButtonNewWithMnemonic() is a wrapper around gtk_button_new_with_mnemonic().
+func ButtonNewWithMnemonic(label string) (*Button, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_button_new_with_mnemonic((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapButton(obj), nil
+}
+
+// Clicked() is a wrapper around gtk_button_clicked().
+func (v *Button) Clicked() {
+ C.gtk_button_clicked(v.native())
+}
+
+// SetRelief() is a wrapper around gtk_button_set_relief().
+func (v *Button) SetRelief(newStyle ReliefStyle) {
+ C.gtk_button_set_relief(v.native(), C.GtkReliefStyle(newStyle))
+}
+
+// GetRelief() is a wrapper around gtk_button_get_relief().
+func (v *Button) GetRelief() ReliefStyle {
+ c := C.gtk_button_get_relief(v.native())
+ return ReliefStyle(c)
+}
+
+// SetLabel() is a wrapper around gtk_button_set_label().
+func (v *Button) SetLabel(label string) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_button_set_label(v.native(), (*C.gchar)(cstr))
+}
+
+// GetLabel() is a wrapper around gtk_button_get_label().
+func (v *Button) GetLabel() (string, error) {
+ c := C.gtk_button_get_label(v.native())
+ if c == nil {
+ return "", nilPtrErr
+ }
+ return goString(c), nil
+}
+
+// SetUseUnderline() is a wrapper around gtk_button_set_use_underline().
+func (v *Button) SetUseUnderline(useUnderline bool) {
+ C.gtk_button_set_use_underline(v.native(), gbool(useUnderline))
+}
+
+// GetUseUnderline() is a wrapper around gtk_button_get_use_underline().
+func (v *Button) GetUseUnderline() bool {
+ c := C.gtk_button_get_use_underline(v.native())
+ return gobool(c)
+}
+
+// SetImage() is a wrapper around gtk_button_set_image().
+func (v *Button) SetImage(image IWidget) {
+ C.gtk_button_set_image(v.native(), image.toWidget())
+}
+
+// GetImage() is a wrapper around gtk_button_get_image().
+func (v *Button) GetImage() (*Widget, error) {
+ c := C.gtk_button_get_image(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapWidget(obj), nil
+}
+
+// SetImagePosition() is a wrapper around gtk_button_set_image_position().
+func (v *Button) SetImagePosition(position PositionType) {
+ C.gtk_button_set_image_position(v.native(), C.GtkPositionType(position))
+}
+
+// GetImagePosition() is a wrapper around gtk_button_get_image_position().
+func (v *Button) GetImagePosition() PositionType {
+ c := C.gtk_button_get_image_position(v.native())
+ return PositionType(c)
+}
+
+// SetAlwaysShowImage() is a wrapper around gtk_button_set_always_show_image().
+func (v *Button) SetAlwaysShowImage(alwaysShow bool) {
+ C.gtk_button_set_always_show_image(v.native(), gbool(alwaysShow))
+}
+
+// GetAlwaysShowImage() is a wrapper around gtk_button_get_always_show_image().
+func (v *Button) GetAlwaysShowImage() bool {
+ c := C.gtk_button_get_always_show_image(v.native())
+ return gobool(c)
+}
+
+// GetEventWindow() is a wrapper around gtk_button_get_event_window().
+func (v *Button) GetEventWindow() (*gdk.Window, error) {
+ c := C.gtk_button_get_event_window(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ w := &gdk.Window{glib.Take(unsafe.Pointer(c))}
+ return w, nil
+}
+
+/*
+ * GtkColorButton
+ */
+
+// ColorButton is a representation of GTK's GtkColorButton.
+type ColorButton struct {
+ Button
+
+ // Interfaces
+ ColorChooser
+}
+
+// Native returns a pointer to the underlying GtkColorButton.
+func (v *ColorButton) native() *C.GtkColorButton {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkColorButton(p)
+}
+
+func wrapColorButton(obj *glib.Object) *ColorButton {
+ cc := wrapColorChooser(obj)
+ actionable := wrapActionable(obj)
+ return &ColorButton{Button{Bin{Container{Widget{
+ glib.InitiallyUnowned{obj}}}}, actionable}, *cc}
+}
+
+// ColorButtonNew is a wrapper around gtk_color_button_new().
+func ColorButtonNew() (*ColorButton, error) {
+ c := C.gtk_color_button_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapColorButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// ColorButtonNewWithRGBA is a wrapper around gtk_color_button_new_with_rgba().
+func ColorButtonNewWithRGBA(gdkColor *gdk.RGBA) (*ColorButton, error) {
+ c := C.gtk_color_button_new_with_rgba((*C.GdkRGBA)(unsafe.Pointer(gdkColor.Native())))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapColorButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+/*
+ * GtkBox
+ */
+
+// Box is a representation of GTK's GtkBox.
+type Box struct {
+ Container
+}
+
+// native() returns a pointer to the underlying GtkBox.
+func (v *Box) native() *C.GtkBox {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkBox(p)
+}
+
+func marshalBox(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapBox(obj), nil
+}
+
+func wrapBox(obj *glib.Object) *Box {
+ return &Box{Container{Widget{glib.InitiallyUnowned{obj}}}}
+}
+
+func (v *Box) toOrientable() *C.GtkOrientable {
+ if v == nil {
+ return nil
+ }
+ return C.toGtkOrientable(unsafe.Pointer(v.GObject))
+}
+
+// GetOrientation() is a wrapper around C.gtk_orientable_get_orientation() for a GtkBox
+func (v *Box) GetOrientation() Orientation {
+ return Orientation(C.gtk_orientable_get_orientation(v.toOrientable()))
+}
+
+// SetOrientation() is a wrapper around C.gtk_orientable_set_orientation() for a GtkBox
+func (v *Box) SetOrientation(o Orientation) {
+ C.gtk_orientable_set_orientation(v.toOrientable(), C.GtkOrientation(o))
+}
+
+// BoxNew() is a wrapper around gtk_box_new().
+func BoxNew(orientation Orientation, spacing int) (*Box, error) {
+ c := C.gtk_box_new(C.GtkOrientation(orientation), C.gint(spacing))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapBox(obj), nil
+}
+
+// PackStart() is a wrapper around gtk_box_pack_start().
+func (v *Box) PackStart(child IWidget, expand, fill bool, padding uint) {
+ C.gtk_box_pack_start(v.native(), child.toWidget(), gbool(expand),
+ gbool(fill), C.guint(padding))
+}
+
+// PackEnd() is a wrapper around gtk_box_pack_end().
+func (v *Box) PackEnd(child IWidget, expand, fill bool, padding uint) {
+ C.gtk_box_pack_end(v.native(), child.toWidget(), gbool(expand),
+ gbool(fill), C.guint(padding))
+}
+
+// GetHomogeneous() is a wrapper around gtk_box_get_homogeneous().
+func (v *Box) GetHomogeneous() bool {
+ c := C.gtk_box_get_homogeneous(v.native())
+ return gobool(c)
+}
+
+// SetHomogeneous() is a wrapper around gtk_box_set_homogeneous().
+func (v *Box) SetHomogeneous(homogeneous bool) {
+ C.gtk_box_set_homogeneous(v.native(), gbool(homogeneous))
+}
+
+// GetSpacing() is a wrapper around gtk_box_get_spacing().
+func (v *Box) GetSpacing() int {
+ c := C.gtk_box_get_spacing(v.native())
+ return int(c)
+}
+
+// SetSpacing() is a wrapper around gtk_box_set_spacing()
+func (v *Box) SetSpacing(spacing int) {
+ C.gtk_box_set_spacing(v.native(), C.gint(spacing))
+}
+
+// ReorderChild() is a wrapper around gtk_box_reorder_child().
+func (v *Box) ReorderChild(child IWidget, position int) {
+ C.gtk_box_reorder_child(v.native(), child.toWidget(), C.gint(position))
+}
+
+// QueryChildPacking() is a wrapper around gtk_box_query_child_packing().
+func (v *Box) QueryChildPacking(child IWidget) (expand, fill bool, padding uint, packType PackType) {
+ var cexpand, cfill C.gboolean
+ var cpadding C.guint
+ var cpackType C.GtkPackType
+
+ C.gtk_box_query_child_packing(v.native(), child.toWidget(), &cexpand,
+ &cfill, &cpadding, &cpackType)
+ return gobool(cexpand), gobool(cfill), uint(cpadding), PackType(cpackType)
+}
+
+// SetChildPacking() is a wrapper around gtk_box_set_child_packing().
+func (v *Box) SetChildPacking(child IWidget, expand, fill bool, padding uint, packType PackType) {
+ C.gtk_box_set_child_packing(v.native(), child.toWidget(), gbool(expand),
+ gbool(fill), C.guint(padding), C.GtkPackType(packType))
+}
+
+/*
+ * GtkCalendar
+ */
+
+// Calendar is a representation of GTK's GtkCalendar.
+type Calendar struct {
+ Widget
+}
+
+// native() returns a pointer to the underlying GtkCalendar.
+func (v *Calendar) native() *C.GtkCalendar {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkCalendar(p)
+}
+
+func marshalCalendar(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCalendar(obj), nil
+}
+
+func wrapCalendar(obj *glib.Object) *Calendar {
+ return &Calendar{Widget{glib.InitiallyUnowned{obj}}}
+}
+
+// CalendarNew is a wrapper around gtk_calendar_new().
+func CalendarNew() (*Calendar, error) {
+ c := C.gtk_calendar_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCalendar(obj), nil
+}
+
+// SelectMonth is a wrapper around gtk_calendar_select_month().
+func (v *Calendar) SelectMonth(month, year uint) {
+ C.gtk_calendar_select_month(v.native(), C.guint(month), C.guint(year))
+}
+
+// SelectDay is a wrapper around gtk_calendar_select_day().
+func (v *Calendar) SelectDay(day uint) {
+ C.gtk_calendar_select_day(v.native(), C.guint(day))
+}
+
+// MarkDay is a wrapper around gtk_calendar_mark_day().
+func (v *Calendar) MarkDay(day uint) {
+ C.gtk_calendar_mark_day(v.native(), C.guint(day))
+}
+
+// UnmarkDay is a wrapper around gtk_calendar_unmark_day().
+func (v *Calendar) UnmarkDay(day uint) {
+ C.gtk_calendar_unmark_day(v.native(), C.guint(day))
+}
+
+// GetDayIsMarked is a wrapper around gtk_calendar_get_day_is_marked().
+func (v *Calendar) GetDayIsMarked(day uint) bool {
+ c := C.gtk_calendar_get_day_is_marked(v.native(), C.guint(day))
+ return gobool(c)
+}
+
+// ClearMarks is a wrapper around gtk_calendar_clear_marks().
+func (v *Calendar) ClearMarks() {
+ C.gtk_calendar_clear_marks(v.native())
+}
+
+// GetDisplayOptions is a wrapper around gtk_calendar_get_display_options().
+func (v *Calendar) GetDisplayOptions() CalendarDisplayOptions {
+ c := C.gtk_calendar_get_display_options(v.native())
+ return CalendarDisplayOptions(c)
+}
+
+// SetDisplayOptions is a wrapper around gtk_calendar_set_display_options().
+func (v *Calendar) SetDisplayOptions(flags CalendarDisplayOptions) {
+ C.gtk_calendar_set_display_options(v.native(),
+ C.GtkCalendarDisplayOptions(flags))
+}
+
+// GetDate is a wrapper around gtk_calendar_get_date().
+func (v *Calendar) GetDate() (year, month, day uint) {
+ var cyear, cmonth, cday C.guint
+ C.gtk_calendar_get_date(v.native(), &cyear, &cmonth, &cday)
+ return uint(cyear), uint(cmonth), uint(cday)
+}
+
+// TODO gtk_calendar_set_detail_func
+
+// GetDetailWidthChars is a wrapper around gtk_calendar_get_detail_width_chars().
+func (v *Calendar) GetDetailWidthChars() int {
+ c := C.gtk_calendar_get_detail_width_chars(v.native())
+ return int(c)
+}
+
+// SetDetailWidthChars is a wrapper around gtk_calendar_set_detail_width_chars().
+func (v *Calendar) SetDetailWidthChars(chars int) {
+ C.gtk_calendar_set_detail_width_chars(v.native(), C.gint(chars))
+}
+
+// GetDetailHeightRows is a wrapper around gtk_calendar_get_detail_height_rows().
+func (v *Calendar) GetDetailHeightRows() int {
+ c := C.gtk_calendar_get_detail_height_rows(v.native())
+ return int(c)
+}
+
+// SetDetailHeightRows is a wrapper around gtk_calendar_set_detail_height_rows().
+func (v *Calendar) SetDetailHeightRows(rows int) {
+ C.gtk_calendar_set_detail_height_rows(v.native(), C.gint(rows))
+}
+
+/*
+ * GtkCellLayout
+ */
+
+// CellLayout is a representation of GTK's GtkCellLayout GInterface.
+type CellLayout struct {
+ *glib.Object
+}
+
+// ICellLayout is an interface type implemented by all structs
+// embedding a CellLayout. It is meant to be used as an argument type
+// for wrapper functions that wrap around a C GTK function taking a
+// GtkCellLayout.
+type ICellLayout interface {
+ toCellLayout() *C.GtkCellLayout
+}
+
+// native() returns a pointer to the underlying GObject as a GtkCellLayout.
+func (v *CellLayout) native() *C.GtkCellLayout {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkCellLayout(p)
+}
+
+func marshalCellLayout(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCellLayout(obj), nil
+}
+
+func wrapCellLayout(obj *glib.Object) *CellLayout {
+ return &CellLayout{obj}
+}
+
+func (v *CellLayout) toCellLayout() *C.GtkCellLayout {
+ if v == nil {
+ return nil
+ }
+ return v.native()
+}
+
+// PackStart() is a wrapper around gtk_cell_layout_pack_start().
+func (v *CellLayout) PackStart(cell ICellRenderer, expand bool) {
+ C.gtk_cell_layout_pack_start(v.native(), cell.toCellRenderer(),
+ gbool(expand))
+}
+
+// AddAttribute() is a wrapper around gtk_cell_layout_add_attribute().
+func (v *CellLayout) AddAttribute(cell ICellRenderer, attribute string, column int) {
+ cstr := C.CString(attribute)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_cell_layout_add_attribute(v.native(), cell.toCellRenderer(),
+ (*C.gchar)(cstr), C.gint(column))
+}
+
+/*
+ * GtkCellRenderer
+ */
+
+// CellRenderer is a representation of GTK's GtkCellRenderer.
+type CellRenderer struct {
+ glib.InitiallyUnowned
+}
+
+// ICellRenderer is an interface type implemented by all structs
+// embedding a CellRenderer. It is meant to be used as an argument type
+// for wrapper functions that wrap around a C GTK function taking a
+// GtkCellRenderer.
+type ICellRenderer interface {
+ toCellRenderer() *C.GtkCellRenderer
+}
+
+// native returns a pointer to the underlying GtkCellRenderer.
+func (v *CellRenderer) native() *C.GtkCellRenderer {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkCellRenderer(p)
+}
+
+func (v *CellRenderer) toCellRenderer() *C.GtkCellRenderer {
+ if v == nil {
+ return nil
+ }
+ return v.native()
+}
+
+func marshalCellRenderer(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCellRenderer(obj), nil
+}
+
+func wrapCellRenderer(obj *glib.Object) *CellRenderer {
+ return &CellRenderer{glib.InitiallyUnowned{obj}}
+}
+
+/*
+ * GtkCellRendererSpinner
+ */
+
+// CellRendererSpinner is a representation of GTK's GtkCellRendererSpinner.
+type CellRendererSpinner struct {
+ CellRenderer
+}
+
+// native returns a pointer to the underlying GtkCellRendererSpinner.
+func (v *CellRendererSpinner) native() *C.GtkCellRendererSpinner {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkCellRendererSpinner(p)
+}
+
+func marshalCellRendererSpinner(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCellRendererSpinner(obj), nil
+}
+
+func wrapCellRendererSpinner(obj *glib.Object) *CellRendererSpinner {
+ return &CellRendererSpinner{CellRenderer{glib.InitiallyUnowned{obj}}}
+}
+
+// CellRendererSpinnerNew is a wrapper around gtk_cell_renderer_text_new().
+func CellRendererSpinnerNew() (*CellRendererSpinner, error) {
+ c := C.gtk_cell_renderer_spinner_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCellRendererSpinner(obj), nil
+}
+
+/*
+ * GtkCellRendererPixbuf
+ */
+
+// CellRendererPixbuf is a representation of GTK's GtkCellRendererPixbuf.
+type CellRendererPixbuf struct {
+ CellRenderer
+}
+
+// native returns a pointer to the underlying GtkCellRendererPixbuf.
+func (v *CellRendererPixbuf) native() *C.GtkCellRendererPixbuf {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkCellRendererPixbuf(p)
+}
+
+func marshalCellRendererPixbuf(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCellRendererPixbuf(obj), nil
+}
+
+func wrapCellRendererPixbuf(obj *glib.Object) *CellRendererPixbuf {
+ return &CellRendererPixbuf{CellRenderer{glib.InitiallyUnowned{obj}}}
+}
+
+// CellRendererPixbufNew is a wrapper around gtk_cell_renderer_pixbuf_new().
+func CellRendererPixbufNew() (*CellRendererPixbuf, error) {
+ c := C.gtk_cell_renderer_pixbuf_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCellRendererPixbuf(obj), nil
+}
+
+/*
+ * GtkCellRendererText
+ */
+
+// CellRendererText is a representation of GTK's GtkCellRendererText.
+type CellRendererText struct {
+ CellRenderer
+}
+
+// native returns a pointer to the underlying GtkCellRendererText.
+func (v *CellRendererText) native() *C.GtkCellRendererText {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkCellRendererText(p)
+}
+
+func marshalCellRendererText(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCellRendererText(obj), nil
+}
+
+func wrapCellRendererText(obj *glib.Object) *CellRendererText {
+ return &CellRendererText{CellRenderer{glib.InitiallyUnowned{obj}}}
+}
+
+// CellRendererTextNew is a wrapper around gtk_cell_renderer_text_new().
+func CellRendererTextNew() (*CellRendererText, error) {
+ c := C.gtk_cell_renderer_text_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCellRendererText(obj), nil
+}
+
+/*
+ * GtkCellRendererToggle
+ */
+
+// CellRendererToggle is a representation of GTK's GtkCellRendererToggle.
+type CellRendererToggle struct {
+ CellRenderer
+}
+
+// native returns a pointer to the underlying GtkCellRendererToggle.
+func (v *CellRendererToggle) native() *C.GtkCellRendererToggle {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkCellRendererToggle(p)
+}
+
+func (v *CellRendererToggle) toCellRenderer() *C.GtkCellRenderer {
+ if v == nil {
+ return nil
+ }
+ return v.CellRenderer.native()
+}
+
+func marshalCellRendererToggle(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCellRendererToggle(obj), nil
+}
+
+func wrapCellRendererToggle(obj *glib.Object) *CellRendererToggle {
+ return &CellRendererToggle{CellRenderer{glib.InitiallyUnowned{obj}}}
+}
+
+// CellRendererToggleNew is a wrapper around gtk_cell_renderer_toggle_new().
+func CellRendererToggleNew() (*CellRendererToggle, error) {
+ c := C.gtk_cell_renderer_toggle_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCellRendererToggle(obj), nil
+}
+
+// SetRadio is a wrapper around gtk_cell_renderer_toggle_set_radio().
+func (v *CellRendererToggle) SetRadio(set bool) {
+ C.gtk_cell_renderer_toggle_set_radio(v.native(), gbool(set))
+}
+
+// GetRadio is a wrapper around gtk_cell_renderer_toggle_get_radio().
+func (v *CellRendererToggle) GetRadio() bool {
+ c := C.gtk_cell_renderer_toggle_get_radio(v.native())
+ return gobool(c)
+}
+
+// SetActive is a wrapper around gtk_cell_renderer_toggle_set_active().
+func (v *CellRendererToggle) SetActive(active bool) {
+ C.gtk_cell_renderer_toggle_set_active(v.native(), gbool(active))
+}
+
+// GetActive is a wrapper around gtk_cell_renderer_toggle_get_active().
+func (v *CellRendererToggle) GetActive() bool {
+ c := C.gtk_cell_renderer_toggle_get_active(v.native())
+ return gobool(c)
+}
+
+// SetActivatable is a wrapper around gtk_cell_renderer_toggle_set_activatable().
+func (v *CellRendererToggle) SetActivatable(activatable bool) {
+ C.gtk_cell_renderer_toggle_set_activatable(v.native(),
+ gbool(activatable))
+}
+
+// GetActivatable is a wrapper around gtk_cell_renderer_toggle_get_activatable().
+func (v *CellRendererToggle) GetActivatable() bool {
+ c := C.gtk_cell_renderer_toggle_get_activatable(v.native())
+ return gobool(c)
+}
+
+/*
+ * GtkCheckButton
+ */
+
+// CheckButton is a wrapper around GTK's GtkCheckButton.
+type CheckButton struct {
+ ToggleButton
+}
+
+// native returns a pointer to the underlying GtkCheckButton.
+func (v *CheckButton) native() *C.GtkCheckButton {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkCheckButton(p)
+}
+
+func marshalCheckButton(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCheckButton(obj), nil
+}
+
+func wrapCheckButton(obj *glib.Object) *CheckButton {
+ actionable := wrapActionable(obj)
+ return &CheckButton{ToggleButton{Button{Bin{Container{Widget{
+ glib.InitiallyUnowned{obj}}}}, actionable}}}
+}
+
+// CheckButtonNew is a wrapper around gtk_check_button_new().
+func CheckButtonNew() (*CheckButton, error) {
+ c := C.gtk_check_button_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCheckButton(obj), nil
+}
+
+// CheckButtonNewWithLabel is a wrapper around
+// gtk_check_button_new_with_label().
+func CheckButtonNewWithLabel(label string) (*CheckButton, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_check_button_new_with_label((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapCheckButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// CheckButtonNewWithMnemonic is a wrapper around
+// gtk_check_button_new_with_mnemonic().
+func CheckButtonNewWithMnemonic(label string) (*CheckButton, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_check_button_new_with_mnemonic((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCheckButton(obj), nil
+}
+
+/*
+ * GtkCheckMenuItem
+ */
+
+type CheckMenuItem struct {
+ MenuItem
+}
+
+// native returns a pointer to the underlying GtkCheckMenuItem.
+func (v *CheckMenuItem) native() *C.GtkCheckMenuItem {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkCheckMenuItem(p)
+}
+
+func marshalCheckMenuItem(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCheckMenuItem(obj), nil
+}
+
+func wrapCheckMenuItem(obj *glib.Object) *CheckMenuItem {
+ return &CheckMenuItem{MenuItem{Bin{Container{Widget{
+ glib.InitiallyUnowned{obj}}}}}}
+}
+
+// CheckMenuItemNew is a wrapper around gtk_check_menu_item_new().
+func CheckMenuItemNew() (*CheckMenuItem, error) {
+ c := C.gtk_check_menu_item_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCheckMenuItem(obj), nil
+}
+
+// CheckMenuItemNewWithLabel is a wrapper around
+// gtk_check_menu_item_new_with_label().
+func CheckMenuItemNewWithLabel(label string) (*CheckMenuItem, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_check_menu_item_new_with_label((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCheckMenuItem(obj), nil
+}
+
+// CheckMenuItemNewWithMnemonic is a wrapper around
+// gtk_check_menu_item_new_with_mnemonic().
+func CheckMenuItemNewWithMnemonic(label string) (*CheckMenuItem, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_check_menu_item_new_with_mnemonic((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCheckMenuItem(obj), nil
+}
+
+// GetActive is a wrapper around gtk_check_menu_item_get_active().
+func (v *CheckMenuItem) GetActive() bool {
+ c := C.gtk_check_menu_item_get_active(v.native())
+ return gobool(c)
+}
+
+// SetActive is a wrapper around gtk_check_menu_item_set_active().
+func (v *CheckMenuItem) SetActive(isActive bool) {
+ C.gtk_check_menu_item_set_active(v.native(), gbool(isActive))
+}
+
+// Toggled is a wrapper around gtk_check_menu_item_toggled().
+func (v *CheckMenuItem) Toggled() {
+ C.gtk_check_menu_item_toggled(v.native())
+}
+
+// GetInconsistent is a wrapper around gtk_check_menu_item_get_inconsistent().
+func (v *CheckMenuItem) GetInconsistent() bool {
+ c := C.gtk_check_menu_item_get_inconsistent(v.native())
+ return gobool(c)
+}
+
+// SetInconsistent is a wrapper around gtk_check_menu_item_set_inconsistent().
+func (v *CheckMenuItem) SetInconsistent(setting bool) {
+ C.gtk_check_menu_item_set_inconsistent(v.native(), gbool(setting))
+}
+
+// SetDrawAsRadio is a wrapper around gtk_check_menu_item_set_draw_as_radio().
+func (v *CheckMenuItem) SetDrawAsRadio(drawAsRadio bool) {
+ C.gtk_check_menu_item_set_draw_as_radio(v.native(), gbool(drawAsRadio))
+}
+
+// GetDrawAsRadio is a wrapper around gtk_check_menu_item_get_draw_as_radio().
+func (v *CheckMenuItem) GetDrawAsRadio() bool {
+ c := C.gtk_check_menu_item_get_draw_as_radio(v.native())
+ return gobool(c)
+}
+
+/*
+ * GtkClipboard
+ */
+
+// Clipboard is a wrapper around GTK's GtkClipboard.
+type Clipboard struct {
+ *glib.Object
+}
+
+// native returns a pointer to the underlying GtkClipboard.
+func (v *Clipboard) native() *C.GtkClipboard {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkClipboard(p)
+}
+
+func marshalClipboard(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapClipboard(obj), nil
+}
+
+func wrapClipboard(obj *glib.Object) *Clipboard {
+ return &Clipboard{obj}
+}
+
+// Store is a wrapper around gtk_clipboard_store
+func (v *Clipboard) Store() {
+ C.gtk_clipboard_store(v.native())
+}
+
+// ClipboardGet() is a wrapper around gtk_clipboard_get().
+func ClipboardGet(atom gdk.Atom) (*Clipboard, error) {
+ c := C.gtk_clipboard_get(C.GdkAtom(unsafe.Pointer(atom)))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ cb := &Clipboard{glib.Take(unsafe.Pointer(c))}
+ return cb, nil
+}
+
+// ClipboardGetForDisplay() is a wrapper around gtk_clipboard_get_for_display().
+func ClipboardGetForDisplay(display *gdk.Display, atom gdk.Atom) (*Clipboard, error) {
+ displayPtr := (*C.GdkDisplay)(unsafe.Pointer(display.Native()))
+ c := C.gtk_clipboard_get_for_display(displayPtr,
+ C.GdkAtom(unsafe.Pointer(atom)))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ cb := &Clipboard{glib.Take(unsafe.Pointer(c))}
+ return cb, nil
+}
+
+// WaitIsTextAvailable is a wrapper around gtk_clipboard_wait_is_text_available
+func (v *Clipboard) WaitIsTextAvailable() bool {
+ c := C.gtk_clipboard_wait_is_text_available(v.native())
+ return gobool(c)
+}
+
+// WaitForText is a wrapper around gtk_clipboard_wait_for_text
+func (v *Clipboard) WaitForText() (string, error) {
+ c := C.gtk_clipboard_wait_for_text(v.native())
+ if c == nil {
+ return "", nilPtrErr
+ }
+ defer C.g_free(C.gpointer(c))
+ return goString(c), nil
+}
+
+// SetText() is a wrapper around gtk_clipboard_set_text().
+func (v *Clipboard) SetText(text string) {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_clipboard_set_text(v.native(), (*C.gchar)(cstr),
+ C.gint(len(text)))
+}
+
+// WaitIsRichTextAvailable is a wrapper around gtk_clipboard_wait_is_rich_text_available
+func (v *Clipboard) WaitIsRichTextAvailable(buf *TextBuffer) bool {
+ c := C.gtk_clipboard_wait_is_rich_text_available(v.native(), buf.native())
+ return gobool(c)
+}
+
+// WaitIsUrisAvailable is a wrapper around gtk_clipboard_wait_is_uris_available
+func (v *Clipboard) WaitIsUrisAvailable() bool {
+ c := C.gtk_clipboard_wait_is_uris_available(v.native())
+ return gobool(c)
+}
+
+// WaitIsImageAvailable is a wrapper around gtk_clipboard_wait_is_image_available
+func (v *Clipboard) WaitIsImageAvailable() bool {
+ c := C.gtk_clipboard_wait_is_image_available(v.native())
+ return gobool(c)
+}
+
+// SetImage is a wrapper around gtk_clipboard_set_image
+func (v *Clipboard) SetImage(pixbuf *gdk.Pixbuf) {
+ C.gtk_clipboard_set_image(v.native(), (*C.GdkPixbuf)(unsafe.Pointer(pixbuf.Native())))
+}
+
+// WaitForImage is a wrapper around gtk_clipboard_wait_for_image
+func (v *Clipboard) WaitForImage() (*gdk.Pixbuf, error) {
+ c := C.gtk_clipboard_wait_for_image(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ p := &gdk.Pixbuf{glib.Take(unsafe.Pointer(c))}
+ return p, nil
+}
+
+// WaitIsTargetAvailable is a wrapper around gtk_clipboard_wait_is_target_available
+func (v *Clipboard) WaitIsTargetAvailable(target gdk.Atom) bool {
+ c := C.gtk_clipboard_wait_is_target_available(v.native(), C.GdkAtom(unsafe.Pointer(target)))
+ return gobool(c)
+}
+
+// WaitForContents is a wrapper around gtk_clipboard_wait_for_contents
+func (v *Clipboard) WaitForContents(target gdk.Atom) (*SelectionData, error) {
+ c := C.gtk_clipboard_wait_for_contents(v.native(), C.GdkAtom(unsafe.Pointer(target)))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ p := &SelectionData{c}
+ runtime.SetFinalizer(p, (*SelectionData).free)
+ return p, nil
+}
+
+/*
+ * GtkContainer
+ */
+
+// Container is a representation of GTK's GtkContainer.
+type Container struct {
+ Widget
+}
+
+// native returns a pointer to the underlying GtkContainer.
+func (v *Container) native() *C.GtkContainer {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkContainer(p)
+}
+
+func marshalContainer(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapContainer(obj), nil
+}
+
+func wrapContainer(obj *glib.Object) *Container {
+ return &Container{Widget{glib.InitiallyUnowned{obj}}}
+}
+
+// Add is a wrapper around gtk_container_add().
+func (v *Container) Add(w IWidget) {
+ C.gtk_container_add(v.native(), w.toWidget())
+}
+
+// Remove is a wrapper around gtk_container_remove().
+func (v *Container) Remove(w IWidget) {
+ C.gtk_container_remove(v.native(), w.toWidget())
+}
+
+// TODO: gtk_container_add_with_properties
+
+// CheckResize is a wrapper around gtk_container_check_resize().
+func (v *Container) CheckResize() {
+ C.gtk_container_check_resize(v.native())
+}
+
+// TODO: gtk_container_foreach
+
+// GetChildren is a wrapper around gtk_container_get_children().
+func (v *Container) GetChildren() *glib.List {
+ clist := C.gtk_container_get_children(v.native())
+ glist := glib.WrapList(uintptr(unsafe.Pointer(clist)))
+ glist.DataWrapper(func(ptr unsafe.Pointer) interface{} {
+ return wrapWidget(glib.Take(ptr))
+ })
+
+ return glist
+}
+
+// TODO: gtk_container_get_path_for_child
+
+// GetFocusChild is a wrapper around gtk_container_get_focus_child().
+func (v *Container) GetFocusChild() *Widget {
+ c := C.gtk_container_get_focus_child(v.native())
+ if c == nil {
+ return nil
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapWidget(obj)
+}
+
+// SetFocusChild is a wrapper around gtk_container_set_focus_child().
+func (v *Container) SetFocusChild(child IWidget) {
+ C.gtk_container_set_focus_child(v.native(), child.toWidget())
+}
+
+// GetFocusVAdjustment is a wrapper around
+// gtk_container_get_focus_vadjustment().
+func (v *Container) GetFocusVAdjustment() *Adjustment {
+ c := C.gtk_container_get_focus_vadjustment(v.native())
+ if c == nil {
+ return nil
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapAdjustment(obj)
+}
+
+// SetFocusVAdjustment is a wrapper around
+// gtk_container_set_focus_vadjustment().
+func (v *Container) SetFocusVAdjustment(adjustment *Adjustment) {
+ C.gtk_container_set_focus_vadjustment(v.native(), adjustment.native())
+}
+
+// GetFocusHAdjustment is a wrapper around
+// gtk_container_get_focus_hadjustment().
+func (v *Container) GetFocusHAdjustment() *Adjustment {
+ c := C.gtk_container_get_focus_hadjustment(v.native())
+ if c == nil {
+ return nil
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapAdjustment(obj)
+}
+
+// SetFocusHAdjustment is a wrapper around
+// gtk_container_set_focus_hadjustment().
+func (v *Container) SetFocusHAdjustment(adjustment *Adjustment) {
+ C.gtk_container_set_focus_hadjustment(v.native(), adjustment.native())
+}
+
+// ChildType is a wrapper around gtk_container_child_type().
+func (v *Container) ChildType() glib.Type {
+ c := C.gtk_container_child_type(v.native())
+ return glib.Type(c)
+}
+
+// TODO: gtk_container_child_get_valist
+// TODO: gtk_container_child_set_valist
+
+// ChildNotify is a wrapper around gtk_container_child_notify().
+func (v *Container) ChildNotify(child IWidget, childProperty string) {
+ cstr := C.CString(childProperty)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_container_child_notify(v.native(), child.toWidget(),
+ (*C.gchar)(cstr))
+}
+
+// ChildGetProperty is a wrapper around gtk_container_child_get_property().
+func (v *Container) ChildGetProperty(child IWidget, name string, valueType glib.Type) (interface{}, error) {
+ gv, e := glib.ValueInit(valueType)
+ if e != nil {
+ return nil, e
+ }
+ cstr := C.CString(name)
+ defer C.free(unsafe.Pointer(cstr))
+
+ C.gtk_container_child_get_property(v.native(), child.toWidget(), (*C.gchar)(cstr), (*C.GValue)(unsafe.Pointer(gv.Native())))
+ return gv.GoValue()
+}
+
+// ChildSetProperty is a wrapper around gtk_container_child_set_property().
+func (v *Container) ChildSetProperty(child IWidget, name string, value interface{}) error {
+ gv, e := glib.GValue(value)
+ if e != nil {
+ return e
+ }
+ cstr := C.CString(name)
+ defer C.free(unsafe.Pointer(cstr))
+
+ C.gtk_container_child_set_property(v.native(), child.toWidget(), (*C.gchar)(cstr), (*C.GValue)(unsafe.Pointer(gv.Native())))
+ return nil
+}
+
+// TODO: gtk_container_forall
+
+// GetBorderWidth is a wrapper around gtk_container_get_border_width().
+func (v *Container) GetBorderWidth() uint {
+ c := C.gtk_container_get_border_width(v.native())
+ return uint(c)
+}
+
+// SetBorderWidth is a wrapper around gtk_container_set_border_width().
+func (v *Container) SetBorderWidth(borderWidth uint) {
+ C.gtk_container_set_border_width(v.native(), C.guint(borderWidth))
+}
+
+// PropagateDraw is a wrapper around gtk_container_propagate_draw().
+func (v *Container) PropagateDraw(child IWidget, cr *cairo.Context) {
+ context := (*C.cairo_t)(unsafe.Pointer(cr.Native()))
+ C.gtk_container_propagate_draw(v.native(), child.toWidget(), context)
+}
+
+// GdkCairoSetSourcePixBuf() is a wrapper around gdk_cairo_set_source_pixbuf().
+func GdkCairoSetSourcePixBuf(cr *cairo.Context, pixbuf *gdk.Pixbuf, pixbufX, pixbufY float64) {
+ context := (*C.cairo_t)(unsafe.Pointer(cr.Native()))
+ ptr := (*C.GdkPixbuf)(unsafe.Pointer(pixbuf.Native()))
+ C.gdk_cairo_set_source_pixbuf(context, ptr, C.gdouble(pixbufX), C.gdouble(pixbufY))
+}
+
+/*
+ * GtkCssProvider
+ */
+
+// CssProvider is a representation of GTK's GtkCssProvider.
+type CssProvider struct {
+ *glib.Object
+}
+
+func (v *CssProvider) toStyleProvider() *C.GtkStyleProvider {
+ if v == nil {
+ return nil
+ }
+ return C.toGtkStyleProvider(unsafe.Pointer(v.native()))
+}
+
+// native returns a pointer to the underlying GtkCssProvider.
+func (v *CssProvider) native() *C.GtkCssProvider {
+ if v == nil || v.Object == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkCssProvider(p)
+}
+
+func wrapCssProvider(obj *glib.Object) *CssProvider {
+ return &CssProvider{obj}
+}
+
+// CssProviderNew is a wrapper around gtk_css_provider_new().
+func CssProviderNew() (*CssProvider, error) {
+ c := C.gtk_css_provider_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ return wrapCssProvider(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// LoadFromPath is a wrapper around gtk_css_provider_load_from_path().
+func (v *CssProvider) LoadFromPath(path string) error {
+ cpath := C.CString(path)
+ defer C.free(unsafe.Pointer(cpath))
+ var gerr *C.GError
+ if C.gtk_css_provider_load_from_path(v.native(), (*C.gchar)(cpath), &gerr) == 0 {
+ defer C.g_error_free(gerr)
+ return errors.New(goString(gerr.message))
+ }
+ return nil
+}
+
+// LoadFromData is a wrapper around gtk_css_provider_load_from_data().
+func (v *CssProvider) LoadFromData(data string) error {
+ cdata := C.CString(data)
+ defer C.free(unsafe.Pointer(cdata))
+ var gerr *C.GError
+ if C.gtk_css_provider_load_from_data(v.native(), (*C.gchar)(unsafe.Pointer(cdata)), C.gssize(len(data)), &gerr) == 0 {
+ defer C.g_error_free(gerr)
+ return errors.New(goString(gerr.message))
+ }
+ return nil
+}
+
+// ToString is a wrapper around gtk_css_provider_to_string().
+func (v *CssProvider) ToString() (string, error) {
+ c := C.gtk_css_provider_to_string(v.native())
+ if c == nil {
+ return "", nilPtrErr
+ }
+ return C.GoString(c), nil
+}
+
+// GetNamed is a wrapper around gtk_css_provider_get_named().
+func CssProviderGetNamed(name string, variant string) (*CssProvider, error) {
+ cname := C.CString(name)
+ defer C.free(unsafe.Pointer(cname))
+ cvariant := C.CString(variant)
+ defer C.free(unsafe.Pointer(cvariant))
+
+ c := C.gtk_css_provider_get_named((*C.gchar)(cname), (*C.gchar)(cvariant))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapCssProvider(obj), nil
+}
+
+/*
+ * GtkDialog
+ */
+
+// Dialog is a representation of GTK's GtkDialog.
+type Dialog struct {
+ Window
+}
+
+// native returns a pointer to the underlying GtkDialog.
+func (v *Dialog) native() *C.GtkDialog {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkDialog(p)
+}
+
+func marshalDialog(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapDialog(obj), nil
+}
+
+func wrapDialog(obj *glib.Object) *Dialog {
+ return &Dialog{Window{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}}
+}
+
+// DialogNew() is a wrapper around gtk_dialog_new().
+func DialogNew() (*Dialog, error) {
+ c := C.gtk_dialog_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapDialog(obj), nil
+}
+
+// Run() is a wrapper around gtk_dialog_run().
+func (v *Dialog) Run() ResponseType {
+ c := C.gtk_dialog_run(v.native())
+ return ResponseType(c)
+}
+
+// Response() is a wrapper around gtk_dialog_response().
+func (v *Dialog) Response(response ResponseType) {
+ C.gtk_dialog_response(v.native(), C.gint(response))
+}
+
+// AddButton() is a wrapper around gtk_dialog_add_button(). text may
+// be either the literal button text, or if using GTK 3.8 or earlier, a
+// Stock type converted to a string.
+func (v *Dialog) AddButton(text string, id ResponseType) (*Button, error) {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_dialog_add_button(v.native(), (*C.gchar)(cstr), C.gint(id))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapButton(obj), nil
+}
+
+// AddActionWidget() is a wrapper around gtk_dialog_add_action_widget().
+func (v *Dialog) AddActionWidget(child IWidget, id ResponseType) {
+ C.gtk_dialog_add_action_widget(v.native(), child.toWidget(), C.gint(id))
+}
+
+// SetDefaultResponse() is a wrapper around gtk_dialog_set_default_response().
+func (v *Dialog) SetDefaultResponse(id ResponseType) {
+ C.gtk_dialog_set_default_response(v.native(), C.gint(id))
+}
+
+// SetResponseSensitive() is a wrapper around
+// gtk_dialog_set_response_sensitive().
+func (v *Dialog) SetResponseSensitive(id ResponseType, setting bool) {
+ C.gtk_dialog_set_response_sensitive(v.native(), C.gint(id),
+ gbool(setting))
+}
+
+// GetResponseForWidget() is a wrapper around
+// gtk_dialog_get_response_for_widget().
+func (v *Dialog) GetResponseForWidget(widget IWidget) ResponseType {
+ c := C.gtk_dialog_get_response_for_widget(v.native(), widget.toWidget())
+ return ResponseType(c)
+}
+
+// GetWidgetForResponse() is a wrapper around
+// gtk_dialog_get_widget_for_response().
+func (v *Dialog) GetWidgetForResponse(id ResponseType) (*Widget, error) {
+ c := C.gtk_dialog_get_widget_for_response(v.native(), C.gint(id))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapWidget(obj), nil
+}
+
+// GetContentArea() is a wrapper around gtk_dialog_get_content_area().
+func (v *Dialog) GetContentArea() (*Box, error) {
+ c := C.gtk_dialog_get_content_area(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ b := &Box{Container{Widget{glib.InitiallyUnowned{obj}}}}
+ return b, nil
+}
+
+// TODO(jrick)
+/*
+func (v *gdk.Screen) AlternativeDialogButtonOrder() bool {
+ c := C.gtk_alternative_dialog_button_order(v.native())
+ return gobool(c)
+}
+*/
+
+// TODO(jrick)
+/*
+func SetAlternativeButtonOrder(ids ...ResponseType) {
+}
+*/
+
+/*
+ * GtkDrawingArea
+ */
+
+// DrawingArea is a representation of GTK's GtkDrawingArea.
+type DrawingArea struct {
+ Widget
+}
+
+// native returns a pointer to the underlying GtkDrawingArea.
+func (v *DrawingArea) native() *C.GtkDrawingArea {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkDrawingArea(p)
+}
+
+func marshalDrawingArea(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapDrawingArea(obj), nil
+}
+
+func wrapDrawingArea(obj *glib.Object) *DrawingArea {
+ return &DrawingArea{Widget{glib.InitiallyUnowned{obj}}}
+}
+
+// DrawingAreaNew is a wrapper around gtk_drawing_area_new().
+func DrawingAreaNew() (*DrawingArea, error) {
+ c := C.gtk_drawing_area_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapDrawingArea(obj), nil
+}
+
+/*
+ * GtkEditable
+ */
+
+// Editable is a representation of GTK's GtkEditable GInterface.
+type Editable struct {
+ *glib.Object
+}
+
+// IEditable is an interface type implemented by all structs
+// embedding an Editable. It is meant to be used as an argument type
+// for wrapper functions that wrap around a C GTK function taking a
+// GtkEditable.
+type IEditable interface {
+ toEditable() *C.GtkEditable
+}
+
+// native() returns a pointer to the underlying GObject as a GtkEditable.
+func (v *Editable) native() *C.GtkEditable {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkEditable(p)
+}
+
+func marshalEditable(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapEditable(obj), nil
+}
+
+func wrapEditable(obj *glib.Object) *Editable {
+ return &Editable{obj}
+}
+
+func (v *Editable) toEditable() *C.GtkEditable {
+ if v == nil {
+ return nil
+ }
+ return v.native()
+}
+
+// SelectRegion is a wrapper around gtk_editable_select_region().
+func (v *Editable) SelectRegion(startPos, endPos int) {
+ C.gtk_editable_select_region(v.native(), C.gint(startPos),
+ C.gint(endPos))
+}
+
+// GetSelectionBounds is a wrapper around gtk_editable_get_selection_bounds().
+func (v *Editable) GetSelectionBounds() (start, end int, nonEmpty bool) {
+ var cstart, cend C.gint
+ c := C.gtk_editable_get_selection_bounds(v.native(), &cstart, &cend)
+ return int(cstart), int(cend), gobool(c)
+}
+
+// InsertText is a wrapper around gtk_editable_insert_text(). The returned
+// int is the position after the inserted text.
+func (v *Editable) InsertText(newText string, position int) int {
+ cstr := C.CString(newText)
+ defer C.free(unsafe.Pointer(cstr))
+ pos := new(C.gint)
+ *pos = C.gint(position)
+ C.gtk_editable_insert_text(v.native(), (*C.gchar)(cstr),
+ C.gint(len(newText)), pos)
+ return int(*pos)
+}
+
+// DeleteText is a wrapper around gtk_editable_delete_text().
+func (v *Editable) DeleteText(startPos, endPos int) {
+ C.gtk_editable_delete_text(v.native(), C.gint(startPos), C.gint(endPos))
+}
+
+// GetChars is a wrapper around gtk_editable_get_chars().
+func (v *Editable) GetChars(startPos, endPos int) string {
+ c := C.gtk_editable_get_chars(v.native(), C.gint(startPos),
+ C.gint(endPos))
+ defer C.free(unsafe.Pointer(c))
+ return goString(c)
+}
+
+// CutClipboard is a wrapper around gtk_editable_cut_clipboard().
+func (v *Editable) CutClipboard() {
+ C.gtk_editable_cut_clipboard(v.native())
+}
+
+// CopyClipboard is a wrapper around gtk_editable_copy_clipboard().
+func (v *Editable) CopyClipboard() {
+ C.gtk_editable_copy_clipboard(v.native())
+}
+
+// PasteClipboard is a wrapper around gtk_editable_paste_clipboard().
+func (v *Editable) PasteClipboard() {
+ C.gtk_editable_paste_clipboard(v.native())
+}
+
+// DeleteSelection is a wrapper around gtk_editable_delete_selection().
+func (v *Editable) DeleteSelection() {
+ C.gtk_editable_delete_selection(v.native())
+}
+
+// SetPosition is a wrapper around gtk_editable_set_position().
+func (v *Editable) SetPosition(position int) {
+ C.gtk_editable_set_position(v.native(), C.gint(position))
+}
+
+// GetPosition is a wrapper around gtk_editable_get_position().
+func (v *Editable) GetPosition() int {
+ c := C.gtk_editable_get_position(v.native())
+ return int(c)
+}
+
+// SetEditable is a wrapper around gtk_editable_set_editable().
+func (v *Editable) SetEditable(isEditable bool) {
+ C.gtk_editable_set_editable(v.native(), gbool(isEditable))
+}
+
+// GetEditable is a wrapper around gtk_editable_get_editable().
+func (v *Editable) GetEditable() bool {
+ c := C.gtk_editable_get_editable(v.native())
+ return gobool(c)
+}
+
+/*
+ * GtkEntry
+ */
+
+// Entry is a representation of GTK's GtkEntry.
+type Entry struct {
+ Widget
+
+ // Interfaces
+ Editable
+}
+
+type IEntry interface {
+ toEntry() *C.GtkEntry
+}
+
+func (v *Entry) toEntry() *C.GtkEntry {
+ return v.native()
+}
+
+// native returns a pointer to the underlying GtkEntry.
+func (v *Entry) native() *C.GtkEntry {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkEntry(p)
+}
+
+func marshalEntry(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapEntry(obj), nil
+}
+
+func wrapEntry(obj *glib.Object) *Entry {
+ e := wrapEditable(obj)
+ return &Entry{Widget{glib.InitiallyUnowned{obj}}, *e}
+}
+
+// EntryNew() is a wrapper around gtk_entry_new().
+func EntryNew() (*Entry, error) {
+ c := C.gtk_entry_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapEntry(obj), nil
+}
+
+// EntryNewWithBuffer() is a wrapper around gtk_entry_new_with_buffer().
+func EntryNewWithBuffer(buffer *EntryBuffer) (*Entry, error) {
+ c := C.gtk_entry_new_with_buffer(buffer.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapEntry(obj), nil
+}
+
+// GetBuffer() is a wrapper around gtk_entry_get_buffer().
+func (v *Entry) GetBuffer() (*EntryBuffer, error) {
+ c := C.gtk_entry_get_buffer(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return &EntryBuffer{obj}, nil
+}
+
+// SetBuffer() is a wrapper around gtk_entry_set_buffer().
+func (v *Entry) SetBuffer(buffer *EntryBuffer) {
+ C.gtk_entry_set_buffer(v.native(), buffer.native())
+}
+
+// SetText() is a wrapper around gtk_entry_set_text().
+func (v *Entry) SetText(text string) {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_entry_set_text(v.native(), (*C.gchar)(cstr))
+}
+
+// GetText() is a wrapper around gtk_entry_get_text().
+func (v *Entry) GetText() (string, error) {
+ c := C.gtk_entry_get_text(v.native())
+ if c == nil {
+ return "", nilPtrErr
+ }
+ return goString(c), nil
+}
+
+// GetTextLength() is a wrapper around gtk_entry_get_text_length().
+func (v *Entry) GetTextLength() uint16 {
+ c := C.gtk_entry_get_text_length(v.native())
+ return uint16(c)
+}
+
+// TODO(jrick) GdkRectangle
+/*
+func (v *Entry) GetTextArea() {
+}
+*/
+
+// SetVisibility() is a wrapper around gtk_entry_set_visibility().
+func (v *Entry) SetVisibility(visible bool) {
+ C.gtk_entry_set_visibility(v.native(), gbool(visible))
+}
+
+// SetInvisibleChar() is a wrapper around gtk_entry_set_invisible_char().
+func (v *Entry) SetInvisibleChar(ch rune) {
+ C.gtk_entry_set_invisible_char(v.native(), C.gunichar(ch))
+}
+
+// UnsetInvisibleChar() is a wrapper around gtk_entry_unset_invisible_char().
+func (v *Entry) UnsetInvisibleChar() {
+ C.gtk_entry_unset_invisible_char(v.native())
+}
+
+// SetMaxLength() is a wrapper around gtk_entry_set_max_length().
+func (v *Entry) SetMaxLength(len int) {
+ C.gtk_entry_set_max_length(v.native(), C.gint(len))
+}
+
+// GetActivatesDefault() is a wrapper around gtk_entry_get_activates_default().
+func (v *Entry) GetActivatesDefault() bool {
+ c := C.gtk_entry_get_activates_default(v.native())
+ return gobool(c)
+}
+
+// GetHasFrame() is a wrapper around gtk_entry_get_has_frame().
+func (v *Entry) GetHasFrame() bool {
+ c := C.gtk_entry_get_has_frame(v.native())
+ return gobool(c)
+}
+
+// GetWidthChars() is a wrapper around gtk_entry_get_width_chars().
+func (v *Entry) GetWidthChars() int {
+ c := C.gtk_entry_get_width_chars(v.native())
+ return int(c)
+}
+
+// SetActivatesDefault() is a wrapper around gtk_entry_set_activates_default().
+func (v *Entry) SetActivatesDefault(setting bool) {
+ C.gtk_entry_set_activates_default(v.native(), gbool(setting))
+}
+
+// SetHasFrame() is a wrapper around gtk_entry_set_has_frame().
+func (v *Entry) SetHasFrame(setting bool) {
+ C.gtk_entry_set_has_frame(v.native(), gbool(setting))
+}
+
+// SetWidthChars() is a wrapper around gtk_entry_set_width_chars().
+func (v *Entry) SetWidthChars(nChars int) {
+ C.gtk_entry_set_width_chars(v.native(), C.gint(nChars))
+}
+
+// GetInvisibleChar() is a wrapper around gtk_entry_get_invisible_char().
+func (v *Entry) GetInvisibleChar() rune {
+ c := C.gtk_entry_get_invisible_char(v.native())
+ return rune(c)
+}
+
+// SetAlignment() is a wrapper around gtk_entry_set_alignment().
+func (v *Entry) SetAlignment(xalign float32) {
+ C.gtk_entry_set_alignment(v.native(), C.gfloat(xalign))
+}
+
+// GetAlignment() is a wrapper around gtk_entry_get_alignment().
+func (v *Entry) GetAlignment() float32 {
+ c := C.gtk_entry_get_alignment(v.native())
+ return float32(c)
+}
+
+// SetPlaceholderText() is a wrapper around gtk_entry_set_placeholder_text().
+func (v *Entry) SetPlaceholderText(text string) {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_entry_set_placeholder_text(v.native(), (*C.gchar)(cstr))
+}
+
+// GetPlaceholderText() is a wrapper around gtk_entry_get_placeholder_text().
+func (v *Entry) GetPlaceholderText() (string, error) {
+ c := C.gtk_entry_get_placeholder_text(v.native())
+ if c == nil {
+ return "", nilPtrErr
+ }
+ return goString(c), nil
+}
+
+// SetOverwriteMode() is a wrapper around gtk_entry_set_overwrite_mode().
+func (v *Entry) SetOverwriteMode(overwrite bool) {
+ C.gtk_entry_set_overwrite_mode(v.native(), gbool(overwrite))
+}
+
+// GetOverwriteMode() is a wrapper around gtk_entry_get_overwrite_mode().
+func (v *Entry) GetOverwriteMode() bool {
+ c := C.gtk_entry_get_overwrite_mode(v.native())
+ return gobool(c)
+}
+
+// TODO(jrick) Pangolayout
+/*
+func (v *Entry) GetLayout() {
+}
+*/
+
+// GetLayoutOffsets() is a wrapper around gtk_entry_get_layout_offsets().
+func (v *Entry) GetLayoutOffsets() (x, y int) {
+ var gx, gy C.gint
+ C.gtk_entry_get_layout_offsets(v.native(), &gx, &gy)
+ return int(gx), int(gy)
+}
+
+// LayoutIndexToTextIndex() is a wrapper around
+// gtk_entry_layout_index_to_text_index().
+func (v *Entry) LayoutIndexToTextIndex(layoutIndex int) int {
+ c := C.gtk_entry_layout_index_to_text_index(v.native(),
+ C.gint(layoutIndex))
+ return int(c)
+}
+
+// TextIndexToLayoutIndex() is a wrapper around
+// gtk_entry_text_index_to_layout_index().
+func (v *Entry) TextIndexToLayoutIndex(textIndex int) int {
+ c := C.gtk_entry_text_index_to_layout_index(v.native(),
+ C.gint(textIndex))
+ return int(c)
+}
+
+// TODO(jrick) PandoAttrList
+/*
+func (v *Entry) SetAttributes() {
+}
+*/
+
+// TODO(jrick) PandoAttrList
+/*
+func (v *Entry) GetAttributes() {
+}
+*/
+
+// GetMaxLength() is a wrapper around gtk_entry_get_max_length().
+func (v *Entry) GetMaxLength() int {
+ c := C.gtk_entry_get_max_length(v.native())
+ return int(c)
+}
+
+// GetVisibility() is a wrapper around gtk_entry_get_visibility().
+func (v *Entry) GetVisibility() bool {
+ c := C.gtk_entry_get_visibility(v.native())
+ return gobool(c)
+}
+
+// SetCompletion() is a wrapper around gtk_entry_set_completion().
+func (v *Entry) SetCompletion(completion *EntryCompletion) {
+ C.gtk_entry_set_completion(v.native(), completion.native())
+}
+
+// GetCompletion() is a wrapper around gtk_entry_get_completion().
+func (v *Entry) GetCompletion() (*EntryCompletion, error) {
+ c := C.gtk_entry_get_completion(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ e := &EntryCompletion{glib.Take(unsafe.Pointer(c))}
+ return e, nil
+}
+
+// SetCursorHAdjustment() is a wrapper around
+// gtk_entry_set_cursor_hadjustment().
+func (v *Entry) SetCursorHAdjustment(adjustment *Adjustment) {
+ C.gtk_entry_set_cursor_hadjustment(v.native(), adjustment.native())
+}
+
+// GetCursorHAdjustment() is a wrapper around
+// gtk_entry_get_cursor_hadjustment().
+func (v *Entry) GetCursorHAdjustment() (*Adjustment, error) {
+ c := C.gtk_entry_get_cursor_hadjustment(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return &Adjustment{glib.InitiallyUnowned{obj}}, nil
+}
+
+// SetProgressFraction() is a wrapper around gtk_entry_set_progress_fraction().
+func (v *Entry) SetProgressFraction(fraction float64) {
+ C.gtk_entry_set_progress_fraction(v.native(), C.gdouble(fraction))
+}
+
+// GetProgressFraction() is a wrapper around gtk_entry_get_progress_fraction().
+func (v *Entry) GetProgressFraction() float64 {
+ c := C.gtk_entry_get_progress_fraction(v.native())
+ return float64(c)
+}
+
+// SetProgressPulseStep() is a wrapper around
+// gtk_entry_set_progress_pulse_step().
+func (v *Entry) SetProgressPulseStep(fraction float64) {
+ C.gtk_entry_set_progress_pulse_step(v.native(), C.gdouble(fraction))
+}
+
+// GetProgressPulseStep() is a wrapper around
+// gtk_entry_get_progress_pulse_step().
+func (v *Entry) GetProgressPulseStep() float64 {
+ c := C.gtk_entry_get_progress_pulse_step(v.native())
+ return float64(c)
+}
+
+// ProgressPulse() is a wrapper around gtk_entry_progress_pulse().
+func (v *Entry) ProgressPulse() {
+ C.gtk_entry_progress_pulse(v.native())
+}
+
+// TODO(jrick) GdkEventKey
+/*
+func (v *Entry) IMContextFilterKeypress() {
+}
+*/
+
+// ResetIMContext() is a wrapper around gtk_entry_reset_im_context().
+func (v *Entry) ResetIMContext() {
+ C.gtk_entry_reset_im_context(v.native())
+}
+
+// SetIconFromPixbuf is a wrapper around gtk_entry_set_icon_from_pixbuf().
+func (v *Entry) SetIconFromPixbuf(iconPos EntryIconPosition, pixbuf *gdk.Pixbuf) {
+ C.gtk_entry_set_icon_from_pixbuf(v.native(),
+ C.GtkEntryIconPosition(iconPos),
+ (*C.GdkPixbuf)(unsafe.Pointer(pixbuf.Native())))
+}
+
+// SetIconFromIconName() is a wrapper around
+// gtk_entry_set_icon_from_icon_name().
+func (v *Entry) SetIconFromIconName(iconPos EntryIconPosition, name string) {
+ cstr := C.CString(name)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_entry_set_icon_from_icon_name(v.native(),
+ C.GtkEntryIconPosition(iconPos), (*C.gchar)(cstr))
+}
+
+// TODO(jrick) GIcon
+/*
+func (v *Entry) SetIconFromGIcon() {
+}
+*/
+
+// GetIconStorageType() is a wrapper around gtk_entry_get_icon_storage_type().
+func (v *Entry) GetIconStorageType(iconPos EntryIconPosition) ImageType {
+ c := C.gtk_entry_get_icon_storage_type(v.native(),
+ C.GtkEntryIconPosition(iconPos))
+ return ImageType(c)
+}
+
+// TODO(jrick) GdkPixbuf
+/*
+func (v *Entry) GetIconPixbuf() {
+}
+*/
+
+// GetIconName() is a wrapper around gtk_entry_get_icon_name().
+func (v *Entry) GetIconName(iconPos EntryIconPosition) (string, error) {
+ c := C.gtk_entry_get_icon_name(v.native(),
+ C.GtkEntryIconPosition(iconPos))
+ if c == nil {
+ return "", nilPtrErr
+ }
+ return goString(c), nil
+}
+
+// TODO(jrick) GIcon
+/*
+func (v *Entry) GetIconGIcon() {
+}
+*/
+
+// SetIconActivatable() is a wrapper around gtk_entry_set_icon_activatable().
+func (v *Entry) SetIconActivatable(iconPos EntryIconPosition, activatable bool) {
+ C.gtk_entry_set_icon_activatable(v.native(),
+ C.GtkEntryIconPosition(iconPos), gbool(activatable))
+}
+
+// GetIconActivatable() is a wrapper around gtk_entry_get_icon_activatable().
+func (v *Entry) GetIconActivatable(iconPos EntryIconPosition) bool {
+ c := C.gtk_entry_get_icon_activatable(v.native(),
+ C.GtkEntryIconPosition(iconPos))
+ return gobool(c)
+}
+
+// SetIconSensitive() is a wrapper around gtk_entry_set_icon_sensitive().
+func (v *Entry) SetIconSensitive(iconPos EntryIconPosition, sensitive bool) {
+ C.gtk_entry_set_icon_sensitive(v.native(),
+ C.GtkEntryIconPosition(iconPos), gbool(sensitive))
+}
+
+// GetIconSensitive() is a wrapper around gtk_entry_get_icon_sensitive().
+func (v *Entry) GetIconSensitive(iconPos EntryIconPosition) bool {
+ c := C.gtk_entry_get_icon_sensitive(v.native(),
+ C.GtkEntryIconPosition(iconPos))
+ return gobool(c)
+}
+
+// GetIconAtPos() is a wrapper around gtk_entry_get_icon_at_pos().
+func (v *Entry) GetIconAtPos(x, y int) int {
+ c := C.gtk_entry_get_icon_at_pos(v.native(), C.gint(x), C.gint(y))
+ return int(c)
+}
+
+// SetIconTooltipText() is a wrapper around gtk_entry_set_icon_tooltip_text().
+func (v *Entry) SetIconTooltipText(iconPos EntryIconPosition, tooltip string) {
+ cstr := C.CString(tooltip)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_entry_set_icon_tooltip_text(v.native(),
+ C.GtkEntryIconPosition(iconPos), (*C.gchar)(cstr))
+}
+
+// GetIconTooltipText() is a wrapper around gtk_entry_get_icon_tooltip_text().
+func (v *Entry) GetIconTooltipText(iconPos EntryIconPosition) (string, error) {
+ c := C.gtk_entry_get_icon_tooltip_text(v.native(),
+ C.GtkEntryIconPosition(iconPos))
+ if c == nil {
+ return "", nilPtrErr
+ }
+ return goString(c), nil
+}
+
+// SetIconTooltipMarkup() is a wrapper around
+// gtk_entry_set_icon_tooltip_markup().
+func (v *Entry) SetIconTooltipMarkup(iconPos EntryIconPosition, tooltip string) {
+ cstr := C.CString(tooltip)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_entry_set_icon_tooltip_markup(v.native(),
+ C.GtkEntryIconPosition(iconPos), (*C.gchar)(cstr))
+}
+
+// GetIconTooltipMarkup() is a wrapper around
+// gtk_entry_get_icon_tooltip_markup().
+func (v *Entry) GetIconTooltipMarkup(iconPos EntryIconPosition) (string, error) {
+ c := C.gtk_entry_get_icon_tooltip_markup(v.native(),
+ C.GtkEntryIconPosition(iconPos))
+ if c == nil {
+ return "", nilPtrErr
+ }
+ return goString(c), nil
+}
+
+// TODO(jrick) GdkDragAction
+/*
+func (v *Entry) SetIconDragSource() {
+}
+*/
+
+// GetCurrentIconDragSource() is a wrapper around
+// gtk_entry_get_current_icon_drag_source().
+func (v *Entry) GetCurrentIconDragSource() int {
+ c := C.gtk_entry_get_current_icon_drag_source(v.native())
+ return int(c)
+}
+
+// TODO(jrick) GdkRectangle
+/*
+func (v *Entry) GetIconArea() {
+}
+*/
+
+// SetInputPurpose() is a wrapper around gtk_entry_set_input_purpose().
+func (v *Entry) SetInputPurpose(purpose InputPurpose) {
+ C.gtk_entry_set_input_purpose(v.native(), C.GtkInputPurpose(purpose))
+}
+
+// GetInputPurpose() is a wrapper around gtk_entry_get_input_purpose().
+func (v *Entry) GetInputPurpose() InputPurpose {
+ c := C.gtk_entry_get_input_purpose(v.native())
+ return InputPurpose(c)
+}
+
+// SetInputHints() is a wrapper around gtk_entry_set_input_hints().
+func (v *Entry) SetInputHints(hints InputHints) {
+ C.gtk_entry_set_input_hints(v.native(), C.GtkInputHints(hints))
+}
+
+// GetInputHints() is a wrapper around gtk_entry_get_input_hints().
+func (v *Entry) GetInputHints() InputHints {
+ c := C.gtk_entry_get_input_hints(v.native())
+ return InputHints(c)
+}
+
+/*
+ * GtkEntryBuffer
+ */
+
+// EntryBuffer is a representation of GTK's GtkEntryBuffer.
+type EntryBuffer struct {
+ *glib.Object
+}
+
+// native returns a pointer to the underlying GtkEntryBuffer.
+func (v *EntryBuffer) native() *C.GtkEntryBuffer {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkEntryBuffer(p)
+}
+
+func marshalEntryBuffer(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapEntryBuffer(obj), nil
+}
+
+func wrapEntryBuffer(obj *glib.Object) *EntryBuffer {
+ return &EntryBuffer{obj}
+}
+
+// EntryBufferNew() is a wrapper around gtk_entry_buffer_new().
+func EntryBufferNew(initialChars string, nInitialChars int) (*EntryBuffer, error) {
+ cstr := C.CString(initialChars)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_entry_buffer_new((*C.gchar)(cstr), C.gint(nInitialChars))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ e := wrapEntryBuffer(glib.Take(unsafe.Pointer(c)))
+ return e, nil
+}
+
+// GetText() is a wrapper around gtk_entry_buffer_get_text(). A
+// non-nil error is returned in the case that gtk_entry_buffer_get_text
+// returns NULL to differentiate between NULL and an empty string.
+func (v *EntryBuffer) GetText() (string, error) {
+ c := C.gtk_entry_buffer_get_text(v.native())
+ if c == nil {
+ return "", nilPtrErr
+ }
+ return goString(c), nil
+}
+
+// SetText() is a wrapper around gtk_entry_buffer_set_text().
+func (v *EntryBuffer) SetText(text string) {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_entry_buffer_set_text(v.native(), (*C.gchar)(cstr),
+ C.gint(len(text)))
+}
+
+// GetBytes() is a wrapper around gtk_entry_buffer_get_bytes().
+func (v *EntryBuffer) GetBytes() uint {
+ c := C.gtk_entry_buffer_get_bytes(v.native())
+ return uint(c)
+}
+
+// GetLength() is a wrapper around gtk_entry_buffer_get_length().
+func (v *EntryBuffer) GetLength() uint {
+ c := C.gtk_entry_buffer_get_length(v.native())
+ return uint(c)
+}
+
+// GetMaxLength() is a wrapper around gtk_entry_buffer_get_max_length().
+func (v *EntryBuffer) GetMaxLength() int {
+ c := C.gtk_entry_buffer_get_max_length(v.native())
+ return int(c)
+}
+
+// SetMaxLength() is a wrapper around gtk_entry_buffer_set_max_length().
+func (v *EntryBuffer) SetMaxLength(maxLength int) {
+ C.gtk_entry_buffer_set_max_length(v.native(), C.gint(maxLength))
+}
+
+// InsertText() is a wrapper around gtk_entry_buffer_insert_text().
+func (v *EntryBuffer) InsertText(position uint, text string) uint {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_entry_buffer_insert_text(v.native(), C.guint(position),
+ (*C.gchar)(cstr), C.gint(len(text)))
+ return uint(c)
+}
+
+// DeleteText() is a wrapper around gtk_entry_buffer_delete_text().
+func (v *EntryBuffer) DeleteText(position uint, nChars int) uint {
+ c := C.gtk_entry_buffer_delete_text(v.native(), C.guint(position),
+ C.gint(nChars))
+ return uint(c)
+}
+
+// EmitDeletedText() is a wrapper around gtk_entry_buffer_emit_deleted_text().
+func (v *EntryBuffer) EmitDeletedText(pos, nChars uint) {
+ C.gtk_entry_buffer_emit_deleted_text(v.native(), C.guint(pos),
+ C.guint(nChars))
+}
+
+// EmitInsertedText() is a wrapper around gtk_entry_buffer_emit_inserted_text().
+func (v *EntryBuffer) EmitInsertedText(pos uint, text string) {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_entry_buffer_emit_inserted_text(v.native(), C.guint(pos),
+ (*C.gchar)(cstr), C.guint(len(text)))
+}
+
+/*
+ * GtkEntryCompletion
+ */
+
+// EntryCompletion is a representation of GTK's GtkEntryCompletion.
+type EntryCompletion struct {
+ *glib.Object
+}
+
+// native returns a pointer to the underlying GtkEntryCompletion.
+func (v *EntryCompletion) native() *C.GtkEntryCompletion {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkEntryCompletion(p)
+}
+
+func marshalEntryCompletion(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapEntryCompletion(obj), nil
+}
+
+func wrapEntryCompletion(obj *glib.Object) *EntryCompletion {
+ return &EntryCompletion{obj}
+}
+
+/*
+ * GtkEventBox
+ */
+
+// EventBox is a representation of GTK's GtkEventBox.
+type EventBox struct {
+ Bin
+}
+
+// native returns a pointer to the underlying GtkEventBox.
+func (v *EventBox) native() *C.GtkEventBox {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkEventBox(p)
+}
+
+func marshalEventBox(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapEventBox(obj), nil
+}
+
+func wrapEventBox(obj *glib.Object) *EventBox {
+ return &EventBox{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
+}
+
+// EventBoxNew is a wrapper around gtk_event_box_new().
+func EventBoxNew() (*EventBox, error) {
+ c := C.gtk_event_box_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapEventBox(obj), nil
+}
+
+// SetAboveChild is a wrapper around gtk_event_box_set_above_child().
+func (v *EventBox) SetAboveChild(aboveChild bool) {
+ C.gtk_event_box_set_above_child(v.native(), gbool(aboveChild))
+}
+
+// GetAboveChild is a wrapper around gtk_event_box_get_above_child().
+func (v *EventBox) GetAboveChild() bool {
+ c := C.gtk_event_box_get_above_child(v.native())
+ return gobool(c)
+}
+
+// SetVisibleWindow is a wrapper around gtk_event_box_set_visible_window().
+func (v *EventBox) SetVisibleWindow(visibleWindow bool) {
+ C.gtk_event_box_set_visible_window(v.native(), gbool(visibleWindow))
+}
+
+// GetVisibleWindow is a wrapper around gtk_event_box_get_visible_window().
+func (v *EventBox) GetVisibleWindow() bool {
+ c := C.gtk_event_box_get_visible_window(v.native())
+ return gobool(c)
+}
+
+/*
+ * GtkExpander
+ */
+
+// Expander is a representation of GTK's GtkExpander.
+type Expander struct {
+ Bin
+}
+
+// native returns a pointer to the underlying GtkExpander.
+func (v *Expander) native() *C.GtkExpander {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkExpander(p)
+}
+
+func marshalExpander(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapExpander(obj), nil
+}
+
+func wrapExpander(obj *glib.Object) *Expander {
+ return &Expander{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
+}
+
+// ExpanderNew is a wrapper around gtk_expander_new().
+func ExpanderNew(label string) (*Expander, error) {
+ var cstr *C.gchar
+ if label != "" {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ }
+ c := C.gtk_expander_new((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapExpander(obj), nil
+}
+
+// SetExpanded is a wrapper around gtk_expander_set_expanded().
+func (v *Expander) SetExpanded(expanded bool) {
+ C.gtk_expander_set_expanded(v.native(), gbool(expanded))
+}
+
+// GetExpanded is a wrapper around gtk_expander_get_expanded().
+func (v *Expander) GetExpanded() bool {
+ c := C.gtk_expander_get_expanded(v.native())
+ return gobool(c)
+}
+
+// SetLabel is a wrapper around gtk_expander_set_label().
+func (v *Expander) SetLabel(label string) {
+ var cstr *C.char
+ if label != "" {
+ cstr = C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ }
+ C.gtk_expander_set_label(v.native(), (*C.gchar)(cstr))
+}
+
+// GetLabel is a wrapper around gtk_expander_get_label().
+func (v *Expander) GetLabel() string {
+ c := C.gtk_expander_get_label(v.native())
+ return goString(c)
+}
+
+// SetLabelWidget is a wrapper around gtk_expander_set_label_widget().
+func (v *Expander) SetLabelWidget(widget IWidget) {
+ C.gtk_expander_set_label_widget(v.native(), widget.toWidget())
+}
+
+/*
+ * GtkFileChooser
+ */
+
+// FileChoser is a representation of GTK's GtkFileChooser GInterface.
+type FileChooser struct {
+ *glib.Object
+}
+
+// native returns a pointer to the underlying GObject as a GtkFileChooser.
+func (v *FileChooser) native() *C.GtkFileChooser {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkFileChooser(p)
+}
+
+func marshalFileChooser(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapFileChooser(obj), nil
+}
+
+func wrapFileChooser(obj *glib.Object) *FileChooser {
+ return &FileChooser{obj}
+}
+
+// SetFilename is a wrapper around gtk_file_chooser_set_filename().
+func (v *FileChooser) SetFilename(filename string) bool {
+ cstr := C.CString(filename)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_file_chooser_set_filename(v.native(), cstr)
+ return gobool(c)
+}
+
+// GetFilename is a wrapper around gtk_file_chooser_get_filename().
+func (v *FileChooser) GetFilename() string {
+ c := C.gtk_file_chooser_get_filename(v.native())
+ s := goString(c)
+ defer C.g_free((C.gpointer)(c))
+ return s
+}
+
+// GetFilenames is a wrapper around gtk_file_chooser_get_filenames().
+func (v *FileChooser) GetFilenames() (*glib.SList, error) {
+ c := C.gtk_file_chooser_get_filenames(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return glib.WrapSList(uintptr(unsafe.Pointer(c))), nil
+}
+
+// GetURIs is a wrapper around gtk_file_chooser_get_uris().
+func (v FileChooser) GetURIs() (*glib.SList, error) {
+ c := C.gtk_file_chooser_get_uris(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return glib.WrapSList(uintptr(unsafe.Pointer(c))), nil
+}
+
+// SetDoOverwriteConfirmation is a wrapper around gtk_file_chooser_set_do_overwrite_confirmation().
+func (v *FileChooser) SetDoOverwriteConfirmation(value bool) {
+ C.gtk_file_chooser_set_do_overwrite_confirmation(v.native(), gbool(value))
+}
+
+// GetDoOverwriteConfirmation is a wrapper around gtk_file_chooser_get_do_overwrite_confirmation().
+func (v *FileChooser) GetDoOverwriteConfirmation() bool {
+ c := C.gtk_file_chooser_get_do_overwrite_confirmation(v.native())
+ return gobool(c)
+}
+
+// SetCreateFolders is a wrapper around gtk_file_chooser_set_create_folders().
+func (v *FileChooser) SetCreateFolders(value bool) {
+ C.gtk_file_chooser_set_create_folders(v.native(), gbool(value))
+}
+
+// GetCreateFolders is a wrapper around gtk_file_chooser_get_create_folders().
+func (v *FileChooser) GetCreateFolders() bool {
+ c := C.gtk_file_chooser_get_create_folders(v.native())
+ return gobool(c)
+}
+
+// SetCurrentName is a wrapper around gtk_file_chooser_set_current_name().
+func (v *FileChooser) SetCurrentName(name string) {
+ cstr := C.CString(name)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_file_chooser_set_current_name(v.native(), (*C.gchar)(cstr))
+ return
+}
+
+// SetCurrentFolder is a wrapper around gtk_file_chooser_set_current_folder().
+func (v *FileChooser) SetCurrentFolder(folder string) bool {
+ cstr := C.CString(folder)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_file_chooser_set_current_folder(v.native(), (*C.gchar)(cstr))
+ return gobool(c)
+}
+
+// GetCurrentFolder is a wrapper around gtk_file_chooser_get_current_folder().
+func (v *FileChooser) GetCurrentFolder() (string, error) {
+ c := C.gtk_file_chooser_get_current_folder(v.native())
+ if c == nil {
+ return "", nilPtrErr
+ }
+ defer C.free(unsafe.Pointer(c))
+ return goString(c), nil
+}
+
+// SetPreviewWidget is a wrapper around gtk_file_chooser_set_preview_widget().
+func (v *FileChooser) SetPreviewWidget(widget IWidget) {
+ C.gtk_file_chooser_set_preview_widget(v.native(), widget.toWidget())
+}
+
+// SetPreviewWidgetActive is a wrapper around gtk_file_chooser_set_preview_widget_active().
+func (v *FileChooser) SetPreviewWidgetActive(active bool) {
+ C.gtk_file_chooser_set_preview_widget_active(v.native(), gbool(active))
+}
+
+// GetPreviewFilename is a wrapper around gtk_file_chooser_get_preview_filename().
+func (v *FileChooser) GetPreviewFilename() string {
+ c := C.gtk_file_chooser_get_preview_filename(v.native())
+ defer C.free(unsafe.Pointer(c))
+ return C.GoString(c)
+}
+
+// GetURI is a wrapper around gtk_file_chooser_get_uri().
+func (v *FileChooser) GetURI() string {
+ c := C.gtk_file_chooser_get_uri(v.native())
+ s := goString(c)
+ defer C.g_free((C.gpointer)(c))
+ return s
+}
+
+// AddFilter is a wrapper around gtk_file_chooser_add_filter().
+func (v *FileChooser) AddFilter(filter *FileFilter) {
+ C.gtk_file_chooser_add_filter(v.native(), filter.native())
+}
+
+// RemoveFilter is a wrapper around gtk_file_chooser_remove_filter().
+func (v *FileChooser) RemoveFilter(filter *FileFilter) {
+ C.gtk_file_chooser_remove_filter(v.native(), filter.native())
+}
+
+// SetFilter is a wrapper around gtk_file_chooser_set_filter().
+func (v *FileChooser) SetFilter(filter *FileFilter) {
+ C.gtk_file_chooser_set_filter(v.native(), filter.native())
+}
+
+// AddShortcutFolder is a wrapper around gtk_file_chooser_add_shortcut_folder().
+func (v *FileChooser) AddShortcutFolder(folder string) bool {
+ cstr := C.CString(folder)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_file_chooser_add_shortcut_folder(v.native(), cstr, nil)
+ return gobool(c)
+}
+
+// SetLocalOnly is a wrapper around gtk_file_chooser_set_local_only().
+func (v *FileChooser) SetLocalOnly(value bool) {
+ C.gtk_file_chooser_set_local_only(v.native(), gbool(value))
+}
+
+// GetLocalOnly is a wrapper around gtk_file_chooser_get_local_only().
+func (v *FileChooser) GetLocalOnly() bool {
+ c := C.gtk_file_chooser_get_local_only(v.native())
+ return gobool(c)
+}
+
+// SetSelectMultiple is a wrapper around gtk_file_chooser_set_select_multiple().
+func (v *FileChooser) SetSelectMultiple(value bool) {
+ C.gtk_file_chooser_set_select_multiple(v.native(), gbool(value))
+}
+
+// GetSelectMultiple is a wrapper around gtk_file_chooser_get_select_multiple().
+func (v *FileChooser) GetSelectMultiple() bool {
+ c := C.gtk_file_chooser_get_select_multiple(v.native())
+ return gobool(c)
+}
+
+/*
+ * GtkFileChooserButton
+ */
+
+// FileChooserButton is a representation of GTK's GtkFileChooserButton.
+type FileChooserButton struct {
+ Box
+
+ // Interfaces
+ FileChooser
+}
+
+// native returns a pointer to the underlying GtkFileChooserButton.
+func (v *FileChooserButton) native() *C.GtkFileChooserButton {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkFileChooserButton(p)
+}
+
+func marshalFileChooserButton(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapFileChooserButton(obj), nil
+}
+
+func wrapFileChooserButton(obj *glib.Object) *FileChooserButton {
+ fc := wrapFileChooser(obj)
+ return &FileChooserButton{Box{Container{Widget{glib.InitiallyUnowned{obj}}}}, *fc}
+}
+
+// FileChooserButtonNew is a wrapper around gtk_file_chooser_button_new().
+func FileChooserButtonNew(title string, action FileChooserAction) (*FileChooserButton, error) {
+ cstr := C.CString(title)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_file_chooser_button_new((*C.gchar)(cstr),
+ (C.GtkFileChooserAction)(action))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapFileChooserButton(obj), nil
+}
+
+/*
+ * GtkFileChooserDialog
+ */
+
+// FileChooserDialog is a representation of GTK's GtkFileChooserDialog.
+type FileChooserDialog struct {
+ Dialog
+
+ // Interfaces
+ FileChooser
+}
+
+// native returns a pointer to the underlying GtkFileChooserDialog.
+func (v *FileChooserDialog) native() *C.GtkFileChooserDialog {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkFileChooserDialog(p)
+}
+
+func marshalFileChooserDialog(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapFileChooserDialog(obj), nil
+}
+
+func wrapFileChooserDialog(obj *glib.Object) *FileChooserDialog {
+ fc := wrapFileChooser(obj)
+ return &FileChooserDialog{Dialog{Window{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}}, *fc}
+}
+
+// FileChooserDialogNewWith1Button is a wrapper around gtk_file_chooser_dialog_new() with one button.
+func FileChooserDialogNewWith1Button(
+ title string,
+ parent *Window,
+ action FileChooserAction,
+ first_button_text string,
+ first_button_id ResponseType) (*FileChooserDialog, error) {
+ c_title := C.CString(title)
+ defer C.free(unsafe.Pointer(c_title))
+ c_first_button_text := C.CString(first_button_text)
+ defer C.free(unsafe.Pointer(c_first_button_text))
+ c := C.gtk_file_chooser_dialog_new_1(
+ (*C.gchar)(c_title), parent.native(), C.GtkFileChooserAction(action),
+ (*C.gchar)(c_first_button_text), C.int(first_button_id))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapFileChooserDialog(obj), nil
+}
+
+// FileChooserDialogNewWith2Buttons is a wrapper around gtk_file_chooser_dialog_new() with two buttons.
+func FileChooserDialogNewWith2Buttons(
+ title string,
+ parent *Window,
+ action FileChooserAction,
+ first_button_text string,
+ first_button_id ResponseType,
+ second_button_text string,
+ second_button_id ResponseType) (*FileChooserDialog, error) {
+ c_title := C.CString(title)
+ defer C.free(unsafe.Pointer(c_title))
+ c_first_button_text := C.CString(first_button_text)
+ defer C.free(unsafe.Pointer(c_first_button_text))
+ c_second_button_text := C.CString(second_button_text)
+ defer C.free(unsafe.Pointer(c_second_button_text))
+ c := C.gtk_file_chooser_dialog_new_2(
+ (*C.gchar)(c_title), parent.native(), C.GtkFileChooserAction(action),
+ (*C.gchar)(c_first_button_text), C.int(first_button_id),
+ (*C.gchar)(c_second_button_text), C.int(second_button_id))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapFileChooserDialog(obj), nil
+}
+
+/*
+ * GtkFileChooserWidget
+ */
+
+// FileChooserWidget is a representation of GTK's GtkFileChooserWidget.
+type FileChooserWidget struct {
+ Box
+
+ // Interfaces
+ FileChooser
+}
+
+// native returns a pointer to the underlying GtkFileChooserWidget.
+func (v *FileChooserWidget) native() *C.GtkFileChooserWidget {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkFileChooserWidget(p)
+}
+
+func marshalFileChooserWidget(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapFileChooserWidget(obj), nil
+}
+
+func wrapFileChooserWidget(obj *glib.Object) *FileChooserWidget {
+ fc := wrapFileChooser(obj)
+ return &FileChooserWidget{Box{Container{Widget{glib.InitiallyUnowned{obj}}}}, *fc}
+}
+
+// FileChooserWidgetNew is a wrapper around gtk_file_chooser_widget_new().
+func FileChooserWidgetNew(action FileChooserAction) (*FileChooserWidget, error) {
+ c := C.gtk_file_chooser_widget_new((C.GtkFileChooserAction)(action))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapFileChooserWidget(obj), nil
+}
+
+/*
+ * GtkFileFilter
+ */
+
+// FileChoser is a representation of GTK's GtkFileFilter GInterface.
+type FileFilter struct {
+ *glib.Object
+}
+
+// native returns a pointer to the underlying GObject as a GtkFileFilter.
+func (v *FileFilter) native() *C.GtkFileFilter {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkFileFilter(p)
+}
+
+func marshalFileFilter(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapFileFilter(obj), nil
+}
+
+func wrapFileFilter(obj *glib.Object) *FileFilter {
+ return &FileFilter{obj}
+}
+
+// FileFilterNew is a wrapper around gtk_file_filter_new().
+func FileFilterNew() (*FileFilter, error) {
+ c := C.gtk_file_filter_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapFileFilter(obj), nil
+}
+
+// SetName is a wrapper around gtk_file_filter_set_name().
+func (v *FileFilter) SetName(name string) {
+ cstr := C.CString(name)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_file_filter_set_name(v.native(), (*C.gchar)(cstr))
+}
+
+// AddPattern is a wrapper around gtk_file_filter_add_pattern().
+func (v *FileFilter) AddPattern(pattern string) {
+ cstr := C.CString(pattern)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_file_filter_add_pattern(v.native(), (*C.gchar)(cstr))
+}
+
+// AddPixbufFormats is a wrapper around gtk_file_filter_add_pixbuf_formats().
+func (v *FileFilter) AddPixbufFormats() {
+ C.gtk_file_filter_add_pixbuf_formats(v.native())
+}
+
+/*
+ * GtkFrame
+ */
+
+// Frame is a representation of GTK's GtkFrame.
+type Frame struct {
+ Bin
+}
+
+// native returns a pointer to the underlying GtkFrame.
+func (v *Frame) native() *C.GtkFrame {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkFrame(p)
+}
+
+func marshalFrame(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapFrame(obj), nil
+}
+
+func wrapFrame(obj *glib.Object) *Frame {
+ return &Frame{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
+}
+
+// FrameNew is a wrapper around gtk_frame_new().
+func FrameNew(label string) (*Frame, error) {
+ var cstr *C.char
+ if label != "" {
+ cstr = C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ }
+ c := C.gtk_frame_new((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapFrame(obj), nil
+}
+
+// SetLabel is a wrapper around gtk_frame_set_label().
+func (v *Frame) SetLabel(label string) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_frame_set_label(v.native(), (*C.gchar)(cstr))
+}
+
+// SetLabelWidget is a wrapper around gtk_frame_set_label_widget().
+func (v *Frame) SetLabelWidget(labelWidget IWidget) {
+ C.gtk_frame_set_label_widget(v.native(), labelWidget.toWidget())
+}
+
+// SetLabelAlign is a wrapper around gtk_frame_set_label_align().
+func (v *Frame) SetLabelAlign(xAlign, yAlign float32) {
+ C.gtk_frame_set_label_align(v.native(), C.gfloat(xAlign),
+ C.gfloat(yAlign))
+}
+
+// SetShadowType is a wrapper around gtk_frame_set_shadow_type().
+func (v *Frame) SetShadowType(t ShadowType) {
+ C.gtk_frame_set_shadow_type(v.native(), C.GtkShadowType(t))
+}
+
+// GetLabel is a wrapper around gtk_frame_get_label().
+func (v *Frame) GetLabel() string {
+ c := C.gtk_frame_get_label(v.native())
+ return goString(c)
+}
+
+// GetLabelAlign is a wrapper around gtk_frame_get_label_align().
+func (v *Frame) GetLabelAlign() (xAlign, yAlign float32) {
+ var x, y C.gfloat
+ C.gtk_frame_get_label_align(v.native(), &x, &y)
+ return float32(x), float32(y)
+}
+
+// GetLabelWidget is a wrapper around gtk_frame_get_label_widget().
+func (v *Frame) GetLabelWidget() (*Widget, error) {
+ c := C.gtk_frame_get_label_widget(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapWidget(obj), nil
+}
+
+// GetShadowType is a wrapper around gtk_frame_get_shadow_type().
+func (v *Frame) GetShadowType() ShadowType {
+ c := C.gtk_frame_get_shadow_type(v.native())
+ return ShadowType(c)
+}
+
+/*
+ * GtkAspectFrame
+ */
+
+// AspectFrame is a representation of GTK's GtkAspectFrame.
+type AspectFrame struct {
+ Frame
+}
+
+// native returns a pointer to the underlying GtkAspectFrame.
+func (v *AspectFrame) native() *C.GtkAspectFrame {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkAspectFrame(p)
+}
+
+func marshalAspectFrame(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapAspectFrame(obj), nil
+}
+
+func wrapAspectFrame(obj *glib.Object) *AspectFrame {
+ return &AspectFrame{Frame{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}}
+}
+
+func AspectFrameNew(label string, xalign, yalign, ratio float32, obeyChild bool) (*AspectFrame, error) {
+ var cstr *C.char
+ if label != "" {
+ cstr = C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ }
+ c := C.gtk_aspect_frame_new((*C.gchar)(cstr), (C.gfloat)(xalign), (C.gfloat)(yalign), (C.gfloat)(ratio), gbool(obeyChild))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapAspectFrame(obj), nil
+}
+
+/*
+ * GtkGrid
+ */
+
+// Grid is a representation of GTK's GtkGrid.
+type Grid struct {
+ Container
+
+ // Interfaces
+ Orientable
+}
+
+// native returns a pointer to the underlying GtkGrid.
+func (v *Grid) native() *C.GtkGrid {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkGrid(p)
+}
+
+func (v *Grid) toOrientable() *C.GtkOrientable {
+ if v == nil {
+ return nil
+ }
+ return C.toGtkOrientable(unsafe.Pointer(v.GObject))
+}
+
+func marshalGrid(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapGrid(obj), nil
+}
+
+func wrapGrid(obj *glib.Object) *Grid {
+ o := wrapOrientable(obj)
+ return &Grid{Container{Widget{glib.InitiallyUnowned{obj}}}, *o}
+}
+
+// GridNew() is a wrapper around gtk_grid_new().
+func GridNew() (*Grid, error) {
+ c := C.gtk_grid_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapGrid(obj), nil
+}
+
+// Attach() is a wrapper around gtk_grid_attach().
+func (v *Grid) Attach(child IWidget, left, top, width, height int) {
+ C.gtk_grid_attach(v.native(), child.toWidget(), C.gint(left),
+ C.gint(top), C.gint(width), C.gint(height))
+}
+
+// AttachNextTo() is a wrapper around gtk_grid_attach_next_to().
+func (v *Grid) AttachNextTo(child, sibling IWidget, side PositionType, width, height int) {
+ C.gtk_grid_attach_next_to(v.native(), child.toWidget(),
+ sibling.toWidget(), C.GtkPositionType(side), C.gint(width),
+ C.gint(height))
+}
+
+// GetChildAt() is a wrapper around gtk_grid_get_child_at().
+func (v *Grid) GetChildAt(left, top int) (*Widget, error) {
+ c := C.gtk_grid_get_child_at(v.native(), C.gint(left), C.gint(top))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapWidget(obj), nil
+}
+
+// InsertRow() is a wrapper around gtk_grid_insert_row().
+func (v *Grid) InsertRow(position int) {
+ C.gtk_grid_insert_row(v.native(), C.gint(position))
+}
+
+// InsertColumn() is a wrapper around gtk_grid_insert_column().
+func (v *Grid) InsertColumn(position int) {
+ C.gtk_grid_insert_column(v.native(), C.gint(position))
+}
+
+// InsertNextTo() is a wrapper around gtk_grid_insert_next_to()
+func (v *Grid) InsertNextTo(sibling IWidget, side PositionType) {
+ C.gtk_grid_insert_next_to(v.native(), sibling.toWidget(),
+ C.GtkPositionType(side))
+}
+
+// SetRowHomogeneous() is a wrapper around gtk_grid_set_row_homogeneous().
+func (v *Grid) SetRowHomogeneous(homogeneous bool) {
+ C.gtk_grid_set_row_homogeneous(v.native(), gbool(homogeneous))
+}
+
+// GetRowHomogeneous() is a wrapper around gtk_grid_get_row_homogeneous().
+func (v *Grid) GetRowHomogeneous() bool {
+ c := C.gtk_grid_get_row_homogeneous(v.native())
+ return gobool(c)
+}
+
+// SetRowSpacing() is a wrapper around gtk_grid_set_row_spacing().
+func (v *Grid) SetRowSpacing(spacing uint) {
+ C.gtk_grid_set_row_spacing(v.native(), C.guint(spacing))
+}
+
+// GetRowSpacing() is a wrapper around gtk_grid_get_row_spacing().
+func (v *Grid) GetRowSpacing() uint {
+ c := C.gtk_grid_get_row_spacing(v.native())
+ return uint(c)
+}
+
+// SetColumnHomogeneous() is a wrapper around gtk_grid_set_column_homogeneous().
+func (v *Grid) SetColumnHomogeneous(homogeneous bool) {
+ C.gtk_grid_set_column_homogeneous(v.native(), gbool(homogeneous))
+}
+
+// GetColumnHomogeneous() is a wrapper around gtk_grid_get_column_homogeneous().
+func (v *Grid) GetColumnHomogeneous() bool {
+ c := C.gtk_grid_get_column_homogeneous(v.native())
+ return gobool(c)
+}
+
+// SetColumnSpacing() is a wrapper around gtk_grid_set_column_spacing().
+func (v *Grid) SetColumnSpacing(spacing uint) {
+ C.gtk_grid_set_column_spacing(v.native(), C.guint(spacing))
+}
+
+// GetColumnSpacing() is a wrapper around gtk_grid_get_column_spacing().
+func (v *Grid) GetColumnSpacing() uint {
+ c := C.gtk_grid_get_column_spacing(v.native())
+ return uint(c)
+}
+
+/*
+ * GtkIconTheme
+ */
+
+// IconTheme is a representation of GTK's GtkIconTheme
+type IconTheme struct {
+ Theme *C.GtkIconTheme
+}
+
+// IconThemeGetDefault is a wrapper around gtk_icon_theme_get_default().
+func IconThemeGetDefault() (*IconTheme, error) {
+ c := C.gtk_icon_theme_get_default()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return &IconTheme{c}, nil
+}
+
+// IconThemeGetForScreen is a wrapper around gtk_icon_theme_get_for_screen().
+func IconThemeGetForScreen(screen gdk.Screen) (*IconTheme, error) {
+ cScreen := (*C.GdkScreen)(unsafe.Pointer(screen.Native()))
+ c := C.gtk_icon_theme_get_for_screen(cScreen)
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return &IconTheme{c}, nil
+}
+
+// LoadIcon is a wrapper around gtk_icon_theme_load_icon().
+func (v *IconTheme) LoadIcon(iconName string, size int, flags IconLookupFlags) (*gdk.Pixbuf, error) {
+ cstr := C.CString(iconName)
+ defer C.free(unsafe.Pointer(cstr))
+ var err *C.GError = nil
+ c := C.gtk_icon_theme_load_icon(v.Theme, (*C.gchar)(cstr), C.gint(size), C.GtkIconLookupFlags(flags), &err)
+ if c == nil {
+ defer C.g_error_free(err)
+ return nil, errors.New(goString(err.message))
+ }
+ return &gdk.Pixbuf{glib.Take(unsafe.Pointer(c))}, nil
+}
+
+/*
+ * GtkImage
+ */
+
+// Image is a representation of GTK's GtkImage.
+type Image struct {
+ Widget
+}
+
+// native returns a pointer to the underlying GtkImage.
+func (v *Image) native() *C.GtkImage {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkImage(p)
+}
+
+func marshalImage(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapImage(obj), nil
+}
+
+func wrapImage(obj *glib.Object) *Image {
+ return &Image{Widget{glib.InitiallyUnowned{obj}}}
+}
+
+// ImageNew() is a wrapper around gtk_image_new().
+func ImageNew() (*Image, error) {
+ c := C.gtk_image_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapImage(obj), nil
+}
+
+// ImageNewFromFile() is a wrapper around gtk_image_new_from_file().
+func ImageNewFromFile(filename string) (*Image, error) {
+ cstr := C.CString(filename)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_image_new_from_file((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapImage(obj), nil
+}
+
+// ImageNewFromResource() is a wrapper around gtk_image_new_from_resource().
+func ImageNewFromResource(resourcePath string) (*Image, error) {
+ cstr := C.CString(resourcePath)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_image_new_from_resource((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapImage(obj), nil
+}
+
+// ImageNewFromPixbuf is a wrapper around gtk_image_new_from_pixbuf().
+func ImageNewFromPixbuf(pixbuf *gdk.Pixbuf) (*Image, error) {
+ c := C.gtk_image_new_from_pixbuf((*C.GdkPixbuf)(pixbuf.NativePrivate()))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapImage(obj), nil
+}
+
+// TODO(jrick) GtkIconSet
+/*
+func ImageNewFromIconSet() {
+}
+*/
+
+// TODO(jrick) GdkPixbufAnimation
+/*
+func ImageNewFromAnimation() {
+}
+*/
+
+// ImageNewFromIconName() is a wrapper around gtk_image_new_from_icon_name().
+func ImageNewFromIconName(iconName string, size IconSize) (*Image, error) {
+ cstr := C.CString(iconName)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_image_new_from_icon_name((*C.gchar)(cstr),
+ C.GtkIconSize(size))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapImage(obj), nil
+}
+
+// TODO(jrick) GIcon
+/*
+func ImageNewFromGIcon() {
+}
+*/
+
+// Clear() is a wrapper around gtk_image_clear().
+func (v *Image) Clear() {
+ C.gtk_image_clear(v.native())
+}
+
+// SetFromFile() is a wrapper around gtk_image_set_from_file().
+func (v *Image) SetFromFile(filename string) {
+ cstr := C.CString(filename)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_image_set_from_file(v.native(), (*C.gchar)(cstr))
+}
+
+// SetFromResource() is a wrapper around gtk_image_set_from_resource().
+func (v *Image) SetFromResource(resourcePath string) {
+ cstr := C.CString(resourcePath)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_image_set_from_resource(v.native(), (*C.gchar)(cstr))
+}
+
+// SetFromFixbuf is a wrapper around gtk_image_set_from_pixbuf().
+func (v *Image) SetFromPixbuf(pixbuf *gdk.Pixbuf) {
+ pbptr := (*C.GdkPixbuf)(unsafe.Pointer(pixbuf.Native()))
+ C.gtk_image_set_from_pixbuf(v.native(), pbptr)
+}
+
+// TODO(jrick) GtkIconSet
+/*
+func (v *Image) SetFromIconSet() {
+}
+*/
+
+// TODO(jrick) GdkPixbufAnimation
+/*
+func (v *Image) SetFromAnimation() {
+}
+*/
+
+// SetFromIconName() is a wrapper around gtk_image_set_from_icon_name().
+func (v *Image) SetFromIconName(iconName string, size IconSize) {
+ cstr := C.CString(iconName)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_image_set_from_icon_name(v.native(), (*C.gchar)(cstr),
+ C.GtkIconSize(size))
+}
+
+// TODO(jrick) GIcon
+/*
+func (v *Image) SetFromGIcon() {
+}
+*/
+
+// SetPixelSize() is a wrapper around gtk_image_set_pixel_size().
+func (v *Image) SetPixelSize(pixelSize int) {
+ C.gtk_image_set_pixel_size(v.native(), C.gint(pixelSize))
+}
+
+// GetStorageType() is a wrapper around gtk_image_get_storage_type().
+func (v *Image) GetStorageType() ImageType {
+ c := C.gtk_image_get_storage_type(v.native())
+ return ImageType(c)
+}
+
+// GetPixbuf() is a wrapper around gtk_image_get_pixbuf().
+func (v *Image) GetPixbuf() *gdk.Pixbuf {
+ c := C.gtk_image_get_pixbuf(v.native())
+ if c == nil {
+ return nil
+ }
+
+ pb := &gdk.Pixbuf{glib.Take(unsafe.Pointer(c))}
+ return pb
+}
+
+// TODO(jrick) GtkIconSet
+/*
+func (v *Image) GetIconSet() {
+}
+*/
+
+// TODO(jrick) GdkPixbufAnimation
+/*
+func (v *Image) GetAnimation() {
+}
+*/
+
+// GetIconName() is a wrapper around gtk_image_get_icon_name().
+func (v *Image) GetIconName() (string, IconSize) {
+ var iconName *C.gchar
+ var size C.GtkIconSize
+ C.gtk_image_get_icon_name(v.native(), &iconName, &size)
+ return goString(iconName), IconSize(size)
+}
+
+// TODO(jrick) GIcon
+/*
+func (v *Image) GetGIcon() {
+}
+*/
+
+// GetPixelSize() is a wrapper around gtk_image_get_pixel_size().
+func (v *Image) GetPixelSize() int {
+ c := C.gtk_image_get_pixel_size(v.native())
+ return int(c)
+}
+
+// added by terrak
+/*
+ * GtkLayout
+ */
+
+// Layout is a representation of GTK's GtkLayout.
+type Layout struct {
+ Container
+}
+
+// native returns a pointer to the underlying GtkDrawingArea.
+func (v *Layout) native() *C.GtkLayout {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkLayout(p)
+}
+
+func marshalLayout(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapLayout(obj), nil
+}
+
+func wrapLayout(obj *glib.Object) *Layout {
+ return &Layout{Container{Widget{glib.InitiallyUnowned{obj}}}}
+}
+
+// LayoutNew is a wrapper around gtk_layout_new().
+func LayoutNew(hadjustment, vadjustment *Adjustment) (*Layout, error) {
+ c := C.gtk_layout_new(hadjustment.native(), vadjustment.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapLayout(obj), nil
+}
+
+// Layout.Put is a wrapper around gtk_layout_put().
+func (v *Layout) Put(w IWidget, x, y int) {
+ C.gtk_layout_put(v.native(), w.toWidget(), C.gint(x), C.gint(y))
+}
+
+// Layout.Move is a wrapper around gtk_layout_move().
+func (v *Layout) Move(w IWidget, x, y int) {
+ C.gtk_layout_move(v.native(), w.toWidget(), C.gint(x), C.gint(y))
+}
+
+// Layout.SetSize is a wrapper around gtk_layout_set_size
+func (v *Layout) SetSize(width, height uint) {
+ C.gtk_layout_set_size(v.native(), C.guint(width), C.guint(height))
+}
+
+// Layout.GetSize is a wrapper around gtk_layout_get_size
+func (v *Layout) GetSize() (width, height uint) {
+ var w, h C.guint
+ C.gtk_layout_get_size(v.native(), &w, &h)
+ return uint(w), uint(h)
+}
+
+/*
+ * GtkLinkButton
+ */
+
+// LinkButton is a representation of GTK's GtkLinkButton.
+type LinkButton struct {
+ Button
+}
+
+// native returns a pointer to the underlying GtkLinkButton.
+func (v *LinkButton) native() *C.GtkLinkButton {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkLinkButton(p)
+}
+
+func marshalLinkButton(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapLinkButton(obj), nil
+}
+
+func wrapLinkButton(obj *glib.Object) *LinkButton {
+ actionable := wrapActionable(obj)
+ return &LinkButton{Button{Bin{Container{Widget{
+ glib.InitiallyUnowned{obj}}}}, actionable}}
+}
+
+// LinkButtonNew is a wrapper around gtk_link_button_new().
+func LinkButtonNew(label string) (*LinkButton, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_link_button_new((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapLinkButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// LinkButtonNewWithLabel is a wrapper around gtk_link_button_new_with_label().
+func LinkButtonNewWithLabel(uri, label string) (*LinkButton, error) {
+ curi := C.CString(uri)
+ defer C.free(unsafe.Pointer(curi))
+ clabel := C.CString(label)
+ defer C.free(unsafe.Pointer(clabel))
+ c := C.gtk_link_button_new_with_label((*C.gchar)(curi), (*C.gchar)(clabel))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapLinkButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetUri is a wrapper around gtk_link_button_get_uri().
+func (v *LinkButton) GetUri() string {
+ c := C.gtk_link_button_get_uri(v.native())
+ return goString(c)
+}
+
+// SetUri is a wrapper around gtk_link_button_set_uri().
+func (v *LinkButton) SetUri(uri string) {
+ cstr := C.CString(uri)
+ C.gtk_link_button_set_uri(v.native(), (*C.gchar)(cstr))
+}
+
+/*
+ * GtkListStore
+ */
+
+// ListStore is a representation of GTK's GtkListStore.
+type ListStore struct {
+ *glib.Object
+
+ // Interfaces
+ TreeModel
+}
+
+// native returns a pointer to the underlying GtkListStore.
+func (v *ListStore) native() *C.GtkListStore {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkListStore(p)
+}
+
+func marshalListStore(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapListStore(obj), nil
+}
+
+func wrapListStore(obj *glib.Object) *ListStore {
+ tm := wrapTreeModel(obj)
+ return &ListStore{obj, *tm}
+}
+
+func (v *ListStore) toTreeModel() *C.GtkTreeModel {
+ if v == nil {
+ return nil
+ }
+ return C.toGtkTreeModel(unsafe.Pointer(v.GObject))
+}
+
+// ListStoreNew is a wrapper around gtk_list_store_newv().
+func ListStoreNew(types ...glib.Type) (*ListStore, error) {
+ gtypes := C.alloc_types(C.int(len(types)))
+ for n, val := range types {
+ C.set_type(gtypes, C.int(n), C.GType(val))
+ }
+ defer C.g_free(C.gpointer(gtypes))
+ c := C.gtk_list_store_newv(C.gint(len(types)), gtypes)
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ ls := wrapListStore(glib.Take(unsafe.Pointer(c)))
+ return ls, nil
+}
+
+// Remove is a wrapper around gtk_list_store_remove().
+func (v *ListStore) Remove(iter *TreeIter) bool {
+ c := C.gtk_list_store_remove(v.native(), iter.native())
+ return gobool(c)
+}
+
+// TODO(jrick)
+/*
+func (v *ListStore) SetColumnTypes(types ...glib.Type) {
+}
+*/
+
+// Set() is a wrapper around gtk_list_store_set_value() but provides
+// a function similar to gtk_list_store_set() in that multiple columns
+// may be set by one call. The length of columns and values slices must
+// match, or Set() will return a non-nil error.
+//
+// As an example, a call to:
+// store.Set(iter, []int{0, 1}, []interface{}{"Foo", "Bar"})
+// is functionally equivalent to calling the native C GTK function:
+// gtk_list_store_set(store, iter, 0, "Foo", 1, "Bar", -1);
+func (v *ListStore) Set(iter *TreeIter, columns []int, values []interface{}) error {
+ if len(columns) != len(values) {
+ return errors.New("columns and values lengths do not match")
+ }
+ for i, val := range values {
+ v.SetValue(iter, columns[i], val)
+ }
+ return nil
+}
+
+// SetValue is a wrapper around gtk_list_store_set_value().
+func (v *ListStore) SetValue(iter *TreeIter, column int, value interface{}) error {
+ switch value.(type) {
+ case *gdk.Pixbuf:
+ pix := value.(*gdk.Pixbuf)
+ C._gtk_list_store_set(v.native(), iter.native(), C.gint(column), unsafe.Pointer(pix.Native()))
+
+ default:
+ gv, err := glib.GValue(value)
+ if err != nil {
+ return err
+ }
+
+ C.gtk_list_store_set_value(v.native(), iter.native(),
+ C.gint(column),
+ (*C.GValue)(unsafe.Pointer(gv.Native())))
+ }
+
+ return nil
+}
+
+// func (v *ListStore) Model(model ITreeModel) {
+// obj := &glib.Object{glib.ToGObject(unsafe.Pointer(model.toTreeModel()))}
+// v.TreeModel = *wrapTreeModel(obj)
+//}
+
+// SetSortColumnId() is a wrapper around gtk_tree_sortable_set_sort_column_id().
+func (v *ListStore) SetSortColumnId(column int, order SortType) {
+ sort := C.toGtkTreeSortable(unsafe.Pointer(v.Native()))
+ C.gtk_tree_sortable_set_sort_column_id(sort, C.gint(column), C.GtkSortType(order))
+}
+
+func (v *ListStore) SetCols(iter *TreeIter, cols Cols) error {
+ for key, value := range cols {
+ err := v.SetValue(iter, key, value)
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+// Convenient map for Columns and values (See ListStore, TreeStore)
+type Cols map[int]interface{}
+
+// InsertWithValues() is a wrapper around gtk_list_store_insert_with_valuesv().
+func (v *ListStore) InsertWithValues(iter *TreeIter, position int, inColumns []int, inValues []interface{}) error {
+ length := len(inColumns)
+ if len(inValues) < length {
+ length = len(inValues)
+ }
+
+ var cColumns []C.gint
+ var cValues []C.GValue
+ for i := 0; i < length; i++ {
+ cColumns = append(cColumns, C.gint(inColumns[i]))
+
+ gv, err := glib.GValue(inValues[i])
+ if err != nil {
+ return err
+ }
+
+ var cvp *C.GValue = (*C.GValue)(gv.Native())
+ cValues = append(cValues, *cvp)
+ }
+ var cColumnsPointer *C.gint = &cColumns[0]
+ var cValuesPointer *C.GValue = &cValues[0]
+
+ C.gtk_list_store_insert_with_valuesv(v.native(), iter.native(), C.gint(position), cColumnsPointer, cValuesPointer, C.gint(length))
+
+ return nil
+}
+
+// InsertBefore() is a wrapper around gtk_list_store_insert_before().
+func (v *ListStore) InsertBefore(sibling *TreeIter) *TreeIter {
+ var ti C.GtkTreeIter
+ C.gtk_list_store_insert_before(v.native(), &ti, sibling.native())
+ iter := &TreeIter{ti}
+ return iter
+}
+
+// InsertAfter() is a wrapper around gtk_list_store_insert_after().
+func (v *ListStore) InsertAfter(sibling *TreeIter) *TreeIter {
+ var ti C.GtkTreeIter
+ C.gtk_list_store_insert_after(v.native(), &ti, sibling.native())
+ iter := &TreeIter{ti}
+ return iter
+}
+
+// Prepend() is a wrapper around gtk_list_store_prepend().
+func (v *ListStore) Prepend() *TreeIter {
+ var ti C.GtkTreeIter
+ C.gtk_list_store_prepend(v.native(), &ti)
+ iter := &TreeIter{ti}
+ return iter
+}
+
+// Append() is a wrapper around gtk_list_store_append().
+func (v *ListStore) Append() *TreeIter {
+ var ti C.GtkTreeIter
+ C.gtk_list_store_append(v.native(), &ti)
+ iter := &TreeIter{ti}
+ return iter
+}
+
+// Clear() is a wrapper around gtk_list_store_clear().
+func (v *ListStore) Clear() {
+ C.gtk_list_store_clear(v.native())
+}
+
+// IterIsValid() is a wrapper around gtk_list_store_iter_is_valid().
+func (v *ListStore) IterIsValid(iter *TreeIter) bool {
+ c := C.gtk_list_store_iter_is_valid(v.native(), iter.native())
+ return gobool(c)
+}
+
+// TODO(jrick)
+/*
+func (v *ListStore) Reorder(newOrder []int) {
+}
+*/
+
+// Swap() is a wrapper around gtk_list_store_swap().
+func (v *ListStore) Swap(a, b *TreeIter) {
+ C.gtk_list_store_swap(v.native(), a.native(), b.native())
+}
+
+// MoveBefore() is a wrapper around gtk_list_store_move_before().
+func (v *ListStore) MoveBefore(iter, position *TreeIter) {
+ C.gtk_list_store_move_before(v.native(), iter.native(),
+ position.native())
+}
+
+// MoveAfter() is a wrapper around gtk_list_store_move_after().
+func (v *ListStore) MoveAfter(iter, position *TreeIter) {
+ C.gtk_list_store_move_after(v.native(), iter.native(),
+ position.native())
+}
+
+/*
+ * GtkMenuBar
+ */
+
+// MenuBar is a representation of GTK's GtkMenuBar.
+type MenuBar struct {
+ MenuShell
+}
+
+// native() returns a pointer to the underlying GtkMenuBar.
+func (v *MenuBar) native() *C.GtkMenuBar {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkMenuBar(p)
+}
+
+func marshalMenuBar(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapMenuBar(obj), nil
+}
+
+func wrapMenuBar(obj *glib.Object) *MenuBar {
+ return &MenuBar{MenuShell{Container{Widget{glib.InitiallyUnowned{obj}}}}}
+}
+
+// MenuBarNew() is a wrapper around gtk_menu_bar_new().
+func MenuBarNew() (*MenuBar, error) {
+ c := C.gtk_menu_bar_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapMenuBar(glib.Take(unsafe.Pointer(c))), nil
+}
+
+/*
+ * GtkMenuButton
+ */
+
+// MenuButton is a representation of GTK's GtkMenuButton.
+type MenuButton struct {
+ ToggleButton
+}
+
+// native returns a pointer to the underlying GtkMenuButton.
+func (v *MenuButton) native() *C.GtkMenuButton {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkMenuButton(p)
+}
+
+func marshalMenuButton(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapMenuButton(obj), nil
+}
+
+func wrapMenuButton(obj *glib.Object) *MenuButton {
+ actionable := wrapActionable(obj)
+ return &MenuButton{ToggleButton{Button{Bin{Container{Widget{
+ glib.InitiallyUnowned{obj}}}}, actionable}}}
+}
+
+// MenuButtonNew is a wrapper around gtk_menu_button_new().
+func MenuButtonNew() (*MenuButton, error) {
+ c := C.gtk_menu_button_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapMenuButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SetPopup is a wrapper around gtk_menu_button_set_popup().
+func (v *MenuButton) SetPopup(menu IMenu) {
+ C.gtk_menu_button_set_popup(v.native(), menu.toWidget())
+}
+
+// GetPopup is a wrapper around gtk_menu_button_get_popup().
+func (v *MenuButton) GetPopup() *Menu {
+ c := C.gtk_menu_button_get_popup(v.native())
+ if c == nil {
+ return nil
+ }
+ return wrapMenu(glib.Take(unsafe.Pointer(c)))
+}
+
+// SetMenuModel is a wrapper around gtk_menu_button_set_menu_model().
+func (v *MenuButton) SetMenuModel(menuModel *glib.MenuModel) {
+ C.gtk_menu_button_set_menu_model(v.native(), C.toGMenuModel(unsafe.Pointer(menuModel.Native())))
+}
+
+// GetMenuModel is a wrapper around gtk_menu_button_get_menu_model().
+func (v *MenuButton) GetMenuModel() *glib.MenuModel {
+ c := C.gtk_menu_button_get_menu_model(v.native())
+ if c == nil {
+ return nil
+ }
+ return &glib.MenuModel{glib.Take(unsafe.Pointer(c))}
+}
+
+// SetDirection is a wrapper around gtk_menu_button_set_direction().
+func (v *MenuButton) SetDirection(direction ArrowType) {
+ C.gtk_menu_button_set_direction(v.native(), C.GtkArrowType(direction))
+}
+
+// GetDirection is a wrapper around gtk_menu_button_get_direction().
+func (v *MenuButton) GetDirection() ArrowType {
+ c := C.gtk_menu_button_get_direction(v.native())
+ return ArrowType(c)
+}
+
+// SetAlignWidget is a wrapper around gtk_menu_button_set_align_widget().
+func (v *MenuButton) SetAlignWidget(alignWidget IWidget) {
+ C.gtk_menu_button_set_align_widget(v.native(), alignWidget.toWidget())
+}
+
+// GetAlignWidget is a wrapper around gtk_menu_button_get_align_widget().
+func (v *MenuButton) GetAlignWidget() *Widget {
+ c := C.gtk_menu_button_get_align_widget(v.native())
+ if c == nil {
+ return nil
+ }
+ return wrapWidget(glib.Take(unsafe.Pointer(c)))
+}
+
+/*
+ * GtkMenuItem
+ */
+
+// MenuItem is a representation of GTK's GtkMenuItem.
+type MenuItem struct {
+ Bin
+}
+
+// IMenuItem is an interface type implemented by all structs
+// embedding a MenuItem. It is meant to be used as an argument type
+// for wrapper functions that wrap around a C GTK function taking a
+// GtkMenuItem.
+type IMenuItem interface {
+ toMenuItem() *C.GtkMenuItem
+ toWidget() *C.GtkWidget
+}
+
+// native returns a pointer to the underlying GtkMenuItem.
+func (v *MenuItem) native() *C.GtkMenuItem {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkMenuItem(p)
+}
+
+func (v *MenuItem) toMenuItem() *C.GtkMenuItem {
+ if v == nil {
+ return nil
+ }
+ return v.native()
+}
+
+func marshalMenuItem(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapMenuItem(obj), nil
+}
+
+func wrapMenuItem(obj *glib.Object) *MenuItem {
+ return &MenuItem{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
+}
+
+// MenuItemNew() is a wrapper around gtk_menu_item_new().
+func MenuItemNew() (*MenuItem, error) {
+ c := C.gtk_menu_item_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapMenuItem(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// MenuItemNewWithLabel() is a wrapper around gtk_menu_item_new_with_label().
+func MenuItemNewWithLabel(label string) (*MenuItem, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_menu_item_new_with_label((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapMenuItem(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// MenuItemNewWithMnemonic() is a wrapper around
+// gtk_menu_item_new_with_mnemonic().
+func MenuItemNewWithMnemonic(label string) (*MenuItem, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_menu_item_new_with_mnemonic((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapMenuItem(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SetSubmenu() is a wrapper around gtk_menu_item_set_submenu().
+func (v *MenuItem) SetSubmenu(submenu IWidget) {
+ C.gtk_menu_item_set_submenu(v.native(), submenu.toWidget())
+}
+
+// Sets text on the menu_item label
+func (v *MenuItem) SetLabel(label string) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_menu_item_set_label(v.native(), (*C.gchar)(cstr))
+}
+
+// Gets text on the menu_item label
+func (v *MenuItem) GetLabel() string {
+ l := C.gtk_menu_item_get_label(v.native())
+ return goString(l)
+}
+
+/*
+ * GtkMessageDialog
+ */
+
+// MessageDialog is a representation of GTK's GtkMessageDialog.
+type MessageDialog struct {
+ Dialog
+}
+
+// native returns a pointer to the underlying GtkMessageDialog.
+func (v *MessageDialog) native() *C.GtkMessageDialog {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkMessageDialog(p)
+}
+
+func marshalMessageDialog(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapMessageDialog(obj), nil
+}
+
+func wrapMessageDialog(obj *glib.Object) *MessageDialog {
+ return &MessageDialog{Dialog{Window{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}}}
+}
+
+// MessageDialogNew() is a wrapper around gtk_message_dialog_new().
+// The text is created and formatted by the format specifier and any
+// additional arguments.
+func MessageDialogNew(parent IWindow, flags DialogFlags, mType MessageType, buttons ButtonsType, format string, a ...interface{}) *MessageDialog {
+ s := fmt.Sprintf(format, a...)
+ cstr := C.CString(s)
+ defer C.free(unsafe.Pointer(cstr))
+ var w *C.GtkWindow = nil
+ if parent != nil {
+ w = parent.toWindow()
+ }
+ c := C._gtk_message_dialog_new(w,
+ C.GtkDialogFlags(flags), C.GtkMessageType(mType),
+ C.GtkButtonsType(buttons), cstr)
+ return wrapMessageDialog(glib.Take(unsafe.Pointer(c)))
+}
+
+// MessageDialogNewWithMarkup is a wrapper around
+// gtk_message_dialog_new_with_markup().
+func MessageDialogNewWithMarkup(parent IWindow, flags DialogFlags, mType MessageType, buttons ButtonsType, format string, a ...interface{}) *MessageDialog {
+ s := fmt.Sprintf(format, a...)
+ cstr := C.CString(s)
+ defer C.free(unsafe.Pointer(cstr))
+ var w *C.GtkWindow = nil
+ if parent != nil {
+ w = parent.toWindow()
+ }
+ c := C._gtk_message_dialog_new_with_markup(w,
+ C.GtkDialogFlags(flags), C.GtkMessageType(mType),
+ C.GtkButtonsType(buttons), cstr)
+ return wrapMessageDialog(glib.Take(unsafe.Pointer(c)))
+}
+
+// SetMarkup is a wrapper around gtk_message_dialog_set_markup().
+func (v *MessageDialog) SetMarkup(str string) {
+ cstr := C.CString(str)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_message_dialog_set_markup(v.native(), (*C.gchar)(cstr))
+}
+
+// FormatSecondaryText is a wrapper around
+// gtk_message_dialog_format_secondary_text().
+func (v *MessageDialog) FormatSecondaryText(format string, a ...interface{}) {
+ s := fmt.Sprintf(format, a...)
+ cstr := C.CString(s)
+ defer C.free(unsafe.Pointer(cstr))
+ C._gtk_message_dialog_format_secondary_text(v.native(),
+ (*C.gchar)(cstr))
+}
+
+// FormatSecondaryMarkup is a wrapper around
+// gtk_message_dialog_format_secondary_text().
+func (v *MessageDialog) FormatSecondaryMarkup(format string, a ...interface{}) {
+ s := fmt.Sprintf(format, a...)
+ cstr := C.CString(s)
+ defer C.free(unsafe.Pointer(cstr))
+ C._gtk_message_dialog_format_secondary_markup(v.native(),
+ (*C.gchar)(cstr))
+}
+
+/*
+ * GtkNotebook
+ */
+
+// Notebook is a representation of GTK's GtkNotebook.
+type Notebook struct {
+ Container
+}
+
+// native returns a pointer to the underlying GtkNotebook.
+func (v *Notebook) native() *C.GtkNotebook {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkNotebook(p)
+}
+
+func marshalNotebook(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapNotebook(obj), nil
+}
+
+func wrapNotebook(obj *glib.Object) *Notebook {
+ return &Notebook{Container{Widget{glib.InitiallyUnowned{obj}}}}
+}
+
+// NotebookNew() is a wrapper around gtk_notebook_new().
+func NotebookNew() (*Notebook, error) {
+ c := C.gtk_notebook_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapNotebook(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// AppendPage() is a wrapper around gtk_notebook_append_page().
+func (v *Notebook) AppendPage(child IWidget, tabLabel IWidget) int {
+ cTabLabel := nullableWidget(tabLabel)
+ c := C.gtk_notebook_append_page(v.native(), child.toWidget(), cTabLabel)
+ return int(c)
+}
+
+// AppendPageMenu() is a wrapper around gtk_notebook_append_page_menu().
+func (v *Notebook) AppendPageMenu(child IWidget, tabLabel IWidget, menuLabel IWidget) int {
+ c := C.gtk_notebook_append_page_menu(v.native(), child.toWidget(),
+ tabLabel.toWidget(), menuLabel.toWidget())
+ return int(c)
+}
+
+// PrependPage() is a wrapper around gtk_notebook_prepend_page().
+func (v *Notebook) PrependPage(child IWidget, tabLabel IWidget) int {
+ cTabLabel := nullableWidget(tabLabel)
+ c := C.gtk_notebook_prepend_page(v.native(), child.toWidget(), cTabLabel)
+ return int(c)
+}
+
+// PrependPageMenu() is a wrapper around gtk_notebook_prepend_page_menu().
+func (v *Notebook) PrependPageMenu(child IWidget, tabLabel IWidget, menuLabel IWidget) int {
+ c := C.gtk_notebook_prepend_page_menu(v.native(), child.toWidget(),
+ tabLabel.toWidget(), menuLabel.toWidget())
+ return int(c)
+}
+
+// InsertPage() is a wrapper around gtk_notebook_insert_page().
+func (v *Notebook) InsertPage(child IWidget, tabLabel IWidget, position int) int {
+ label := nullableWidget(tabLabel)
+ c := C.gtk_notebook_insert_page(v.native(), child.toWidget(), label, C.gint(position))
+
+ return int(c)
+}
+
+// InsertPageMenu() is a wrapper around gtk_notebook_insert_page_menu().
+func (v *Notebook) InsertPageMenu(child IWidget, tabLabel IWidget, menuLabel IWidget, position int) int {
+ c := C.gtk_notebook_insert_page_menu(v.native(), child.toWidget(),
+ tabLabel.toWidget(), menuLabel.toWidget(), C.gint(position))
+ return int(c)
+}
+
+// RemovePage() is a wrapper around gtk_notebook_remove_page().
+func (v *Notebook) RemovePage(pageNum int) {
+ C.gtk_notebook_remove_page(v.native(), C.gint(pageNum))
+}
+
+// PageNum() is a wrapper around gtk_notebook_page_num().
+func (v *Notebook) PageNum(child IWidget) int {
+ c := C.gtk_notebook_page_num(v.native(), child.toWidget())
+ return int(c)
+}
+
+// NextPage() is a wrapper around gtk_notebook_next_page().
+func (v *Notebook) NextPage() {
+ C.gtk_notebook_next_page(v.native())
+}
+
+// PrevPage() is a wrapper around gtk_notebook_prev_page().
+func (v *Notebook) PrevPage() {
+ C.gtk_notebook_prev_page(v.native())
+}
+
+// ReorderChild() is a wrapper around gtk_notebook_reorder_child().
+func (v *Notebook) ReorderChild(child IWidget, position int) {
+ C.gtk_notebook_reorder_child(v.native(), child.toWidget(),
+ C.gint(position))
+}
+
+// SetTabPos() is a wrapper around gtk_notebook_set_tab_pos().
+func (v *Notebook) SetTabPos(pos PositionType) {
+ C.gtk_notebook_set_tab_pos(v.native(), C.GtkPositionType(pos))
+}
+
+// SetShowTabs() is a wrapper around gtk_notebook_set_show_tabs().
+func (v *Notebook) SetShowTabs(showTabs bool) {
+ C.gtk_notebook_set_show_tabs(v.native(), gbool(showTabs))
+}
+
+// SetShowBorder() is a wrapper around gtk_notebook_set_show_border().
+func (v *Notebook) SetShowBorder(showBorder bool) {
+ C.gtk_notebook_set_show_border(v.native(), gbool(showBorder))
+}
+
+// SetScrollable() is a wrapper around gtk_notebook_set_scrollable().
+func (v *Notebook) SetScrollable(scrollable bool) {
+ C.gtk_notebook_set_scrollable(v.native(), gbool(scrollable))
+}
+
+// PopupEnable() is a wrapper around gtk_notebook_popup_enable().
+func (v *Notebook) PopupEnable() {
+ C.gtk_notebook_popup_enable(v.native())
+}
+
+// PopupDisable() is a wrapper around gtk_notebook_popup_disable().
+func (v *Notebook) PopupDisable() {
+ C.gtk_notebook_popup_disable(v.native())
+}
+
+// GetCurrentPage() is a wrapper around gtk_notebook_get_current_page().
+func (v *Notebook) GetCurrentPage() int {
+ c := C.gtk_notebook_get_current_page(v.native())
+ return int(c)
+}
+
+// GetMenuLabel() is a wrapper around gtk_notebook_get_menu_label().
+func (v *Notebook) GetMenuLabel(child IWidget) (*Widget, error) {
+ c := C.gtk_notebook_get_menu_label(v.native(), child.toWidget())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapWidget(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetNthPage() is a wrapper around gtk_notebook_get_nth_page().
+func (v *Notebook) GetNthPage(pageNum int) (*Widget, error) {
+ c := C.gtk_notebook_get_nth_page(v.native(), C.gint(pageNum))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapWidget(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetNPages() is a wrapper around gtk_notebook_get_n_pages().
+func (v *Notebook) GetNPages() int {
+ c := C.gtk_notebook_get_n_pages(v.native())
+ return int(c)
+}
+
+// GetTabLabel() is a wrapper around gtk_notebook_get_tab_label().
+func (v *Notebook) GetTabLabel(child IWidget) (*Widget, error) {
+ c := C.gtk_notebook_get_tab_label(v.native(), child.toWidget())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapWidget(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SetMenuLabel() is a wrapper around gtk_notebook_set_menu_label().
+func (v *Notebook) SetMenuLabel(child, menuLabel IWidget) {
+ C.gtk_notebook_set_menu_label(v.native(), child.toWidget(),
+ menuLabel.toWidget())
+}
+
+// SetMenuLabelText() is a wrapper around gtk_notebook_set_menu_label_text().
+func (v *Notebook) SetMenuLabelText(child IWidget, menuText string) {
+ cstr := C.CString(menuText)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_notebook_set_menu_label_text(v.native(), child.toWidget(),
+ (*C.gchar)(cstr))
+}
+
+// SetTabLabel() is a wrapper around gtk_notebook_set_tab_label().
+func (v *Notebook) SetTabLabel(child, tabLabel IWidget) {
+ C.gtk_notebook_set_tab_label(v.native(), child.toWidget(),
+ tabLabel.toWidget())
+}
+
+// SetTabLabelText() is a wrapper around gtk_notebook_set_tab_label_text().
+func (v *Notebook) SetTabLabelText(child IWidget, tabText string) {
+ cstr := C.CString(tabText)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_notebook_set_tab_label_text(v.native(), child.toWidget(),
+ (*C.gchar)(cstr))
+}
+
+// SetTabReorderable() is a wrapper around gtk_notebook_set_tab_reorderable().
+func (v *Notebook) SetTabReorderable(child IWidget, reorderable bool) {
+ C.gtk_notebook_set_tab_reorderable(v.native(), child.toWidget(),
+ gbool(reorderable))
+}
+
+// SetTabDetachable() is a wrapper around gtk_notebook_set_tab_detachable().
+func (v *Notebook) SetTabDetachable(child IWidget, detachable bool) {
+ C.gtk_notebook_set_tab_detachable(v.native(), child.toWidget(),
+ gbool(detachable))
+}
+
+// GetMenuLabelText() is a wrapper around gtk_notebook_get_menu_label_text().
+func (v *Notebook) GetMenuLabelText(child IWidget) (string, error) {
+ c := C.gtk_notebook_get_menu_label_text(v.native(), child.toWidget())
+ if c == nil {
+ return "", errors.New("No menu label for widget")
+ }
+ return goString(c), nil
+}
+
+// GetScrollable() is a wrapper around gtk_notebook_get_scrollable().
+func (v *Notebook) GetScrollable() bool {
+ c := C.gtk_notebook_get_scrollable(v.native())
+ return gobool(c)
+}
+
+// GetShowBorder() is a wrapper around gtk_notebook_get_show_border().
+func (v *Notebook) GetShowBorder() bool {
+ c := C.gtk_notebook_get_show_border(v.native())
+ return gobool(c)
+}
+
+// GetShowTabs() is a wrapper around gtk_notebook_get_show_tabs().
+func (v *Notebook) GetShowTabs() bool {
+ c := C.gtk_notebook_get_show_tabs(v.native())
+ return gobool(c)
+}
+
+// GetTabLabelText() is a wrapper around gtk_notebook_get_tab_label_text().
+func (v *Notebook) GetTabLabelText(child IWidget) (string, error) {
+ c := C.gtk_notebook_get_tab_label_text(v.native(), child.toWidget())
+ if c == nil {
+ return "", errors.New("No tab label for widget")
+ }
+ return goString(c), nil
+}
+
+// GetTabPos() is a wrapper around gtk_notebook_get_tab_pos().
+func (v *Notebook) GetTabPos() PositionType {
+ c := C.gtk_notebook_get_tab_pos(v.native())
+ return PositionType(c)
+}
+
+// GetTabReorderable() is a wrapper around gtk_notebook_get_tab_reorderable().
+func (v *Notebook) GetTabReorderable(child IWidget) bool {
+ c := C.gtk_notebook_get_tab_reorderable(v.native(), child.toWidget())
+ return gobool(c)
+}
+
+// GetTabDetachable() is a wrapper around gtk_notebook_get_tab_detachable().
+func (v *Notebook) GetTabDetachable(child IWidget) bool {
+ c := C.gtk_notebook_get_tab_detachable(v.native(), child.toWidget())
+ return gobool(c)
+}
+
+// SetCurrentPage() is a wrapper around gtk_notebook_set_current_page().
+func (v *Notebook) SetCurrentPage(pageNum int) {
+ C.gtk_notebook_set_current_page(v.native(), C.gint(pageNum))
+}
+
+// SetGroupName() is a wrapper around gtk_notebook_set_group_name().
+func (v *Notebook) SetGroupName(groupName string) {
+ cstr := C.CString(groupName)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_notebook_set_group_name(v.native(), (*C.gchar)(cstr))
+}
+
+// GetGroupName() is a wrapper around gtk_notebook_get_group_name().
+func (v *Notebook) GetGroupName() (string, error) {
+ c := C.gtk_notebook_get_group_name(v.native())
+ if c == nil {
+ return "", errors.New("No group name")
+ }
+ return goString(c), nil
+}
+
+// SetActionWidget() is a wrapper around gtk_notebook_set_action_widget().
+func (v *Notebook) SetActionWidget(widget IWidget, packType PackType) {
+ C.gtk_notebook_set_action_widget(v.native(), widget.toWidget(),
+ C.GtkPackType(packType))
+}
+
+// GetActionWidget() is a wrapper around gtk_notebook_get_action_widget().
+func (v *Notebook) GetActionWidget(packType PackType) (*Widget, error) {
+ c := C.gtk_notebook_get_action_widget(v.native(),
+ C.GtkPackType(packType))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapWidget(glib.Take(unsafe.Pointer(c))), nil
+}
+
+/*
+ * GtkOffscreenWindow
+ */
+
+// OffscreenWindow is a representation of GTK's GtkOffscreenWindow.
+type OffscreenWindow struct {
+ Window
+}
+
+// native returns a pointer to the underlying GtkOffscreenWindow.
+func (v *OffscreenWindow) native() *C.GtkOffscreenWindow {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkOffscreenWindow(p)
+}
+
+func marshalOffscreenWindow(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapOffscreenWindow(obj), nil
+}
+
+func wrapOffscreenWindow(obj *glib.Object) *OffscreenWindow {
+ return &OffscreenWindow{Window{Bin{Container{Widget{
+ glib.InitiallyUnowned{obj}}}}}}
+}
+
+// OffscreenWindowNew is a wrapper around gtk_offscreen_window_new().
+func OffscreenWindowNew() (*OffscreenWindow, error) {
+ c := C.gtk_offscreen_window_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapOffscreenWindow(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetSurface is a wrapper around gtk_offscreen_window_get_surface().
+// The returned surface is safe to use over window resizes.
+func (v *OffscreenWindow) GetSurface() (*cairo.Surface, error) {
+ c := C.gtk_offscreen_window_get_surface(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ cairoPtr := (uintptr)(unsafe.Pointer(c))
+ s := cairo.NewSurface(cairoPtr, true)
+ return s, nil
+}
+
+// GetPixbuf is a wrapper around gtk_offscreen_window_get_pixbuf().
+func (v *OffscreenWindow) GetPixbuf() (*gdk.Pixbuf, error) {
+ c := C.gtk_offscreen_window_get_pixbuf(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ // Pixbuf is returned with ref count of 1, so don't increment.
+ // Is it a floating reference?
+ pb := &gdk.Pixbuf{glib.Take(unsafe.Pointer(c))}
+ return pb, nil
+}
+
+/*
+ * GtkOrientable
+ */
+
+// Orientable is a representation of GTK's GtkOrientable GInterface.
+type Orientable struct {
+ *glib.Object
+}
+
+// IOrientable is an interface type implemented by all structs
+// embedding an Orientable. It is meant to be used as an argument type
+// for wrapper functions that wrap around a C GTK function taking a
+// GtkOrientable.
+type IOrientable interface {
+ toOrientable() *C.GtkOrientable
+}
+
+// native returns a pointer to the underlying GObject as a GtkOrientable.
+func (v *Orientable) native() *C.GtkOrientable {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkOrientable(p)
+}
+
+func marshalOrientable(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapOrientable(obj), nil
+}
+
+func wrapOrientable(obj *glib.Object) *Orientable {
+ return &Orientable{obj}
+}
+
+// GetOrientation() is a wrapper around gtk_orientable_get_orientation().
+func (v *Orientable) GetOrientation() Orientation {
+ c := C.gtk_orientable_get_orientation(v.native())
+ return Orientation(c)
+}
+
+// SetOrientation() is a wrapper around gtk_orientable_set_orientation().
+func (v *Orientable) SetOrientation(orientation Orientation) {
+ C.gtk_orientable_set_orientation(v.native(),
+ C.GtkOrientation(orientation))
+}
+
+/*
+ * GtkOverlay
+ */
+
+// Overlay is a representation of GTK's GtkOverlay.
+type Overlay struct {
+ Bin
+}
+
+// native returns a pointer to the underlying GtkOverlay.
+func (v *Overlay) native() *C.GtkOverlay {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkOverlay(p)
+}
+
+func marshalOverlay(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapOverlay(obj), nil
+}
+
+func wrapOverlay(obj *glib.Object) *Overlay {
+ return &Overlay{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
+}
+
+// OverlayNew() is a wrapper around gtk_overlay_new().
+func OverlayNew() (*Overlay, error) {
+ c := C.gtk_overlay_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapOverlay(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// AddOverlay() is a wrapper around gtk_overlay_add_overlay().
+func (v *Overlay) AddOverlay(widget IWidget) {
+ C.gtk_overlay_add_overlay(v.native(), widget.toWidget())
+}
+
+/*
+ * GtkPaned
+ */
+
+// Paned is a representation of GTK's GtkPaned.
+type Paned struct {
+ Bin
+}
+
+// native returns a pointer to the underlying GtkPaned.
+func (v *Paned) native() *C.GtkPaned {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkPaned(p)
+}
+
+func marshalPaned(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapPaned(obj), nil
+}
+
+func wrapPaned(obj *glib.Object) *Paned {
+ return &Paned{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
+}
+
+// PanedNew() is a wrapper around gtk_paned_new().
+func PanedNew(orientation Orientation) (*Paned, error) {
+ c := C.gtk_paned_new(C.GtkOrientation(orientation))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapPaned(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// Add1() is a wrapper around gtk_paned_add1().
+func (v *Paned) Add1(child IWidget) {
+ C.gtk_paned_add1(v.native(), child.toWidget())
+}
+
+// Add2() is a wrapper around gtk_paned_add2().
+func (v *Paned) Add2(child IWidget) {
+ C.gtk_paned_add2(v.native(), child.toWidget())
+}
+
+// Pack1() is a wrapper around gtk_paned_pack1().
+func (v *Paned) Pack1(child IWidget, resize, shrink bool) {
+ C.gtk_paned_pack1(v.native(), child.toWidget(), gbool(resize), gbool(shrink))
+}
+
+// Pack2() is a wrapper around gtk_paned_pack2().
+func (v *Paned) Pack2(child IWidget, resize, shrink bool) {
+ C.gtk_paned_pack2(v.native(), child.toWidget(), gbool(resize), gbool(shrink))
+}
+
+// SetPosition() is a wrapper around gtk_paned_set_position().
+func (v *Paned) SetPosition(position int) {
+ C.gtk_paned_set_position(v.native(), C.gint(position))
+}
+
+// GetChild1() is a wrapper around gtk_paned_get_child1().
+func (v *Paned) GetChild1() (*Widget, error) {
+ c := C.gtk_paned_get_child1(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapWidget(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetChild2() is a wrapper around gtk_paned_get_child2().
+func (v *Paned) GetChild2() (*Widget, error) {
+ c := C.gtk_paned_get_child2(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapWidget(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetHandleWindow() is a wrapper around gtk_paned_get_handle_window().
+func (v *Paned) GetHandleWindow() (*Window, error) {
+ c := C.gtk_paned_get_handle_window(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapWindow(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetPosition() is a wrapper around gtk_paned_get_position().
+func (v *Paned) GetPosition() int {
+ return int(C.gtk_paned_get_position(v.native()))
+}
+
+/*
+ * GtkProgressBar
+ */
+
+// ProgressBar is a representation of GTK's GtkProgressBar.
+type ProgressBar struct {
+ Widget
+ // Interfaces
+ Orientable
+}
+
+// native returns a pointer to the underlying GtkProgressBar.
+func (v *ProgressBar) native() *C.GtkProgressBar {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkProgressBar(p)
+}
+
+func marshalProgressBar(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapProgressBar(obj), nil
+}
+
+func wrapProgressBar(obj *glib.Object) *ProgressBar {
+ o := wrapOrientable(obj)
+ return &ProgressBar{Widget{glib.InitiallyUnowned{obj}}, *o}
+}
+
+// ProgressBarNew() is a wrapper around gtk_progress_bar_new().
+func ProgressBarNew() (*ProgressBar, error) {
+ c := C.gtk_progress_bar_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapProgressBar(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SetFraction() is a wrapper around gtk_progress_bar_set_fraction().
+func (v *ProgressBar) SetFraction(fraction float64) {
+ C.gtk_progress_bar_set_fraction(v.native(), C.gdouble(fraction))
+}
+
+// GetFraction() is a wrapper around gtk_progress_bar_get_fraction().
+func (v *ProgressBar) GetFraction() float64 {
+ c := C.gtk_progress_bar_get_fraction(v.native())
+ return float64(c)
+}
+
+// SetShowText is a wrapper around gtk_progress_bar_set_show_text().
+func (v *ProgressBar) SetShowText(showText bool) {
+ C.gtk_progress_bar_set_show_text(v.native(), gbool(showText))
+}
+
+// GetShowText is a wrapper around gtk_progress_bar_get_show_text().
+func (v *ProgressBar) GetShowText() bool {
+ c := C.gtk_progress_bar_get_show_text(v.native())
+ return gobool(c)
+}
+
+// SetText() is a wrapper around gtk_progress_bar_set_text().
+func (v *ProgressBar) SetText(text string) {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_progress_bar_set_text(v.native(), (*C.gchar)(cstr))
+}
+
+// SetPulseStep is a wrapper around gtk_progress_bar_set_pulse_step().
+func (v *ProgressBar) SetPulseStep(fraction float64) {
+ C.gtk_progress_bar_set_pulse_step(v.native(), C.gdouble(fraction))
+}
+
+// GetPulseStep is a wrapper around gtk_progress_bar_get_pulse_step().
+func (v *ProgressBar) GetPulseStep() float64 {
+ c := C.gtk_progress_bar_get_pulse_step(v.native())
+ return float64(c)
+}
+
+// Pulse is a wrapper arountd gtk_progress_bar_pulse().
+func (v *ProgressBar) Pulse() {
+ C.gtk_progress_bar_pulse(v.native())
+}
+
+// SetInverted is a wrapper around gtk_progress_bar_set_inverted().
+func (v *ProgressBar) SetInverted(inverted bool) {
+ C.gtk_progress_bar_set_inverted(v.native(), gbool(inverted))
+}
+
+// GetInverted is a wrapper around gtk_progress_bar_get_inverted().
+func (v *ProgressBar) GetInverted() bool {
+ c := C.gtk_progress_bar_get_inverted(v.native())
+ return gobool(c)
+}
+
+/*
+ * GtkRadioButton
+ */
+
+// RadioButton is a representation of GTK's GtkRadioButton.
+type RadioButton struct {
+ CheckButton
+}
+
+// native returns a pointer to the underlying GtkRadioButton.
+func (v *RadioButton) native() *C.GtkRadioButton {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkRadioButton(p)
+}
+
+func marshalRadioButton(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapRadioButton(obj), nil
+}
+
+func wrapRadioButton(obj *glib.Object) *RadioButton {
+ actionable := wrapActionable(obj)
+ return &RadioButton{CheckButton{ToggleButton{Button{Bin{Container{
+ Widget{glib.InitiallyUnowned{obj}}}}, actionable}}}}
+}
+
+// RadioButtonNew is a wrapper around gtk_radio_button_new().
+func RadioButtonNew(group *glib.SList) (*RadioButton, error) {
+ c := C.gtk_radio_button_new(cGSList(group))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRadioButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// RadioButtonNewFromWidget is a wrapper around
+// gtk_radio_button_new_from_widget().
+func RadioButtonNewFromWidget(radioGroupMember *RadioButton) (*RadioButton, error) {
+ c := C.gtk_radio_button_new_from_widget(radioGroupMember.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRadioButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// RadioButtonNewWithLabel is a wrapper around
+// gtk_radio_button_new_with_label().
+func RadioButtonNewWithLabel(group *glib.SList, label string) (*RadioButton, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_radio_button_new_with_label(cGSList(group), (*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRadioButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// RadioButtonNewWithLabelFromWidget is a wrapper around
+// gtk_radio_button_new_with_label_from_widget().
+func RadioButtonNewWithLabelFromWidget(radioGroupMember *RadioButton, label string) (*RadioButton, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ var cradio *C.GtkRadioButton
+ if radioGroupMember != nil {
+ cradio = radioGroupMember.native()
+ }
+ c := C.gtk_radio_button_new_with_label_from_widget(cradio, (*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRadioButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// RadioButtonNewWithMnemonic is a wrapper around
+// gtk_radio_button_new_with_mnemonic()
+func RadioButtonNewWithMnemonic(group *glib.SList, label string) (*RadioButton, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_radio_button_new_with_mnemonic(cGSList(group), (*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRadioButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// RadioButtonNewWithMnemonicFromWidget is a wrapper around
+// gtk_radio_button_new_with_mnemonic_from_widget().
+func RadioButtonNewWithMnemonicFromWidget(radioGroupMember *RadioButton, label string) (*RadioButton, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ var cradio *C.GtkRadioButton
+ if radioGroupMember != nil {
+ cradio = radioGroupMember.native()
+ }
+ c := C.gtk_radio_button_new_with_mnemonic_from_widget(cradio,
+ (*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRadioButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SetGroup is a wrapper around gtk_radio_button_set_group().
+func (v *RadioButton) SetGroup(group *glib.SList) {
+ C.gtk_radio_button_set_group(v.native(), cGSList(group))
+}
+
+// GetGroup is a wrapper around gtk_radio_button_get_group().
+func (v *RadioButton) GetGroup() (*glib.SList, error) {
+ c := C.gtk_radio_button_get_group(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return glib.WrapSList(uintptr(unsafe.Pointer(c))), nil
+}
+
+// JoinGroup is a wrapper around gtk_radio_button_join_group().
+func (v *RadioButton) JoinGroup(groupSource *RadioButton) {
+ var cgroup *C.GtkRadioButton
+ if groupSource != nil {
+ cgroup = groupSource.native()
+ }
+ C.gtk_radio_button_join_group(v.native(), cgroup)
+}
+
+/*
+ * GtkRadioMenuItem
+ */
+
+// RadioMenuItem is a representation of GTK's GtkRadioMenuItem.
+type RadioMenuItem struct {
+ CheckMenuItem
+}
+
+// native returns a pointer to the underlying GtkRadioMenuItem.
+func (v *RadioMenuItem) native() *C.GtkRadioMenuItem {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkRadioMenuItem(p)
+}
+
+func marshalRadioMenuItem(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapRadioMenuItem(obj), nil
+}
+
+func wrapRadioMenuItem(obj *glib.Object) *RadioMenuItem {
+ return &RadioMenuItem{CheckMenuItem{MenuItem{Bin{Container{
+ Widget{glib.InitiallyUnowned{obj}}}}}}}
+}
+
+// RadioMenuItemNew is a wrapper around gtk_radio_menu_item_new().
+func RadioMenuItemNew(group *glib.SList) (*RadioMenuItem, error) {
+ c := C.gtk_radio_menu_item_new(cGSList(group))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRadioMenuItem(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// RadioMenuItemNewWithLabel is a wrapper around
+// gtk_radio_menu_item_new_with_label().
+func RadioMenuItemNewWithLabel(group *glib.SList, label string) (*RadioMenuItem, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_radio_menu_item_new_with_label(cGSList(group), (*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRadioMenuItem(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// RadioMenuItemNewWithMnemonic is a wrapper around
+// gtk_radio_menu_item_new_with_mnemonic().
+func RadioMenuItemNewWithMnemonic(group *glib.SList, label string) (*RadioMenuItem, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_radio_menu_item_new_with_mnemonic(cGSList(group), (*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRadioMenuItem(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// RadioMenuItemNewFromWidget is a wrapper around
+// gtk_radio_menu_item_new_from_widget().
+func RadioMenuItemNewFromWidget(group *RadioMenuItem) (*RadioMenuItem, error) {
+ c := C.gtk_radio_menu_item_new_from_widget(group.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRadioMenuItem(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// RadioMenuItemNewWithLabelFromWidget is a wrapper around
+// gtk_radio_menu_item_new_with_label_from_widget().
+func RadioMenuItemNewWithLabelFromWidget(group *RadioMenuItem, label string) (*RadioMenuItem, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_radio_menu_item_new_with_label_from_widget(group.native(),
+ (*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRadioMenuItem(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// RadioMenuItemNewWithMnemonicFromWidget is a wrapper around
+// gtk_radio_menu_item_new_with_mnemonic_from_widget().
+func RadioMenuItemNewWithMnemonicFromWidget(group *RadioMenuItem, label string) (*RadioMenuItem, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_radio_menu_item_new_with_mnemonic_from_widget(group.native(),
+ (*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRadioMenuItem(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SetGroup is a wrapper around gtk_radio_menu_item_set_group().
+func (v *RadioMenuItem) SetGroup(group *glib.SList) {
+ C.gtk_radio_menu_item_set_group(v.native(), cGSList(group))
+}
+
+// GetGroup is a wrapper around gtk_radio_menu_item_get_group().
+func (v *RadioMenuItem) GetGroup() (*glib.SList, error) {
+ c := C.gtk_radio_menu_item_get_group(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return glib.WrapSList(uintptr(unsafe.Pointer(c))), nil
+}
+
+/*
+ * GtkRange
+ */
+
+// Range is a representation of GTK's GtkRange.
+type Range struct {
+ Widget
+}
+
+// native returns a pointer to the underlying GtkRange.
+func (v *Range) native() *C.GtkRange {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkRange(p)
+}
+
+func marshalRange(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapRange(obj), nil
+}
+
+func wrapRange(obj *glib.Object) *Range {
+ return &Range{Widget{glib.InitiallyUnowned{obj}}}
+}
+
+// GetValue is a wrapper around gtk_range_get_value().
+func (v *Range) GetValue() float64 {
+ c := C.gtk_range_get_value(v.native())
+ return float64(c)
+}
+
+// SetValue is a wrapper around gtk_range_set_value().
+func (v *Range) SetValue(value float64) {
+ C.gtk_range_set_value(v.native(), C.gdouble(value))
+}
+
+// SetIncrements() is a wrapper around gtk_range_set_increments().
+func (v *Range) SetIncrements(step, page float64) {
+ C.gtk_range_set_increments(v.native(), C.gdouble(step), C.gdouble(page))
+}
+
+// SetRange() is a wrapper around gtk_range_set_range().
+func (v *Range) SetRange(min, max float64) {
+ C.gtk_range_set_range(v.native(), C.gdouble(min), C.gdouble(max))
+}
+
+// IRecentChooser is an interface type implemented by all structs
+// embedding a RecentChooser. It is meant to be used as an argument type
+// for wrapper functions that wrap around a C GTK function taking a
+// GtkWidget.
+type IRecentChooser interface {
+ toRecentChooser() *C.GtkRecentChooser
+}
+
+/*
+ * GtkRecentChooser
+ */
+
+// RecentChooser is a representation of GTK's GtkRecentChooser.
+type RecentChooser struct {
+ *glib.Object
+}
+
+// native returns a pointer to the underlying GtkRecentChooser.
+func (v *RecentChooser) native() *C.GtkRecentChooser {
+ if v == nil || v.Object == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkRecentChooser(p)
+}
+
+func wrapRecentChooser(obj *glib.Object) *RecentChooser {
+ return &RecentChooser{obj}
+}
+
+func (v *RecentChooser) toRecentChooser() *C.GtkRecentChooser {
+ return v.native()
+}
+
+func (v *RecentChooser) GetCurrentUri() string {
+ curi := C.gtk_recent_chooser_get_current_uri(v.native())
+ return goString(curi)
+}
+
+func (v *RecentChooser) AddFilter(filter *RecentFilter) {
+ C.gtk_recent_chooser_add_filter(v.native(), filter.native())
+}
+
+func (v *RecentChooser) RemoveFilter(filter *RecentFilter) {
+ C.gtk_recent_chooser_remove_filter(v.native(), filter.native())
+}
+
+/*
+ * GtkRecentChooserMenu
+ */
+
+// RecentChooserMenu is a representation of GTK's GtkRecentChooserMenu.
+type RecentChooserMenu struct {
+ Menu
+ RecentChooser
+}
+
+// native returns a pointer to the underlying GtkRecentManager.
+func (v *RecentChooserMenu) native() *C.GtkRecentChooserMenu {
+ if v == nil || v.Object == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkRecentChooserMenu(p)
+}
+
+func wrapRecentChooserMenu(obj *glib.Object) *RecentChooserMenu {
+ return &RecentChooserMenu{
+ Menu{MenuShell{Container{Widget{glib.InitiallyUnowned{obj}}}}},
+ RecentChooser{obj},
+ }
+}
+
+/*
+ * GtkRecentFilter
+ */
+
+// RecentFilter is a representation of GTK's GtkRecentFilter.
+type RecentFilter struct {
+ glib.InitiallyUnowned
+}
+
+// native returns a pointer to the underlying GtkRecentFilter.
+func (v *RecentFilter) native() *C.GtkRecentFilter {
+ if v == nil || v.Object == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkRecentFilter(p)
+}
+
+func wrapRecentFilter(obj *glib.Object) *RecentFilter {
+ return &RecentFilter{glib.InitiallyUnowned{obj}}
+}
+
+// RecentFilterNew is a wrapper around gtk_recent_filter_new().
+func RecentFilterNew() (*RecentFilter, error) {
+ c := C.gtk_recent_filter_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapRecentFilter(glib.Take(unsafe.Pointer(c))), nil
+}
+
+/*
+ * GtkRecentManager
+ */
+
+// RecentManager is a representation of GTK's GtkRecentManager.
+type RecentManager struct {
+ *glib.Object
+}
+
+// native returns a pointer to the underlying GtkRecentManager.
+func (v *RecentManager) native() *C.GtkRecentManager {
+ if v == nil || v.Object == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkRecentManager(p)
+}
+
+func marshalRecentManager(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapRecentManager(obj), nil
+}
+
+func wrapRecentManager(obj *glib.Object) *RecentManager {
+ return &RecentManager{obj}
+}
+
+// RecentManagerGetDefault is a wrapper around gtk_recent_manager_get_default().
+func RecentManagerGetDefault() (*RecentManager, error) {
+ c := C.gtk_recent_manager_get_default()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ v := wrapRecentManager(obj)
+ return v, nil
+}
+
+// AddItem is a wrapper around gtk_recent_manager_add_item().
+func (v *RecentManager) AddItem(fileURI string) bool {
+ cstr := C.CString(fileURI)
+ defer C.free(unsafe.Pointer(cstr))
+ cok := C.gtk_recent_manager_add_item(v.native(), (*C.gchar)(cstr))
+ return gobool(cok)
+}
+
+/*
+ * GtkScale
+ */
+
+// Scale is a representation of GTK's GtkScale.
+type Scale struct {
+ Range
+}
+
+// native returns a pointer to the underlying GtkScale.
+func (v *Scale) native() *C.GtkScale {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkScale(p)
+}
+
+func marshalScale(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapScale(obj), nil
+}
+
+func wrapScale(obj *glib.Object) *Scale {
+ return &Scale{Range{Widget{glib.InitiallyUnowned{obj}}}}
+}
+
+// ScaleNew is a wrapper around gtk_scale_new().
+func ScaleNew(orientation Orientation, adjustment *Adjustment) (*Scale, error) {
+ c := C.gtk_scale_new(C.GtkOrientation(orientation), adjustment.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapScale(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// ScaleNewWithRange is a wrapper around gtk_scale_new_with_range().
+func ScaleNewWithRange(orientation Orientation, min, max, step float64) (*Scale, error) {
+ c := C.gtk_scale_new_with_range(C.GtkOrientation(orientation),
+ C.gdouble(min), C.gdouble(max), C.gdouble(step))
+
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapScale(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SetDrawValue() is a wrapper around gtk_scale_set_draw_value().
+func (v *Scale) SetDrawValue(drawValue bool) {
+ C.gtk_scale_set_draw_value(v.native(), gbool(drawValue))
+}
+
+/*
+ * GtkScaleButton
+ */
+
+// ScaleButton is a representation of GTK's GtkScaleButton.
+type ScaleButton struct {
+ Button
+}
+
+// native() returns a pointer to the underlying GtkScaleButton.
+func (v *ScaleButton) native() *C.GtkScaleButton {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkScaleButton(p)
+}
+
+func marshalScaleButton(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapScaleButton(obj), nil
+}
+
+func wrapScaleButton(obj *glib.Object) *ScaleButton {
+ actionable := wrapActionable(obj)
+ return &ScaleButton{Button{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}, actionable}}
+}
+
+// ScaleButtonNew() is a wrapper around gtk_scale_button_new().
+func ScaleButtonNew(size IconSize, min, max, step float64, icons []string) (*ScaleButton, error) {
+ cicons := make([]*C.gchar, len(icons))
+ for i, icon := range icons {
+ cicons[i] = (*C.gchar)(C.CString(icon))
+ defer C.free(unsafe.Pointer(cicons[i]))
+ }
+ cicons = append(cicons, nil)
+
+ c := C.gtk_scale_button_new(C.GtkIconSize(size),
+ C.gdouble(min),
+ C.gdouble(max),
+ C.gdouble(step),
+ &cicons[0])
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapScaleButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetAdjustment() is a wrapper around gtk_scale_button_get_adjustment().
+func (v *ScaleButton) GetAdjustment() *Adjustment {
+ c := C.gtk_scale_button_get_adjustment(v.native())
+ obj := glib.Take(unsafe.Pointer(c))
+ return &Adjustment{glib.InitiallyUnowned{obj}}
+}
+
+// GetPopup() is a wrapper around gtk_scale_button_get_popup().
+func (v *ScaleButton) GetPopup() (*Widget, error) {
+ c := C.gtk_scale_button_get_popup(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapWidget(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetValue() is a wrapper around gtk_scale_button_get_value().
+func (v *ScaleButton) GetValue() float64 {
+ return float64(C.gtk_scale_button_get_value(v.native()))
+}
+
+// SetAdjustment() is a wrapper around gtk_scale_button_set_adjustment().
+func (v *ScaleButton) SetAdjustment(adjustment *Adjustment) {
+ C.gtk_scale_button_set_adjustment(v.native(), adjustment.native())
+}
+
+// SetValue() is a wrapper around gtk_scale_button_set_value().
+func (v *ScaleButton) SetValue(value float64) {
+ C.gtk_scale_button_set_value(v.native(), C.gdouble(value))
+}
+
+/*
+ * GtkScrollable
+ */
+
+// IScrollable is an interface type implemented by all structs
+// embedding a Scrollable. It is meant to be used as an argument type
+// for wrapper functions that wrap around a C GTK function taking a
+// GtkScrollable.
+type IScrollable interface {
+ toScrollable() *C.GtkScrollable
+}
+
+// Scrollable is a representation of GTK's GtkScrollable GInterface.
+type Scrollable struct {
+ *glib.Object
+}
+
+// native() returns a pointer to the underlying GObject as a GtkScrollable.
+func (v *Scrollable) native() *C.GtkScrollable {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkScrollable(p)
+}
+
+func wrapScrollable(obj *glib.Object) *Scrollable {
+ return &Scrollable{obj}
+}
+
+func (v *Scrollable) toScrollable() *C.GtkScrollable {
+ if v == nil {
+ return nil
+ }
+ return v.native()
+}
+
+// SetHAdjustment is a wrapper around gtk_scrollable_set_hadjustment().
+func (v *Scrollable) SetHAdjustment(adjustment *Adjustment) {
+ C.gtk_scrollable_set_hadjustment(v.native(), adjustment.native())
+}
+
+// GetHAdjustment is a wrapper around gtk_scrollable_get_hadjustment().
+func (v *Scrollable) GetHAdjustment() (*Adjustment, error) {
+ c := C.gtk_scrollable_get_hadjustment(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapAdjustment(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SetVAdjustment is a wrapper around gtk_scrollable_set_vadjustment().
+func (v *Scrollable) SetVAdjustment(adjustment *Adjustment) {
+ C.gtk_scrollable_set_vadjustment(v.native(), adjustment.native())
+}
+
+// GetVAdjustment is a wrapper around gtk_scrollable_get_vadjustment().
+func (v *Scrollable) GetVAdjustment() (*Adjustment, error) {
+ c := C.gtk_scrollable_get_vadjustment(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapAdjustment(glib.Take(unsafe.Pointer(c))), nil
+}
+
+/*
+ * GtkScrollbar
+ */
+
+// Scrollbar is a representation of GTK's GtkScrollbar.
+type Scrollbar struct {
+ Range
+}
+
+// native returns a pointer to the underlying GtkScrollbar.
+func (v *Scrollbar) native() *C.GtkScrollbar {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkScrollbar(p)
+}
+
+func marshalScrollbar(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapScrollbar(obj), nil
+}
+
+func wrapScrollbar(obj *glib.Object) *Scrollbar {
+ return &Scrollbar{Range{Widget{glib.InitiallyUnowned{obj}}}}
+}
+
+// ScrollbarNew is a wrapper around gtk_scrollbar_new().
+func ScrollbarNew(orientation Orientation, adjustment *Adjustment) (*Scrollbar, error) {
+ c := C.gtk_scrollbar_new(C.GtkOrientation(orientation), adjustment.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapScrollbar(glib.Take(unsafe.Pointer(c))), nil
+}
+
+/*
+ * GtkScrolledWindow
+ */
+
+// ScrolledWindow is a representation of GTK's GtkScrolledWindow.
+type ScrolledWindow struct {
+ Bin
+}
+
+// native returns a pointer to the underlying GtkScrolledWindow.
+func (v *ScrolledWindow) native() *C.GtkScrolledWindow {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkScrolledWindow(p)
+}
+
+func marshalScrolledWindow(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapScrolledWindow(obj), nil
+}
+
+func wrapScrolledWindow(obj *glib.Object) *ScrolledWindow {
+ return &ScrolledWindow{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
+}
+
+// ScrolledWindowNew() is a wrapper around gtk_scrolled_window_new().
+func ScrolledWindowNew(hadjustment, vadjustment *Adjustment) (*ScrolledWindow, error) {
+ c := C.gtk_scrolled_window_new(hadjustment.native(),
+ vadjustment.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapScrolledWindow(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SetPolicy() is a wrapper around gtk_scrolled_window_set_policy().
+func (v *ScrolledWindow) SetPolicy(hScrollbarPolicy, vScrollbarPolicy PolicyType) {
+ C.gtk_scrolled_window_set_policy(v.native(),
+ C.GtkPolicyType(hScrollbarPolicy),
+ C.GtkPolicyType(vScrollbarPolicy))
+}
+
+// GetHAdjustment() is a wrapper around gtk_scrolled_window_get_hadjustment().
+func (v *ScrolledWindow) GetHAdjustment() *Adjustment {
+ c := C.gtk_scrolled_window_get_hadjustment(v.native())
+ if c == nil {
+ return nil
+ }
+ return wrapAdjustment(glib.Take(unsafe.Pointer(c)))
+}
+
+// SetHAdjustment is a wrapper around gtk_scrolled_window_set_hadjustment().
+func (v *ScrolledWindow) SetHAdjustment(adjustment *Adjustment) {
+ C.gtk_scrolled_window_set_hadjustment(v.native(), adjustment.native())
+}
+
+// GetVAdjustment() is a wrapper around gtk_scrolled_window_get_vadjustment().
+func (v *ScrolledWindow) GetVAdjustment() *Adjustment {
+ c := C.gtk_scrolled_window_get_vadjustment(v.native())
+ if c == nil {
+ return nil
+ }
+ return wrapAdjustment(glib.Take(unsafe.Pointer(c)))
+}
+
+// SetVAdjustment is a wrapper around gtk_scrolled_window_set_vadjustment().
+func (v *ScrolledWindow) SetVAdjustment(adjustment *Adjustment) {
+ C.gtk_scrolled_window_set_vadjustment(v.native(), adjustment.native())
+}
+
+// GetShadowType is a wrapper around gtk_scrolled_window_get_shadow_type().
+func (v *ScrolledWindow) GetShadowType() ShadowType {
+ c := C.gtk_scrolled_window_get_shadow_type(v.native())
+ return ShadowType(c)
+}
+
+// SetShadowType is a wrapper around gtk_scrolled_window_set_shadow_type().
+func (v *ScrolledWindow) SetShadowType(t ShadowType) {
+ C.gtk_scrolled_window_set_shadow_type(v.native(), C.GtkShadowType(t))
+}
+
+/*
+ * GtkSearchEntry
+ */
+
+// SearchEntry is a reprensentation of GTK's GtkSearchEntry.
+type SearchEntry struct {
+ Entry
+}
+
+// native returns a pointer to the underlying GtkSearchEntry.
+func (v *SearchEntry) native() *C.GtkSearchEntry {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkSearchEntry(p)
+}
+
+func marshalSearchEntry(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapSearchEntry(obj), nil
+}
+
+func wrapSearchEntry(obj *glib.Object) *SearchEntry {
+ e := wrapEditable(obj)
+ return &SearchEntry{Entry{Widget{glib.InitiallyUnowned{obj}}, *e}}
+}
+
+// SearchEntryNew is a wrapper around gtk_search_entry_new().
+func SearchEntryNew() (*SearchEntry, error) {
+ c := C.gtk_search_entry_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapSearchEntry(glib.Take(unsafe.Pointer(c))), nil
+}
+
+/*
+* GtkSelectionData
+ */
+type SelectionData struct {
+ GtkSelectionData *C.GtkSelectionData
+}
+
+func marshalSelectionData(p uintptr) (interface{}, error) {
+ c := C.g_value_get_boxed((*C.GValue)(unsafe.Pointer(p)))
+ return (*SelectionData)(unsafe.Pointer(c)), nil
+}
+
+// native returns a pointer to the underlying GtkSelectionData.
+func (v *SelectionData) native() *C.GtkSelectionData {
+ if v == nil {
+ return nil
+ }
+ return v.GtkSelectionData
+}
+
+// GetLength is a wrapper around gtk_selection_data_get_length
+func (v *SelectionData) GetLength() int {
+ return int(C.gtk_selection_data_get_length(v.native()))
+}
+
+// GetData is a wrapper around gtk_selection_data_get_data_with_length.
+// It returns a slice of the correct size with the selection's data.
+func (v *SelectionData) GetData() (data []byte) {
+ var length C.gint
+ c := C.gtk_selection_data_get_data_with_length(v.native(), &length)
+ sliceHeader := (*reflect.SliceHeader)(unsafe.Pointer(&data))
+ sliceHeader.Data = uintptr(unsafe.Pointer(c))
+ sliceHeader.Len = int(length)
+ sliceHeader.Cap = int(length)
+ return
+}
+
+//fixed GetData directly from ptr
+func GetData(pointer uintptr) (data []byte) {
+ c := (*C.GValue)(unsafe.Pointer(pointer))
+ p := (*C.GtkSelectionData)(unsafe.Pointer(c))
+ C.gtk_selection_data_get_text(p)
+
+ var byteData []byte
+ var length C.gint
+ cptr := C.gtk_selection_data_get_data_with_length(p, &length)
+ sliceHeader := (*reflect.SliceHeader)(unsafe.Pointer(&byteData))
+ sliceHeader.Data = uintptr(unsafe.Pointer(cptr))
+ sliceHeader.Len = int(length)
+ sliceHeader.Cap = int(length)
+
+ return byteData
+}
+
+func (v *SelectionData) free() {
+ C.gtk_selection_data_free(v.native())
+}
+
+/*
+ * GtkSeparator
+ */
+
+// Separator is a representation of GTK's GtkSeparator.
+type Separator struct {
+ Widget
+}
+
+// native returns a pointer to the underlying GtkSeperator.
+func (v *Separator) native() *C.GtkSeparator {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkSeparator(p)
+}
+
+func marshalSeparator(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapSeparator(obj), nil
+}
+
+func wrapSeparator(obj *glib.Object) *Separator {
+ return &Separator{Widget{glib.InitiallyUnowned{obj}}}
+}
+
+// SeparatorNew is a wrapper around gtk_separator_new().
+func SeparatorNew(orientation Orientation) (*Separator, error) {
+ c := C.gtk_separator_new(C.GtkOrientation(orientation))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapSeparator(glib.Take(unsafe.Pointer(c))), nil
+}
+
+/*
+ * GtkSeparatorMenuItem
+ */
+
+// SeparatorMenuItem is a representation of GTK's GtkSeparatorMenuItem.
+type SeparatorMenuItem struct {
+ MenuItem
+}
+
+// native returns a pointer to the underlying GtkSeparatorMenuItem.
+func (v *SeparatorMenuItem) native() *C.GtkSeparatorMenuItem {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkSeparatorMenuItem(p)
+}
+
+func marshalSeparatorMenuItem(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapSeparatorMenuItem(obj), nil
+}
+
+func wrapSeparatorMenuItem(obj *glib.Object) *SeparatorMenuItem {
+ return &SeparatorMenuItem{MenuItem{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}}
+}
+
+// SeparatorMenuItemNew is a wrapper around gtk_separator_menu_item_new().
+func SeparatorMenuItemNew() (*SeparatorMenuItem, error) {
+ c := C.gtk_separator_menu_item_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapSeparatorMenuItem(glib.Take(unsafe.Pointer(c))), nil
+}
+
+/*
+ * GtkSeparatorToolItem
+ */
+
+// SeparatorToolItem is a representation of GTK's GtkSeparatorToolItem.
+type SeparatorToolItem struct {
+ ToolItem
+}
+
+// native returns a pointer to the underlying GtkSeparatorToolItem.
+func (v *SeparatorToolItem) native() *C.GtkSeparatorToolItem {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkSeparatorToolItem(p)
+}
+
+func marshalSeparatorToolItem(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapSeparatorToolItem(obj), nil
+}
+
+func wrapSeparatorToolItem(obj *glib.Object) *SeparatorToolItem {
+ return &SeparatorToolItem{ToolItem{Bin{Container{Widget{
+ glib.InitiallyUnowned{obj}}}}}}
+}
+
+// SeparatorToolItemNew is a wrapper around gtk_separator_tool_item_new().
+func SeparatorToolItemNew() (*SeparatorToolItem, error) {
+ c := C.gtk_separator_tool_item_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapSeparatorToolItem(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SetDraw is a wrapper around gtk_separator_tool_item_set_draw().
+func (v *SeparatorToolItem) SetDraw(draw bool) {
+ C.gtk_separator_tool_item_set_draw(v.native(), gbool(draw))
+}
+
+// GetDraw is a wrapper around gtk_separator_tool_item_get_draw().
+func (v *SeparatorToolItem) GetDraw() bool {
+ c := C.gtk_separator_tool_item_get_draw(v.native())
+ return gobool(c)
+}
+
+/*
+ * GtkSizeGroup
+ */
+
+// SizeGroup is a representation of GTK's GtkSizeGroup
+type SizeGroup struct {
+ *glib.Object
+}
+
+// native() returns a pointer to the underlying GtkSizeGroup
+func (v *SizeGroup) native() *C.GtkSizeGroup {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkSizeGroup(p)
+}
+
+func marshalSizeGroup(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return &SizeGroup{obj}, nil
+}
+
+func wrapSizeGroup(obj *glib.Object) *SizeGroup {
+ return &SizeGroup{obj}
+}
+
+// SizeGroupNew is a wrapper around gtk_size_group_new().
+func SizeGroupNew(mode SizeGroupMode) (*SizeGroup, error) {
+ c := C.gtk_size_group_new(C.GtkSizeGroupMode(mode))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapSizeGroup(glib.Take(unsafe.Pointer(c))), nil
+}
+
+func (v *SizeGroup) SetMode(mode SizeGroupMode) {
+ C.gtk_size_group_set_mode(v.native(), C.GtkSizeGroupMode(mode))
+}
+
+func (v *SizeGroup) GetMode() SizeGroupMode {
+ return SizeGroupMode(C.gtk_size_group_get_mode(v.native()))
+}
+
+func (v *SizeGroup) AddWidget(widget IWidget) {
+ C.gtk_size_group_add_widget(v.native(), widget.toWidget())
+}
+
+func (v *SizeGroup) RemoveWidget(widget IWidget) {
+ C.gtk_size_group_remove_widget(v.native(), widget.toWidget())
+}
+
+func (v *SizeGroup) GetWidgets() *glib.SList {
+ c := C.gtk_size_group_get_widgets(v.native())
+ if c == nil {
+ return nil
+ }
+ return glib.WrapSList(uintptr(unsafe.Pointer(c)))
+}
+
+/*
+ * GtkSpinButton
+ */
+
+// SpinButton is a representation of GTK's GtkSpinButton.
+type SpinButton struct {
+ Entry
+}
+
+// native returns a pointer to the underlying GtkSpinButton.
+func (v *SpinButton) native() *C.GtkSpinButton {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkSpinButton(p)
+}
+
+func marshalSpinButton(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapSpinButton(obj), nil
+}
+
+func wrapSpinButton(obj *glib.Object) *SpinButton {
+ e := wrapEditable(obj)
+ return &SpinButton{Entry{Widget{glib.InitiallyUnowned{obj}}, *e}}
+}
+
+// Configure() is a wrapper around gtk_spin_button_configure().
+func (v *SpinButton) Configure(adjustment *Adjustment, climbRate float64, digits uint) {
+ C.gtk_spin_button_configure(v.native(), adjustment.native(),
+ C.gdouble(climbRate), C.guint(digits))
+}
+
+// SpinButtonNew() is a wrapper around gtk_spin_button_new().
+func SpinButtonNew(adjustment *Adjustment, climbRate float64, digits uint) (*SpinButton, error) {
+ c := C.gtk_spin_button_new(adjustment.native(),
+ C.gdouble(climbRate), C.guint(digits))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapSpinButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SpinButtonNewWithRange() is a wrapper around
+// gtk_spin_button_new_with_range().
+func SpinButtonNewWithRange(min, max, step float64) (*SpinButton, error) {
+ c := C.gtk_spin_button_new_with_range(C.gdouble(min), C.gdouble(max),
+ C.gdouble(step))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapSpinButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetValueAsInt() is a wrapper around gtk_spin_button_get_value_as_int().
+func (v *SpinButton) GetValueAsInt() int {
+ c := C.gtk_spin_button_get_value_as_int(v.native())
+ return int(c)
+}
+
+// SetValue() is a wrapper around gtk_spin_button_set_value().
+func (v *SpinButton) SetValue(value float64) {
+ C.gtk_spin_button_set_value(v.native(), C.gdouble(value))
+}
+
+// GetValue() is a wrapper around gtk_spin_button_get_value().
+func (v *SpinButton) GetValue() float64 {
+ c := C.gtk_spin_button_get_value(v.native())
+ return float64(c)
+}
+
+// GetAdjustment() is a wrapper around gtk_spin_button_get_adjustment
+func (v *SpinButton) GetAdjustment() *Adjustment {
+ c := C.gtk_spin_button_get_adjustment(v.native())
+ if c == nil {
+ return nil
+ }
+ return wrapAdjustment(glib.Take(unsafe.Pointer(c)))
+}
+
+// SetRange is a wrapper around gtk_spin_button_set_range().
+func (v *SpinButton) SetRange(min, max float64) {
+ C.gtk_spin_button_set_range(v.native(), C.gdouble(min), C.gdouble(max))
+}
+
+// SetIncrements() is a wrapper around gtk_spin_button_set_increments().
+func (v *SpinButton) SetIncrements(step, page float64) {
+ C.gtk_spin_button_set_increments(v.native(), C.gdouble(step), C.gdouble(page))
+}
+
+/*
+ * GtkSpinner
+ */
+
+// Spinner is a representation of GTK's GtkSpinner.
+type Spinner struct {
+ Widget
+}
+
+// native returns a pointer to the underlying GtkSpinner.
+func (v *Spinner) native() *C.GtkSpinner {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkSpinner(p)
+}
+
+func marshalSpinner(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapSpinner(obj), nil
+}
+
+func wrapSpinner(obj *glib.Object) *Spinner {
+ return &Spinner{Widget{glib.InitiallyUnowned{obj}}}
+}
+
+// SpinnerNew is a wrapper around gtk_spinner_new().
+func SpinnerNew() (*Spinner, error) {
+ c := C.gtk_spinner_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapSpinner(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// Start is a wrapper around gtk_spinner_start().
+func (v *Spinner) Start() {
+ C.gtk_spinner_start(v.native())
+}
+
+// Stop is a wrapper around gtk_spinner_stop().
+func (v *Spinner) Stop() {
+ C.gtk_spinner_stop(v.native())
+}
+
+/*
+ * GtkStatusbar
+ */
+
+// Statusbar is a representation of GTK's GtkStatusbar
+type Statusbar struct {
+ Box
+}
+
+// native returns a pointer to the underlying GtkStatusbar
+func (v *Statusbar) native() *C.GtkStatusbar {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkStatusbar(p)
+}
+
+func marshalStatusbar(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapStatusbar(obj), nil
+}
+
+func wrapStatusbar(obj *glib.Object) *Statusbar {
+ return &Statusbar{Box{Container{Widget{glib.InitiallyUnowned{obj}}}}}
+}
+
+// StatusbarNew() is a wrapper around gtk_statusbar_new().
+func StatusbarNew() (*Statusbar, error) {
+ c := C.gtk_statusbar_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapStatusbar(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetContextId() is a wrapper around gtk_statusbar_get_context_id().
+func (v *Statusbar) GetContextId(contextDescription string) uint {
+ cstr := C.CString(contextDescription)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_statusbar_get_context_id(v.native(), (*C.gchar)(cstr))
+ return uint(c)
+}
+
+// Push() is a wrapper around gtk_statusbar_push().
+func (v *Statusbar) Push(contextID uint, text string) uint {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_statusbar_push(v.native(), C.guint(contextID),
+ (*C.gchar)(cstr))
+ return uint(c)
+}
+
+// Pop() is a wrapper around gtk_statusbar_pop().
+func (v *Statusbar) Pop(contextID uint) {
+ C.gtk_statusbar_pop(v.native(), C.guint(contextID))
+}
+
+// GetMessageArea() is a wrapper around gtk_statusbar_get_message_area().
+func (v *Statusbar) GetMessageArea() (*Box, error) {
+ c := C.gtk_statusbar_get_message_area(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return &Box{Container{Widget{glib.InitiallyUnowned{obj}}}}, nil
+}
+
+/*
+ * GtkSwitch
+ */
+
+// Switch is a representation of GTK's GtkSwitch.
+type Switch struct {
+ Widget
+}
+
+// native returns a pointer to the underlying GtkSwitch.
+func (v *Switch) native() *C.GtkSwitch {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkSwitch(p)
+}
+
+func marshalSwitch(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapSwitch(obj), nil
+}
+
+func wrapSwitch(obj *glib.Object) *Switch {
+ return &Switch{Widget{glib.InitiallyUnowned{obj}}}
+}
+
+// SwitchNew is a wrapper around gtk_switch_new().
+func SwitchNew() (*Switch, error) {
+ c := C.gtk_switch_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapSwitch(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetActive is a wrapper around gtk_switch_get_active().
+func (v *Switch) GetActive() bool {
+ c := C.gtk_switch_get_active(v.native())
+ return gobool(c)
+}
+
+// SetActive is a wrapper around gtk_switch_set_active().
+func (v *Switch) SetActive(isActive bool) {
+ C.gtk_switch_set_active(v.native(), gbool(isActive))
+}
+
+/*
+ * GtkTargetEntry
+ */
+
+// TargetEntry is a representation of GTK's GtkTargetEntry
+type TargetEntry C.GtkTargetEntry
+
+func marshalTargetEntry(p uintptr) (interface{}, error) {
+ c := C.g_value_get_boxed((*C.GValue)(unsafe.Pointer(p)))
+ return (*TargetEntry)(unsafe.Pointer(c)), nil
+}
+
+func (v *TargetEntry) native() *C.GtkTargetEntry {
+ return (*C.GtkTargetEntry)(unsafe.Pointer(v))
+}
+
+// TargetEntryNew is a wrapper around gtk_target_entry_new().
+func TargetEntryNew(target string, flags TargetFlags, info uint) (*TargetEntry, error) {
+ cstr := C.CString(target)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_target_entry_new((*C.gchar)(cstr), C.guint(flags), C.guint(info))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ t := (*TargetEntry)(unsafe.Pointer(c))
+ // causes setFinilizer error
+ // runtime.SetFinalizer(t, (*TargetEntry).free)
+ return t, nil
+}
+
+func (v *TargetEntry) free() {
+ C.gtk_target_entry_free(v.native())
+}
+
+/*
+ * GtkTextTag
+ */
+
+type TextTag struct {
+ *glib.Object
+}
+
+// native returns a pointer to the underlying GObject as a GtkTextTag.
+func (v *TextTag) native() *C.GtkTextTag {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkTextTag(p)
+}
+
+func marshalTextTag(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapTextTag(obj), nil
+}
+
+func wrapTextTag(obj *glib.Object) *TextTag {
+ return &TextTag{obj}
+}
+
+func TextTagNew(name string) (*TextTag, error) {
+ cname := C.CString(name)
+ defer C.free(unsafe.Pointer(cname))
+ c := C.gtk_text_tag_new((*C.gchar)(cname))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapTextTag(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetPriority() is a wrapper around gtk_text_tag_get_priority().
+func (v *TextTag) GetPriority() int {
+ return int(C.gtk_text_tag_get_priority(v.native()))
+}
+
+// SetPriority() is a wrapper around gtk_text_tag_set_priority().
+func (v *TextTag) SetPriority(priority int) {
+ C.gtk_text_tag_set_priority(v.native(), C.gint(priority))
+}
+
+// Event() is a wrapper around gtk_text_tag_event().
+func (v *TextTag) Event(eventObject *glib.Object, event *gdk.Event, iter *TextIter) bool {
+ ok := C.gtk_text_tag_event(v.native(),
+ (*C.GObject)(unsafe.Pointer(eventObject.Native())),
+ (*C.GdkEvent)(unsafe.Pointer(event.Native())),
+ (*C.GtkTextIter)(iter),
+ )
+ return gobool(ok)
+}
+
+/*
+ * GtkTextTagTable
+ */
+
+type TextTagTable struct {
+ *glib.Object
+}
+
+// native returns a pointer to the underlying GObject as a GtkTextTagTable.
+func (v *TextTagTable) native() *C.GtkTextTagTable {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkTextTagTable(p)
+}
+
+func marshalTextTagTable(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapTextTagTable(obj), nil
+}
+
+func wrapTextTagTable(obj *glib.Object) *TextTagTable {
+ return &TextTagTable{obj}
+}
+
+func TextTagTableNew() (*TextTagTable, error) {
+ c := C.gtk_text_tag_table_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapTextTagTable(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// Add() is a wrapper around gtk_text_tag_table_add().
+func (v *TextTagTable) Add(tag *TextTag) {
+ C.gtk_text_tag_table_add(v.native(), tag.native())
+ //return gobool(c) // TODO version-separate
+}
+
+// Lookup() is a wrapper around gtk_text_tag_table_lookup().
+func (v *TextTagTable) Lookup(name string) (*TextTag, error) {
+ cname := C.CString(name)
+ defer C.free(unsafe.Pointer(cname))
+ c := C.gtk_text_tag_table_lookup(v.native(), (*C.gchar)(cname))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapTextTag(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// Remove() is a wrapper around gtk_text_tag_table_remove().
+func (v *TextTagTable) Remove(tag *TextTag) {
+ C.gtk_text_tag_table_remove(v.native(), tag.native())
+}
+
+/*
+ * GtkTextBuffer
+ */
+
+// TextBuffer is a representation of GTK's GtkTextBuffer.
+type TextBuffer struct {
+ *glib.Object
+}
+
+// native returns a pointer to the underlying GtkTextBuffer.
+func (v *TextBuffer) native() *C.GtkTextBuffer {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkTextBuffer(p)
+}
+
+func marshalTextBuffer(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapTextBuffer(obj), nil
+}
+
+func wrapTextBuffer(obj *glib.Object) *TextBuffer {
+ return &TextBuffer{obj}
+}
+
+// TextBufferNew() is a wrapper around gtk_text_buffer_new().
+func TextBufferNew(table *TextTagTable) (*TextBuffer, error) {
+ c := C.gtk_text_buffer_new(table.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ e := wrapTextBuffer(glib.Take(unsafe.Pointer(c)))
+ return e, nil
+}
+
+// ApplyTag() is a wrapper around gtk_text_buffer_apply_tag().
+func (v *TextBuffer) ApplyTag(tag *TextTag, start, end *TextIter) {
+ C.gtk_text_buffer_apply_tag(v.native(), tag.native(), (*C.GtkTextIter)(start), (*C.GtkTextIter)(end))
+}
+
+// ApplyTagByName() is a wrapper around gtk_text_buffer_apply_tag_by_name().
+func (v *TextBuffer) ApplyTagByName(name string, start, end *TextIter) {
+ cstr := C.CString(name)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_text_buffer_apply_tag_by_name(v.native(), (*C.gchar)(cstr),
+ (*C.GtkTextIter)(start), (*C.GtkTextIter)(end))
+}
+
+// CreateChildAnchor() is a wrapper around gtk_text_buffer_create_child_anchor().
+// Since it copies garbage from the stack into the padding bytes of iter,
+// iter can't be reliably reused after this call unless GODEBUG=cgocheck=0.
+func (v *TextBuffer) CreateChildAnchor(iter *TextIter) *TextChildAnchor {
+ ret := C.gtk_text_buffer_create_child_anchor(v.native(), iter.native())
+ return (*TextChildAnchor)(ret)
+}
+
+// Delete() is a wrapper around gtk_text_buffer_delete().
+func (v *TextBuffer) Delete(start, end *TextIter) {
+ C.gtk_text_buffer_delete(v.native(), (*C.GtkTextIter)(start), (*C.GtkTextIter)(end))
+}
+
+func (v *TextBuffer) GetBounds() (start, end *TextIter) {
+ start, end = new(TextIter), new(TextIter)
+ C.gtk_text_buffer_get_bounds(v.native(), (*C.GtkTextIter)(start), (*C.GtkTextIter)(end))
+ return
+}
+
+// GetCharCount() is a wrapper around gtk_text_buffer_get_char_count().
+func (v *TextBuffer) GetCharCount() int {
+ return int(C.gtk_text_buffer_get_char_count(v.native()))
+}
+
+// GetIterAtOffset() is a wrapper around gtk_text_buffer_get_iter_at_offset().
+func (v *TextBuffer) GetIterAtOffset(charOffset int) *TextIter {
+ var iter C.GtkTextIter
+ C.gtk_text_buffer_get_iter_at_offset(v.native(), &iter, C.gint(charOffset))
+ return (*TextIter)(&iter)
+}
+
+// GetStartIter() is a wrapper around gtk_text_buffer_get_start_iter().
+func (v *TextBuffer) GetStartIter() *TextIter {
+ var iter C.GtkTextIter
+ C.gtk_text_buffer_get_start_iter(v.native(), &iter)
+ return (*TextIter)(&iter)
+}
+
+// GetEndIter() is a wrapper around gtk_text_buffer_get_end_iter().
+func (v *TextBuffer) GetEndIter() *TextIter {
+ var iter C.GtkTextIter
+ C.gtk_text_buffer_get_end_iter(v.native(), &iter)
+ return (*TextIter)(&iter)
+}
+
+// GetLineCount() is a wrapper around gtk_text_buffer_get_line_count().
+func (v *TextBuffer) GetLineCount() int {
+ return int(C.gtk_text_buffer_get_line_count(v.native()))
+}
+
+// GetModified() is a wrapper around gtk_text_buffer_get_modified().
+func (v *TextBuffer) GetModified() bool {
+ return gobool(C.gtk_text_buffer_get_modified(v.native()))
+}
+
+// GetTagTable() is a wrapper around gtk_text_buffer_get_tag_table().
+func (v *TextBuffer) GetTagTable() (*TextTagTable, error) {
+ c := C.gtk_text_buffer_get_tag_table(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapTextTagTable(obj), nil
+}
+
+func (v *TextBuffer) GetText(start, end *TextIter, includeHiddenChars bool) (string, error) {
+ c := C.gtk_text_buffer_get_text(
+ v.native(), (*C.GtkTextIter)(start), (*C.GtkTextIter)(end), gbool(includeHiddenChars),
+ )
+ if c == nil {
+ return "", nilPtrErr
+ }
+ gostr := goString(c)
+ C.g_free(C.gpointer(c))
+ return gostr, nil
+}
+
+// Insert() is a wrapper around gtk_text_buffer_insert().
+func (v *TextBuffer) Insert(iter *TextIter, text string) {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_text_buffer_insert(v.native(), (*C.GtkTextIter)(iter), (*C.gchar)(cstr), C.gint(len(text)))
+}
+
+// InsertAtCursor() is a wrapper around gtk_text_buffer_insert_at_cursor().
+func (v *TextBuffer) InsertAtCursor(text string) {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_text_buffer_insert_at_cursor(v.native(), (*C.gchar)(cstr), C.gint(len(text)))
+}
+
+// RemoveTag() is a wrapper around gtk_text_buffer_remove_tag().
+func (v *TextBuffer) RemoveTag(tag *TextTag, start, end *TextIter) {
+ C.gtk_text_buffer_remove_tag(v.native(), tag.native(), (*C.GtkTextIter)(start), (*C.GtkTextIter)(end))
+}
+
+// SetModified() is a wrapper around gtk_text_buffer_set_modified().
+func (v *TextBuffer) SetModified(setting bool) {
+ C.gtk_text_buffer_set_modified(v.native(), gbool(setting))
+}
+
+func (v *TextBuffer) SetText(text string) {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_text_buffer_set_text(v.native(), (*C.gchar)(cstr),
+ C.gint(len(text)))
+}
+
+// GetIterAtMark() is a wrapper around gtk_text_buffer_get_iter_at_mark().
+func (v *TextBuffer) GetIterAtMark(mark *TextMark) *TextIter {
+ var iter C.GtkTextIter
+ C.gtk_text_buffer_get_iter_at_mark(v.native(), &iter, (*C.GtkTextMark)(mark))
+ return (*TextIter)(&iter)
+}
+
+// CreateMark() is a wrapper around gtk_text_buffer_create_mark().
+func (v *TextBuffer) CreateMark(mark_name string, where *TextIter, left_gravity bool) *TextMark {
+ cstr := C.CString(mark_name)
+ defer C.free(unsafe.Pointer(cstr))
+ ret := C.gtk_text_buffer_create_mark(v.native(), (*C.gchar)(cstr), (*C.GtkTextIter)(where), gbool(left_gravity))
+ return (*TextMark)(ret)
+}
+
+/*
+ * GtkToggleButton
+ */
+
+// ToggleButton is a representation of GTK's GtkToggleButton.
+type ToggleButton struct {
+ Button
+}
+
+// native returns a pointer to the underlying GtkToggleButton.
+func (v *ToggleButton) native() *C.GtkToggleButton {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkToggleButton(p)
+}
+
+func marshalToggleButton(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapToggleButton(obj), nil
+}
+
+func wrapToggleButton(obj *glib.Object) *ToggleButton {
+ actionable := wrapActionable(obj)
+ return &ToggleButton{Button{Bin{Container{Widget{
+ glib.InitiallyUnowned{obj}}}}, actionable}}
+}
+
+// ToggleButtonNew is a wrapper around gtk_toggle_button_new().
+func ToggleButtonNew() (*ToggleButton, error) {
+ c := C.gtk_toggle_button_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapToggleButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// ToggleButtonNewWithLabel is a wrapper around
+// gtk_toggle_button_new_with_label().
+func ToggleButtonNewWithLabel(label string) (*ToggleButton, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_toggle_button_new_with_label((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapToggleButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// ToggleButtonNewWithMnemonic is a wrapper around
+// gtk_toggle_button_new_with_mnemonic().
+func ToggleButtonNewWithMnemonic(label string) (*ToggleButton, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_toggle_button_new_with_mnemonic((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapToggleButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// GetActive is a wrapper around gtk_toggle_button_get_active().
+func (v *ToggleButton) GetActive() bool {
+ c := C.gtk_toggle_button_get_active(v.native())
+ return gobool(c)
+}
+
+// SetActive is a wrapper around gtk_toggle_button_set_active().
+func (v *ToggleButton) SetActive(isActive bool) {
+ C.gtk_toggle_button_set_active(v.native(), gbool(isActive))
+}
+
+// GetMode is a wrapper around gtk_toggle_button_get_mode().
+func (v *ToggleButton) GetMode() bool {
+ c := C.gtk_toggle_button_get_mode(v.native())
+ return gobool(c)
+}
+
+// SetMode is a wrapper around gtk_toggle_button_set_mode().
+func (v *ToggleButton) SetMode(drawIndicator bool) {
+ C.gtk_toggle_button_set_mode(v.native(), gbool(drawIndicator))
+}
+
+/*
+ * GtkToolbar
+ */
+
+// Toolbar is a representation of GTK's GtkToolbar.
+type Toolbar struct {
+ Container
+}
+
+// native returns a pointer to the underlying GtkToolbar.
+func (v *Toolbar) native() *C.GtkToolbar {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkToolbar(p)
+}
+
+func marshalToolbar(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapToolbar(obj), nil
+}
+
+func wrapToolbar(obj *glib.Object) *Toolbar {
+ return &Toolbar{Container{Widget{glib.InitiallyUnowned{obj}}}}
+}
+
+// ToolbarNew is a wrapper around gtk_toolbar_new().
+func ToolbarNew() (*Toolbar, error) {
+ c := C.gtk_toolbar_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapToolbar(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// Insert is a wrapper around gtk_toolbar_insert().
+func (v *Toolbar) Insert(item IToolItem, pos int) {
+ C.gtk_toolbar_insert(v.native(), item.toToolItem(), C.gint(pos))
+}
+
+// GetItemIndex is a wrapper around gtk_toolbar_get_item_index().
+func (v *Toolbar) GetItemIndex(item IToolItem) int {
+ c := C.gtk_toolbar_get_item_index(v.native(), item.toToolItem())
+ return int(c)
+}
+
+// GetNItems is a wrapper around gtk_toolbar_get_n_items().
+func (v *Toolbar) GetNItems() int {
+ c := C.gtk_toolbar_get_n_items(v.native())
+ return int(c)
+}
+
+// GetNthItem is a wrapper around gtk_toolbar_get_nth_item().
+func (v *Toolbar) GetNthItem(n int) *ToolItem {
+ c := C.gtk_toolbar_get_nth_item(v.native(), C.gint(n))
+ if c == nil {
+ return nil
+ }
+ return wrapToolItem(glib.Take(unsafe.Pointer(c)))
+}
+
+// GetDropIndex is a wrapper around gtk_toolbar_get_drop_index().
+func (v *Toolbar) GetDropIndex(x, y int) int {
+ c := C.gtk_toolbar_get_drop_index(v.native(), C.gint(x), C.gint(y))
+ return int(c)
+}
+
+// SetDropHighlightItem is a wrapper around
+// gtk_toolbar_set_drop_highlight_item().
+func (v *Toolbar) SetDropHighlightItem(toolItem IToolItem, index int) {
+ C.gtk_toolbar_set_drop_highlight_item(v.native(),
+ toolItem.toToolItem(), C.gint(index))
+}
+
+// SetShowArrow is a wrapper around gtk_toolbar_set_show_arrow().
+func (v *Toolbar) SetShowArrow(showArrow bool) {
+ C.gtk_toolbar_set_show_arrow(v.native(), gbool(showArrow))
+}
+
+// UnsetIconSize is a wrapper around gtk_toolbar_unset_icon_size().
+func (v *Toolbar) UnsetIconSize() {
+ C.gtk_toolbar_unset_icon_size(v.native())
+}
+
+// GetShowArrow is a wrapper around gtk_toolbar_get_show_arrow().
+func (v *Toolbar) GetShowArrow() bool {
+ c := C.gtk_toolbar_get_show_arrow(v.native())
+ return gobool(c)
+}
+
+// GetStyle is a wrapper around gtk_toolbar_get_style().
+func (v *Toolbar) GetStyle() ToolbarStyle {
+ c := C.gtk_toolbar_get_style(v.native())
+ return ToolbarStyle(c)
+}
+
+// GetIconSize is a wrapper around gtk_toolbar_get_icon_size().
+func (v *Toolbar) GetIconSize() IconSize {
+ c := C.gtk_toolbar_get_icon_size(v.native())
+ return IconSize(c)
+}
+
+// GetReliefStyle is a wrapper around gtk_toolbar_get_relief_style().
+func (v *Toolbar) GetReliefStyle() ReliefStyle {
+ c := C.gtk_toolbar_get_relief_style(v.native())
+ return ReliefStyle(c)
+}
+
+// SetStyle is a wrapper around gtk_toolbar_set_style().
+func (v *Toolbar) SetStyle(style ToolbarStyle) {
+ C.gtk_toolbar_set_style(v.native(), C.GtkToolbarStyle(style))
+}
+
+// SetIconSize is a wrapper around gtk_toolbar_set_icon_size().
+func (v *Toolbar) SetIconSize(iconSize IconSize) {
+ C.gtk_toolbar_set_icon_size(v.native(), C.GtkIconSize(iconSize))
+}
+
+// UnsetStyle is a wrapper around gtk_toolbar_unset_style().
+func (v *Toolbar) UnsetStyle() {
+ C.gtk_toolbar_unset_style(v.native())
+}
+
+/*
+ * GtkToolButton
+ */
+
+// ToolButton is a representation of GTK's GtkToolButton.
+type ToolButton struct {
+ ToolItem
+}
+
+// native returns a pointer to the underlying GtkToolButton.
+func (v *ToolButton) native() *C.GtkToolButton {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkToolButton(p)
+}
+
+func marshalToolButton(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapToolButton(obj), nil
+}
+
+func wrapToolButton(obj *glib.Object) *ToolButton {
+ return &ToolButton{ToolItem{Bin{Container{Widget{
+ glib.InitiallyUnowned{obj}}}}}}
+}
+
+// ToolButtonNew is a wrapper around gtk_tool_button_new().
+func ToolButtonNew(iconWidget IWidget, label string) (*ToolButton, error) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ w := nullableWidget(iconWidget)
+ c := C.gtk_tool_button_new(w, (*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapToolButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SetLabel is a wrapper around gtk_tool_button_set_label().
+func (v *ToolButton) SetLabel(label string) {
+ cstr := C.CString(label)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_tool_button_set_label(v.native(), (*C.gchar)(cstr))
+}
+
+// GetLabel is a wrapper around gtk_tool_button_get_label().
+func (v *ToolButton) GetLabel() string {
+ c := C.gtk_tool_button_get_label(v.native())
+ return goString(c)
+}
+
+// SetUseUnderline is a wrapper around gtk_tool_button_set_use_underline().
+func (v *ToolButton) SetGetUnderline(useUnderline bool) {
+ C.gtk_tool_button_set_use_underline(v.native(), gbool(useUnderline))
+}
+
+// GetUseUnderline is a wrapper around gtk_tool_button_get_use_underline().
+func (v *ToolButton) GetuseUnderline() bool {
+ c := C.gtk_tool_button_get_use_underline(v.native())
+ return gobool(c)
+}
+
+// SetIconName is a wrapper around gtk_tool_button_set_icon_name().
+func (v *ToolButton) SetIconName(iconName string) {
+ cstr := C.CString(iconName)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_tool_button_set_icon_name(v.native(), (*C.gchar)(cstr))
+}
+
+// GetIconName is a wrapper around gtk_tool_button_get_icon_name().
+func (v *ToolButton) GetIconName() string {
+ c := C.gtk_tool_button_get_icon_name(v.native())
+ return goString(c)
+}
+
+// SetIconWidget is a wrapper around gtk_tool_button_set_icon_widget().
+func (v *ToolButton) SetIconWidget(iconWidget IWidget) {
+ C.gtk_tool_button_set_icon_widget(v.native(), iconWidget.toWidget())
+}
+
+// GetIconWidget is a wrapper around gtk_tool_button_get_icon_widget().
+func (v *ToolButton) GetIconWidget() *Widget {
+ c := C.gtk_tool_button_get_icon_widget(v.native())
+ if c == nil {
+ return nil
+ }
+ return wrapWidget(glib.Take(unsafe.Pointer(c)))
+}
+
+// SetLabelWidget is a wrapper around gtk_tool_button_set_label_widget().
+func (v *ToolButton) SetLabelWidget(labelWidget IWidget) {
+ C.gtk_tool_button_set_label_widget(v.native(), labelWidget.toWidget())
+}
+
+// GetLabelWidget is a wrapper around gtk_tool_button_get_label_widget().
+func (v *ToolButton) GetLabelWidget() *Widget {
+ c := C.gtk_tool_button_get_label_widget(v.native())
+ if c == nil {
+ return nil
+ }
+ return wrapWidget(glib.Take(unsafe.Pointer(c)))
+}
+
+/*
+ * GtkToolItem
+ */
+
+// ToolItem is a representation of GTK's GtkToolItem.
+type ToolItem struct {
+ Bin
+}
+
+// IToolItem is an interface type implemented by all structs embedding
+// a ToolItem. It is meant to be used as an argument type for wrapper
+// functions that wrap around a C GTK function taking a GtkToolItem.
+type IToolItem interface {
+ toToolItem() *C.GtkToolItem
+}
+
+// native returns a pointer to the underlying GtkToolItem.
+func (v *ToolItem) native() *C.GtkToolItem {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkToolItem(p)
+}
+
+func (v *ToolItem) toToolItem() *C.GtkToolItem {
+ return v.native()
+}
+
+func marshalToolItem(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapToolItem(obj), nil
+}
+
+func wrapToolItem(obj *glib.Object) *ToolItem {
+ return &ToolItem{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}}
+}
+
+// ToolItemNew is a wrapper around gtk_tool_item_new().
+func ToolItemNew() (*ToolItem, error) {
+ c := C.gtk_tool_item_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapToolItem(glib.Take(unsafe.Pointer(c))), nil
+}
+
+// SetHomogeneous is a wrapper around gtk_tool_item_set_homogeneous().
+func (v *ToolItem) SetHomogeneous(homogeneous bool) {
+ C.gtk_tool_item_set_homogeneous(v.native(), gbool(homogeneous))
+}
+
+// GetHomogeneous is a wrapper around gtk_tool_item_get_homogeneous().
+func (v *ToolItem) GetHomogeneous() bool {
+ c := C.gtk_tool_item_get_homogeneous(v.native())
+ return gobool(c)
+}
+
+// SetExpand is a wrapper around gtk_tool_item_set_expand().
+func (v *ToolItem) SetExpand(expand bool) {
+ C.gtk_tool_item_set_expand(v.native(), gbool(expand))
+}
+
+// GetExpand is a wrapper around gtk_tool_item_get_expand().
+func (v *ToolItem) GetExpand() bool {
+ c := C.gtk_tool_item_get_expand(v.native())
+ return gobool(c)
+}
+
+// SetTooltipText is a wrapper around gtk_tool_item_set_tooltip_text().
+func (v *ToolItem) SetTooltipText(text string) {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_tool_item_set_tooltip_text(v.native(), (*C.gchar)(cstr))
+}
+
+// SetTooltipMarkup is a wrapper around gtk_tool_item_set_tooltip_markup().
+func (v *ToolItem) SetTooltipMarkup(text string) {
+ cstr := C.CString(text)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_tool_item_set_tooltip_markup(v.native(), (*C.gchar)(cstr))
+}
+
+// SetUseDragWindow is a wrapper around gtk_tool_item_set_use_drag_window().
+func (v *ToolItem) SetUseDragWindow(useDragWindow bool) {
+ C.gtk_tool_item_set_use_drag_window(v.native(), gbool(useDragWindow))
+}
+
+// GetUseDragWindow is a wrapper around gtk_tool_item_get_use_drag_window().
+func (v *ToolItem) GetUseDragWindow() bool {
+ c := C.gtk_tool_item_get_use_drag_window(v.native())
+ return gobool(c)
+}
+
+// SetVisibleHorizontal is a wrapper around
+// gtk_tool_item_set_visible_horizontal().
+func (v *ToolItem) SetVisibleHorizontal(visibleHorizontal bool) {
+ C.gtk_tool_item_set_visible_horizontal(v.native(),
+ gbool(visibleHorizontal))
+}
+
+// GetVisibleHorizontal is a wrapper around
+// gtk_tool_item_get_visible_horizontal().
+func (v *ToolItem) GetVisibleHorizontal() bool {
+ c := C.gtk_tool_item_get_visible_horizontal(v.native())
+ return gobool(c)
+}
+
+// SetVisibleVertical is a wrapper around gtk_tool_item_set_visible_vertical().
+func (v *ToolItem) SetVisibleVertical(visibleVertical bool) {
+ C.gtk_tool_item_set_visible_vertical(v.native(), gbool(visibleVertical))
+}
+
+// GetVisibleVertical is a wrapper around gtk_tool_item_get_visible_vertical().
+func (v *ToolItem) GetVisibleVertical() bool {
+ c := C.gtk_tool_item_get_visible_vertical(v.native())
+ return gobool(c)
+}
+
+// SetIsImportant is a wrapper around gtk_tool_item_set_is_important().
+func (v *ToolItem) SetIsImportant(isImportant bool) {
+ C.gtk_tool_item_set_is_important(v.native(), gbool(isImportant))
+}
+
+// GetIsImportant is a wrapper around gtk_tool_item_get_is_important().
+func (v *ToolItem) GetIsImportant() bool {
+ c := C.gtk_tool_item_get_is_important(v.native())
+ return gobool(c)
+}
+
+// TODO: gtk_tool_item_get_ellipsize_mode
+
+// GetIconSize is a wrapper around gtk_tool_item_get_icon_size().
+func (v *ToolItem) GetIconSize() IconSize {
+ c := C.gtk_tool_item_get_icon_size(v.native())
+ return IconSize(c)
+}
+
+// GetOrientation is a wrapper around gtk_tool_item_get_orientation().
+func (v *ToolItem) GetOrientation() Orientation {
+ c := C.gtk_tool_item_get_orientation(v.native())
+ return Orientation(c)
+}
+
+// GetToolbarStyle is a wrapper around gtk_tool_item_get_toolbar_style().
+func (v *ToolItem) gtk_tool_item_get_toolbar_style() ToolbarStyle {
+ c := C.gtk_tool_item_get_toolbar_style(v.native())
+ return ToolbarStyle(c)
+}
+
+// GetReliefStyle is a wrapper around gtk_tool_item_get_relief_style().
+func (v *ToolItem) GetReliefStyle() ReliefStyle {
+ c := C.gtk_tool_item_get_relief_style(v.native())
+ return ReliefStyle(c)
+}
+
+// GetTextAlignment is a wrapper around gtk_tool_item_get_text_alignment().
+func (v *ToolItem) GetTextAlignment() float32 {
+ c := C.gtk_tool_item_get_text_alignment(v.native())
+ return float32(c)
+}
+
+// GetTextOrientation is a wrapper around gtk_tool_item_get_text_orientation().
+func (v *ToolItem) GetTextOrientation() Orientation {
+ c := C.gtk_tool_item_get_text_orientation(v.native())
+ return Orientation(c)
+}
+
+// RetrieveProxyMenuItem is a wrapper around
+// gtk_tool_item_retrieve_proxy_menu_item()
+func (v *ToolItem) RetrieveProxyMenuItem() *MenuItem {
+ c := C.gtk_tool_item_retrieve_proxy_menu_item(v.native())
+ if c == nil {
+ return nil
+ }
+ return wrapMenuItem(glib.Take(unsafe.Pointer(c)))
+}
+
+// SetProxyMenuItem is a wrapper around gtk_tool_item_set_proxy_menu_item().
+func (v *ToolItem) SetProxyMenuItem(menuItemId string, menuItem IMenuItem) {
+ cstr := C.CString(menuItemId)
+ defer C.free(unsafe.Pointer(cstr))
+ C.gtk_tool_item_set_proxy_menu_item(v.native(), (*C.gchar)(cstr),
+ C.toGtkWidget(unsafe.Pointer(menuItem.toMenuItem())))
+}
+
+// RebuildMenu is a wrapper around gtk_tool_item_rebuild_menu().
+func (v *ToolItem) RebuildMenu() {
+ C.gtk_tool_item_rebuild_menu(v.native())
+}
+
+// ToolbarReconfigured is a wrapper around gtk_tool_item_toolbar_reconfigured().
+func (v *ToolItem) ToolbarReconfigured() {
+ C.gtk_tool_item_toolbar_reconfigured(v.native())
+}
+
+// TODO: gtk_tool_item_get_text_size_group
+
+/*
+ * GtkTreeIter
+ */
+
+// TreeIter is a representation of GTK's GtkTreeIter.
+type TreeIter struct {
+ GtkTreeIter C.GtkTreeIter
+}
+
+// native returns a pointer to the underlying GtkTreeIter.
+func (v *TreeIter) native() *C.GtkTreeIter {
+ if v == nil {
+ return nil
+ }
+ return &v.GtkTreeIter
+}
+
+func marshalTreeIter(p uintptr) (interface{}, error) {
+ c := C.g_value_get_boxed((*C.GValue)(unsafe.Pointer(p)))
+ return (*TreeIter)(unsafe.Pointer(c)), nil
+}
+
+func (v *TreeIter) free() {
+ C.gtk_tree_iter_free(v.native())
+}
+
+// Copy() is a wrapper around gtk_tree_iter_copy().
+func (v *TreeIter) Copy() (*TreeIter, error) {
+ c := C.gtk_tree_iter_copy(v.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ t := &TreeIter{*c}
+ runtime.SetFinalizer(t, (*TreeIter).free)
+ return t, nil
+}
+
+/*
+ * GtkTreeModel
+ */
+
+// TreeModel is a representation of GTK's GtkTreeModel GInterface.
+type TreeModel struct {
+ *glib.Object
+}
+
+// ITreeModel is an interface type implemented by all structs
+// embedding a TreeModel. It is meant to be used as an argument type
+// for wrapper functions that wrap around a C GTK function taking a
+// GtkTreeModel.
+type ITreeModel interface {
+ toTreeModel() *C.GtkTreeModel
+}
+
+// native returns a pointer to the underlying GObject as a GtkTreeModel.
+func (v *TreeModel) native() *C.GtkTreeModel {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkTreeModel(p)
+}
+
+func (v *TreeModel) toTreeModel() *C.GtkTreeModel {
+ if v == nil {
+ return nil
+ }
+ return v.native()
+}
+
+func marshalTreeModel(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapTreeModel(obj), nil
+}
+
+func wrapTreeModel(obj *glib.Object) *TreeModel {
+ return &TreeModel{obj}
+}
+
+// GetFlags() is a wrapper around gtk_tree_model_get_flags().
+func (v *TreeModel) GetFlags() TreeModelFlags {
+ c := C.gtk_tree_model_get_flags(v.native())
+ return TreeModelFlags(c)
+}
+
+// GetNColumns() is a wrapper around gtk_tree_model_get_n_columns().
+func (v *TreeModel) GetNColumns() int {
+ c := C.gtk_tree_model_get_n_columns(v.native())
+ return int(c)
+}
+
+// GetColumnType() is a wrapper around gtk_tree_model_get_column_type().
+func (v *TreeModel) GetColumnType(index int) glib.Type {
+ c := C.gtk_tree_model_get_column_type(v.native(), C.gint(index))
+ return glib.Type(c)
+}
+
+// GetIter() is a wrapper around gtk_tree_model_get_iter().
+func (v *TreeModel) GetIter(path *TreePath) (*TreeIter, error) {
+ var iter C.GtkTreeIter
+ c := C.gtk_tree_model_get_iter(v.native(), &iter, path.native())
+ if !gobool(c) {
+ return nil, errors.New("Unable to set iterator")
+ }
+ t := &TreeIter{iter}
+ return t, nil
+}
+
+// GetIterFromString() is a wrapper around
+// gtk_tree_model_get_iter_from_string().
+func (v *TreeModel) GetIterFromString(path string) (*TreeIter, error) {
+ var iter C.GtkTreeIter
+ cstr := C.CString(path)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_tree_model_get_iter_from_string(v.native(), &iter,
+ (*C.gchar)(cstr))
+ if !gobool(c) {
+ return nil, errors.New("Unable to set iterator")
+ }
+ t := &TreeIter{iter}
+ return t, nil
+}
+
+// GetIterFirst() is a wrapper around gtk_tree_model_get_iter_first().
+func (v *TreeModel) GetIterFirst() (*TreeIter, bool) {
+ var iter C.GtkTreeIter
+ c := C.gtk_tree_model_get_iter_first(v.native(), &iter)
+ if !gobool(c) {
+ return nil, false
+ }
+ t := &TreeIter{iter}
+ return t, true
+}
+
+// GetPath() is a wrapper around gtk_tree_model_get_path().
+func (v *TreeModel) GetPath(iter *TreeIter) (*TreePath, error) {
+ c := C.gtk_tree_model_get_path(v.native(), iter.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ p := &TreePath{c}
+ runtime.SetFinalizer(p, (*TreePath).free)
+ return p, nil
+}
+
+// GetValue() is a wrapper around gtk_tree_model_get_value().
+func (v *TreeModel) GetValue(iter *TreeIter, column int) (*glib.Value, error) {
+ val, err := glib.ValueAlloc()
+ if err != nil {
+ return nil, err
+ }
+ C.gtk_tree_model_get_value(
+ (*C.GtkTreeModel)(unsafe.Pointer(v.native())),
+ iter.native(),
+ C.gint(column),
+ (*C.GValue)(unsafe.Pointer(val.Native())))
+ return val, nil
+}
+
+// IterHasChild() is a wrapper around gtk_tree_model_iter_has_child().
+func (v *TreeModel) IterHasChild(iter *TreeIter) bool {
+ c := C.gtk_tree_model_iter_has_child(v.native(), iter.native())
+ return gobool(c)
+}
+
+// IterNext() is a wrapper around gtk_tree_model_iter_next().
+func (v *TreeModel) IterNext(iter *TreeIter) bool {
+ c := C.gtk_tree_model_iter_next(v.native(), iter.native())
+ return gobool(c)
+}
+
+// IterPrevious is a wrapper around gtk_tree_model_iter_previous().
+func (v *TreeModel) IterPrevious(iter *TreeIter) bool {
+ c := C.gtk_tree_model_iter_previous(v.native(), iter.native())
+ return gobool(c)
+}
+
+// IterParent is a wrapper around gtk_tree_model_iter_parent().
+func (v *TreeModel) IterParent(iter, child *TreeIter) bool {
+ c := C.gtk_tree_model_iter_parent(v.native(), iter.native(), child.native())
+ return gobool(c)
+}
+
+// IterNthChild is a wrapper around gtk_tree_model_iter_nth_child().
+func (v *TreeModel) IterNthChild(iter *TreeIter, parent *TreeIter, n int) bool {
+ c := C.gtk_tree_model_iter_nth_child(v.native(), iter.native(), parent.native(), C.gint(n))
+ return gobool(c)
+}
+
+// IterChildren is a wrapper around gtk_tree_model_iter_children().
+func (v *TreeModel) IterChildren(iter, child *TreeIter) bool {
+ var cIter, cChild *C.GtkTreeIter
+ if iter != nil {
+ cIter = iter.native()
+ }
+ cChild = child.native()
+ c := C.gtk_tree_model_iter_children(v.native(), cChild, cIter)
+ return gobool(c)
+}
+
+// IterNChildren is a wrapper around gtk_tree_model_iter_n_children().
+func (v *TreeModel) IterNChildren(iter *TreeIter) int {
+ var cIter *C.GtkTreeIter
+ if iter != nil {
+ cIter = iter.native()
+ }
+ c := C.gtk_tree_model_iter_n_children(v.native(), cIter)
+ return int(c)
+}
+
+// FilterNew is a wrapper around gtk_tree_model_filter_new().
+func (v *TreeModel) FilterNew(root *TreePath) (*TreeModelFilter, error) {
+ c := C.gtk_tree_model_filter_new(v.native(), root.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapTreeModelFilter(obj), nil
+}
+
+/*
+ * GtkTreeModelFilter
+ */
+
+// TreeModelFilter is a representation of GTK's GtkTreeModelFilter.
+type TreeModelFilter struct {
+ *glib.Object
+
+ // Interfaces
+ TreeModel
+}
+
+func (v *TreeModelFilter) native() *C.GtkTreeModelFilter {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkTreeModelFilter(p)
+}
+
+func (v *TreeModelFilter) toTreeModelFilter() *C.GtkTreeModelFilter {
+ if v == nil {
+ return nil
+ }
+ return v.native()
+}
+
+func marshalTreeModelFilter(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapTreeModelFilter(obj), nil
+}
+
+func wrapTreeModelFilter(obj *glib.Object) *TreeModelFilter {
+ tm := wrapTreeModel(obj)
+ return &TreeModelFilter{obj, *tm}
+}
+
+// SetVisibleColumn is a wrapper around gtk_tree_model_filter_set_visible_column().
+func (v *TreeModelFilter) SetVisibleColumn(column int) {
+ C.gtk_tree_model_filter_set_visible_column(v.native(), C.gint(column))
+}
+
+/*
+ * GtkTreePath
+ */
+
+// TreePath is a representation of GTK's GtkTreePath.
+type TreePath struct {
+ GtkTreePath *C.GtkTreePath
+}
+
+// Return a TreePath from the GList
+func TreePathFromList(list *glib.List) *TreePath {
+ if list == nil {
+ return nil
+ }
+ return &TreePath{(*C.GtkTreePath)(list.Data().(unsafe.Pointer))}
+}
+
+// native returns a pointer to the underlying GtkTreePath.
+func (v *TreePath) native() *C.GtkTreePath {
+ if v == nil {
+ return nil
+ }
+ return v.GtkTreePath
+}
+
+func marshalTreePath(p uintptr) (interface{}, error) {
+ c := C.g_value_get_boxed((*C.GValue)(unsafe.Pointer(p)))
+ return &TreePath{(*C.GtkTreePath)(unsafe.Pointer(c))}, nil
+}
+
+func (v *TreePath) free() {
+ C.gtk_tree_path_free(v.native())
+}
+
+// GetIndices is a wrapper around gtk_tree_path_get_indices_with_depth
+func (v *TreePath) GetIndices() []int {
+ var depth C.gint
+ var goindices []int
+ var ginthelp C.gint
+ indices := uintptr(unsafe.Pointer(C.gtk_tree_path_get_indices_with_depth(v.native(), &depth)))
+ size := unsafe.Sizeof(ginthelp)
+ for i := 0; i < int(depth); i++ {
+ goind := int(*((*C.gint)(unsafe.Pointer(indices))))
+ goindices = append(goindices, goind)
+ indices += size
+ }
+ return goindices
+}
+
+// String is a wrapper around gtk_tree_path_to_string().
+func (v *TreePath) String() string {
+ c := C.gtk_tree_path_to_string(v.native())
+ return goString(c)
+}
+
+// TreePathNewFromString is a wrapper around gtk_tree_path_new_from_string().
+func TreePathNewFromString(path string) (*TreePath, error) {
+ cstr := C.CString(path)
+ defer C.free(unsafe.Pointer(cstr))
+ c := C.gtk_tree_path_new_from_string((*C.gchar)(cstr))
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ t := &TreePath{c}
+ runtime.SetFinalizer(t, (*TreePath).free)
+ return t, nil
+}
+
+/*
+ * GtkTreeSelection
+ */
+
+// TreeSelection is a representation of GTK's GtkTreeSelection.
+type TreeSelection struct {
+ *glib.Object
+}
+
+// native returns a pointer to the underlying GtkTreeSelection.
+func (v *TreeSelection) native() *C.GtkTreeSelection {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkTreeSelection(p)
+}
+
+func marshalTreeSelection(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapTreeSelection(obj), nil
+}
+
+func wrapTreeSelection(obj *glib.Object) *TreeSelection {
+ return &TreeSelection{obj}
+}
+
+// GetSelected() is a wrapper around gtk_tree_selection_get_selected().
+func (v *TreeSelection) GetSelected() (model ITreeModel, iter *TreeIter, ok bool) {
+ var cmodel *C.GtkTreeModel
+ var citer C.GtkTreeIter
+ c := C.gtk_tree_selection_get_selected(v.native(),
+ &cmodel, &citer)
+ model = wrapTreeModel(glib.Take(unsafe.Pointer(cmodel)))
+ iter = &TreeIter{citer}
+ ok = gobool(c)
+ return
+}
+
+// SelectPath is a wrapper around gtk_tree_selection_select_path().
+func (v *TreeSelection) SelectPath(path *TreePath) {
+ C.gtk_tree_selection_select_path(v.native(), path.native())
+}
+
+// UnselectPath is a wrapper around gtk_tree_selection_unselect_path().
+func (v *TreeSelection) UnselectPath(path *TreePath) {
+ C.gtk_tree_selection_unselect_path(v.native(), path.native())
+}
+
+// GetSelectedRows is a wrapper around gtk_tree_selection_get_selected_rows().
+// All the elements of returned list are wrapped into (*gtk.TreePath) values.
+//
+// Please note that a runtime finalizer is only set on the head of the linked
+// list, and must be kept live while accessing any item in the list, or the
+// Go garbage collector will free the whole list.
+func (v *TreeSelection) GetSelectedRows(model ITreeModel) *glib.List {
+ var pcmodel **C.GtkTreeModel
+ if model != nil {
+ cmodel := model.toTreeModel()
+ pcmodel = &cmodel
+ }
+
+ clist := C.gtk_tree_selection_get_selected_rows(v.native(), pcmodel)
+ if clist == nil {
+ return nil
+ }
+
+ glist := glib.WrapList(uintptr(unsafe.Pointer(clist)))
+ glist.DataWrapper(func(ptr unsafe.Pointer) interface{} {
+ return &TreePath{(*C.GtkTreePath)(ptr)}
+ })
+ runtime.SetFinalizer(glist, func(glist *glib.List) {
+ glist.FreeFull(func(item interface{}) {
+ path := item.(*TreePath)
+ C.gtk_tree_path_free(path.GtkTreePath)
+ })
+ })
+
+ return glist
+}
+
+// CountSelectedRows() is a wrapper around gtk_tree_selection_count_selected_rows().
+func (v *TreeSelection) CountSelectedRows() int {
+ return int(C.gtk_tree_selection_count_selected_rows(v.native()))
+}
+
+// SelectIter is a wrapper around gtk_tree_selection_select_iter().
+func (v *TreeSelection) SelectIter(iter *TreeIter) {
+ C.gtk_tree_selection_select_iter(v.native(), iter.native())
+}
+
+// SetMode() is a wrapper around gtk_tree_selection_set_mode().
+func (v *TreeSelection) SetMode(m SelectionMode) {
+ C.gtk_tree_selection_set_mode(v.native(), C.GtkSelectionMode(m))
+}
+
+// GetMode() is a wrapper around gtk_tree_selection_get_mode().
+func (v *TreeSelection) GetMode() SelectionMode {
+ return SelectionMode(C.gtk_tree_selection_get_mode(v.native()))
+}
+
+// SelectAll() is a wrapper around gtk_tree_selection_select_all()
+func (v *TreeSelection) SelectAll() {
+ C.gtk_tree_selection_select_all(v.native())
+}
+
+// UnelectAll() is a wrapper around gtk_tree_selection_unselect_all()
+func (v *TreeSelection) UnselectAll() {
+ C.gtk_tree_selection_unselect_all(v.native())
+}
+
+/*
+ * GtkTreeStore
+ */
+
+// TreeStore is a representation of GTK's GtkTreeStore.
+type TreeStore struct {
+ *glib.Object
+
+ // Interfaces
+ TreeModel
+}
+
+// native returns a pointer to the underlying GtkTreeStore.
+func (v *TreeStore) native() *C.GtkTreeStore {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkTreeStore(p)
+}
+
+func marshalTreeStore(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapTreeStore(obj), nil
+}
+
+func wrapTreeStore(obj *glib.Object) *TreeStore {
+ tm := wrapTreeModel(obj)
+ return &TreeStore{obj, *tm}
+}
+
+func (v *TreeStore) toTreeModel() *C.GtkTreeModel {
+ if v == nil {
+ return nil
+ }
+ return C.toGtkTreeModel(unsafe.Pointer(v.GObject))
+}
+
+// TreeStoreNew is a wrapper around gtk_tree_store_newv().
+func TreeStoreNew(types ...glib.Type) (*TreeStore, error) {
+ gtypes := C.alloc_types(C.int(len(types)))
+ for n, val := range types {
+ C.set_type(gtypes, C.int(n), C.GType(val))
+ }
+ defer C.g_free(C.gpointer(gtypes))
+ c := C.gtk_tree_store_newv(C.gint(len(types)), gtypes)
+ if c == nil {
+ return nil, nilPtrErr
+ }
+
+ ts := wrapTreeStore(glib.Take(unsafe.Pointer(c)))
+ return ts, nil
+}
+
+// Append is a wrapper around gtk_tree_store_append().
+func (v *TreeStore) Append(parent *TreeIter) *TreeIter {
+ var ti C.GtkTreeIter
+ var cParent *C.GtkTreeIter
+ if parent != nil {
+ cParent = parent.native()
+ }
+ C.gtk_tree_store_append(v.native(), &ti, cParent)
+ iter := &TreeIter{ti}
+ return iter
+}
+
+// Insert is a wrapper around gtk_tree_store_insert
+func (v *TreeStore) Insert(parent *TreeIter, position int) *TreeIter {
+ var ti C.GtkTreeIter
+ var cParent *C.GtkTreeIter
+ if parent != nil {
+ cParent = parent.native()
+ }
+ C.gtk_tree_store_insert(v.native(), &ti, cParent, C.gint(position))
+ iter := &TreeIter{ti}
+ return iter
+}
+
+// SetValue is a wrapper around gtk_tree_store_set_value()
+func (v *TreeStore) SetValue(iter *TreeIter, column int, value interface{}) error {
+ switch value.(type) {
+ case *gdk.Pixbuf:
+ pix := value.(*gdk.Pixbuf)
+ C._gtk_tree_store_set(v.native(), iter.native(), C.gint(column), unsafe.Pointer(pix.Native()))
+
+ default:
+ gv, err := glib.GValue(value)
+ if err != nil {
+ return err
+ }
+ C.gtk_tree_store_set_value(v.native(), iter.native(),
+ C.gint(column),
+ (*C.GValue)(C.gpointer(gv.Native())))
+ }
+ return nil
+}
+
+// Remove is a wrapper around gtk_tree_store_remove().
+func (v *TreeStore) Remove(iter *TreeIter) bool {
+ var ti *C.GtkTreeIter
+ if iter != nil {
+ ti = iter.native()
+ }
+ return 0 != C.gtk_tree_store_remove(v.native(), ti)
+}
+
+// Clear is a wrapper around gtk_tree_store_clear().
+func (v *TreeStore) Clear() {
+ C.gtk_tree_store_clear(v.native())
+}
+
+/*
+ * GtkViewport
+ */
+
+// Viewport is a representation of GTK's GtkViewport GInterface.
+type Viewport struct {
+ Bin
+
+ // Interfaces
+ Scrollable
+}
+
+// IViewport is an interface type implemented by all structs
+// embedding a Viewport. It is meant to be used as an argument type
+// for wrapper functions that wrap around a C GTK function taking a
+// GtkViewport.
+type IViewport interface {
+ toViewport() *C.GtkViewport
+}
+
+// native() returns a pointer to the underlying GObject as a GtkViewport.
+func (v *Viewport) native() *C.GtkViewport {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkViewport(p)
+}
+
+func wrapViewport(obj *glib.Object) *Viewport {
+ b := wrapBin(obj)
+ s := wrapScrollable(obj)
+ return &Viewport{
+ Bin: *b,
+ Scrollable: *s,
+ }
+}
+
+func (v *Viewport) toViewport() *C.GtkViewport {
+ if v == nil {
+ return nil
+ }
+ return v.native()
+}
+
+// ViewportNew() is a wrapper around gtk_viewport_new().
+func ViewportNew(hadjustment, vadjustment *Adjustment) (*Viewport, error) {
+ c := C.gtk_viewport_new(hadjustment.native(), vadjustment.native())
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapViewport(glib.Take(unsafe.Pointer(c))), nil
+}
+
+func (v *Viewport) SetHAdjustment(adjustment *Adjustment) {
+ wrapScrollable(v.Object).SetHAdjustment(adjustment)
+}
+
+func (v *Viewport) GetHAdjustment() (*Adjustment, error) {
+ return wrapScrollable(v.Object).GetHAdjustment()
+}
+
+func (v *Viewport) SetVAdjustment(adjustment *Adjustment) {
+ wrapScrollable(v.Object).SetVAdjustment(adjustment)
+}
+
+func (v *Viewport) GetVAdjustment() (*Adjustment, error) {
+ return wrapScrollable(v.Object).GetVAdjustment()
+}
+
+/*
+ * GtkVolumeButton
+ */
+
+// VolumeButton is a representation of GTK's GtkVolumeButton.
+type VolumeButton struct {
+ ScaleButton
+}
+
+// native() returns a pointer to the underlying GtkVolumeButton.
+func (v *VolumeButton) native() *C.GtkVolumeButton {
+ if v == nil || v.GObject == nil {
+ return nil
+ }
+ p := unsafe.Pointer(v.GObject)
+ return C.toGtkVolumeButton(p)
+}
+
+func marshalVolumeButton(p uintptr) (interface{}, error) {
+ c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p)))
+ obj := glib.Take(unsafe.Pointer(c))
+ return wrapVolumeButton(obj), nil
+}
+
+func wrapVolumeButton(obj *glib.Object) *VolumeButton {
+ actionable := wrapActionable(obj)
+ return &VolumeButton{ScaleButton{Button{Bin{Container{Widget{glib.InitiallyUnowned{obj}}}}, actionable}}}
+}
+
+// VolumeButtonNew() is a wrapper around gtk_button_new().
+func VolumeButtonNew() (*VolumeButton, error) {
+ c := C.gtk_volume_button_new()
+ if c == nil {
+ return nil, nilPtrErr
+ }
+ return wrapVolumeButton(glib.Take(unsafe.Pointer(c))), nil
+}
+
+type WrapFn interface{}
+
+var WrapMap = map[string]WrapFn{
+ "GtkAccelGroup": wrapAccelGroup,
+ "GtkAccelMao": wrapAccelMap,
+ "GtkAdjustment": wrapAdjustment,
+ "GtkApplicationWindow": wrapApplicationWindow,
+ "GtkAssistant": wrapAssistant,
+ "GtkBin": wrapBin,
+ "GtkBox": wrapBox,
+ "GtkButton": wrapButton,
+ "GtkCalendar": wrapCalendar,
+ "GtkCellLayout": wrapCellLayout,
+ "GtkCellRenderer": wrapCellRenderer,
+ "GtkCellRendererSpinner": wrapCellRendererSpinner,
+ "GtkCellRendererPixbuf": wrapCellRendererPixbuf,
+ "GtkCellRendererText": wrapCellRendererText,
+ "GtkCellRendererToggle": wrapCellRendererToggle,
+ "GtkCheckButton": wrapCheckButton,
+ "GtkCheckMenuItem": wrapCheckMenuItem,
+ "GtkClipboard": wrapClipboard,
+ "GtkColorButton": wrapColorButton,
+ "GtkContainer": wrapContainer,
+ "GtkDialog": wrapDialog,
+ "GtkDrawingArea": wrapDrawingArea,
+ "GtkEditable": wrapEditable,
+ "GtkEntry": wrapEntry,
+ "GtkEntryBuffer": wrapEntryBuffer,
+ "GtkEntryCompletion": wrapEntryCompletion,
+ "GtkEventBox": wrapEventBox,
+ "GtkExpander": wrapExpander,
+ "GtkFrame": wrapFrame,
+ "GtkFileChooser": wrapFileChooser,
+ "GtkFileChooserButton": wrapFileChooserButton,
+ "GtkFileChooserDialog": wrapFileChooserDialog,
+ "GtkFileChooserWidget": wrapFileChooserWidget,
+ "GtkGrid": wrapGrid,
+ "GtkIconView": wrapIconView,
+ "GtkImage": wrapImage,
+ "GtkLabel": wrapLabel,
+ "GtkLayout": wrapLayout,
+ "GtkLinkButton": wrapLinkButton,
+ "GtkListStore": wrapListStore,
+ "GtkMenu": wrapMenu,
+ "GtkMenuBar": wrapMenuBar,
+ "GtkMenuButton": wrapMenuButton,
+ "GtkMenuItem": wrapMenuItem,
+ "GtkMenuShell": wrapMenuShell,
+ "GtkMessageDialog": wrapMessageDialog,
+ "GtkNotebook": wrapNotebook,
+ "GtkOffscreenWindow": wrapOffscreenWindow,
+ "GtkOrientable": wrapOrientable,
+ "GtkOverlay": wrapOverlay,
+ "GtkPaned": wrapPaned,
+ "GtkProgressBar": wrapProgressBar,
+ "GtkRadioButton": wrapRadioButton,
+ "GtkRadioMenuItem": wrapRadioMenuItem,
+ "GtkRange": wrapRange,
+ "GtkRecentChooser": wrapRecentChooser,
+ "GtkRecentChooserMenu": wrapRecentChooserMenu,
+ "GtkRecentFilter": wrapRecentFilter,
+ "GtkRecentManager": wrapRecentManager,
+ "GtkScaleButton": wrapScaleButton,
+ "GtkScale": wrapScale,
+ "GtkScrollable": wrapScrollable,
+ "GtkScrollbar": wrapScrollbar,
+ "GtkScrolledWindow": wrapScrolledWindow,
+ "GtkSearchEntry": wrapSearchEntry,
+ "GtkSeparator": wrapSeparator,
+ "GtkSeparatorMenuItem": wrapSeparatorMenuItem,
+ "GtkSeparatorToolItem": wrapSeparatorToolItem,
+ "GtkSpinButton": wrapSpinButton,
+ "GtkSpinner": wrapSpinner,
+ "GtkStatusbar": wrapStatusbar,
+ "GtkSwitch": wrapSwitch,
+ "GtkTextView": wrapTextView,
+ "GtkTextBuffer": wrapTextBuffer,
+ "GtkTextTag": wrapTextTag,
+ "GtkTextTagTable": wrapTextTagTable,
+ "GtkToggleButton": wrapToggleButton,
+ "GtkToolbar": wrapToolbar,
+ "GtkToolButton": wrapToolButton,
+ "GtkToolItem": wrapToolItem,
+ "GtkTreeModel": wrapTreeModel,
+ "GtkTreeModelFilter": wrapTreeModelFilter,
+ "GtkTreeSelection": wrapTreeSelection,
+ "GtkTreeStore": wrapTreeStore,
+ "GtkTreeView": wrapTreeView,
+ "GtkTreeViewColumn": wrapTreeViewColumn,
+ "GtkViewport": wrapViewport,
+ "GtkVolumeButton": wrapVolumeButton,
+ "GtkWidget": wrapWidget,
+ "GtkWindow": wrapWindow,
+}
+
+// cast takes a native GObject and casts it to the appropriate Go struct.
+//TODO change all wrapFns to return an IObject
+func cast(c *C.GObject) (glib.IObject, error) {
+ var (
+ className = goString(C.object_get_class_name(c))
+ obj = glib.Take(unsafe.Pointer(c))
+ )
+
+ fn, ok := WrapMap[className]
+ if !ok {
+ return nil, errors.New("unrecognized class name '" + className + "'")
+ }
+
+ rf := reflect.ValueOf(fn)
+ if rf.Type().Kind() != reflect.Func {
+ return nil, errors.New("wraper is not a function")
+ }
+
+ v := reflect.ValueOf(obj)
+ rv := rf.Call([]reflect.Value{v})
+
+ if len(rv) != 1 {
+ return nil, errors.New("wrapper did not return")
+ }
+
+ if k := rv[0].Kind(); k != reflect.Ptr {
+ return nil, fmt.Errorf("wrong return type %s", k)
+ }
+
+ ret, ok := rv[0].Interface().(glib.IObject)
+ if !ok {
+ return nil, errors.New("did not return an IObject")
+ }
+
+ return ret, nil
+}