#
# This is an EXAMPLE config file containing API calls used by the GTK-server.
#
# When developing your own application, feel free to change any of the
# definitions below to your needs. Per application you can use an individual
# configfile. Just put the GTK-server configfile in the same directory as your
# client script, as the GTK-server will look there first.
#
# Do you want to add more GTK functions? Please consult the GTK documentation
# at http://www.gtk.org/api/.
#
# The layout of this file is explained in the man-page:
#
# man gtk-server.cfg
#
#
# Happy GUIfying! Greetings, Peter van Eerten
#
#---------------------------------------------------------------------------
#
# Only when the gtk-server binary does not contain the GTK libs, these
# settings must be activated. For a static binary this is not necessary.
#
# Unix/BSD/Linux
#
# GTK1 backend
# LIB_NAME = libgtk.so, libgdk.so, libglib.so, libglade.so
#
# GTK2 backend
# LIB_NAME = libgtk-x11-2.0.so, libgdk-x11-2.0.so
#
# GTK3 backend
# LIB_NAME = libgtk-3.0.so, libgdk-3.0.so
#
# Common GTK2/GTK3 libs
# LIB_NAME = libatk-1.0.so, libpango-1.0.so, libgdk_pixbuf_xlib-2.0.so, libglib-2.0.so, libgobject-2.0.so, libcairo.so
#
# Glade
# LIB_NAME = libglade-2.0.so
#
# GtkGlarea, GtkGlExt
# LIB_NAME = libgtkgl-2.0.so, libgtkglext-x11-1.0.so, libgdkglext-x11-1.0.so
#
# Mozilla
# LIB_NAME = libgtkembedmoz.so
#
# Poppler for PDF files
# LIB_NAME = libpoppler-glib.so
#
# XForms backend
# LIB_NAME = libforms.so, libflimage.so, libformsGL.so
#
# Console backend (ncurses)
# LIB_NAME = libncurses.so, libform.so, libpanel.so, libmenu.so
#
# O joy: X, GL and GLUT can be imported also!
# LIB_NAME = libX11.so, libglut.so, libGLU.so, libGL.so
#
# Generic libs
# LIB_NAME = libm.so, libc.so.6
#
# We can include an additional configfile here. For example, a configfile with macros.
#
# INCLUDE = /etc/gtk-server-extra.cfg
#
#---------------------------------------------------------------------------
#
# MacOSX Quartz GTK2 port
#
# LIB_NAME = /Library/Frameworks/Gtk.framework/Libraries/libgtk-quartz-2.0.0.dylib
# LIB_NAME = /Library/Frameworks/Gtk.framework/Libraries/libgdk-quartz-2.0.0.dylib
# LIB_NAME = /Library/Frameworks/GLib.framework/Libraries/libglib-2.0.0.dylib
# LIB_NAME = /Library/Frameworks/GLib.framework/Libraries/libgobject-2.0.0.dylib
# LIB_NAME = /Library/Frameworks/Gtk.framework/Libraries/libatk-1.0.0.dylib
# LIB_NAME = /Library/Frameworks/Gtk.framework/Libraries/libpango-1.0.0.dylib
# LIB_NAME = /Library/Frameworks/Gtk.framework/Libraries/libgdk-pixbuf-2.0.0.dylib
#
# Console backend (ncurses)
# LIB_NAME = libcurses.dylib, libform.dylib, libpanel.dylib, libmenu.dylib
#
# O joy: GL and GLUT can be imported also!
# LIB_NAME = /System/Library/Frameworks/OpenGL.Framework/libraries/libGL.dylib
# LIB_NAME = /System/Library/Frameworks/GLUT.Framework/GLUT
#
# Generic libs
# LIB_NAME = libm.dylib, libc.dylib
#
#---------------------------------------------------------------------------
#
# Windows
#
# GTK1 backend:
# LIB_NAME = libgtk-0.dll, libgdk-0.dll, libglib-2.0-0.dll, libglade.dll
#
# GTK2 backend:
# LIB_NAME = libgtk-win32-2.0-0.dll, libgdk-win32-2.0-0.dll, libglib-2.0-0.dll, libgobject-2.0-0.dll
# LIB_NAME = libatk-1.0-0.dll, libpango-1.0-0.dll, libgdk_pixbuf-2.0-0.dll
#
# Glade
# LIB_NAME = libglade-2.0-0.dll
#
# Poppler for PDF files
# LIB_NAME = libpoppler-glib-2.dll
#
# GtkGlArea, GtkGlExt
# LIB_NAME = libgtkglarea-win32-2.0-0.dll, libgtkglext-win32-1.0-0.dll, libgdkglext-win32-1.0-0.dll
#
# O joy, GL and GLUT can be imported also!
# Get the Win32 GLUT library from http://www.xmission.com/~nate/glut.html
# LIB_NAME = glut32.dll, glu32.dll, opengl32.dll
#
# Generic libs
# LIB_NAME = msvcrt.dll
#
# We can include an additional configfile here.
#
# INCLUDE = c:/gtk-server-extra.cfg
#
#---------------------------------------------------------------------------
#
# API name, callback signal type, return value, amount of arguments, arg1, arg2...
#
# GTK_WINDOW
#
FUNCTION_NAME = gtk_window_new, delete-event, WIDGET, 1, INT
FUNCTION_NAME = gtk_window_set_title, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_window_get_title, NONE, STRING, 1, WIDGET
FUNCTION_NAME = gtk_window_set_default_size, NONE, NONE, 3, WIDGET, INT, INT
FUNCTION_NAME = gtk_window_set_position, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_window_set_resizable, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_window_set_transient_for, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_window_set_modal, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_window_maximize, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_message_dialog_new, response, WIDGET, 6, WIDGET, INT, INT, INT, STRING, STRING
FUNCTION_NAME = gtk_message_dialog_new_with_markup, response, WIDGET, 6, WIDGET, INT, INT, INT, STRING, STRING
FUNCTION_NAME = gtk_window_set_icon_from_file, NONE, BOOL, 3, WIDGET, STRING, NULL
FUNCTION_NAME = gtk_window_set_keep_above, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_window_set_keep_below, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_about_dialog_set_version, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_window_set_policy, NONE, NONE, 4, WIDGET, INT, INT, INT
FUNCTION_NAME = gtk_window_fullscreen, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_window_unfullscreen, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_window_set_icon_name, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_window_add_accel_group, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_window_set_type_hint, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_window_reshow_with_initial_size, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_window_set_accept_focus, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_window_present, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_window_is_active, NONE, BOOL, 1, WIDGET
#
# Containers
#
FUNCTION_NAME = gtk_table_new, NONE, WIDGET, 3, INT, INT, BOOL
FUNCTION_NAME = gtk_table_attach_defaults, NONE, NONE, 6, WIDGET, WIDGET, INT, INT, INT, INT
FUNCTION_NAME = gtk_container_add, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_container_remove, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_container_set_border_width, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_hbox_new, NONE, WIDGET, 2, BOOL, INT
FUNCTION_NAME = gtk_vbox_new, NONE, WIDGET, 2, BOOL, INT
FUNCTION_NAME = gtk_box_pack_start, NONE, NONE, 5, WIDGET, WIDGET, BOOL, BOOL, INT
FUNCTION_NAME = gtk_box_pack_end, NONE, NONE, 5, WIDGET, WIDGET, BOOL, BOOL, INT
FUNCTION_NAME = gtk_box_pack_start_defaults, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_box_pack_end_defaults, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_box_set_spacing, NONE, NONE, 2, WIDGET, INT
#
# GTK_BUTTON
#
FUNCTION_NAME = gtk_button_new, clicked, WIDGET, 0
FUNCTION_NAME = gtk_button_new_with_label, clicked, WIDGET, 1, STRING
FUNCTION_NAME = gtk_button_new_from_stock, clicked, WIDGET, 1, STRING
FUNCTION_NAME = gtk_button_new_with_mnemonic, clicked, WIDGET, 1, STRING
FUNCTION_NAME = gtk_button_set_use_stock, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_button_set_label, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_button_set_relief, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_hbutton_box_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_button_box_set_layout, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_bin_get_child, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_button_clicked, NONE, NONE, 1, WIDGET
#
# GTK_TOGGLE
#
FUNCTION_NAME = gtk_toggle_button_new, clicked, WIDGET, 0
FUNCTION_NAME = gtk_toggle_button_new_with_label, clicked, WIDGET, 1, STRING
FUNCTION_NAME = gtk_toggle_button_new_with_mnemonic, clicked, WIDGET, 1, STRING
FUNCTION_NAME = gtk_toggle_button_get_active, NONE, BOOL, 1, WIDGET
FUNCTION_NAME = gtk_toggle_button_set_active, NONE, NONE, 2, WIDGET, BOOL
#
# GTK_CHECK_BUTTON
#
FUNCTION_NAME = gtk_check_button_new_with_label, clicked, WIDGET, 1, STRING
#
# GTK_ENTRY
#
FUNCTION_NAME = gtk_entry_new, activate, WIDGET, 0
FUNCTION_NAME = gtk_entry_get_text, NONE, STRING, 1, WIDGET
FUNCTION_NAME = gtk_entry_set_text, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_entry_set_visibility, NONE, NONE, 2, WIDGET, BOOL
#
# GTK_EDITABLE
#
FUNCTION_NAME = gtk_editable_delete_text, NONE, NONE, 3, WIDGET, INT, INT
FUNCTION_NAME = gtk_editable_get_chars, NONE, STRING, 3, WIDGET, INT, INT
FUNCTION_NAME = gtk_editable_set_editable, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_editable_select_region, NONE, NONE, 3, WIDGET, INT, INT
FUNCTION_NAME = gtk_editable_set_position, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_editable_get_position, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_editable_get_selection_bounds, NONE, BOOL, 3, WIDGET, PTR_INT, PTR_INT
FUNCTION_NAME = gtk_editable_insert_text, NONE, NONE, 4, WIDGET, STRING, INT, PTR_INT
#
# GTK_TEXT_VIEW related(GTK2.x)
#
FUNCTION_NAME = gtk_text_buffer_new, NONE, WIDGET, 1, NULL
FUNCTION_NAME = gtk_text_buffer_set_text, NONE, NONE, 3, WIDGET, STRING, INT
FUNCTION_NAME = gtk_text_buffer_insert_at_cursor, NONE, NONE, 3, WIDGET, STRING, INT
FUNCTION_NAME = gtk_text_buffer_get_insert, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_text_buffer_get_start_iter, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_get_end_iter, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_get_bounds, NONE, NONE, 3, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_get_selection_bounds, NONE, BOOL, 3, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_get_iter_at_offset, NONE, NONE, 3, WIDGET, WIDGET, INT
FUNCTION_NAME = gtk_text_buffer_get_text, NONE, STRING, 4, WIDGET, WIDGET, WIDGET, BOOL
FUNCTION_NAME = gtk_text_buffer_insert, NONE, NONE, 4, WIDGET, WIDGET, STRING, INT
FUNCTION_NAME = gtk_text_buffer_create_tag, NONE, WIDGET, 5, WIDGET, STRING, STRING, INT, NULL
FUNCTION_NAME = gtk_text_buffer_insert_with_tags_by_name, NONE, NONE, 8, WIDGET, WIDGET, STRING, INT, STRING, STRING, STRING, NULL
FUNCTION_NAME = gtk_text_buffer_apply_tag_by_name, NONE, NONE, 4, WIDGET, STRING, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_remove_tag_by_name, NONE, NONE, 4, WIDGET, STRING, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_remove_all_tags, NONE, NONE, 3, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_get_tag_table, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_text_buffer_select_range, NONE, NONE, 3, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_get_selection_bound, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_text_buffer_get_line_count, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_text_buffer_create_mark, NONE, WIDGET, 4, WIDGET, STRING, WIDGET, BOOL
FUNCTION_NAME = gtk_text_buffer_get_iter_at_mark, NONE, NONE, 3, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_get_iter_at_line, NONE, NONE, 3, WIDGET, WIDGET, INT
FUNCTION_NAME = gtk_text_buffer_delete, NONE, NONE, 3, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_delete_mark, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_delete_mark_by_name, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_text_buffer_place_cursor, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_copy_clipboard, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_buffer_cut_clipboard, NONE, NONE, 3, WIDGET, WIDGET, BOOL
FUNCTION_NAME = gtk_text_buffer_paste_clipboard, NONE, NONE, 4, WIDGET, WIDGET, NULL, BOOL
FUNCTION_NAME = gtk_scrolled_window_new, NONE, WIDGET, 2, NULL, NULL
FUNCTION_NAME = gtk_scrolled_window_set_policy, NONE, NONE, 3, WIDGET, INT, INT
FUNCTION_NAME = gtk_scrolled_window_set_shadow_type, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_scrolled_window_add_with_viewport, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_scrolled_window_get_hadjustment, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_scrolled_window_get_vadjustment, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_scrolled_window_set_hadjustment, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_scrolled_window_set_vadjustment, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_scrolled_window_set_placement, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_text_view_new_with_buffer, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_text_view_set_wrap_mode, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_text_view_set_editable, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_text_view_set_border_window_size, NONE, NONE, 3, WIDGET, INT, INT
FUNCTION_NAME = gtk_text_view_move_mark_onscreen, NONE, BOOL, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_view_scroll_to_mark, NONE, NONE, 6, WIDGET, WIDGET, DOUBLE, BOOL, DOUBLE, DOUBLE
FUNCTION_NAME = gtk_text_view_scroll_mark_onscreen, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_view_set_pixels_inside_wrap, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_text_view_get_pixels_inside_wrap, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_text_view_set_pixels_above_lines, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_text_view_get_pixels_above_lines, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_text_view_set_cursor_visible, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_text_view_window_to_buffer_coords, NONE, NONE, 6, WIDGET, INT, INT, INT, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_iter_forward_search, NONE, BOOL, 6, WIDGET, STRING, INT, WIDGET, WIDGET, NULL
FUNCTION_NAME = gtk_text_iter_forward_visible_cursor_position, NONE, BOOL, 1, WIDGET
FUNCTION_NAME = gtk_text_iter_forward_to_line_end, NONE, BOOL, 1, WIDGET
FUNCTION_NAME = gtk_text_iter_set_line, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_text_iter_set_line_offset, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_text_iter_set_line_index, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_text_iter_get_text, NONE, STRING, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_text_iter_get_line, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_text_view_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_text_view_get_buffer, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_text_tag_table_remove, NONE, NONE, 2, WIDGET, WIDGET
#
# GTK_TEXT
#
FUNCTION_NAME = gtk_text_new, NONE, WIDGET, 2, NULL, NULL
FUNCTION_NAME = gtk_text_set_editable, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_text_insert, NONE, NONE, 6, WIDGET, NULL, NULL, NULL, STRING, INT
FUNCTION_NAME = gtk_text_set_adjustments, NONE, NONE, 3, WIDGET, NULL, WIDGET
FUNCTION_NAME = gtk_text_get_length, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_text_set_word_wrap, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_text_backward_delete, NONE, BOOL, 2, WIDGET, INT
FUNCTION_NAME = gtk_text_forward_delete, NONE, BOOL, 2, WIDGET, INT
FUNCTION_NAME = gtk_text_set_point, NONE, NONE, 2, WIDGET, INT
#
# GDK functions and drawing stuff
#
FUNCTION_NAME = gdk_font_load, NONE, WIDGET, 1, STRING
FUNCTION_NAME = gdk_pixmap_new, NONE, WIDGET, 4, WIDGET, INT, INT, INT
FUNCTION_NAME = gdk_pixmap_unref, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gdk_pixmap_create_from_xpm, NONE, WIDGET, 4, WIDGET, NULL, NULL, STRING
FUNCTION_NAME = gdk_pixmap_colormap_create_from_xpm, NONE, WIDGET, 5, NULL, WIDGET, NULL, NULL, STRING
FUNCTION_NAME = gdk_draw_rectangle, NONE, NONE, 7, WIDGET, WIDGET, BOOL, INT, INT, INT, INT
FUNCTION_NAME = gdk_draw_arc, NONE, NONE, 9, WIDGET, WIDGET, BOOL, INT, INT, INT, INT, INT, INT
FUNCTION_NAME = gdk_draw_line, NONE, NONE, 6, WIDGET, WIDGET, INT, INT, INT, INT
FUNCTION_NAME = gdk_draw_point, NONE, NONE, 4, WIDGET, WIDGET, INT, INT
FUNCTION_NAME = gdk_draw_layout, NONE, NONE, 5, WIDGET, WIDGET, INT, INT, WIDGET
FUNCTION_NAME = gdk_draw_layout_with_colors, NONE, NONE, 7, WIDGET, WIDGET, INT, INT, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gdk_draw_drawable, NONE, NONE, 9, WIDGET, WIDGET, WIDGET, INT, INT, INT, INT, INT, INT
FUNCTION_NAME = gdk_gc_new, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gdk_gc_set_rgb_fg_color, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gdk_gc_set_rgb_bg_color, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gdk_gc_set_foreground, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gdk_gc_set_background, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gdk_gc_set_colormap, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gdk_color_alloc, NONE, INT, 2, WIDGET, WIDGET
FUNCTION_NAME = gdk_color_parse, NONE, NONE, 2, STRING, WIDGET
FUNCTION_NAME = gdk_colormap_get_system, NONE, WIDGET, 0
FUNCTION_NAME = gdk_colormap_alloc_color, NONE, BOOL, 4, WIDGET, WIDGET, BOOL, BOOL
FUNCTION_NAME = gdk_get_default_root_window, NONE, WIDGET, 0
FUNCTION_NAME = gdk_rgb_find_color, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gdk_drawable_set_colormap, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gdk_drawable_get_size, NONE, NONE, 3, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gdk_drawable_get_depth, NONE, INT, 1, WIDGET
FUNCTION_NAME = gdk_keymap_translate_keyboard_state, NONE, BOOL, 8, NULL, INT, INT, INT, WIDGET, NULL, NULL, NULL
FUNCTION_NAME = gdk_window_process_all_updates, NONE, NONE, 0
FUNCTION_NAME = gdk_window_freeze_updates, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gdk_window_thaw_updates, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gdk_window_get_geometry, NONE, NONE, 6, WIDGET, NULL, NULL, WIDGET, STRING, NULL
FUNCTION_NAME = gdk_screen_get_default, NONE, WIDGET, 0
FUNCTION_NAME = gdk_screen_get_width, NONE, INT, 1, WIDGET
FUNCTION_NAME = gdk_screen_get_height, NONE, INT, 1, WIDGET
FUNCTION_NAME = gdk_screen_width, NONE, INT, 0
FUNCTION_NAME = gdk_screen_height, NONE, INT, 0
FUNCTION_NAME = gdk_flush, NONE, NONE, 0
FUNCTION_NAME = gdk_init, NONE, NONE, 2, NULL, NULL
FUNCTION_NAME = gdk_display_get_default, NONE, WIDGET, 0
FUNCTION_NAME = gdk_display_get_pointer, NONE, NONE, 5, WIDGET, NULL, WIDGET, WIDGET, NULL
FUNCTION_NAME = gdk_cursor_new, NONE, WIDGET, 1, INT
FUNCTION_NAME = gdk_window_set_cursor, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gdk_window_get_pointer, NONE, WIDGET, 4, WIDGET, PTR_INT, PTR_INT, PTR_WIDGET
FUNCTION_NAME = gdk_window_create_similar_surface, NONE, WIDGET, 4, WIDGET, INT, INT, INT
FUNCTION_NAME = gdk_visual_get_best_depth, NONE, INT, 0
FUNCTION_NAME = gdk_visual_get_system, NONE, WIDGET, 0
FUNCTION_NAME = gdk_visual_get_screen, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gdk_threads_enter, NONE, NONE, 0
FUNCTION_NAME = gdk_threads_leave, NONE, NONE, 0
FUNCTION_NAME = gdk_cairo_create, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gdk_cairo_set_source_rgba, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gdk_rgba_parse, NONE, INT, 2, WIDGET, STRING
#
# GTK functions for drawings
#
FUNCTION_NAME = gtk_image_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_image_new_from_pixmap, NONE, WIDGET, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_image_new_from_pixbuf, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_image_set_from_pixbuf, NONE, WIDGET, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_image_set_from_pixmap, NONE, NONE, 3, WIDGET, WIDGET, NULL
FUNCTION_NAME = gtk_image_set, NONE, NONE, 3, WIDGET, WIDGET, NULL
FUNCTION_NAME = gtk_image_set_from_file, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_image_set_from_surface, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_image_new_from_file, NONE, WIDGET, 1, STRING
FUNCTION_NAME = gtk_image_new_from_stock, NONE, WIDGET, 2, STRING, INT
FUNCTION_NAME = gtk_image_menu_item_new_from_stock, NONE, WIDGET, 2, STRING, WIDGET
FUNCTION_NAME = gtk_pixmap_new, NONE, WIDGET, 2, WIDGET, NULL
FUNCTION_NAME = gtk_drawing_area_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_widget_queue_draw, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_widget_get_colormap, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_widget_get_parent_window, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_widget_create_pango_layout, NONE, WIDGET, 2, WIDGET, STRING
FUNCTION_NAME = gtk_widget_get_window, NONE, WIDGET, 1, WIDGET
#
# GTK_SCROLLBARS
#
FUNCTION_NAME = gtk_vscrollbar_new, NONE, WIDGET, 1, WIDGET
#
# GTK_LABEL
#
FUNCTION_NAME = gtk_label_new, NONE, WIDGET, 1, STRING
FUNCTION_NAME = gtk_label_set_text, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_label_get_text, NONE, STRING, 1, WIDGET
FUNCTION_NAME = gtk_label_set_line_wrap, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_label_set_selectable, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_label_set_use_markup, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_label_set_justify, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_label_get_width_chars, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_label_get_max_width_chars, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_label_set_markup_with_mnemonic, NONE, NONE, 2, WIDGET, STRING
#
# GTK_FRAME
#
FUNCTION_NAME = gtk_frame_new, NONE, WIDGET, 1, NULL
FUNCTION_NAME = gtk_frame_set_label_align, NONE, NONE, 3, WIDGET, FLOAT, FLOAT
FUNCTION_NAME = gtk_frame_set_label, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_frame_get_label, NONE, STRING, 1, WIDGET
FUNCTION_NAME = gtk_frame_get_label_widget, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_aspect_frame_new, NONE, WIDGET, 5, STRING, FLOAT, FLOAT, FLOAT, BOOL
FUNCTION_NAME = gtk_aspect_frame_set, NONE, NONE, 5, WIDGET, FLOAT, FLOAT, FLOAT, BOOL
FUNCTION_NAME = gtk_frame_set_shadow_type, NONE, NONE, 2, WIDGET, INT
#
# GTK_RADIO_BUTTON
#
FUNCTION_NAME = gtk_radio_button_new, clicked, WIDGET, 1, NULL
FUNCTION_NAME = gtk_radio_button_new_with_label, clicked, WIDGET, 2, WIDGET, STRING
FUNCTION_NAME = gtk_radio_button_new_from_widget, clicked, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_radio_button_new_with_label_from_widget, clicked, WIDGET, 2, WIDGET, STRING
#
# GTK_NOTEBOOK
#
FUNCTION_NAME = gtk_notebook_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_notebook_set_tab_pos, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_notebook_popup_enable, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_notebook_popup_disable, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_notebook_get_n_pages, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_notebook_get_nth_page, NONE, WIDGET, 2, WIDGET, INT
FUNCTION_NAME = gtk_notebook_append_page, NONE, INT, 3, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gtk_notebook_insert_page, NONE, INT, 4, WIDGET, WIDGET, WIDGET, INT
FUNCTION_NAME = gtk_notebook_remove_page, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_notebook_get_current_page, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_notebook_get_menu_label, NONE, WIDGET, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_notebook_set_page, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_notebook_set_current_page, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_notebook_set_tab_label_text, NONE, NONE, 3, WIDGET, WIDGET, STRING
FUNCTION_NAME = gtk_notebook_set_scrollable, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_notebook_set_tab_reorderable, NONE, NONE, 3, WIDGET, WIDGET, BOOL
#
# GTK_ADJUSTMENT
#
FUNCTION_NAME = gtk_adjustment_new, NONE, WIDGET, 6, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE
FUNCTION_NAME = gtk_adjustment_get_value, NONE, DOUBLE, 1, WIDGET
FUNCTION_NAME = gtk_adjustment_set_value, NONE, NONE, 2, WIDGET, DOUBLE
FUNCTION_NAME = gtk_adjustment_clamp_page, NONE, NONE, 3, WIDGET, DOUBLE, DOUBLE
#
# GTK_RANGE
#
FUNCTION_NAME = gtk_range_get_adjustment, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_range_get_value, NONE, DOUBLE, 1, WIDGET
FUNCTION_NAME = gtk_range_set_value, NONE, NONE, 2, WIDGET, DOUBLE
#
# GTK_SCALE
#
FUNCTION_NAME = gtk_scale_set_draw_value, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_scale_set_value_pos, NONE, NONE, 2, WIDGET, INT
#
# GTK_HSCALE
#
FUNCTION_NAME = gtk_hscale_new, value-changed, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_hscale_new_with_range, value-changed, WIDGET, 3, DOUBLE, DOUBLE, DOUBLE
#
# GTK_VSCALE
#
FUNCTION_NAME = gtk_vscale_new_with_range, value-changed, WIDGET, 3, DOUBLE, DOUBLE, DOUBLE
#
# GTK_SPIN
#
FUNCTION_NAME = gtk_spin_button_new, NONE, WIDGET, 3, WIDGET, DOUBLE, INT
FUNCTION_NAME = gtk_spin_button_new_with_range, NONE, WIDGET, 3, DOUBLE, DOUBLE, DOUBLE
FUNCTION_NAME = gtk_spin_button_get_value_as_int, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_spin_button_get_value, NONE, FLOAT, 1, WIDGET
FUNCTION_NAME = gtk_spin_button_set_wrap, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_spin_button_set_value, NONE, NONE, 2, WIDGET, DOUBLE
#
# GTK_ARROW
#
FUNCTION_NAME = gtk_arrow_new, NONE, WIDGET, 2, INT, INT
#
# File selector
#
FUNCTION_NAME = gtk_file_chooser_dialog_new, NONE, WIDGET, 8, STRING, WIDGET, INT, STRING, INT, STRING, INT, NULL
FUNCTION_NAME = gtk_file_chooser_widget_new, NONE, WIDGET, 1, INT
FUNCTION_NAME = gtk_file_chooser_set_local_only, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_dialog_run, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_file_chooser_get_filename, NONE, STRING, 1, WIDGET
FUNCTION_NAME = gtk_file_chooser_get_uri, NONE, STRING, 1, WIDGET
FUNCTION_NAME = gtk_file_chooser_get_current_folder, NONE, STRING, 1, WIDGET
FUNCTION_NAME = gtk_file_chooser_set_filename, NONE, BOOL, 2, WIDGET, STRING
FUNCTION_NAME = gtk_file_filter_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_file_filter_add_pattern, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_file_filter_set_name, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_file_chooser_add_filter, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_file_chooser_set_select_multiple, NONE, NONE, 2, WIDGET, BOOL
#
# FONT selector
#
FUNCTION_NAME = gtk_font_selection_dialog_new, button-press-event, WIDGET, 1, STRING
FUNCTION_NAME = gtk_font_selection_dialog_get_font_name, NONE, STRING, 1, WIDGET
FUNCTION_NAME = gtk_font_selection_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_font_selection_get_font_name, NONE, STRING, 1, WIDGET
FUNCTION_NAME = gtk_font_selection_set_font_name, NONE, BOOL, 2, WIDGET, STRING
#
# Color selections
#
FUNCTION_NAME = gtk_color_selection_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_color_selection_set_has_opacity_control, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_color_selection_set_current_color, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_color_selection_get_current_color, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_color_selection_set_color, NONE, NONE, 2, WIDGET, STRING
#
# Menubar
#
FUNCTION_NAME = gtk_menu_bar_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_menu_shell_append, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_menu_item_new, activate, WIDGET, 0
FUNCTION_NAME = gtk_menu_item_new_with_label, activate, WIDGET, 1, STRING
FUNCTION_NAME = gtk_menu_item_new_with_mnemonic, activate, WIDGET, 1, STRING
FUNCTION_NAME = gtk_tearoff_menu_item_new, activate, WIDGET, 0
FUNCTION_NAME = gtk_separator_menu_item_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_menu_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_menu_set_title, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_menu_item_set_right_justified, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_menu_item_set_submenu, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_check_menu_item_new_with_label, activate, WIDGET, 1, STRING
FUNCTION_NAME = gtk_check_menu_item_new_with_mnemonic, activate, WIDGET, 1, STRING
FUNCTION_NAME = gtk_check_menu_item_get_active, NONE, BOOL, 1, WIDGET
FUNCTION_NAME = gtk_check_menu_item_set_active, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_menu_popup, NONE, NONE, 7, WIDGET, NULL, NULL, NULL, NULL, INT, INT
#
# GTK_PROGRESS_BAR
#
FUNCTION_NAME = gtk_progress_bar_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_progress_bar_set_text, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_progress_bar_set_fraction, NONE, NONE, 2, WIDGET, DOUBLE
FUNCTION_NAME = gtk_progress_bar_pulse, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_progress_bar_set_pulse_step, NONE, NONE, 2, WIDGET, DOUBLE
FUNCTION_NAME = gtk_progress_configure, NONE, NONE, 4, WIDGET, DOUBLE, DOUBLE, DOUBLE
FUNCTION_NAME = gtk_progress_set_value, NONE, NONE, 2, WIDGET, DOUBLE
#
# GTK_STATUS_BAR
#
FUNCTION_NAME = gtk_statusbar_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_statusbar_get_context_id, NONE, INT, 2, WIDGET, STRING
FUNCTION_NAME = gtk_statusbar_push, NONE, INT, 3, WIDGET, INT, STRING
FUNCTION_NAME = gtk_statusbar_pop, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_statusbar_remove, NONE, NONE, 3, WIDGET, INT, INT
FUNCTION_NAME = gtk_statusbar_set_has_resize_grip, NONE, NONE, 2, WIDGET, BOOL
#
# EVENT_BOX
#
FUNCTION_NAME = gtk_event_box_new, NONE, WIDGET, 0
#
# COMBO BOX - only with GTK 2.4.x or higher
#
FUNCTION_NAME = gtk_combo_box_new_text, changed, WIDGET, 0
FUNCTION_NAME = gtk_combo_box_text_new, changed, WIDGET, 0
FUNCTION_NAME = gtk_combo_box_append_text, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_combo_box_text_append_text, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_combo_box_insert_text, NONE, NONE, 3, WIDGET, INT, STRING
FUNCTION_NAME = gtk_combo_box_prepend_text, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_combo_box_remove_text, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_combo_box_get_active, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_combo_box_set_active, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_combo_box_get_active_text, NONE, STRING, 1, WIDGET
FUNCTION_NAME = gtk_combo_box_text_get_active_text, NONE, STRING, 1, WIDGET
#
# SEPARATORS
#
FUNCTION_NAME = gtk_vseparator_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_hseparator_new, NONE, WIDGET, 0
#
# Clipboards
#
FUNCTION_NAME = gtk_editable_copy_clipboard, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_editable_cut_clipboard, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_editable_paste_clipboard, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gdk_atom_intern, NONE, WIDGET, 2, STRING, INT
FUNCTION_NAME = gtk_clipboard_get, NONE, WIDGET, 1, INT
FUNCTION_NAME = gtk_clipboard_set_text, NONE, NONE, 3, WIDGET, STRING, INT
FUNCTION_NAME = gtk_clipboard_wait_for_text, NONE, STRING, 1, WIDGET
#
# CLists (GTK 1.x, obsolete in GTK2)
#
FUNCTION_NAME = gtk_clist_new, select-row, WIDGET, 1, INT
FUNCTION_NAME = gtk_clist_set_column_title, NONE, NONE, 3, WIDGET, INT, STRING
FUNCTION_NAME = gtk_clist_column_titles_show, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_clist_append, NONE, INT, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_clist_set_text, NONE, NONE, 4, WIDGET, INT, INT, STRING
#
# GTK fixed
#
FUNCTION_NAME = gtk_fixed_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_fixed_put, NONE, NONE, 4, WIDGET, WIDGET, INT, INT
FUNCTION_NAME = gtk_fixed_move, NONE, NONE, 4, WIDGET, WIDGET, INT, INT
#
# Lists (GTK2.x) defined for 1 column with strings
# Redefine with 'gtk_server_redefine' if necessary
#
FUNCTION_NAME = gtk_list_store_new, NONE, WIDGET, 2, INT, INT
FUNCTION_NAME = gtk_list_store_append, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_list_store_set, NONE, NONE, 5, WIDGET, WIDGET, INT, STRING, INT
FUNCTION_NAME = gtk_list_store_set_value, NONE, NONE, 4, WIDGET, WIDGET, INT, STRING
FUNCTION_NAME = gtk_list_store_clear, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_list_store_remove, NONE, BOOL, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_list_store_move_before, NONE, NONE, 3, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gtk_list_store_move_after, NONE, NONE, 3, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gtk_list_store_insert, NONE, NONE, 3, WIDGET, WIDGET, INT
FUNCTION_NAME = gtk_list_store_insert_with_values, NONE, NONE, 6, WIDGET, WIDGET, INT, INT, STRING, INT
FUNCTION_NAME = gtk_cell_renderer_text_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_tree_view_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_tree_view_column_set_title, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_tree_view_set_model, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_tree_view_new_with_model, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_tree_view_column_new, clicked, WIDGET, 0
FUNCTION_NAME = gtk_tree_view_column_new_with_attributes, clicked, WIDGET, 5, STRING, WIDGET, STRING, INT, NULL
FUNCTION_NAME = gtk_tree_view_column_pack_start, NONE, NONE, 3, WIDGET, WIDGET, BOOL
FUNCTION_NAME = gtk_tree_view_append_column, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_tree_view_set_headers_visible, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_tree_view_set_headers_clickable, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_tree_view_get_selection, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_tree_view_get_hadjustment, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_tree_view_get_vadjustment, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_tree_view_column_set_resizable, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_tree_view_column_set_clickable, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_tree_view_scroll_to_cell, NONE, NONE, 6, WIDGET, WIDGET, WIDGET, BOOL, FLOAT, FLOAT
FUNCTION_NAME = gtk_tree_view_set_grid_lines, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_tree_selection_get_selected, NONE, BOOL, 3, WIDGET, NULL, WIDGET
FUNCTION_NAME = gtk_tree_selection_get_tree_view, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_tree_selection_select_iter, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_tree_selection_select_path, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_tree_selection_path_is_selected, NONE, BOOL, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_tree_selection_set_mode, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_tree_model_get, NONE, NONE, 5, WIDGET, WIDGET, INT, PTR_STRING, INT
FUNCTION_NAME = gtk_tree_model_get_iter, NONE, BOOL, 3, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gtk_tree_model_get_string_from_iter, NONE, STRING, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_tree_model_get_iter_first, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_tree_model_iter_next, NONE, BOOL, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_tree_path_new_from_string, NONE, WIDGET, 1, STRING
FUNCTION_NAME = gtk_tree_path_free, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_tree_path_prev, NONE, BOOL, 1, WIDGET
FUNCTION_NAME = gtk_tree_path_next, NONE, BOOL, 1, WIDGET
FUNCTION_NAME = gtk_tree_sortable_set_sort_column_id, NONE, NONE, 3, WIDGET, INT, INT
FUNCTION_NAME = gtk_tree_store_append, NONE, NONE, 3, WIDGET, WIDGET, NULL
FUNCTION_NAME = gtk_tree_store_new, NONE, WIDGET, 3, INT, INT, INT
FUNCTION_NAME = gtk_tree_store_set, NONE, NONE, 7, WIDGET, WIDGET, INT, STRING, INT, STRING, INT
#
# Expander widget
#
FUNCTION_NAME = gtk_expander_new, activate, WIDGET, 1, STRING
FUNCTION_NAME = gtk_expander_new_with_mnemonic, NONE, WIDGET, 1, STRING
FUNCTION_NAME = gtk_expander_set_expanded, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_expander_get_expanded, NONE, BOOL, 1, WIDGET
FUNCTION_NAME = gtk_expander_set_spacing, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_expander_get_spacing, NONE, INT, 1, WIDGET
#
# Tooltips
# Note: for these to work, you will need a widget which can process events, so
# you may need to add an GtkEvent as the parent of some widgets
FUNCTION_NAME = gtk_tooltips_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_tooltips_enable, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_tooltips_disable, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_tooltips_set_tip, NONE, NONE, 4, WIDGET, WIDGET, STRING, STRING
FUNCTION_NAME = gtk_tooltips_force_window, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_widget_set_tooltip_text, NONE, VOID, 2, WIDGET, STRING
#
# Calendar
#
FUNCTION_NAME = gtk_calendar_get_date, NONE, NONE, 4, WIDGET, INT, INT, INT
#
# General GTK routines
#
FUNCTION_NAME = gtk_init, NONE, NONE, 2, NULL, NULL
FUNCTION_NAME = gtk_widget_show, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_widget_show_all, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_widget_realize, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_widget_unrealize, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_widget_hide, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_widget_destroy, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_widget_grab_focus, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_widget_set_size_request, NONE, NONE, 3, WIDGET, INT, INT
FUNCTION_NAME = gtk_widget_size_request, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_widget_set_usize, NONE, NONE, 3, WIDGET, INT, INT
FUNCTION_NAME = gtk_widget_modify_base, NONE, NONE, 3, WIDGET, INT, WIDGET
FUNCTION_NAME = gtk_widget_modify_text, NONE, NONE, 3, WIDGET, INT, WIDGET
FUNCTION_NAME = gtk_widget_modify_bg, NONE, NONE, 3, WIDGET, INT, WIDGET
FUNCTION_NAME = gtk_widget_modify_fg, NONE, NONE, 3, WIDGET, INT, WIDGET
FUNCTION_NAME = gtk_widget_modify_font, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_widget_set_sensitive, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = gtk_widget_add_accelerator, NONE, NONE, 6, WIDGET, STRING, WIDGET, INT, INT, INT
FUNCTION_NAME = gtk_widget_get_parent, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_widget_get_toplevel, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_widget_set_name, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_widget_get_size_request, NONE, NONE, 3, WIDGET, WIDGET, WIDGET
FUNCTION_NAME = gtk_widget_add_events, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_widget_get_allocated_width, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_widget_get_allocated_height, NONE, INT, 1, WIDGET
FUNCTION_NAME = gtk_settings_get_default, NONE, WIDGET, 0
FUNCTION_NAME = gtk_misc_set_alignment, NONE, NONE, 3, WIDGET, FLOAT, FLOAT
FUNCTION_NAME = gtk_main, NONE, NONE, 0
FUNCTION_NAME = gtk_main_iteration, NONE, BOOL, 0
FUNCTION_NAME = gtk_main_iteration_do, NONE, BOOL, 1, BOOL
FUNCTION_NAME = gtk_events_pending, NONE, BOOL, 0
FUNCTION_NAME = gtk_exit, NONE, NONE, 1, INT
FUNCTION_NAME = gtk_main_quit, NONE, NONE, 0
FUNCTION_NAME = gtk_rc_parse, NONE, NONE, 1, STRING
FUNCTION_NAME = gtk_rc_parse_string, NONE, NONE, 1, STRING
FUNCTION_NAME = gtk_rc_reparse_all, NONE, BOOL, 0
FUNCTION_NAME = gtk_rc_reset_styles, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_rc_add_default_file, NONE, NONE, 1, STRING
FUNCTION_NAME = gtk_check_version, NONE, STRING, 3, INT, INT, INT
FUNCTION_NAME = gtk_drag_source_set, NONE, NONE, 5, WIDGET, INT, WIDGET, INT, INT
FUNCTION_NAME = gtk_drag_dest_set, NONE, NONE, 5, WIDGET, INT, WIDGET, INT, INT
FUNCTION_NAME = gtk_drag_finish, NONE, NONE, 4, WIDGET, BOOL, BOOL, INT
FUNCTION_NAME = gtk_drag_set_icon_stock, NONE, NONE, 4, WIDGET, STRING, INT, INT
FUNCTION_NAME = gtk_get_current_event_time, NONE, INT, 0
FUNCTION_NAME = gtk_signal_emit_by_name, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_signal_connect_while_alive, NONE, NONE, 5, WIDGET, STRING, MACRO, POINTER, WIDGET
FUNCTION_NAME = gtk_invisible_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_target_list_new, NONE, WIDGET, 2, NULL, INT
FUNCTION_NAME = gtk_target_list_add, NONE, NONE, 4, WIDGET, WIDGET, INT, INT
FUNCTION_NAME = gtk_target_table_new_from_list, NONE, WIDGET, 2, WIDGET, WIDGET
FUNCTION_NAME = gtk_alignment_new, NONE, WIDGET, 4, FLOAT, FLOAT, FLOAT, FLOAT
FUNCTION_NAME = gtk_alignment_set, NONE, NONE, 5, WIDGET, FLOAT, FLOAT, FLOAT, FLOAT
FUNCTION_NAME = gtk_alignment_set_padding, NONE, NONE, 5, WIDGET, INT, INT, INT, INT
FUNCTION_NAME = gtk_alignment_get_padding, NONE, NONE, 5, WIDGET, PTR_INT, PTR_INT, PTR_INT, PTR_INT
FUNCTION_NAME = gtk_object_set_data, NONE, NONE, 3, WIDGET, STRING, INT
FUNCTION_NAME = gtk_object_get_data, NONE, INT, 2, WIDGET, STRING
FUNCTION_NAME = gtk_object_ref, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_accel_group_new, NONE, WIDGET, 0
#
# Some GDK_PIXBUF functions
#
FUNCTION_NAME = gdk_pixbuf_new_from_file, NONE, WIDGET, 2, STRING, NULL
FUNCTION_NAME = gdk_pixbuf_new_from_file_at_size, NONE, WIDGET, 4, STRING, INT, INT, NULL
FUNCTION_NAME = gdk_pixbuf_new_from_file_at_scale, NONE, WIDGET, 5, STRING, INT, INT, BOOL, NULL
FUNCTION_NAME = gdk_pixbuf_rotate_simple, NONE, WIDGET, 2, WIDGET, INT
FUNCTION_NAME = gdk_pixbuf_get_height, NONE, INT, 1, WIDGET
FUNCTION_NAME = gdk_pixbuf_get_width, NONE, INT, 1, WIDGET
FUNCTION_NAME = gdk_pixbuf_scale_simple, NONE, WIDGET, 4, WIDGET, INT, INT, INT
FUNCTION_NAME = gdk_pixbuf_new, NONE, WIDGET, 5, INT, BOOL, INT, INT, INT
FUNCTION_NAME = gdk_pixbuf_get_from_surface, NONE, WIDGET, 5, WIDGET, INT, INT, INT, INT
#
# GLIB functions
#
FUNCTION_NAME = g_atomic_int_add, NONE, NONE, 2, POINTER, INT
FUNCTION_NAME = g_atomic_int_get, NONE, INT, 1, POINTER
FUNCTION_NAME = g_atomic_int_set, NONE, NONE, 2, POINTER, INT
FUNCTION_NAME = g_free, NONE, NONE, 1, WIDGET
FUNCTION_NAME = g_io_channel_read_line_string, NONE, INT, 4, WIDGET, STRING, NULL, NULL
FUNCTION_NAME = g_io_channel_unix_new, NONE, WIDGET, 1, INT
FUNCTION_NAME = g_locale_from_utf8, NONE, STRING, 5, STRING, LONG, NULL, NULL, NULL
FUNCTION_NAME = g_locale_to_utf8, NONE, STRING, 5, STRING, LONG, NULL, NULL, NULL
FUNCTION_NAME = g_malloc, NONE, POINTER, 1, INT
FUNCTION_NAME = g_object_get, NONE, NONE, 4, WIDGET, STRING, PTR_STRING, NULL
FUNCTION_NAME = g_object_set, NONE, NONE, 4, WIDGET, STRING, INT, NULL
FUNCTION_NAME = g_object_unref, NONE, NONE, 1, WIDGET
FUNCTION_NAME = g_printf, NONE, NONE, 2, STRING, POINTER
FUNCTION_NAME = g_snprintf, NONE, NONE, 4, POINTER, INT, STRING, DOUBLE
FUNCTION_NAME = g_random_int_range, NONE, INT, 2, INT, INT
FUNCTION_NAME = g_random_double, NONE, DOUBLE, 0
FUNCTION_NAME = g_signal_stop_emission_by_name, NONE, NONE, 2, WIDGET, STRING
#
# Pango
#
FUNCTION_NAME = pango_font_description_from_string, NONE, WIDGET, 1, STRING
FUNCTION_NAME = pango_font_description_free, NONE, NONE, 1, WIDGET
FUNCTION_NAME = pango_layout_set_markup, NONE, NONE, 3, WIDGET, STRING, INT
#
# Cairo
#
FUNCTION_NAME = cairo_arc, NONE, NONE, 6, WIDGET, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE
FUNCTION_NAME = cairo_create, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = cairo_destroy, NONE, NONE, 1, WIDGET
FUNCTION_NAME = cairo_fill, NONE, NONE, 1, WIDGET
FUNCTION_NAME = cairo_image_surface_create, NONE, WIDGET, 3, INT, INT, INT
FUNCTION_NAME = cairo_image_surface_get_height, NONE, INT, 1, WIDGET
FUNCTION_NAME = cairo_image_surface_get_width, NONE, INT, 1, WIDGET
FUNCTION_NAME = cairo_line_to, NONE, NONE, 3, WIDGET, DOUBLE, DOUBLE
FUNCTION_NAME = cairo_move_to, NONE, NONE, 3, WIDGET, DOUBLE, DOUBLE
FUNCTION_NAME = cairo_paint, NONE, NONE, 1, WIDGET
FUNCTION_NAME = cairo_rectangle, NONE, NONE, 5, WIDGET, DOUBLE, DOUBLE, DOUBLE, DOUBLE
FUNCTION_NAME = cairo_scale, NONE, NONE, 3, WIDGET, DOUBLE, DOUBLE
FUNCTION_NAME = cairo_select_font_face, NONE, NONE, 4, WIDGET, STRING, INT, INT
FUNCTION_NAME = cairo_set_antialias, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = cairo_set_font_size, NONE, NONE, 2, WIDGET, DOUBLE
FUNCTION_NAME = cairo_set_line_width, NONE, NONE, 2, WIDGET, DOUBLE
FUNCTION_NAME = cairo_set_operator, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = cairo_set_source_rgba, NONE, NONE, 5, WIDGET, DOUBLE, DOUBLE, DOUBLE, DOUBLE
FUNCTION_NAME = cairo_set_source_surface, NONE, NONE, 4, WIDGET, WIDGET, DOUBLE, DOUBLE
FUNCTION_NAME = cairo_show_text, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = cairo_stroke, NONE, NONE, 1, WIDGET
FUNCTION_NAME = cairo_surface_destroy, NONE, NONE, 1, WIDGET
FUNCTION_NAME = cairo_surface_flush, NONE, NONE, 1, WIDGET
#
# The internal functions (not necessary but sometimes handy for language bindings like newLisp)
#
FUNCTION_NAME = gtk_server_callback, NONE, STRING, 1, STRING
FUNCTION_NAME = gtk_server_callback_value, NONE, STRING, 2, STRING, STRING
FUNCTION_NAME = gtk_server_cfg, NONE, STRING, 1, STRING
FUNCTION_NAME = gtk_server_connect, NONE, STRING, 3, STRING, STRING, STRING
FUNCTION_NAME = gtk_server_connect_after, NONE, STRING, 3, STRING, STRING, STRING
FUNCTION_NAME = gtk_server_define, NONE, STRING, 1, STRING
FUNCTION_NAME = gtk_server_disable_c_string_escaping, NONE, STRING, 0
FUNCTION_NAME = gtk_server_disconnect, NONE, STRING, 0
FUNCTION_NAME = gtk_server_echo, NONE, STRING, 1, STRING
FUNCTION_NAME = gtk_server_enable_c_string_escaping, NONE, STRING, 0
FUNCTION_NAME = gtk_server_exit, NONE, NONE, 0
FUNCTION_NAME = gtk_server_ffi, NONE, STRING, 0
FUNCTION_NAME = gtk_server_toolkit, NONE, STRING, 0
FUNCTION_NAME = gtk_server_os, NONE, STRING, 0
FUNCTION_NAME = gtk_server_key, NONE, STRING, 0
FUNCTION_NAME = gtk_server_macro_var, NONE, STRING, 2, STRING, STRING
FUNCTION_NAME = gtk_server_macro_define, NONE, STRING, 1, STRING
FUNCTION_NAME = gtk_server_macro_redefine, NONE, STRING, 1, STRING
FUNCTION_NAME = gtk_server_mouse, NONE, STRING, 1, STRING
FUNCTION_NAME = gtk_server_opaque, NONE, STRING, 0
FUNCTION_NAME = gtk_server_pid, NONE, STRING, 0
FUNCTION_NAME = gtk_server_redefine, NONE, STRING, 1, STRING
FUNCTION_NAME = gtk_server_require, NONE, STRING, 1, STRING
FUNCTION_NAME = gtk_server_set_c_string_escaping, NONE, STRING, 1, STRING
FUNCTION_NAME = gtk_server_state, NONE, STRING, 0
FUNCTION_NAME = gtk_server_timeout, NONE, STRING, 3, STRING, STRING, STRING
FUNCTION_NAME = gtk_server_timeout_remove, NONE, STRING, 1, STRING
FUNCTION_NAME = gtk_server_version, NONE, STRING, 0
#
# Some GTK functons are defined as macro's - let's do the same
#
MACRO gtk_label_set
gtk_label_set_text $1 $2
ENDMACRO
#
MACRO gtk_container_border_width
gtk_container_set_border_width $1 $2
ENDMACRO
#
# Some Glade functions
#
FUNCTION_NAME = glade_init, NONE, NONE, 0
FUNCTION_NAME = glade_xml_new_from_buffer, NONE, WIDGET, 4, STRING, INT, NULL, NULL
FUNCTION_NAME = glade_xml_new, NONE, WIDGET, 3, STRING, NULL, NULL
FUNCTION_NAME = glade_xml_signal_autoconnect, NONE, NONE, 1, WIDGET
FUNCTION_NAME = glade_xml_get_widget, NONE, WIDGET, 2, WIDGET, STRING
#
# GTKMOZEMBED from Mozilla
#
FUNCTION_NAME = gtk_moz_embed_new, NONE, WIDGET, 0
FUNCTION_NAME = gtk_moz_embed_set_comp_path, NONE, NONE, 1, STRING
FUNCTION_NAME = gtk_moz_embed_set_profile_path, NONE, NONE, 2, STRING, STRING
FUNCTION_NAME = gtk_moz_embed_load_url, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = gtk_moz_embed_open_stream, NONE, NONE, 3, WIDGET, STRING, STRING
FUNCTION_NAME = gtk_moz_embed_append_data, NONE, NONE, 3, WIDGET, STRING, INT
#
# GtkGlExt
#
FUNCTION_NAME = gtk_gl_init, NONE, NONE, 2, NULL, NULL
FUNCTION_NAME = gtk_widget_set_gl_capability, NONE, BOOL, 5, WIDGET, WIDGET, WIDGET, BOOL, INT
FUNCTION_NAME = gtk_widget_get_gl_context, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gtk_widget_get_gl_window, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = gdk_gl_config_new_by_mode, NONE, WIDGET, 1, INT
FUNCTION_NAME = gdk_gl_drawable_gl_begin, NONE, BOOL, 2, WIDGET, WIDGET
FUNCTION_NAME = gdk_gl_drawable_gl_end, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gdk_gl_drawable_swap_buffers, NONE, NONE, 1, WIDGET
#
# GtkGlArea
#
FUNCTION_NAME = gtk_gl_area_new, NONE, WIDGET, 1, BASE64
FUNCTION_NAME = gtk_gl_area_make_current, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gtk_gl_area_swap_buffers, NONE, NONE, 1, WIDGET
FUNCTION_NAME = gdk_gl_choose_visual, NONE, WIDGET, 1, BASE64
FUNCTION_NAME = gdk_gl_get_info, NONE, STRING, 0
#
# GLUT
#
FUNCTION_NAME = glutBitmap8By13, NONE, ADDRESS, 0
FUNCTION_NAME = glutBitmap9By15, NONE, ADDRESS, 0
FUNCTION_NAME = glutBitmapCharacter, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = glutBitmapHelvetica10, NONE, ADDRESS, 0
FUNCTION_NAME = glutBitmapHelvetica12, NONE, ADDRESS, 0
FUNCTION_NAME = glutBitmapHelvetica18, NONE, ADDRESS, 0
FUNCTION_NAME = glutBitmapTimesRoman10, NONE, ADDRESS, 0
FUNCTION_NAME = glutBitmapTimesRoman24, NONE, ADDRESS, 0
FUNCTION_NAME = glutCreateWindow, NONE, INT, 1, STRING
FUNCTION_NAME = glutInit, NONE, NONE, 2, PTR_INT, PTR_STRING
FUNCTION_NAME = glutInitDisplayMode, NONE, NONE, 1, INT
FUNCTION_NAME = glutMainLoop, NONE, NONE, 0
FUNCTION_NAME = glutPostRedisplay, NONE, NONE, 0
FUNCTION_NAME = glutSolidTeapot, NONE, NONE, 1, DOUBLE
FUNCTION_NAME = glutStrokeCharacter, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = glutStrokeMonoRoman, NONE, ADDRESS, 0
FUNCTION_NAME = glutStrokeRoman, NONE, ADDRESS, 0
FUNCTION_NAME = glutSwapBuffers, NONE, NONE, 0
#
# GL
#
FUNCTION_NAME = glBegin, NONE, NONE, 1, INT
FUNCTION_NAME = glCallList, NONE, NONE, 1, INT
FUNCTION_NAME = glClear, NONE, NONE, 1, INT
FUNCTION_NAME = glClearColor, NONE, NONE, 4, FLOAT, FLOAT, FLOAT, FLOAT
FUNCTION_NAME = glColor3f, NONE, NONE, 3, FLOAT, FLOAT, FLOAT
FUNCTION_NAME = glCullFace, NONE, NONE, 1, INT
FUNCTION_NAME = glDisable, NONE, NONE, 1, INT
FUNCTION_NAME = glEnable, NONE, NONE, 1, INT
FUNCTION_NAME = glEnd, NONE, NONE, 0
FUNCTION_NAME = glEndList, NONE, NONE, 0
FUNCTION_NAME = glFlush, NONE, NONE, 0
FUNCTION_NAME = glFrustum, NONE, NONE, 6, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE
FUNCTION_NAME = glGenLists, NONE, INT, 1, INT
FUNCTION_NAME = glLightfv, NONE, NONE, 3, INT, INT, BASE64
FUNCTION_NAME = glLoadIdentity, NONE, NONE, 0
FUNCTION_NAME = glMaterialfv, NONE, NONE, 3, INT, INT, BASE64
FUNCTION_NAME = glMatrixMode, NONE, NONE, 1, INT
FUNCTION_NAME = glNewList, NONE, NONE, 2, INT, INT
FUNCTION_NAME = glPopMatrix, NONE, NONE, 0
FUNCTION_NAME = glPushMatrix, NONE, NONE, 0
FUNCTION_NAME = glRasterPos2f, NONE, NONE, 2, FLOAT, FLOAT
FUNCTION_NAME = glRotatef, NONE, NONE, 4, FLOAT, FLOAT, FLOAT, FLOAT
FUNCTION_NAME = glScalef, NONE, NONE, 3, FLOAT, FLOAT, FLOAT
FUNCTION_NAME = glShadeModel, NONE, NONE, 1, INT
FUNCTION_NAME = glTranslatef, NONE, NONE, 3, FLOAT, FLOAT, FLOAT
FUNCTION_NAME = glVertex3f, NONE, NONE, 3, FLOAT, FLOAT, FLOAT
FUNCTION_NAME = glViewport, NONE, NONE, 4, INT, INT, INT, INT
FUNCTION_NAME = glXSwapBuffers, NONE, NONE, 2, WIDGET, WIDGET
#
# Some GL Enums
#
ENUM_NAME = GLUT_DOUBLE, 0x0002
ENUM_NAME = GLUT_RGB, 0x0000
ENUM_NAME = GL_AMBIENT, 0x1200
ENUM_NAME = GL_AMBIENT_AND_DIFFUSE, 0x1602
ENUM_NAME = GL_BACK, 0x0405
ENUM_NAME = GL_COLOR_BUFFER_BIT, 0x4000
ENUM_NAME = GL_COMPILE, 0x1300
ENUM_NAME = GL_DEPTH_BUFFER_BIT, 0x100
ENUM_NAME = GL_DEPTH_TEST, 0x0B71
ENUM_NAME = GL_DIFFUSE, 0x1201
ENUM_NAME = GL_DITHER, 0x0BD0
ENUM_NAME = GL_FLAT, 0x1D00
ENUM_NAME = GL_FRONT, 0x0404
ENUM_NAME = GL_LIGHT0, 0x4000
ENUM_NAME = GL_LIGHTING, 0x0B50
ENUM_NAME = GL_LINES, 0x0001
ENUM_NAME = GL_LINE_LOOP, 0x0002
ENUM_NAME = GL_LINE_STRIP, 0x0003
ENUM_NAME = GL_MODELVIEW, 0x1700
ENUM_NAME = GL_POINTS, 0x0000
ENUM_NAME = GL_POLYGON, 0x0009
ENUM_NAME = GL_POSITION, 0x1203
ENUM_NAME = GL_PROJECTION, 0x1701
ENUM_NAME = GL_QUADS, 0x0007
ENUM_NAME = GL_QUAD_STRIP, 0x0008
ENUM_NAME = GL_SMOOTH, 0x1D01
ENUM_NAME = GL_SPECULAR, 0x1202
ENUM_NAME = GL_TRIANGLES, 0x0004
ENUM_NAME = GL_TRIANGLE_FAN, 0x0006
ENUM_NAME = GL_TRIANGLE_STRIP, 0x0005
#
# POPPLER
#
FUNCTION_NAME = poppler_document_new_from_file, NONE, WIDGET, 3, STRING, NULL, NULL
FUNCTION_NAME = poppler_document_get_n_pages, NONE, INT, 1, WIDGET
FUNCTION_NAME = poppler_document_get_page, NONE, WIDGET, 2, WIDGET, INT
FUNCTION_NAME = poppler_page_render_to_pixbuf, NONE, NONE, 8, WIDGET, INT, INT, INT, INT, DOUBLE, INT, WIDGET
FUNCTION_NAME = poppler_page_get_size, NONE, NONE, 3, WIDGET, PTR_DOUBLE, PTR_DOUBLE
FUNCTION_NAME = poppler_page_render, NONE, NONE, 2, WIDGET, WIDGET
#
#---------------------------------------------------------------------------
#
# Some enumerations for GTK
#
# Window positions
#
ENUM_NAME = GTK_WIN_POS_NONE, 0
ENUM_NAME = GTK_WIN_POS_CENTER, 1
ENUM_NAME = GTK_WIN_POS_MOUSE, 2
ENUM_NAME = GTK_WIN_POS_CENTER_ALWAYS, 3
ENUM_NAME = GTK_WIN_POS_CENTER_ON_PARENT, 4
#
# Window types
#
ENUM_NAME = GTK_WINDOW_TOPLEVEL, 0
ENUM_NAME = GTK_WINDOW_POPUP, 1
#
# Dialogs
#
ENUM_NAME = GTK_DIALOG_MODAL, 1
ENUM_NAME = GTK_DIALOG_DESTROY_WITH_PARENT, 2
ENUM_NAME = GTK_DIALOG_NO_SEPARATOR, 3
ENUM_NAME = GTK_MESSAGE_INFO, 0
ENUM_NAME = GTK_MESSAGE_WARNING, 1
ENUM_NAME = GTK_MESSAGE_QUESTION, 2
ENUM_NAME = GTK_MESSAGE_ERROR, 3
ENUM_NAME = GTK_MESSAGE_OTHER, 4
ENUM_NAME = GTK_BUTTONS_NONE, 0
ENUM_NAME = GTK_BUTTONS_OK, 1
ENUM_NAME = GTK_BUTTONS_CLOSE, 2
ENUM_NAME = GTK_BUTTONS_CANCEL, 3
ENUM_NAME = GTK_BUTTONS_YES_NO, 4
ENUM_NAME = GTK_BUTTONS_OK_CANCEL, 5
ENUM_NAME = GTK_RESPONSE_NONE, -1
ENUM_NAME = GTK_RESPONSE_REJECT, -2
ENUM_NAME = GTK_RESPONSE_ACCEPT, -3
ENUM_NAME = GTK_RESPONSE_DELETE_EVENT, -4
ENUM_NAME = GTK_RESPONSE_OK, -5
ENUM_NAME = GTK_RESPONSE_CANCEL, -6
ENUM_NAME = GTK_RESPONSE_CLOSE, -7
ENUM_NAME = GTK_RESPONSE_YES, -8
ENUM_NAME = GTK_RESPONSE_NO, -9
ENUM_NAME = GTK_RESPONSE_APPLY, -10
ENUM_NAME = GTK_RESPONSE_HELP, -11
#
# Text wrapping
#
ENUM_NAME = GTK_WRAP_NONE, 0
ENUM_NAME = GTK_WRAP_CHAR, 1
ENUM_NAME = GTK_WRAP_WORD, 2
ENUM_NAME = GTK_WRAP_WORD_CHAR, 3
#
# Packing types
#
ENUM_NAME = GTK_PACK_START, 0
ENUM_NAME = GTK_PACK_END, 1
#
# Scrollbar policy
#
ENUM_NAME = GTK_POLICY_ALWAYS, 0
ENUM_NAME = GTK_POLICY_AUTOMATIC, 1
ENUM_NAME = GTK_POLICY_NEVER, 2
ENUM_NAME = GTK_POS_LEFT, 0
ENUM_NAME = GTK_POS_RIGHT, 1
ENUM_NAME = GTK_POS_TOP, 2
ENUM_NAME = GTK_POS_BOTTOM, 3
#
# Shadow types
#
ENUM_NAME = GTK_SHADOW_NONE, 0
ENUM_NAME = GTK_SHADOW_IN, 1
ENUM_NAME = GTK_SHADOW_OUT, 2
ENUM_NAME = GTK_SHADOW_ETCHED_IN, 3
ENUM_NAME = GTK_SHADOW_ETCHED_OUT, 4
#
# Widget states
#
ENUM_NAME = GTK_STATE_NORMAL, 0
ENUM_NAME = GTK_STATE_ACTIVE, 1
ENUM_NAME = GTK_STATE_PRELIGHT, 2
ENUM_NAME = GTK_STATE_SELECTED, 3
ENUM_NAME = GTK_STATE_INSENSITIVE, 4
#
# Submenus
#
ENUM_NAME = GTK_TOP_BOTTOM, 0
ENUM_NAME = GTK_LEFT_RIGHT, 1
#
# Selection mode
#
ENUM_NAME = GTK_SELECTION_NONE, 0
ENUM_NAME = GTK_SELECTION_SINGLE, 1
ENUM_NAME = GTK_SELECTION_BROWSE, 2
ENUM_NAME = GTK_SELECTION_MULTIPLE, 3
ENUM_NAME = GTK_SELECTION_EXTENDED, 3
#
# GDK enums
#
ENUM_NAME = GDK_EXPOSURE_MASK, 2
ENUM_NAME = GDK_POINTER_MOTION_MASK, 4
ENUM_NAME = GDK_POINTER_MOTION_HINT_MASK, 8
ENUM_NAME = GDK_BUTTON_MOTION_MASK, 16
ENUM_NAME = GDK_BUTTON1_MOTION_MASK, 32
ENUM_NAME = GDK_BUTTON2_MOTION_MASK, 64
ENUM_NAME = GDK_BUTTON3_MOTION_MASK, 128
ENUM_NAME = GDK_BUTTON_PRESS_MASK, 256
ENUM_NAME = GDK_BUTTON_RELEASE_MASK, 512
ENUM_NAME = GDK_KEY_PRESS_MASK, 1024
ENUM_NAME = GDK_KEY_RELEASE_MASK, 2048
ENUM_NAME = GDK_ENTER_NOTIFY_MASK, 4096
ENUM_NAME = GDK_LEAVE_NOTIFY_MASK, 8192
ENUM_NAME = GDK_FOCUS_CHANGE_MASK, 16384
ENUM_NAME = GDK_STRUCTURE_MASK, 32768
ENUM_NAME = GDK_PROPERTY_CHANGE_MASK, 65536
ENUM_NAME = GDK_VISIBILITY_NOTIFY_MASK, 131072
ENUM_NAME = GDK_PROXIMITY_IN_MASK, 262144
ENUM_NAME = GDK_PROXIMITY_OUT_MASK, 524288
ENUM_NAME = GDK_SUBSTRUCTURE_MASK, 1048576
ENUM_NAME = GDK_SCROLL_MASK, 2097152
ENUM_NAME = GDK_ALL_EVENTS_MASK, 4194302
ENUM_NAME = GDK_WINDOW_TYPE_HINT_NORMAL, 0
ENUM_NAME = GDK_WINDOW_TYPE_HINT_DIALOG, 1
ENUM_NAME = GDK_WINDOW_TYPE_HINT_MENU, 2
ENUM_NAME = GDK_WINDOW_TYPE_HINT_TOOLBAR, 3
ENUM_NAME = GDK_WINDOW_TYPE_HINT_SPLASHSCREEN, 4
ENUM_NAME = GDK_WINDOW_TYPE_HINT_UTILITY, 5
ENUM_NAME = GDK_WINDOW_TYPE_HINT_DOCK, 6
ENUM_NAME = GDK_WINDOW_TYPE_HINT_DESKTOP, 7
ENUM_NAME = GDK_WINDOW_TYPE_HINT_DROPDOWN_MENU, 8
ENUM_NAME = GDK_WINDOW_TYPE_HINT_POPUP_MENU, 9
ENUM_NAME = GDK_WINDOW_TYPE_HINT_TOOLTIP, 10
ENUM_NAME = GDK_WINDOW_TYPE_HINT_NOTIFICATION, 11
ENUM_NAME = GDK_WINDOW_TYPE_HINT_COMBO, 12
ENUM_NAME = GDK_WINDOW_TYPE_HINT_DND, 13
#
# GType Fundamentals
#
ENUM_NAME = G_TYPE_FUNDAMENTAL_SHIFT, 2
#
# These are calculated by nr << G_TYPE_FUNDAMENTAL_SHIFT
#
ENUM_NAME = G_TYPE_INVALID, 0
ENUM_NAME = G_TYPE_NONE, 4
ENUM_NAME = G_TYPE_INTERFACE, 8
ENUM_NAME = G_TYPE_CHAR, 12
ENUM_NAME = G_TYPE_UCHAR, 16
ENUM_NAME = G_TYPE_BOOLEAN, 20
ENUM_NAME = G_TYPE_INT, 24
ENUM_NAME = G_TYPE_UINT, 28
ENUM_NAME = G_TYPE_LONG, 32
ENUM_NAME = G_TYPE_ULONG, 36
ENUM_NAME = G_TYPE_INT64, 40
ENUM_NAME = G_TYPE_UINT64, 44
ENUM_NAME = G_TYPE_ENUM, 48
ENUM_NAME = G_TYPE_FLAGS, 52
ENUM_NAME = G_TYPE_FLOAT, 56
ENUM_NAME = G_TYPE_DOUBLE, 60
ENUM_NAME = G_TYPE_STRING, 64
ENUM_NAME = G_TYPE_POINTER, 68
ENUM_NAME = G_TYPE_BOXED, 72
ENUM_NAME = G_TYPE_PARAM, 76
ENUM_NAME = G_TYPE_OBJECT, 80
ENUM_NAME = G_TYPE_RESERVED_GLIB_FIRST, 84
ENUM_NAME = G_TYPE_RESERVED_GLIB_LAST, 124
ENUM_NAME = G_TYPE_RESERVED_BSE_FIRST, 128
ENUM_NAME = G_TYPE_RESERVED_BSE_LAST, 192
ENUM_NAME = G_TYPE_RESERVED_USER_FIRST,196
#
# Cairo stuff
#
ENUM_NAME = CAIRO_CONTENT_COLOR, 4096
ENUM_NAME = CAIRO_CONTENT_ALPHA, 8192
ENUM_NAME = CAIRO_CONTENT_COLOR_ALPHA, 12288
ENUM_NAME = CAIRO_FORMAT_ARGB32, 0
ENUM_NAME = CAIRO_OPERATOR_CLEAR, 0
ENUM_NAME = CAIRO_OPERATOR_SOURCE, 1
ENUM_NAME = CAIRO_OPERATOR_OVER, 2
ENUM_NAME = CAIRO_FONT_SLANT_NORMAL, 0
ENUM_NAME = CAIRO_FONT_SLANT_ITALIC, 1
ENUM_NAME = CAIRO_FONT_SLANT_OBLIQUE, 2
ENUM_NAME = CAIRO_FONT_WEIGHT_NORMAL, 0
ENUM_NAME = CAIRO_FONT_WEIGHT_BOLD, 1
ENUM_NAME = CAIRO_ANTIALIAS_DEFAULT, 0
ENUM_NAME = CAIRO_ANTIALIAS_NONE, 1
ENUM_NAME = CAIRO_ANTIALIAS_GRAY, 2
ENUM_NAME = CAIRO_ANTIALIAS_SUBPIXEL, 3
ENUM_NAME = CAIRO_ANTIALIAS_FAST, 4
ENUM_NAME = CAIRO_ANTIALIAS_GOOD, 5
ENUM_NAME = CAIRO_ANTIALIAS_BEST, 6
#
#---------------------------------------------------------------------------
#
# XForms calls
#
FUNCTION_NAME = fl_bgn_form, NONE, WIDGET, 3, INT, INT, INT
FUNCTION_NAME = fl_end_form, NONE, NONE, 0
FUNCTION_NAME = fl_show_form, NONE, LONG, 4, WIDGET, INT, INT, STRING
FUNCTION_NAME = fl_hide_form, NONE, NONE, 1, WIDGET
FUNCTION_NAME = fl_prepare_form_window, NONE, NONE, 4, WIDGET, INT, INT, STRING
FUNCTION_NAME = fl_show_form_window, NONE, NONE, 1, WIDGET
FUNCTION_NAME = fl_set_form_position, NONE, NONE, 3, WIDGET, INT, INT
#
FUNCTION_NAME = fl_add_box, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
#
FUNCTION_NAME = fl_add_button, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
FUNCTION_NAME = fl_set_button, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = fl_get_button, NONE, INT, 1, WIDGET
FUNCTION_NAME = fl_add_checkbutton, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
FUNCTION_NAME = fl_add_roundbutton, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
FUNCTION_NAME = fl_add_round3dbutton, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
#
FUNCTION_NAME = fl_add_slider, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
FUNCTION_NAME = fl_set_slider_value, NONE, NONE, 2, WIDGET, DOUBLE
FUNCTION_NAME = fl_set_slider_bounds, NONE, NONE, 3, WIDGET, DOUBLE, DOUBLE
FUNCTION_NAME = fl_get_slider_value, NONE, FLOAT, 1, WIDGET
FUNCTION_NAME = fl_add_valslider, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
FUNCTION_NAME = fl_set_slider_step, NONE, NONE, 2, WIDGET, DOUBLE
FUNCTION_NAME = fl_set_slider_precision, NONE, NONE, 2, WIDGET, INT
#
FUNCTION_NAME = fl_add_text, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
#
FUNCTION_NAME = fl_add_clock, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
#
FUNCTION_NAME = fl_add_input, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
FUNCTION_NAME = fl_set_input, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = fl_set_input_color, NONE, NONE, 3, WIDGET, INT, INT
FUNCTION_NAME = fl_get_input, NONE, STRING, 1, WIDGET
#
FUNCTION_NAME = fl_add_frame, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
FUNCTION_NAME = fl_add_labelframe, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
#
FUNCTION_NAME = fl_add_timer, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
FUNCTION_NAME = fl_set_timer, NONE, NONE, 2, WIDGET, DOUBLE
FUNCTION_NAME = fl_get_timer, NONE, DOUBLE, 1, WIDGET
FUNCTION_NAME = fl_suspend_timer, NONE, NONE, 1, WIDGET
FUNCTION_NAME = fl_resume_timer, NONE, NONE, 1, WIDGET
#
FUNCTION_NAME = fl_add_choice, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
FUNCTION_NAME = fl_clear_choice, NONE, NONE, 1, WIDGET
FUNCTION_NAME = fl_addto_choice, NONE, INT, 2, WIDGET, STRING
FUNCTION_NAME = fl_delete_choice, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = fl_replace_choice, NONE, NONE, 3, WIDGET, INT, STRING
FUNCTION_NAME = fl_get_choice, NONE, INT, 1, WIDGET
FUNCTION_NAME = fl_get_choice_text, NONE, STRING, 1, WIDGET
FUNCTION_NAME = fl_get_choice_item_text, NONE, STRING, 2, WIDGET, INT
FUNCTION_NAME = fl_get_choice_maxitems, NONE, INT, 1, WIDGET
#
FUNCTION_NAME = fl_add_browser, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
FUNCTION_NAME = fl_clear_browser, NONE, NONE, 1, WIDGET
FUNCTION_NAME = fl_add_browser_line, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = fl_addto_browser, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = fl_addto_browser_chars, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = fl_insert_browser_line, NONE, NONE, 3, WIDGET, INT, STRING
FUNCTION_NAME = fl_delete_browser_line, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = fl_replace_browser_line, NONE, NONE, 3, WIDGET, INT, STRING
FUNCTION_NAME = fl_get_browser_line, NONE, STRING, 2, WIDGET, INT
FUNCTION_NAME = fl_get_browser, NONE, INT, 1, WIDGET
FUNCTION_NAME = fl_select_browser_line, NONE, NONE, 2, WIDGET, INT
#
FUNCTION_NAME = fl_deactivate_object, NONE, NONE, 1, WIDGET
FUNCTION_NAME = fl_activate_object, NONE, NONE, 1, WIDGET
FUNCTION_NAME = fl_set_icm_color, NONE, NONE, 4, INT, INT, INT, INT
FUNCTION_NAME = fl_set_focus_object, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = fl_get_focus_object, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = fl_bgn_group, NONE, WIDGET, 0
FUNCTION_NAME = fl_end_group, NONE, WIDGET, 0
FUNCTION_NAME = fl_addto_group, NONE, NONE, 1, WIDGET
FUNCTION_NAME = fl_show_message, NONE, NONE, 3, STRING, STRING, STRING
FUNCTION_NAME = fl_hide_object, NONE, NONE, 1, WIDGET
FUNCTION_NAME = fl_show_object, NONE, NONE, 1, WIDGET
FUNCTION_NAME = fl_set_object_color, NONE, NONE, 3, WIDGET, INT, INT
FUNCTION_NAME = fl_set_object_lsize, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = fl_set_object_lcol, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = fl_set_object_lstyle, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = fl_set_object_label, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = fl_set_font_name, NONE, INT, 2, INT, STRING
FUNCTION_NAME = fl_set_idle_delta, NONE, NONE, 1, INT
FUNCTION_NAME = fl_finish, NONE, NONE, 0
FUNCTION_NAME = fl_set_idle_callback, NONE, NONE, 2, MACRO, DATA
FUNCTION_NAME = fl_set_object_callback, NONE, NONE, 3, WIDGET, MACRO, DATA
#
FUNCTION_NAME = fl_add_canvas, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
FUNCTION_NAME = fl_add_glcanvas, NONE, WIDGET, 6, INT, INT, INT, INT, INT, STRING
FUNCTION_NAME = fl_activate_glcanvas, NONE, NONE, 1, WIDGET
FUNCTION_NAME = fl_winget, NONE, INT, 0
FUNCTION_NAME = fl_winset, NONE, NONE, 1, INT
FUNCTION_NAME = fl_get_canvas_id, NONE, INT, 1, WIDGET
FUNCTION_NAME = fl_add_canvas_handler, NONE, NONE, 4, WIDGET, INT, MACRO, DATA
FUNCTION_NAME = fl_set_clipping, NONE, NONE, 4, INT, INT, INT, INT
FUNCTION_NAME = fl_color, NONE, NONE, 1, INT
FUNCTION_NAME = fl_bk_color, NONE, NONE, 1, INT
FUNCTION_NAME = fl_pieslice, NONE, NONE, 8, INT, INT, INT, INT, INT, INT, INT, INT
FUNCTION_NAME = fl_rectangle, NONE, NONE, 6, INT, INT, INT, INT, INT, INT
FUNCTION_NAME = fl_display, NONE, WIDGET, 0
#
#---------------------------------------------------------------------------
#
# Some enumerations for XForms
#
# Boxes
#
ENUM_NAME = FL_NO_BOX, 0
ENUM_NAME = FL_UP_BOX, 1
ENUM_NAME = FL_DOWN_BOX, 2
ENUM_NAME = FL_BORDER_BOX, 3
ENUM_NAME = FL_SHADOW_BOX, 4
ENUM_NAME = FL_FRAME_BOX, 5
ENUM_NAME = FL_ROUNDED_BOX, 6
ENUM_NAME = FL_EMBOSSED_BOX, 7
ENUM_NAME = FL_FLAT_BOX, 8
ENUM_NAME = FL_RFLAT_BOX, 9
ENUM_NAME = FL_RSHADOW_BOX, 10
ENUM_NAME = FL_OVAL_BOX, 11
ENUM_NAME = FL_ROUNDED3D_UPBOX, 12
ENUM_NAME = FL_ROUNDED3D_DOWNBOX, 13
ENUM_NAME = FL_OVAL3D_UPBOX, 14
ENUM_NAME = FL_OVAL3D_DOWNBOX, 15
ENUM_NAME = FL_OVAL3D_FRAMEBOX, 16
ENUM_NAME = FL_OVAL3D_EMBOSSEDBOX, 17
#
# Buttons
#
ENUM_NAME = FL_NORMAL_BUTTON, 0
ENUM_NAME = FL_PUSH_BUTTON, 1
ENUM_NAME = FL_RADIO_BUTTON, 2
ENUM_NAME = FL_HIDDEN_BUTTON, 3
ENUM_NAME = FL_TOUCH_BUTTON, 4
ENUM_NAME = FL_INOUT_BUTTON, 5
ENUM_NAME = FL_RETURN_BUTTON, 6
ENUM_NAME = FL_HIDDEN_RET_BUTTON, 7
ENUM_NAME = FL_MENU_BUTTON, 8
#
# Text
#
ENUM_NAME = FL_NORMAL_TEXT, 0
#
# Inputs
#
ENUM_NAME = FL_NORMAL_INPUT, 0
ENUM_NAME = FL_FLOAT_INPUT, 1
ENUM_NAME = FL_INT_INPUT, 2
ENUM_NAME = FL_DATE_INPUT, 3
ENUM_NAME = FL_MULTILINE_INPUT, 4
ENUM_NAME = FL_HIDDEN_INPUT, 5
ENUM_NAME = FL_SECRET_INPUT, 6
#
# Howto display a form on the screen
#
ENUM_NAME = FL_PLACE_FREE, 0
ENUM_NAME = FL_PLACE_MOUSE, 1
ENUM_NAME = FL_PLACE_CENTER, 2
ENUM_NAME = FL_PLACE_POSITION, 4
ENUM_NAME = FL_PLACE_SIZE, 8
ENUM_NAME = FL_PLACE_GEOMETRY, 16
ENUM_NAME = FL_PLACE_ASPECT, 32
ENUM_NAME = FL_PLACE_FULLSCREEN, 64
ENUM_NAME = FL_PLACE_HOTSPOT, 128
ENUM_NAME = FL_PLACE_ICONIC, 256
ENUM_NAME = FL_FREE_SIZE, 16384
ENUM_NAME = FL_FIX_SIZE, 32768
#
# Windowmanager decoration requests
#
ENUM_NAME = FL_FULLBORDER, 1
ENUM_NAME = FL_TRANSIENT, 2
ENUM_NAME = FL_NOBORDER, 3
#
# Canvas
#
ENUM_NAME = FL_NORMAL_CANVAS, 0
ENUM_NAME = FL_SCROLLED_CANVAS, 1
#
# Some colors
#
ENUM_NAME = FL_BLACK, 0
ENUM_NAME = FL_RED, 1
ENUM_NAME = FL_GREEN, 2
ENUM_NAME = FL_YELLOW, 3
ENUM_NAME = FL_BLUE, 4
ENUM_NAME = FL_MAGENTA, 5
ENUM_NAME = FL_CYAN, 6
ENUM_NAME = FL_WHITE, 7
ENUM_NAME = FL_TOMATO, 8
ENUM_NAME = FL_INDIANRED, 9
ENUM_NAME = FL_SLATEBLUE, 10
ENUM_NAME = FL_COL1, 11
ENUM_NAME = FL_RIGHT_BCOL, 12
ENUM_NAME = FL_BOTTOM_BCOL, 13
ENUM_NAME = FL_TOP_BCOL, 14
ENUM_NAME = FL_LEFT_BCOL, 15
ENUM_NAME = FL_MCOL, 16
ENUM_NAME = FL_INACTIVE, 17
ENUM_NAME = FL_PALEGREEN, 18
ENUM_NAME = FL_DARKGOLD, 19
ENUM_NAME = FL_ORCHID, 20
ENUM_NAME = FL_DARKCYAN, 21
ENUM_NAME = FL_DARKTOMATO, 22
ENUM_NAME = FL_WHEAT, 23
ENUM_NAME = FL_DARKORANGE, 24
ENUM_NAME = FL_DEEPPINK, 25
ENUM_NAME = FL_CHARTREUSE, 26
ENUM_NAME = FL_DARKVIOLET, 27
ENUM_NAME = FL_SPRINGGREEN, 28
ENUM_NAME = FL_DODGERBLUE, 29
ENUM_NAME = FL_LIGHTER_COL1, 30
ENUM_NAME = FL_DARKER_COL1, 31
#
# Timers
#
ENUM_NAME = FL_NORMAL_TIMER, 0
ENUM_NAME = FL_VALUE_TIMER, 1
ENUM_NAME = FL_HIDDEN_TIMER, 2
#
# Clock
#
ENUM_NAME = FL_ANALOG_CLOCK, 0
ENUM_NAME = FL_DIGITAL_CLOCK, 1
#
# Standard sizes in XForms
#
ENUM_NAME = FL_TINY_SIZE, 8
ENUM_NAME = FL_SMALL_SIZE, 10
ENUM_NAME = FL_NORMAL_SIZE, 12
ENUM_NAME = FL_MEDIUM_SIZE, 14
ENUM_NAME = FL_LARGE_SIZE, 18
ENUM_NAME = FL_HUGE_SIZE, 24
#
# Text styles
#
ENUM_NAME = FL_INVALID_STYLE, -1
ENUM_NAME = FL_NORMAL_STYLE, 0
ENUM_NAME = FL_BOLD_STYLE, 1
ENUM_NAME = FL_ITALIC_STYLE, 2
ENUM_NAME = FL_BOLDITALIC_STYLE, 3
ENUM_NAME = FL_FIXED_STYLE, 4
ENUM_NAME = FL_FIXEDBOLD_STYLE, 5
ENUM_NAME = FL_FIXEDITALIC_STYLE, 6
ENUM_NAME = FL_FIXEDBOLDITALIC_STYLE, 7
ENUM_NAME = FL_TIMES_STYLE, 8
ENUM_NAME = FL_TIMESBOLD_STYLE, 9
ENUM_NAME = FL_TIMESITALIC_STYLE, 10
ENUM_NAME = FL_TIMESBOLDITALIC_STYLE, 11
ENUM_NAME = FL_MISC_STYLE, 12
ENUM_NAME = FL_MISCBOLD_STYLE, 13
ENUM_NAME = FL_MISCITALIC_STYLE, 14
ENUM_NAME = FL_SYMBOL_STYLE, 15
ENUM_NAME = FL_SHADOW_STYLE, 512
ENUM_NAME = FL_ENGRAVED_STYLE, 1024
ENUM_NAME = FL_EMBOSSED_STYLE, 2048
#
#---------------------------------------------------------------------------
#
# Some XLib calls
#
FUNCTION_NAME = XOpenDisplay, NONE, WIDGET, 1, NULL
FUNCTION_NAME = XDefaultScreen, NONE, INT, 1, WIDGET
FUNCTION_NAME = XDisplayWidth, NONE, INT, 2, WIDGET, INT
FUNCTION_NAME = XDisplayHeight, NONE, INT, 2, WIDGET, INT
#
# Xevents enumerations from /usr/include/X11/X.h
#
ENUM_NAME = KeyPressMask, 1
ENUM_NAME = KeyReleaseMask, 2
ENUM_NAME = ButtonPressMask, 4
ENUM_NAME = ButtonReleaseMask, 8
ENUM_NAME = EnterWindowMask, 16
ENUM_NAME = LeaveWindowMask, 32
ENUM_NAME = PointerMotionMask, 64
ENUM_NAME = ButtonMotionMask, 8192
ENUM_NAME = FL_ALL_EVENT, 8319
#
ENUM_NAME = KeyPress, 2
ENUM_NAME = KeyRelease, 3
ENUM_NAME = ButtonPress, 4
ENUM_NAME = ButtonRelease, 5
#
#---------------------------------------------------------------------------
#
# Some ncurses calls
#
FUNCTION_NAME = filter, NONE, NONE, 0
FUNCTION_NAME = use_env, NONE, NONE, 1, BOOL
FUNCTION_NAME = initscr, NONE, WIDGET, 0
FUNCTION_NAME = newwin, NONE, WIDGET, 4, INT, INT, INT, INT
FUNCTION_NAME = delwin, NONE, INT, 1, WIDGET
FUNCTION_NAME = box, NONE, INT, 3, WIDGET, INT, INT
FUNCTION_NAME = endwin, NONE, INT, 0
FUNCTION_NAME = isendwin, NONE, BOOL, 0
FUNCTION_NAME = refresh, NONE, INT, 0
FUNCTION_NAME = wrefresh, NONE, INT, 1, WIDGET
FUNCTION_NAME = redrawwin, NONE, INT, 1, WIDGET
FUNCTION_NAME = getch, NONE, INT, 0
FUNCTION_NAME = wgetch, NONE, INT, 1, WIDGET
FUNCTION_NAME = printw, NONE, INT, 2, STRING, STRING
FUNCTION_NAME = mvwprintw, NONE, INT, 5, WIDGET, INT, INT, STRING, STRING
#
#---------------------------------------------------------------------------
#
# Generic calls which might come handy - libm
#
FUNCTION_NAME = lrint, NONE, INT, 1, DOUBLE
FUNCTION_NAME = sin, NONE, DOUBLE, 1, DOUBLE
FUNCTION_NAME = cos, NONE, DOUBLE, 1, DOUBLE
FUNCTION_NAME = tan, NONE, DOUBLE, 1, DOUBLE
FUNCTION_NAME = sqrt, NONE, DOUBLE, 1, DOUBLE
#
# libc
#
FUNCTION_NAME = toascii, NONE, INT, 1, INT
FUNCTION_NAME = putchar, NONE, INT, 1, STRING
FUNCTION_NAME = kill, NONE, INT, 2, INT, INT
FUNCTION_NAME = write, NONE, INT, 3, INT, STRING, INT
FUNCTION_NAME = fsync, NONE, INT, 1, INT
FUNCTION_NAME = malloc, NONE, POINTER, 1, INT
FUNCTION_NAME = free, NONE, NONE, 1, POINTER
FUNCTION_NAME = printf, NONE, NONE, 2, STRING, POINTER
FUNCTION_NAME = snprintf, NONE, NONE, 4, POINTER, INT, STRING, DOUBLE
FUNCTION_NAME = strncpy, NONE, STRING, 3, POINTER, POINTER, INT
FUNCTION_NAME = rand, NONE, INT, 0
FUNCTION_NAME = srand, NONE, NONE, 1, INT
FUNCTION_NAME = time, NONE, INT, 1, NULL
FUNCTION_NAME = memset, NONE, NONE, 3, POINTER, INT, INT
FUNCTION_NAME = sscanf, NONE, NONE, 3, POINTER, STRING, PTR_INT
FUNCTION_NAME = abs, NONE, INT, 1, INT
#
# Some function names are reserved, create an alias
#
ALIAS_NAME = libc_rand, rand
#
# Some system enums
#
ENUM_NAME = O_RDONLY, 0
ENUM_NAME = O_WRONLY, 1
ENUM_NAME = RAND_MAX, 2147483647
ENUM_NAME = M_PI, 3.14159265358979323846
#
#---------------------------------------------------------------------------
#
# Connect a glade UI:
# glade-ui "filename"
#
#---------------------------------------------------------------------------
MACRO gladeui
gtk_init
glade_init
$xml : glade_xml_new $1 NULL NULL
glade_xml_signal_autoconnect $xml
RETURN $xml
ENDMACRO
#---------------------------------------------------------------------------
#
# About dialog in GTK-server MACRO script
#
# From a prompt, activate as follows: echo "about" | gtk-server -stdin
#
#---------------------------------------------------------------------------
MACRO about
# Define text
$msg : &"\n\t - The GTK-server - \n\nDistributed under the GPL license\n\n\t (c) Peter van Eerten"
# Define GUI
$dialog : gtk_message_dialog_new_with_markup NULL GTK_DIALOG_MODAL GTK_MESSAGE_INFO GTK_BUTTONS_CLOSE $msg "''"
gtk_window_set_title $dialog "\"About GTK-server\""
gtk_window_set_icon_name $dialog "gtk-about"
gtk_window_set_position $dialog GTK_WIN_POS_CENTER
gtk_widget_show_all $dialog
gtk_dialog_run $dialog
gtk_widget_destroy $dialog
# Exit GTK-server
gtk_server_exit
ENDMACRO
#---------------------------------------------------------------------------
#
# Screensaver in GTK-server MACRO script
#
# From a prompt, activate as follows: echo "screensaver" | gtk-server -stdin
#
#---------------------------------------------------------------------------
MACRO screensaver
# Setup fullscreen window
$window : gtk_window_new GTK_WINDOW_TOPLEVEL
gtk_window_fullscreen $window
gtk_server_connect $window key-press-event key-press-event 1
gtk_server_connect $window show time-out
gtk_server_timeout 150 $window show
# Get width/height resolutions
$screen : gdk_screen_get_default
$xsize : gdk_screen_get_width $screen
$ysize : gdk_screen_get_height $screen
# Drawing area
$image : gtk_image_new
$gdkwin : gdk_get_default_root_window
$pix : gdk_pixmap_new $gdkwin $x $y -1
$context : gdk_gc_new $pix
gtk_image_set_from_pixmap $image $pix 0
# Put all into white
$kolor : gtk_server_opaque
gdk_color_parse "#ffffff" $kolor
gdk_gc_set_rgb_bg_color $context $kolor
gdk_gc_set_rgb_fg_color $context $kolor
gdk_draw_rectangle $pix $context 1 0 0 $x $y
# Display the drawing
gtk_container_add $window $image
gtk_widget_show_all $window
# Make sure we use a correct HEX encoder, and have memory for it
gtk_server_redefine g_snprintf NONE NONE 4 POINTER INT STRING INT
$o : g_malloc 32
# Mainloop
$event : gtk_server_callback wait
# There s a timeout, draw random circle
$event COMPARE time-out
$z VALUE 16
# Get random coordinates and widths and colors
$q : g_random_int_range -100 $xsize
$r : g_random_int_range -100 $ysize
$a : g_random_int_range 100 600
$b : g_random_int_range 100 600
$m : g_random_int_range 0 16777215
$n : g_snprintf $o 32 #%X $m
# Draw the circle
gtk_server_redefine gdk_color_parse NONE NONE 2 POINTER WIDGET
gdk_color_parse $o $kolor
gdk_gc_set_rgb_fg_color $context $kolor
gdk_draw_arc $pix $context 1 $q $r $a $b 0 23040
gtk_server_redefine gdk_color_parse NONE NONE 2 STRING WIDGET
gdk_color_parse "#000000" $kolor
gdk_gc_set_rgb_fg_color $context $kolor
gdk_draw_arc $pix $context 0 $q $r $a $b 0 23040
gtk_widget_queue_draw $image
# Check if key was pressed
$event COMPARE key-press-event
$z VALUE -19
# Free claimed memory
g_free $kolor
g_free $o
gtk_server_exit
ENDMACRO
#---------------------------------------------------------------------------
#
# This is a screensaver for GTK3 using Cairo.
#
#---------------------------------------------------------------------------
MACRO screensaver3
# Setup fullscreen window
$window : gtk_window_new GTK_WINDOW_TOPLEVEL
gtk_window_fullscreen $window
gtk_server_connect $window key-press-event key-press-event 1
gtk_server_connect $window show time-out
gtk_server_timeout 150 $window show
# Get width/height resolutions
$screen : gdk_screen_get_default
$xsize : gdk_screen_get_width $screen
$ysize : gdk_screen_get_height $screen
# Drawing area
$image : gtk_image_new
$cairo : cairo_image_surface_create CAIRO_FORMAT_ARGB32 $x $y
$kontext : cairo_create $cairo
cairo_set_antialias $kontext CAIRO_ANTIALIAS_BEST
cairo_set_line_width $cairo 1
# Put all into white
cairo_set_source_rgba $kontext 1 1 1 1
cairo_rectangle $kontext 0 0 $x $y
cairo_fill $kontext
gtk_image_set_from_surface $image $cairo
# Display the drawing
gtk_container_add $window $image
gtk_widget_show_all $window
# Mainloop
$event : gtk_server_callback wait
# There s a timeout, draw random circle
$event COMPARE time-out
$z VALUE 14
# Get random coordinates, width and colors
$p : g_random_int_range 0 $xsize
$q : g_random_int_range 0 $ysize
$a : g_random_int_range 100 600
$r : g_random_double
$g : g_random_double
$b : g_random_double
# Draw the circle
cairo_set_source_rgba $kontext $r $g $b 1
cairo_arc $kontext $p $q $a 0 6.28
cairo_fill $kontext
cairo_set_source_rgba $kontext 0 0 0 1
cairo_arc $kontext $p $q $a 0 6.28
cairo_stroke $kontext
# Show result
gtk_image_set_from_surface $image $cairo
# Check if key was pressed
$event COMPARE key-press-event
$z VALUE -17
gtk_server_exit
ENDMACRO
#---------------------------------------------------------------------------
#
# These are example macros for the GtkTreeCellDataFunc callback function.
# See also 'list.ksh' or 'list.bash' in the demo-gtk directory.
#
# Incoming arguments:
#
# $1 = GtkTreeViewColumn*
# $2 = GtkCellRenderer*
# $3 = GtkTreeModel*
# $4 = GtkTreeIter*
# $5 = gpointer data
#
#---------------------------------------------------------------------------
MACRO GtkTreeCellDataFunc_1
# Make sure the functions are definied correctly for double and mempointer types
gtk_server_redefine gtk_tree_model_get NONE NONE 5 WIDGET WIDGET INT PTR_DOUBLE INT
gtk_server_redefine g_object_set NONE NONE 4 WIDGET STRING POINTER NULL
# Get the data
$float : gtk_tree_model_get $3 $4 $5 0 -1
# Allocate memory for string
$buffer : g_malloc 20
# Column '0' has two decimals
g_snprintf $buffer 20 %.2f $float
# Set the data
g_object_set $2 text $buffer NULL
# Free the alloc'ed memory again
g_free $buffer
ENDMACRO
#---------------------------------------------------------------------------
MACRO GtkTreeCellDataFunc_2
# Make sure the functions are definied correctly for double and mempointer types
gtk_server_redefine gtk_tree_model_get NONE NONE 5 WIDGET WIDGET INT PTR_DOUBLE INT
gtk_server_redefine g_object_set NONE NONE 4 WIDGET STRING POINTER NULL
# Get the data
$float : gtk_tree_model_get $3 $4 $5 0 -1
# Allocate memory for string
$buffer : g_malloc 20
# Column '1' has three decimals
g_snprintf $buffer 20 %.3f $float
# Set the data
g_object_set $2 text $buffer NULL
# Free the alloc'ed memory again
g_free $buffer
ENDMACRO
#---------------------------------------------------------------------------
MACRO xabout
# Define GUI
$win : fl_bgn_form FL_UP_BOX 240 180
fl_add_text FL_NORMAL_TEXT 20 20 180 30 "' - The GTK-server - '"
fl_add_text FL_NORMAL_TEXT 20 50 210 30 "'Distributed under the GPL license'"
fl_add_text FL_NORMAL_TEXT 20 80 180 30 "' (c) Peter van Eerten'"
fl_add_button FL_NORMAL_BUTTON 80 120 80 40 OK
fl_end_form
fl_show_form $win FL_PLACE_CENTER FL_FULLBORDER "About"
gtk_server_callback wait
gtk_server_exit
ENDMACRO
#---------------------------------------------------------------------------
MACRO xscreensaver
gtk_server_require libX11.so
gtk_server_redefine g_snprintf NONE NONE 4 POINTER INT STRING INT
# Seed random generator
$time : time NULL
srand $time
# Get width and height of screen
$display : XOpenDisplay NULL
$screen : XDefaultScreen $display
$x : XDisplayWidth $display $screen
$y : XDisplayHeight $display $screen
# Setup fullscreen window
$window : fl_bgn_form FL_FLAT_BOX $x $y
$timer : fl_add_timer FL_HIDDEN_TIMER 100 40 40 40 Timer
fl_set_timer $timer 0.15
fl_end_form
# Connect KeyPress event
gtk_server_connect $window 1
fl_show_form $window FL_PLACE_FULLSCREEN FL_NOBORDER Screensaver
# Set background to WHITE
fl_rectangle 1 0 0 $x $y FL_WHITE
$buffer : malloc 10
# Mainloop
$event : gtk_server_callback wait
# Timer expired?
$event COMPARE $timer
$z VALUE 15
fl_set_timer $timer 0.15
# Generate color for circle
$r : rand
snprintf $buffer 2 %X $r
$color : sscanf $buffer %X 0
# Generate coordinates
$r : rand
snprintf $buffer 10 %d $r
$p : sscanf $buffer %3i 0
$p : abs $p
$r : rand
snprintf $buffer 10 %d $r
$q : sscanf $buffer %3i 0
$q : abs $q
# Draw circle
fl_pieslice 1 $p $q 200 200 0 3600 $color
fl_pieslice 0 $p $q 200 200 0 3600 FL_BLACK
# Wait for keyboard
$key : gtk_server_key
$key EMPTY -18
# Free resources
free $buffer
gtk_server_exit
ENDMACRO
#---------------------------------------------------------------------------
#
# Macros provide a convenient way to group many GTK functions and can be
# used from every client language.
#
# The macros below are the beginnings of the Highlevel Universal GUI (HUG).
#
# Also check the demoscripts in the 'hug' directory.
#
# GPL, (c) PvE.
#---------------------------------------------------------------------------
#
# HHHHHHHHH HHHHHHHHHUUUUUUUU UUUUUUUU GGGGGGGGGGGGG
# H:::::::H H:::::::HU::::::U U::::::U GGG::::::::::::G
# H:::::::H H:::::::HU::::::U U::::::U GG:::::::::::::::G
# HH::::::H H::::::HHUU:::::U U:::::UU G:::::GGGGGGGG::::G
# H:::::H H:::::H U:::::U U:::::U G:::::G GGGGGG
# H:::::H H:::::H U:::::D D:::::UG:::::G
# H::::::HHHHH::::::H U:::::D D:::::UG:::::G
# H:::::::::::::::::H U:::::D D:::::UG:::::G GGGGGGGGGG
# H:::::::::::::::::H U:::::D D:::::UG:::::G G::::::::G
# H::::::HHHHH::::::H U:::::D D:::::UG:::::G GGGGG::::G
# H:::::H H:::::H U:::::D D:::::UG:::::G G::::G
# H:::::H H:::::H U::::::U U::::::U G:::::G G::::G
# HH::::::H H::::::HH U:::::::UUU:::::::U G:::::GGGGGGGG::::G
# H:::::::H H:::::::H UU:::::::::::::UU GG:::::::::::::::G
# H:::::::H H:::::::H UU:::::::::UU GGG::::::GGG:::G
# HHHHHHHHH HHHHHHHHH UUUUUUUUU GGGGGG GGGG
#
#---------------------------------------------------------------------------
MACRO u_window
$window : gtk_window_new GTK_WINDOW_TOPLEVEL
gtk_window_set_title $window $1
gtk_window_set_position $window GTK_WIN_POS_CENTER
gtk_widget_set_size_request $window $2 $3
gtk_window_set_resizable $window 0
gtk_server_connect $window key-press-event key-press-event 1
gtk_widget_set_name $window $window
gtk_widget_show $window
$grid : gtk_fixed_new $1
gtk_container_add $window $grid
gtk_widget_show $grid
$window ASSOC $grid
RETURN $window
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_button
$4 EMPTY 3
$button : gtk_toggle_button_new_with_mnemonic $1
JUMP 2
$button : gtk_button_new_with_mnemonic $1
gtk_widget_set_size_request $button $2 $3
gtk_widget_set_name $button $button
gtk_widget_show $button
$label : gtk_bin_get_child $button
$button ASSOC $label
RETURN $button
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_stock
$stock : gtk_button_new_from_stock $1
gtk_widget_set_size_request $stock $2 $3
gtk_widget_set_name $stock $stock
gtk_widget_show $stock
$label : gtk_bin_get_child $stock
$stock ASSOC $label
RETURN $stock
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_check
$check : gtk_check_button_new_with_label $1
gtk_widget_set_size_request $check $2 $3
gtk_widget_set_name $check $check
gtk_widget_show $check
$label : gtk_bin_get_child $check
$check ASSOC $label
RETURN $check
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_radio
$radio : gtk_radio_button_new_with_label_from_widget $4 $1
gtk_widget_set_size_request $radio $2 $3
gtk_widget_set_name $radio $radio
gtk_widget_show $radio
$label : gtk_bin_get_child $radio
$radio ASSOC $label
RETURN $radio
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_entry
$entry : gtk_entry_new
gtk_widget_set_size_request $entry $2 $3
gtk_entry_set_text $entry $1
gtk_widget_set_name $entry $entry
gtk_widget_show $entry
RETURN $entry
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_password
$password : gtk_entry_new
gtk_widget_set_size_request $password $1 $2
gtk_entry_set_visibility $password 0
gtk_widget_set_name $password $password
gtk_widget_show $password
RETURN $password
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_label
$label : gtk_label_new $1
gtk_widget_set_size_request $label $2 $3
gtk_widget_set_name $label $label
gtk_widget_show $label
$4 EMPTY 3
$5 EMPTY 2
gtk_misc_set_alignment $label $4 $5
RETURN $label
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_combo
$combo : gtk_combo_box_new_text
gtk_combo_box_append_text $combo $1
gtk_combo_box_set_active $combo 0
gtk_widget_set_size_request $combo $2 $3
gtk_widget_set_name $combo $combo
gtk_widget_show $combo
$button : gtk_bin_get_child $combo
$combo ASSOC $button
RETURN $combo
ENDMACRO
# ------- GTK3 --------
MACRO m_combo
$combo : gtk_combo_box_text_new
gtk_combo_box_text_append_text $combo $1
gtk_widget_set_size_request $combo $2 $3
gtk_widget_set_name $combo $combo
gtk_widget_show $combo
$button : gtk_bin_get_child $combo
$combo ASSOC $button
RETURN $combo
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_hseparator
$hseparator : gtk_hseparator_new
gtk_widget_set_size_request $hseparator $1 0
gtk_widget_set_name $hseparator $hseparator
gtk_widget_show $hseparator
RETURN $hseparator
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_vseparator
$vseparator : gtk_vseparator_new
gtk_widget_set_size_request $vseparator 0 $1
gtk_widget_set_name $hseparator $vseparator
gtk_widget_show $vseparator
RETURN $vseparator
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_frame
$frame : gtk_frame_new
gtk_widget_set_size_request $frame $1 $2
gtk_widget_set_name $frame $frame
gtk_widget_show $frame
RETURN $frame
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_text
$buffer : gtk_text_buffer_new NULL
$view : gtk_text_view_new_with_buffer $buffer
$scrolled : gtk_scrolled_window_new NULL NULL
gtk_scrolled_window_set_policy $scrolled GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC
gtk_scrolled_window_set_shadow_type $scrolled GTK_SHADOW_ETCHED_IN
gtk_container_add $scrolled $view
gtk_text_view_set_editable $view 1
gtk_text_view_set_wrap_mode $view GTK_WRAP_WORD
gtk_widget_set_size_request $scrolled $1 $2
gtk_widget_set_name $view $view
gtk_widget_show_all $scrolled
$scrolled ASSOC $buffer
$buffer ASSOC $view
RETURN $scrolled
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_list
$list : gtk_list_store_new 1 G_TYPE_STRING
$tree : gtk_tree_view_new_with_model $list
gtk_tree_view_set_headers_visible $tree 0
gtk_widget_set_name $tree $tree
gtk_server_connect $tree "button-press-event" $tree 1
$sel : gtk_tree_view_get_selection $tree
gtk_tree_selection_set_mode $sel GTK_SELECTION_SINGLE
$cell : gtk_cell_renderer_text_new
$kolumn : gtk_tree_view_column_new_with_attributes "dummy" $cell "text" 0 NULL
gtk_tree_view_append_column $tree $kolumn
$window : gtk_scrolled_window_new NULL NULL
gtk_scrolled_window_set_policy $window GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC
gtk_scrolled_window_set_shadow_type $window GTK_SHADOW_ETCHED_IN
gtk_container_add $window $tree
gtk_widget_set_size_request $window $1 $2
gtk_widget_show_all $window
$window ASSOC $list
$list ASSOC $tree
$tree ASSOC $cell
$cell ASSOC $sel
RETURN $window
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_dialog
$window : gtk_window_new GTK_WINDOW_TOPLEVEL
gtk_window_set_title $window $1
gtk_window_set_position $window GTK_WIN_POS_CENTER
gtk_widget_set_size_request $window $3 $4
gtk_window_set_resizable $window 0
gtk_widget_set_name $window $window
$table : gtk_table_new 10 10 1
gtk_container_add $window $table
$label : gtk_label_new $2
gtk_table_attach_defaults $table $label 2 9 2 4
$button : gtk_button_new_with_label "OK"
gtk_table_attach_defaults $table $button 3 7 6 9
gtk_server_connect $button clicked $window
RETURN $window
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_canvas
# Setup the image
$image : gtk_image_new
$ebox : gtk_event_box_new
gtk_container_add $ebox $image
gtk_server_connect $ebox button-press-event button-press
gtk_server_connect $ebox button-release-event button-release
gtk_server_connect $ebox motion-notify-event motion-notify
gtk_server_connect_after $ebox scroll-event scroll-event 1
gtk_server_connect_after $ebox scroll-event scroll-event 1
gtk_widget_show_all $ebox
$gdkwin : gdk_get_default_root_window
$pix : gdk_pixmap_new $gdkwin $1 $2 -1
$context : gdk_gc_new $pix
gtk_image_set_from_pixmap $image $pix 0
# color with a 'k' because the 'c' is used by 'context'
$kolor : gtk_server_opaque
$3 VALUE 3
gdk_color_parse "#ffffff" $kolor
JUMP 2
gdk_color_parse $3 $kolor
gdk_gc_set_rgb_bg_color $context $kolor
gdk_gc_set_rgb_fg_color $context $kolor
gdk_draw_rectangle $pix $context 1 0 0 $1 $2
gtk_widget_queue_draw $image
g_free $kolor
# We return an eBox but in reality this is a canvas
$ebox ASSOC $pix
$pix ASSOC $image
# Define this as default drawing canvas
u_draw $ebox
RETURN $ebox
ENDMACRO
# ------- GTK3 --------
MACRO m_canvas
# Setup the image
$image : gtk_image_new
$ebox : gtk_event_box_new
gtk_container_add $ebox $image
gtk_server_connect $ebox button-press-event button-press
gtk_server_connect $ebox button-release-event button-release
gtk_server_connect $ebox motion-notify-event motion-notify
gtk_server_connect_after $ebox scroll-event scroll-event 1
gtk_server_connect_after $ebox scroll-event scroll-event 1
gtk_widget_show_all $ebox
# Drawing area
$cairo : cairo_image_surface_create CAIRO_FORMAT_ARGB32 $1 $2
$kontext : cairo_create $cairo
cairo_set_antialias $kontext CAIRO_ANTIALIAS_BEST
cairo_set_line_width $cairo 1
# Put all into white
$3 VALUE 3
cairo_set_source_rgba $kontext 1 1 1 1
JUMP 5
$rgba : gtk_server_opaque
gdk_rgba_parse $rgba $3
gdk_cairo_set_source_rgba $kontext $rgb
g_free $rgba
cairo_rectangle $kontext 0 0 $1 $2
cairo_fill $kontext
gtk_image_set_from_surface $image $cairo
# We return an eBox but in reality this is a canvas
$ebox ASSOC $kontext
$kontext ASSOC $cairo
$cairo ASSOC $image
# Define this as default drawing canvas
u_draw $ebox
RETURN $ebox
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_draw
$pix GET $1
$draw : $pix
ENDMACRO
# ------- GTK3 --------
MACRO m_draw
u_draw $1
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_mouse
$data : gtk_server_mouse $1
RETURN $data
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_circle
$kolor : gtk_server_opaque
gdk_color_parse $1 $kolor
# Get the associated canvas
$pix : gtk_server_macro_var u_draw draw
$context : gdk_gc_new $pix
gdk_gc_set_rgb_fg_color $context $kolor
gdk_draw_arc $pix $context $6 $2 $3 $4 $5 0 23040
$image GET $pix
gtk_widget_queue_draw $image
g_free $kolor
ENDMACRO
# ------- GTK3 --------
MACRO m_circle
# Get the associated canvas
$kontext : gtk_server_macro_var u_draw draw
$cairo GET $kontext
$image GET $cairo
# Set color
$rgba : gtk_server_opaque
gdk_rgba_parse $rgba $1
gdk_cairo_set_source_rgba $kontext $rgba
# Draw circle
cairo_arc $kontext $2 $3 $4 0 6.28
$6 VALUE 3
cairo_stroke $kontext
JUMP 2
cairo_fill $kontext
# Render
gtk_image_set_from_surface $image $cairo
g_free $rgba
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_pixel
$kolor : gtk_server_opaque
gdk_color_parse $1 $kolor
# Get the associated canvas
$pix : gtk_server_macro_var u_draw draw
$context : gdk_gc_new $pix
gdk_gc_set_rgb_fg_color $context $kolor
gdk_draw_point $pix $context $2 $3
$image GET $pix
gtk_widget_queue_draw $image
g_free $kolor
ENDMACRO
# ------- GTK3 --------
MACRO m_pixel
# Get the associated canvas
$kontext : gtk_server_macro_var u_draw draw
$cairo GET $kontext
$image GET $cairo
# Set color
$rgba : gtk_server_opaque
gdk_rgba_parse $rgba $1
gdk_cairo_set_source_rgba $kontext $rgba
# Draw pixel
cairo_arc $kontext $2 $3 1 0 6.28
cairo_fill $kontext
# Render
gtk_image_set_from_surface $image $cairo
g_free $rgba
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_line
$kolor : gtk_server_opaque
gdk_color_parse $1 $kolor
# Get the associated canvas
$pix : gtk_server_macro_var u_draw draw
$context : gdk_gc_new $pix
gdk_gc_set_rgb_fg_color $context $kolor
gdk_draw_line $pix $context $2 $3 $4 $5
$image GET $pix
gtk_widget_queue_draw $image
g_free $kolor
ENDMACRO
# ------- GTK3 --------
MACRO m_line
# Get the associated canvas
$kontext : gtk_server_macro_var u_draw draw
$cairo GET $kontext
$image GET $cairo
# Set color
$rgba : gtk_server_opaque
gdk_rgba_parse $rgba $1
gdk_cairo_set_source_rgba $kontext $rgba
# Draw line
cairo_move_to $kontext $2 $3
cairo_line_to $kontext $4 $5
cairo_stroke $kontext
# Render
gtk_image_set_from_surface $image $cairo
g_free $rgba
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_square
$kolor : gtk_server_opaque
gdk_color_parse $1 $kolor
# Get the associated canvas
$pix : gtk_server_macro_var u_draw draw
$context : gdk_gc_new $pix
gdk_gc_set_rgb_fg_color $context $kolor
gdk_draw_rectangle $pix $context $6 $2 $3 $4 $5
$image GET $pix
gtk_widget_queue_draw $image
g_free $kolor
ENDMACRO
# ------- GTK3 --------
MACRO m_square
# Get the associated canvas
$kontext : gtk_server_macro_var u_draw draw
$cairo GET $kontext
$image GET $cairo
# Set color
$rgba : gtk_server_opaque
gdk_rgba_parse $rgba $1
gdk_cairo_set_source_rgba $kontext $rgba
# Draw square
cairo_rectangle $kontext $2 $3 $4 $5
$6 VALUE 3
cairo_stroke $kontext
JUMP 2
cairo_fill $kontext
# Render
gtk_image_set_from_surface $image $cairo
g_free $rgba
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_out
$kolor : gtk_server_opaque
gdk_color_parse $2 $kolor
# Get the associated canvas
$pix : gtk_server_macro_var u_draw draw
$context : gdk_gc_new $pix
gdk_gc_set_rgb_fg_color $context $kolor
$image GET $pix
$layout : gtk_widget_create_pango_layout $image $1
$back : gtk_server_opaque
gdk_color_parse $3 $back
gdk_draw_layout_with_colors $pix $context $4 $5 $layout $kolor $back
g_free $back
gtk_widget_queue_draw $image
g_free $kolor
ENDMACRO
# ------- GTK3 --------
MACRO m_out
# Get the associated canvas
$kontext : gtk_server_macro_var u_draw draw
$cairo GET $kontext
$image GET $cairo
# Set color
$rgba : gtk_server_opaque
#$ggba : gtk_server_opaque
gdk_rgba_parse $rgba $2
#gdk_rgba_parse $ggba $3
gdk_cairo_set_source_rgba $kontext $rgba
# Draw text
cairo_select_font_face $kontext "Sans" CAIRO_FONT_SLANT_NORMAL CAIRO_FONT_WEIGHT_NORMAL
cairo_set_font_size $kontext 14
cairo_move_to $kontext $4 $5
cairo_show_text $kontext $1
# Render
gtk_image_set_from_surface $image $cairo
g_free $rgba
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_image
# Get the associated canvas, then get the image widget
$pix : gtk_server_macro_var u_draw draw
$image GET $pix
gtk_image_set_from_file $image $1
gtk_widget_queue_draw $image
ENDMACRO
# ------- GTK3 --------
MACRO m_image
# Get the associated canvas, then get the image widget
$kontext : gtk_server_macro_var u_draw draw
$cairo GET $kontext
$image GET $cairo
gtk_image_set_from_file $image $1
gtk_widget_queue_draw $image
ENDMACRO
#---------------------------------------------------------------------------
# Only to attach widgets to a window!
MACRO u_attach
# Get GRID from window
$grid GET $1
gtk_fixed_put $grid $2 $3 $4
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_bgcolor
# The complicated widgets use basecolor,
# not bgcolor - so no need to GET an ASSOC here
# Also not for WINDOW. :-)
$opaque : gtk_server_opaque
gdk_color_parse $2 $opaque
gtk_widget_modify_bg $1 0 $opaque
g_free $opaque
$3 EMPTY 20
$opaque : gtk_server_opaque
gdk_color_parse $3 $opaque
gtk_widget_modify_bg $1 1 $opaque
g_free $opaque
$4 EMPTY 15
$opaque : gtk_server_opaque
gdk_color_parse $4 $opaque
gtk_widget_modify_bg $1 2 $opaque
g_free $opaque
$5 EMPTY 10
$opaque : gtk_server_opaque
gdk_color_parse $5 $opaque
gtk_widget_modify_bg $1 3 $opaque
g_free $opaque
$6 EMPTY 5
$opaque : gtk_server_opaque
gdk_color_parse $6 $opaque
gtk_widget_modify_bg $1 4 $opaque
g_free $opaque
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_fgcolor
# Get two assocs, last assoc is taken as real widget!
$widget GET $1
$real GET $widget
# This is for the list widget
$cell GET $real
$opaque : gtk_server_opaque
gdk_color_parse $2 $opaque
# Cell is empty? If so goto next
$cell EMPTY 4
gtk_server_redefine "g_object_set NONE NONE 4 WIDGET STRING STRING NULL"
g_object_set $cell "foreground" $2 NULL
JUMP 8
# Other regular widgets
$real EMPTY 3
gtk_widget_modify_fg $real 0 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_fg $widget 0 $opaque
JUMP 2
gtk_widget_modify_fg $1 0 $opaque
g_free $opaque
$3 EMPTY 44
$opaque : gtk_server_opaque
gdk_color_parse $3 $opaque
$real EMPTY 3
gtk_widget_modify_fg $real 1 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_fg $widget 1 $opaque
JUMP 2
gtk_widget_modify_fg $1 1 $opaque
g_free $opaque
$4 EMPTY 33
$opaque : gtk_server_opaque
gdk_color_parse $4 $opaque
$real EMPTY 3
gtk_widget_modify_fg $real 2 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_fg $widget 2 $opaque
JUMP 2
gtk_widget_modify_fg $1 2 $opaque
g_free $opaque
$5 EMPTY 22
$opaque : gtk_server_opaque
gdk_color_parse $5 $opaque
$real EMPTY 3
gtk_widget_modify_fg $real 3 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_fg $widget 3 $opaque
JUMP 2
gtk_widget_modify_fg $1 3 $opaque
g_free $opaque
$6 EMPTY 11
$opaque : gtk_server_opaque
gdk_color_parse $6 $opaque
$real EMPTY 3
gtk_widget_modify_fg $real 4 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_fg $widget 4 $opaque
JUMP 2
gtk_widget_modify_fg $1 4 $opaque
g_free $opaque
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_textcolor
# Get two assocs, last assoc is taken as real widget!
$widget GET $1
$real GET $widget
$opaque : gtk_server_opaque
gdk_color_parse $2 $opaque
# Last assoc is empty? if so use first assoc
$real EMPTY 3
gtk_widget_modify_text $real 0 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_text $widget 0 $opaque
JUMP 2
gtk_widget_modify_text $1 0 $opaque
g_free $opaque
$3 EMPTY 44
$opaque : gtk_server_opaque
gdk_color_parse $3 $opaque
$real EMPTY 3
gtk_widget_modify_text $real 1 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_text $widget 1 $opaque
JUMP 2
gtk_widget_modify_text $1 1 $opaque
g_free $opaque
$4 EMPTY 33
$opaque : gtk_server_opaque
gdk_color_parse $4 $opaque
$real EMPTY 3
gtk_widget_modify_text $real 2 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_text $widget 2 $opaque
JUMP 2
gtk_widget_modify_text $1 2 $opaque
g_free $opaque
$5 EMPTY 22
$opaque : gtk_server_opaque
gdk_color_parse $5 $opaque
$real EMPTY 3
gtk_widget_modify_text $real 3 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_text $widget 3 $opaque
JUMP 2
gtk_widget_modify_text $1 3 $opaque
g_free $opaque
$6 EMPTY 11
$opaque : gtk_server_opaque
gdk_color_parse $6 $opaque
$real EMPTY 3
gtk_widget_modify_text $real 4 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_text $widget 4 $opaque
JUMP 2
gtk_widget_modify_text $1 4 $opaque
g_free $opaque
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_basecolor
# Get two assocs, last assoc is taken as real widget!
$widget GET $1
$real GET $widget
$opaque : gtk_server_opaque
gdk_color_parse $2 $opaque
# Last assoc is empty? if so use first assoc
$real EMPTY 3
gtk_widget_modify_base $real 0 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_base $widget 0 $opaque
JUMP 2
gtk_widget_modify_base $1 0 $opaque
g_free $opaque
$3 EMPTY 44
$opaque : gtk_server_opaque
gdk_color_parse $3 $opaque
$real EMPTY 3
gtk_widget_modify_base $real 1 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_base $widget 1 $opaque
JUMP 2
gtk_widget_modify_base $1 1 $opaque
g_free $opaque
$4 EMPTY 33
$opaque : gtk_server_opaque
gdk_color_parse $4 $opaque
$real EMPTY 3
gtk_widget_modify_base $real 2 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_base $widget 2 $opaque
JUMP 2
gtk_widget_modify_base $1 2 $opaque
g_free $opaque
$5 EMPTY 22
$opaque : gtk_server_opaque
gdk_color_parse $5 $opaque
$real EMPTY 3
gtk_widget_modify_base $real 3 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_base $widget 3 $opaque
JUMP 2
gtk_widget_modify_base $1 3 $opaque
g_free $opaque
$6 EMPTY 11
$opaque : gtk_server_opaque
gdk_color_parse $6 $opaque
$real EMPTY 3
gtk_widget_modify_base $real 4 $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_modify_base $widget 4 $opaque
JUMP 2
gtk_widget_modify_base $1 4 $opaque
g_free $opaque
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_button_text
gtk_button_set_label $1 $2
ENDMACRO
MACRO u_radio_text
gtk_button_set_label $1 $2
ENDMACRO
MACRO u_check_text
gtk_button_set_label $1 $2
ENDMACRO
MACRO u_window_text
gtk_window_set_title $1 $2
ENDMACRO
MACRO u_entry_text
gtk_entry_set_text $1 $2
ENDMACRO
MACRO u_password_text
gtk_entry_set_text $1 $2
ENDMACRO
MACRO u_label_text
gtk_label_set_text $1 $2
ENDMACRO
MACRO u_combo_text
gtk_combo_box_append_text $1 $2
ENDMACRO
# ------- GTK3 --------
MACRO m_combo_text
gtk_combo_box_text_append_text $1 $2
ENDMACRO
MACRO u_frame_text
gtk_frame_set_label $1 $2
$widget GET $1
$widget VALUE 5
$label : gtk_frame_get_label_widget $1
$1 ASSOC $label
ENDMACRO
MACRO u_text_text
$buffer GET $1
gtk_text_buffer_insert_at_cursor $buffer $2 -1
ENDMACRO
MACRO u_list_text
$list GET $1
$iter : gtk_server_opaque
gtk_list_store_append $list $iter
gtk_list_store_set $list $iter 0 $2 -1
g_free $iter
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_button_grab
$text : gtk_button_get_label $1
RETURN $text
ENDMACRO
MACRO u_radio_grab
$text : gtk_button_get_label $1
RETURN $text
ENDMACRO
MACRO u_check_grab
$text : gtk_button_get_label $1
RETURN $text
ENDMACRO
MACRO u_window_grab
$text : gtk_window_get_title $1
RETURN $text
ENDMACRO
MACRO u_entry_grab
$text : gtk_entry_get_text $1
RETURN $text
ENDMACRO
MACRO u_password_grab
$text : gtk_entry_get_text $1
RETURN $text
ENDMACRO
MACRO u_label_grab
$text : gtk_label_get_text $1
RETURN $text
ENDMACRO
MACRO u_combo_grab
$text : gtk_combo_box_get_active_text $1
RETURN $text
ENDMACRO
# ------- GTK3 --------
MACRO m_combo_grab
$text : gtk_combo_box_text_get_active_text $1
RETURN $text
ENDMACRO
MACRO u_frame_grab
$text : gtk_frame_get_label $1
RETURN $text
ENDMACRO
MACRO u_text_grab
$buffer GET $1
$opaque : gtk_server_opaque
$paque : gtk_server_opaque
gtk_text_buffer_get_start_iter $buffer $opaque
gtk_text_buffer_get_end_iter $buffer $paque
$text : gtk_text_buffer_get_text $buffer $opaque $paque 1
g_free $opaque
g_free $paque
RETURN $text
ENDMACRO
MACRO u_list_grab
$list GET $1
$tree GET $list
$cell GET $tree
$sel GET $cell
$iter : gtk_server_opaque
$result : gtk_tree_selection_get_selected $sel NULL $iter
$result EMPTY 2
$get : gtk_tree_model_get $list $iter 0 0 -1
g_free $iter
RETURN $get
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_button_get
$get : gtk_toggle_button_get_active $1
RETURN $get
ENDMACRO
MACRO u_check_get
$get : gtk_toggle_button_get_active $1
RETURN $get
ENDMACRO
MACRO u_radio_get
$get : gtk_toggle_button_get_active $1
RETURN $get
ENDMACRO
MACRO u_combo_get
$get : gtk_combo_box_get_active $1
RETURN $get
ENDMACRO
MACRO u_text_get
$buffer GET $1
$get : gtk_text_buffer_get_line_count $buffer
RETURN $get
ENDMACRO
MACRO u_list_get
$list GET $1
$tree GET $list
$sel GET $tree
$iter : gtk_server_opaque
$result : gtk_tree_selection_get_selected $sel NULL $iter
$result EMPTY 2
$get : gtk_tree_model_get_string_from_iter $list $iter
g_free $iter
RETURN $get
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_button_set
$get : gtk_toggle_button_set_active $1 $2
RETURN $get
ENDMACRO
MACRO u_check_set
$get : gtk_toggle_button_set_active $1 $2
RETURN $get
ENDMACRO
MACRO u_radio_set
$get : gtk_toggle_button_set_active $1 $2
RETURN $get
ENDMACRO
MACRO u_combo_set
$get : gtk_combo_box_set_active $1 $2
RETURN $get
ENDMACRO
MACRO u_text_set
$buffer GET $1
$view GET $buffer
$opaque : gtk_server_opaque
gtk_text_buffer_get_iter_at_line $buffer $opaque $2
$mark : gtk_text_buffer_create_mark $buffer "mark" $opaque 0
gtk_text_view_scroll_to_mark $view $mark 0 1 0.0 1.0
gtk_text_buffer_delete_mark $buffer $mark
g_free $opaque
ENDMACRO
MACRO u_list_set
$list GET $1
$tree GET $list
$sel GET $tree
$path : gtk_tree_path_new_from_string $2
gtk_tree_selection_select_path $sel $path
gtk_tree_path_free $path
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_font
$desc : pango_font_description_from_string $2
# Get two assocs, last assoc is taken as real widget!
$widget GET $1
$real GET $widget
# Last assoc is empty? if so use first assoc
$real EMPTY 3
gtk_widget_modify_font $real $desc
JUMP 5
$widget EMPTY 3
gtk_widget_modify_font $widget $desc
JUMP 2
gtk_widget_modify_font $1 $desc
pango_font_description_free $desc
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_disable
gtk_widget_set_sensitive $1 0
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_enable
gtk_widget_set_sensitive $1 1
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_hide
gtk_widget_hide $1
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_show
gtk_widget_show_all $1
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_focus
gtk_server_redefine "g_object_set NONE NONE 4 WIDGET STRING BOOL NULL"
# Get three assocs, last assoc is taken as real widget!
$widget GET $1
$real GET $widget
$real EMPTY 4
g_object_set $real "can-focus" 1 NULL
gtk_widget_grab_focus $real
JUMP 3
g_object_set $1 "can-focus" 1 NULL
gtk_widget_grab_focus $1
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_unfocus
gtk_server_redefine "g_object_set NONE NONE 4 WIDGET STRING BOOL NULL"
# Get three assocs, last assoc is taken as real widget!
$widget GET $1
$real GET $widget
$real EMPTY 3
g_object_set $real "can-focus" 0 NULL
JUMP 2
g_object_set $1 "can-focus" 0 NULL
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_event
$1 VALUE 3
$event : gtk_server_callback wait
JUMP 2
$event : gtk_server_callback update
RETURN $event
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_timeout
$widget GET $1
# If timeout was set, remove and set again
$timeout EMPTY 7
gtk_server_timeout_remove $timeout
$widget EMPTY 3
$timeout : gtk_server_timeout $2 $widget show
JUMP 9
$timeout : gtk_server_timeout $2 $1 show
JUMP 7
# First timeout, also connect widget to signal
$widget EMPTY 4
gtk_server_connect $widget show $1
$timeout : gtk_server_timeout $2 $widget show
JUMP 3
gtk_server_connect $1 show $1
gtk_server_timeout $2 $1 show
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_key
$key : gtk_server_key
RETURN $key
ENDMACRO
#---------------------------------------------------------------------------
MACRO u_end
gtk_server_exit
ENDMACRO
#---------------------------------------------------------------------------
#
# Macro aliases for GTK3
#
ALIAS_NAME = m_window, u_window
ALIAS_NAME = m_button, u_button
ALIAS_NAME = m_stock, u_stock
ALIAS_NAME = m_check, u_check
ALIAS_NAME = m_radio, u_radio
ALIAS_NAME = m_entry, u_entry
ALIAS_NAME = m_password, u_password
ALIAS_NAME = m_label, u_label
ALIAS_NAME = m_hseparator, u_hseparator
ALIAS_NAME = m_vseparator, u_vseparator
ALIAS_NAME = m_frame, u_frame
ALIAS_NAME = m_text, u_text
ALIAS_NAME = m_list, u_list
ALIAS_NAME = m_dialog, u_dialog
ALIAS_NAME = m_mouse, u_mouse
ALIAS_NAME = m_attach, u_attach
ALIAS_NAME = m_bgcolor, u_bgcolor
ALIAS_NAME = m_fgcolor, u_fgcolor
ALIAS_NAME = m_textcolor, u_textcolor
ALIAS_NAME = m_basecolor, u_basecolor
ALIAS_NAME = m_button_text, u_button_text
ALIAS_NAME = m_radio_text, u_radio_text
ALIAS_NAME = m_check_text, u_check_text
ALIAS_NAME = m_window_text, u_window_text
ALIAS_NAME = m_entry_text, u_entry_text
ALIAS_NAME = m_password_text, u_password_text
ALIAS_NAME = m_label_text, u_label_text
ALIAS_NAME = m_frame_text, u_frame_text
ALIAS_NAME = m_text_text, u_text_text
ALIAS_NAME = m_list_text, u_list_text
ALIAS_NAME = m_button_grab, u_button_grab
ALIAS_NAME = m_radio_grab, u_radio_grab
ALIAS_NAME = m_check_grab, u_check_grab
ALIAS_NAME = m_window_grab, u_window_grab
ALIAS_NAME = m_entry_grab, u_entry_grab
ALIAS_NAME = m_password_grab, u_password_grab
ALIAS_NAME = m_label_grab, u_label_grab
ALIAS_NAME = m_frame_grab, u_frame_grab
ALIAS_NAME = m_text_grab, u_text_grab
ALIAS_NAME = m_list_grab, u_list_grab
ALIAS_NAME = m_button_get, u_button_get
ALIAS_NAME = m_check_get, u_check_get
ALIAS_NAME = m_radio_get, u_radio_get
ALIAS_NAME = m_combo_get, u_combo_get
ALIAS_NAME = m_text_get, u_text_get
ALIAS_NAME = m_list_get, u_list_get
ALIAS_NAME = m_button_set, u_button_set
ALIAS_NAME = m_check_set, u_check_set
ALIAS_NAME = m_radio_set, u_radio_set
ALIAS_NAME = m_combo_set, u_combo_set
ALIAS_NAME = m_text_set, u_text_set
ALIAS_NAME = m_list_set, u_list_set
ALIAS_NAME = m_font, u_font
ALIAS_NAME = m_disable, u_disable
ALIAS_NAME = m_enable, u_enable
ALIAS_NAME = m_hide, u_hide
ALIAS_NAME = m_show, u_show
ALIAS_NAME = m_focus, u_focus
ALIAS_NAME = m_unfocus, u_unfocus
ALIAS_NAME = m_event, u_event
ALIAS_NAME = m_timeout, u_timeout
ALIAS_NAME = m_key, u_key
ALIAS_NAME = m_end, u_end