gtk-server.cfg

File gtk-server/src/gtk-server.cfg from the latest check-in


# 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.so, libgdk-3.so
#
# GTK4 backend
# LIB_NAME = libgtk-4.so, libgdk-4.so
#
# Common GTK2/GTK3/GTK4 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
#
# Motif backend
# LIB_NAME = libXm.so, libXt.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
#
# 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
#
# Opening library files up to a maximum sequence number.
#
SEQUENCE = 100
#
#---------------------------------------------------------------------------
#
# 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_dialog_new, delete-event, WIDGET, 0
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_container_children, NONE, POINTER, 1, WIDGET
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_from_icon_name, clicked, WIDGET, 2, STRING, INT
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
FUNCTION_NAME = gtk_label_set_ellipsize, NONE, NONE, 2, WIDGET, INT
FUNCTION_NAME = gtk_label_set_max_width_chars, NONE, NONE, 2, WIDGET, INT
#
# 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, DOUBLE, 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_override_background_color, NONE, NONE, 3, WIDGET, INT, WIDGET
FUNCTION_NAME = gtk_widget_modify_text, NONE, NONE, 3, WIDGET, INT, WIDGET
FUNCTION_NAME = gtk_widget_override_color, 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
FUNCTION_NAME = g_list_nth_data, NONE, POINTER, 1, POINTER
#
# 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
FUNCTION_NAME = pango_cairo_create_layout, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = pango_layout_set_text, NONE, NONE, 3, WIDGET, STRING, INT
FUNCTION_NAME = pango_layout_set_font_description, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = pango_cairo_update_layout, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = pango_cairo_show_layout, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = pango_layout_get_size, NONE, NONE, 3, WIDGET, PTR_INT, PTR_INT
FUNCTION_NAME = pango_layout_get_width, NONE, INT, 1, WIDGET
FUNCTION_NAME = pango_layout_get_height, NONE, INT, 1, WIDGET
#
# 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_restore, NONE, NONE, 1, WIDGET
FUNCTION_NAME = cairo_save, NONE, NONE, 1, WIDGET
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
FUNCTION_NAME = cairo_translate, NONE, NONE, 3, WIDGET, DOUBLE, DOUBLE
#
# 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_disable_print_line_count, 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_enable_print_line_count, 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, POINTER, 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
ENUM_NAME = GTK_STATE_FLAG_NORMAL, 0
ENUM_NAME = GTK_STATE_FLAG_ACTIVE, 1
ENUM_NAME = GTK_STATE_FLAG_PRELIGHT, 2
ENUM_NAME = GTK_STATE_FLAG_SELECTED, 4
ENUM_NAME = GTK_STATE_FLAG_INSENSITIVE, 8
#
# 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
#
# Icon sizes (GTK3)
#
ENUM_NAME = GTK_ICON_SIZE_INVALID, 0
ENUM_NAME = GTK_ICON_SIZE_MENU, 1
ENUM_NAME = GTK_ICON_SIZE_SMALL_TOOLBAR, 2
ENUM_NAME = GTK_ICON_SIZE_LARGE_TOOLBAR, 3
ENUM_NAME = GTK_ICON_SIZE_BUTTON, 4
ENUM_NAME = GTK_ICON_SIZE_DND, 5
ENUM_NAME = GTK_ICON_SIZE_DIALOG, 6
#
# 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
#
# PANGO
#
ENUM_NAME = PANGO_SCALE, 1024
ENUM_NAME = PANGO_ELLIPSIZE_NONE, 0
ENUM_NAME = PANGO_ELLIPSIZE_START, 1
ENUM_NAME = PANGO_ELLIPSIZE_MIDDLE, 2
ENUM_NAME = PANGO_ELLIPSIZE_END, 3
#
# 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, KeyPressMask, 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_redraw_form, NONE, NONE, 1, WIDGET
FUNCTION_NAME = fl_redraw_object, NONE, NONE, 1, WIDGET
#
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
FUNCTION_NAME = fl_initialize, NONE, POINTER, 5, POINTER, POINTER, STRING, INT, INT
#
#---------------------------------------------------------------------------
#
# 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 Motif/Xt calls
#
FUNCTION_NAME = XmComboBoxAddItem, NONE, NONE, 4, WIDGET, WIDGET, INT, BOOL
FUNCTION_NAME = XmCommandGetChild, NONE, WIDGET, 2, WIDGET, INT
FUNCTION_NAME = XmCreateCommand, NONE, WIDGET, 4, WIDGET, STRING, NULL, INT
FUNCTION_NAME = XmCreateDrawingArea, NONE, WIDGET, 4, WIDGET, STRING, NULL, INT
FUNCTION_NAME = XmCreateDropDownComboBox, NONE, WIDGET, 4, WIDGET, STRING, NULL, INT
FUNCTION_NAME = XmCreateLabel, NONE, WIDGET, 4, WIDGET, STRING, NULL, INT
FUNCTION_NAME = XmCreateRadioBox, NONE, WIDGET, 4, WIDGET, STRING, NULL, INT
FUNCTION_NAME = XmFontListAppendEntry, NONE, WIDGET, 2, NULL, WIDGET
FUNCTION_NAME = XmFontListEntryFree, NONE, NONE, 1, LONG
FUNCTION_NAME = XmFontListEntryLoad, NONE, WIDGET, 4, WIDGET, STRING, ENUM, STRING
FUNCTION_NAME = XmGetFocusWidget, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = XmGetPixmap, NONE, WIDGET, 4, WIDGET, STRING, LONG, LONG
FUNCTION_NAME = XmStringCreateLocalized, NONE, WIDGET, 1, STRING
FUNCTION_NAME = XmStringFree, NONE, NONE, 1, WIDGET
FUNCTION_NAME = XmTextGetString, NONE, STRING, 1, WIDGET
FUNCTION_NAME = XmTextSetEditable, NONE, NONE, 2, WIDGET, BOOL
FUNCTION_NAME = XmTextSetString, NONE, NONE, 2, WIDGET, STRING
FUNCTION_NAME = XtDisplay, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = XtManageChild, NONE, NONE, 1, WIDGET
FUNCTION_NAME = XtParent, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = XtScreen, NONE, WIDGET, 1, WIDGET
FUNCTION_NAME = XtSetLanguageProc, NONE, WIDGET, 3, NULL, NULL, NULL
FUNCTION_NAME = XtSetKeyboardFocus, NONE, NONE, 2, WIDGET, WIDGET
FUNCTION_NAME = XtVaCreateManagedWidget, NONE, WIDGET, 4, STRING, CLASS, WIDGET, VARARGS
FUNCTION_NAME = XtVaCreateWidget, NONE, WIDGET, 4, STRING, CLASS, WIDGET, VARARGS
FUNCTION_NAME = XtVaSetValues, NONE, NONE, 2, WIDGET, VARARGS
#
# Motif string equivalents
#
STR_NAME = XmNwidth, width
STR_NAME = XmNheight, height
STR_NAME = XmNx, x
STR_NAME = XmNy, y
STR_NAME = XmNlabelString, labelString
STR_NAME = XmNactivateCallback, activateCallback
STR_NAME = XmNinputCallback, inputCallback
STR_NAME = XmRString, String
STR_NAME = XmNshadowThickness, shadowThickness
STR_NAME = XmNbackground, background
STR_NAME = XmNforeground, foreground
STR_NAME = XmNborderColor, borderColor
STR_NAME = XmNfontList, fontList
STR_NAME = XmNtextFontList, textFontList
STR_NAME = XmNlabelFontList, labelFontList
STR_NAME = XmNbuttonFontList, buttonFontList
STR_NAME = XmNlabelType, labelType
STR_NAME = XmNlabelPixmap, labelPixmap
STR_NAME = XmNleftOffset, leftOffset
STR_NAME = XmNrightOffset, rightOffset
STR_NAME = XmNtopOffset, topOffset
STR_NAME = XmNbottomOffset, bottomOffset
STR_NAME = XmNtopAttachment, topAttachment
STR_NAME = XmNleftAttachment, leftAttachment
STR_NAME = XmNrightAttachment, rightAttachment
STR_NAME = XmNbottomAttachment, bottomAttachment
#
# Motif enums
#
ENUM_NAME = XmRESIZE_NONE, 0
ENUM_NAME = XmRESIZE_GROW, 1
ENUM_NAME = XmRESIZE_ANY, 2
ENUM_NAME = XmATTACH_NONE, 0
ENUM_NAME = XmATTACH_FORM, 1
ENUM_NAME = XmATTACH_OPPOSITE_FORM, 2
ENUM_NAME = XmATTACH_WIDGET, 3
ENUM_NAME = XmATTACH_OPPOSITE_WIDGET, 4
ENUM_NAME = XmATTACH_POSITION, 5
ENUM_NAME = XmATTACH_SELF, 6
ENUM_NAME = XmFONT_IS_FONT, 0
ENUM_NAME = XmFONT_IS_FONTSET, 1
ENUM_NAME = XmDIALOG_NONE, 0
ENUM_NAME = XmDIALOG_APPLY_BUTTON, 1
ENUM_NAME = XmDIALOG_CANCEL_BUTTON, 2
ENUM_NAME = XmDIALOG_DEFAULT_BUTTON, 3
ENUM_NAME = XmDIALOG_OK_BUTTON, 4
ENUM_NAME = XmDIALOG_FILTER_LABEL, 5
ENUM_NAME = XmDIALOG_FILTER_TEXT, 6
ENUM_NAME = XmDIALOG_HELP_BUTTON, 7
ENUM_NAME = XmDIALOG_LIST, 8
ENUM_NAME = XmDIALOG_LIST_LABEL, 9
ENUM_NAME = XmDIALOG_MESSAGE_LABEL, 10
ENUM_NAME = XmDIALOG_SELECTION_LABEL, 11
ENUM_NAME = XmDIALOG_SYMBOL_LABEL, 12
ENUM_NAME = XmDIALOG_TEXT, 13
ENUM_NAME = XmDIALOG_SEPARATOR, 14
ENUM_NAME = XmDIALOG_DIR_LIST, 15
ENUM_NAME = XmDIALOG_DIR_LIST_LABEL, 16
ENUM_NAME = XmDIALOG_WORK_AREA, 0
ENUM_NAME = XmDIALOG_PROMPT, 1
ENUM_NAME = XmDIALOG_SELECTION, 2
ENUM_NAME = XmDIALOG_COMMAND, 3
ENUM_NAME = XmDIALOG_FILE_SELECTION, 4
ENUM_NAME = XmDIALOG_HISTORY_LIST, 8
ENUM_NAME = XmDIALOG_COMMAND_TEXT, 13
ENUM_NAME = XmPIXMAP, 1
ENUM_NAME = XmSTRING, 2
ENUM_NAME = XmPIXMAP_AND_STRING, 3
ENUM_NAME = XmUNSPECIFIED_PIXMAP, 2
ENUM_NAME = XmNONE, 0
ENUM_NAME = XmTAB_GROUP, 1
ENUM_NAME = XmSTICKY_TAB_GROUP, 2
ENUM_NAME = XmEXCLUSIVE_TAB_GROUP, 3
#
# Color defs from X11 rgb.txt
#
ENUM_NAME = AliceBlue, 0xF0F8FF
ENUM_NAME = AntiqueWhite, 0xFAEBD7
ENUM_NAME = Aqua, 0x00FFFF
ENUM_NAME = Aquamarine, 0x7FFFD4
ENUM_NAME = Azure, 0xF0FFFF
ENUM_NAME = Beige, 0xF5F5DC
ENUM_NAME = Bisque, 0xFFE4C4
ENUM_NAME = Black, 0x000000
ENUM_NAME = BlanchedAlmond, 0xFFEBCD
ENUM_NAME = Blue, 0x0000FF
ENUM_NAME = BlueViolet, 0x8A2BE2
ENUM_NAME = Brown, 0xA52A2A
ENUM_NAME = Burlywood, 0xDEB887
ENUM_NAME = CadetBlue, 0x5F9EA0
ENUM_NAME = Chartreuse, 0x7FFF00
ENUM_NAME = Chocolate, 0xD2691E
ENUM_NAME = Coral, 0xFF7F50
ENUM_NAME = Cornflower, 0x6495ED
ENUM_NAME = Cornsilk, 0xFFF8DC
ENUM_NAME = Crimson, 0xDC143C
ENUM_NAME = Cyan, 0x00FFFF
ENUM_NAME = DarkBlue, 0x00008B
ENUM_NAME = DarkCyan, 0x008B8B
ENUM_NAME = DarkGoldenrod, 0xB8860B
ENUM_NAME = DarkGray, 0xA9A9A9
ENUM_NAME = DarkGreen, 0x006400
ENUM_NAME = DarkKhaki, 0xBDB76B
ENUM_NAME = DarkMagenta, 0x8B008B
ENUM_NAME = DarkOliveGreen, 0x556B2F
ENUM_NAME = DarkOrange, 0xFF8C00
ENUM_NAME = DarkOrchid, 0x9932CC
ENUM_NAME = DarkRed, 0x8B0000
ENUM_NAME = DarkSalmon, 0xE9967A
ENUM_NAME = DarkSeaGreen, 0x8FBC8F
ENUM_NAME = DarkSlateBlue, 0x483D8B
ENUM_NAME = DarkSlateGray, 0x2F4F4F
ENUM_NAME = DarkTurquoise, 0x00CED1
ENUM_NAME = DarkViolet, 0x9400D3
ENUM_NAME = DeepPink, 0xFF1493
ENUM_NAME = DeepSkyBlue, 0x00BFFF
ENUM_NAME = DimGray, 0x696969
ENUM_NAME = DodgerBlue, 0x1E90FF
ENUM_NAME = Firebrick, 0xB22222
ENUM_NAME = FloralWhite, 0xFFFAF0
ENUM_NAME = ForestGreen, 0x228B22
ENUM_NAME = Fuchsia, 0xFF00FF
ENUM_NAME = Gainsboro, 0xDCDCDC
ENUM_NAME = GhostWhite, 0xF8F8FF
ENUM_NAME = Gold, 0xFFD700
ENUM_NAME = Goldenrod, 0xDAA520
ENUM_NAME = Gray, 0xBEBEBE
ENUM_NAME = WebGray, 0x808080
ENUM_NAME = Green, 0x00FF00
ENUM_NAME = WebGreen, 0x008000
ENUM_NAME = GreenYellow, 0xADFF2F
ENUM_NAME = Honeydew, 0xF0FFF0
ENUM_NAME = HotPink, 0xFF69B4
ENUM_NAME = IndianRed, 0xCD5C5C
ENUM_NAME = Indigo, 0x4B0082
ENUM_NAME = Ivory, 0xFFFFF0
ENUM_NAME = Khaki, 0xF0E68C
ENUM_NAME = Lavender, 0xE6E6FA
ENUM_NAME = LavenderBlush, 0xFFF0F5
ENUM_NAME = LawnGreen, 0x7CFC00
ENUM_NAME = LemonChiffon, 0xFFFACD
ENUM_NAME = LightBlue, 0xADD8E6
ENUM_NAME = LightCoral, 0xF08080
ENUM_NAME = LightCyan, 0xE0FFFF
ENUM_NAME = LightGoldenrod, 0xFAFAD2
ENUM_NAME = LightGray, 0xD3D3D3
ENUM_NAME = LightGreen, 0x90EE90
ENUM_NAME = LightPink, 0xFFB6C1
ENUM_NAME = LightSalmon, 0xFFA07A
ENUM_NAME = LightSeaGreen, 0x20B2AA
ENUM_NAME = LightSkyBlue, 0x87CEFA
ENUM_NAME = LightSlateGray, 0x778899
ENUM_NAME = LightSteelBlue, 0xB0C4DE
ENUM_NAME = LightYellow, 0xFFFFE0
ENUM_NAME = Lime, 0x00FF00
ENUM_NAME = LimeGreen, 0x32CD32
ENUM_NAME = Linen, 0xFAF0E6
ENUM_NAME = Magenta, 0xFF00FF
ENUM_NAME = Maroon, 0xB03060
ENUM_NAME = WebMaroon, 0x7F0000
ENUM_NAME = MediumAquamarine, 0x66CDAA
ENUM_NAME = MediumBlue, 0x0000CD
ENUM_NAME = MediumOrchid, 0xBA55D3
ENUM_NAME = MediumPurple, 0x9370DB
ENUM_NAME = MediumSeaGreen, 0x3CB371
ENUM_NAME = MediumSlateBlue, 0x7B68EE
ENUM_NAME = MediumSpringGreen, 0x00FA9A
ENUM_NAME = MediumTurquoise, 0x48D1CC
ENUM_NAME = MediumVioletRed, 0xC71585
ENUM_NAME = MidnightBlue, 0x191970
ENUM_NAME = MintCream, 0xF5FFFA
ENUM_NAME = MistyRose, 0xFFE4E1
ENUM_NAME = Moccasin, 0xFFE4B5
ENUM_NAME = NavajoWhite, 0xFFDEAD
ENUM_NAME = NavyBlue, 0x000080
ENUM_NAME = OldLace, 0xFDF5E6
ENUM_NAME = Olive, 0x808000
ENUM_NAME = OliveDrab, 0x6B8E23
ENUM_NAME = Orange, 0xFFA500
ENUM_NAME = OrangeRed, 0xFF4500
ENUM_NAME = Orchid, 0xDA70D6
ENUM_NAME = PaleGoldenrod, 0xEEE8AA
ENUM_NAME = PaleGreen, 0x98FB98
ENUM_NAME = PaleTurquoise, 0xAFEEEE
ENUM_NAME = PaleVioletRed, 0xDB7093
ENUM_NAME = PapayaWhip, 0xFFEFD5
ENUM_NAME = PeachPuff, 0xFFDAB9
ENUM_NAME = Peru, 0xCD853F
ENUM_NAME = Pink, 0xFFC0CB
ENUM_NAME = Plum, 0xDDA0DD
ENUM_NAME = PowderBlue, 0xB0E0E6
ENUM_NAME = Purple, 0xA020F0
ENUM_NAME = WebPurple, 0x7F007F
ENUM_NAME = RebeccaPurple, 0x663399
ENUM_NAME = Red, 0xFF0000
ENUM_NAME = RosyBrown, 0xBC8F8F
ENUM_NAME = RoyalBlue, 0x4169E1
ENUM_NAME = SaddleBrown, 0x8B4513
ENUM_NAME = Salmon, 0xFA8072
ENUM_NAME = SandyBrown, 0xF4A460
ENUM_NAME = SeaGreen, 0x2E8B57
ENUM_NAME = Seashell, 0xFFF5EE
ENUM_NAME = Sienna, 0xA0522D
ENUM_NAME = Silver, 0xC0C0C0
ENUM_NAME = SkyBlue, 0x87CEEB
ENUM_NAME = SlateBlue, 0x6A5ACD
ENUM_NAME = SlateGray, 0x708090
ENUM_NAME = Snow, 0xFFFAFA
ENUM_NAME = SpringGreen, 0x00FF7F
ENUM_NAME = SteelBlue, 0x4682B4
ENUM_NAME = Tan, 0xD2B48C
ENUM_NAME = Teal, 0x008080
ENUM_NAME = Thistle, 0xD8BFD8
ENUM_NAME = Tomato, 0xFF6347
ENUM_NAME = Turquoise, 0x40E0D0
ENUM_NAME = Violet, 0xEE82EE
ENUM_NAME = Wheat, 0xF5DEB3
ENUM_NAME = White, 0xFFFFFF
ENUM_NAME = WhiteSmoke, 0xF5F5F5
ENUM_NAME = Yellow, 0xFFFF00
ENUM_NAME = YellowGreen, 0x9ACD32
#
#---------------------------------------------------------------------------
#
# 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 = calloc, NONE, POINTER, 2, INT, 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 = random, NONE, INT, 0
FUNCTION_NAME = srand, NONE, NONE, 1, INT
FUNCTION_NAME = srandom, NONE, NONE, 1, INT
FUNCTION_NAME = time, NONE, INT, 1, NULL
FUNCTION_NAME = memset, NONE, NONE, 3, POINTER, INT, INT
FUNCTION_NAME = sscanf, NONE, INT, 3, POINTER, STRING, PTR_INT
FUNCTION_NAME = strtok, NONE, STRING, 2, STRING, STRING
FUNCTION_NAME = strsep, NONE, STRING, 2, LONG, STRING
FUNCTION_NAME = strlen, NONE, INT, 1, STRING
FUNCTION_NAME = abs, NONE, INT, 1, INT
FUNCTION_NAME = div, NONE, INT, 2, INT, INT
FUNCTION_NAME = fmod, NONE, DOUBLE, 2, DOUBLE, DOUBLE
FUNCTION_NAME = fma, NONE, DOUBLE, 3, DOUBLE, DOUBLE, DOUBLE
FUNCTION_NAME = usleep, NONE, NONE, 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
ENUM_NAME = STDIN_FILENO, 0
ENUM_NAME = STDOUT_FILENO, 1
ENUM_NAME = STDERR_FILENO, 2
ENUM_NAME = EXIT_SUCCESS, 0
ENUM_NAME = EXIT_FAILURE, 1
#
#---------------------------------------------------------------------------
#
# 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<span foreground=\"blue\"><b> - The GTK-server - </b></span>\n\n<span foreground=\"red\">Distributed under the GPL license</span>\n\n\t<span foreground=\"darkgreen\">  (c) Peter van Eerten</span>"

# 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 $kontext 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

# Check for libX
gtk_server_require libX11.so

# Seed random generator
$time : time NULL
srandom $time

# Get width and height of screen
$display : XOpenDisplay NULL
$screen : XDefaultScreen $display
$x : XDisplayWidth $display $screen
$y : XDisplayHeight $display $screen
$h : div $x 3
$i : div $y 3

# Wait to avoid fast key detection
usleep 100000

# Setup fullscreen window
$window : fl_bgn_form FL_FLAT_BOX $x $y
$timer : fl_add_timer FL_HIDDEN_TIMER 40 40 40 40 Timer
fl_set_timer $timer 0.15
fl_end_form

# Connect KeyPress event
gtk_server_connect $window KeyPressMask
fl_show_form $window FL_PLACE_FULLSCREEN FL_NOBORDER Screensaver

# Set background to WHITE
$event : gtk_server_callback update
fl_rectangle 1 0 0 $x $y FL_WHITE

# Mainloop
$event : gtk_server_callback wait

# Timer expired?
$event COMPARE $timer
$z VALUE 14
fl_set_timer $timer 0.15

# Generate color for circle
$r : random
$color : fmod $r 156

# Generate radius
$r : random
$a : fmod $r $h
$r : random
$b : fmod $r $i

# Generate coordinates
$r : random
$p : fmod $r $x
$r : random
$q : fmod $r $y

# Draw circle
fl_pieslice 1 $p $q $a $b 0 3600 $color
fl_pieslice 0 $p $q $a $b 0 3600 FL_BLACK

# Wait for keyboard
$key : gtk_server_key
$key EMPTY -17

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' directories.
#
#   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_spin

$spin : gtk_spin_button_new_with_range $3 $4 $5

gtk_widget_set_size_request $spin $1 $2
gtk_widget_set_name $spin $spin
gtk_widget_show $spin

RETURN $spin

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_label_set_ellipsize $label PANGO_ELLIPSIZE_END
gtk_widget_show $label

gtk_misc_set_alignment $label $4 $5

$6 EMPTY 2
gtk_label_set_max_width_chars $label $6

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 1 10 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 $kontext 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

# Calculate radius and coordinates
$h : div $4 2
$j : div $5 2
$x : fma $2 1 $h
$y : fma $3 1 $j

# Setup the ellips or circle
cairo_save $kontext
cairo_translate $kontext $x $y
cairo_scale $kontext $h $j
# Draw circle
cairo_arc $kontext 0 0 1 0 6.28
$6 VALUE 3
cairo_stroke $kontext
JUMP 2
cairo_fill $kontext
cairo_restore $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

# Prepare color and layout
$rgba : gtk_server_opaque
$layout : pango_cairo_create_layout $kontext
pango_layout_set_text $layout $1 -1

# Get font
$font : gtk_server_macro_var m_font font
$font VALUE 2
$font : &"Sans 10"
$desc : pango_font_description_from_string $font
pango_layout_set_font_description $layout $desc
pango_font_description_free $desc

# Background color
gtk_server_redefine pango_layout_get_size NONE NONE 3 WIDGET PTR_INT POINTER
$a : pango_layout_get_size $layout NULL NULL
gtk_server_redefine pango_layout_get_size NONE NONE 3 WIDGET POINTER PTR_INT
$b : pango_layout_get_size $layout NULL NULL
$w : div $a PANGO_SCALE
$h : div $b PANGO_SCALE
gdk_rgba_parse $rgba $3
gdk_cairo_set_source_rgba $kontext $rgba
cairo_rectangle $kontext $4 $5 $w $h
cairo_fill $kontext

# Text in foreground color
gdk_rgba_parse $rgba $2
gdk_cairo_set_source_rgba $kontext $rgba
cairo_move_to $kontext $4 $5
pango_cairo_update_layout $kontext $layout
pango_cairo_show_layout $kontext $layout

# Render
gtk_image_set_from_surface $image $cairo
g_free $rgba
g_object_unref $layout

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

# ------- GTK3 --------

MACRO m_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_rgba_parse $opaque $2
gtk_widget_override_background_color $1 GTK_STATE_FLAG_NORMAL $opaque
g_free $opaque

$3 EMPTY 20

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $3
gtk_widget_override_background_color $1 GTK_STATE_FLAG_ACTIVE $opaque
g_free $opaque

$4 EMPTY 15

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $4
gtk_widget_override_background_color $1 GTK_STATE_FLAG_PRELIGHT $opaque
g_free $opaque

$5 EMPTY 10

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $5
gtk_widget_override_background_color $1 GTK_STATE_FLAG_SELECTED $opaque
g_free $opaque

$6 EMPTY 5

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $6
gtk_widget_override_background_color $1 GTK_STATE_FLAG_INSENSITIVE $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

# ------- GTK3 --------

MACRO m_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_rgba_parse $opaque $2

# 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_override_color $real GTK_STATE_FLAG_NORMAL $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_color $widget GTK_STATE_FLAG_NORMAL $opaque
JUMP 2
gtk_widget_override_color $1 GTK_STATE_FLAG_NORMAL $opaque

g_free $opaque
$3 EMPTY 44

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $3
$real EMPTY 3
gtk_widget_override_color $real GTK_STATE_FLAG_ACTIVE $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_color $widget GTK_STATE_FLAG_ACTIVE $opaque
JUMP 2
gtk_widget_override_color $1 GTK_STATE_FLAG_ACTIVE $opaque

g_free $opaque
$4 EMPTY 33

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $4
$real EMPTY 3
gtk_widget_override_color $real GTK_STATE_FLAG_PRELIGHT $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_color $widget GTK_STATE_FLAG_PRELIGHT $opaque
JUMP 2
gtk_widget_override_color $1 GTK_STATE_FLAG_PRELIGHT $opaque

g_free $opaque
$5 EMPTY 22

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $5
$real EMPTY 3
gtk_widget_override_color $real GTK_STATE_FLAG_SELECTED $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_color $widget GTK_STATE_FLAG_SELECTED $opaque
JUMP 2
gtk_widget_override_color $1 GTK_STATE_FLAG_SELECTED $opaque

g_free $opaque
$6 EMPTY 11

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $6
$real EMPTY 3
gtk_widget_override_color $real GTK_STATE_FLAG_INSENSITIVE $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_color $widget GTK_STATE_FLAG_INSENSITIVE $opaque
JUMP 2
gtk_widget_override_color $1 GTK_STATE_FLAG_INSENSITIVE $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

# ------- GTK3 --------

MACRO m_textcolor

# Get two assocs, last assoc is taken as real widget!
$widget GET $1
$real GET $widget

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $2

# Last assoc is empty? if so use first assoc
$real EMPTY 3
gtk_widget_override_color $real GTK_STATE_FLAG_NORMAL $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_color $widget GTK_STATE_FLAG_NORMAL $opaque
JUMP 2
gtk_widget_override_color $1 GTK_STATE_FLAG_NORMAL $opaque

g_free $opaque
$3 EMPTY 44

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $3
$real EMPTY 3
gtk_widget_override_color $real GTK_STATE_FLAG_ACTIVE $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_color $widget GTK_STATE_FLAG_ACTIVE $opaque
JUMP 2
gtk_widget_override_color $1 GTK_STATE_FLAG_ACTIVE $opaque

g_free $opaque
$4 EMPTY 33

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $4
$real EMPTY 3
gtk_widget_override_color $real GTK_STATE_FLAG_PRELIGHT $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_color $widget GTK_STATE_FLAG_PRELIGHT $opaque
JUMP 2
gtk_widget_override_color $1 GTK_STATE_FLAG_PRELIGHT $opaque

g_free $opaque
$5 EMPTY 22

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $5
$real EMPTY 3
gtk_widget_override_color $real GTK_STATE_FLAG_SELECTED $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_color $widget GTK_STATE_FLAG_SELECTED $opaque
JUMP 2
gtk_widget_override_color $1 GTK_STATE_FLAG_SELECTED $opaque

g_free $opaque
$6 EMPTY 11

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $6
$real EMPTY 3
gtk_widget_override_color $real GTK_STATE_FLAG_INSENSITIVE $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_color $widget GTK_STATE_FLAG_INSENSITIVE $opaque
JUMP 2
gtk_widget_override_color $1 GTK_STATE_FLAG_INSENSITIVE $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

# ------- GTK3 --------

MACRO m_basecolor

# Get two assocs, last assoc is taken as real widget!
$widget GET $1
$real GET $widget

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $2

# Last assoc is empty? if so use first assoc
$real EMPTY 3
gtk_widget_override_background_color $real GTK_STATE_FLAG_NORMAL $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_background_color $widget GTK_STATE_FLAG_NORMAL $opaque
JUMP 2
gtk_widget_override_background_color $1 GTK_STATE_FLAG_NORMAL $opaque

g_free $opaque
$3 EMPTY 44

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $3
$real EMPTY 3
gtk_widget_override_background_color $real GTK_STATE_FLAG_ACTIVE $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_background_color $widget GTK_STATE_FLAG_ACTIVE $opaque
JUMP 2
gtk_widget_override_background_color $1 GTK_STATE_FLAG_ACTIVE $opaque

g_free $opaque
$4 EMPTY 33

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $4
$real EMPTY 3
gtk_widget_override_background_color $real GTK_STATE_FLAG_PRELIGHT $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_background_color $widget GTK_STATE_FLAG_PRELIGHT $opaque
JUMP 2
gtk_widget_override_background_color $1 GTK_STATE_FLAG_PRELIGHT $opaque

g_free $opaque
$5 EMPTY 22

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $5
$real EMPTY 3
gtk_widget_override_background_color $real GTK_STATE_FLAG_SELECTED $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_background_color $widget GTK_STATE_FLAG_SELECTED $opaque
JUMP 2
gtk_widget_override_background_color $1 GTK_STATE_FLAG_SELECTED $opaque

g_free $opaque
$6 EMPTY 11

$opaque : gtk_server_opaque
gdk_rgba_parse $opaque $6
$real EMPTY 3
gtk_widget_override_background_color $real GTK_STATE_FLAG_INSENSITIVE $opaque
JUMP 5
$widget EMPTY 3
gtk_widget_override_background_color $widget GTK_STATE_FLAG_INSENSITIVE $opaque
JUMP 2
gtk_widget_override_background_color $1 GTK_STATE_FLAG_INSENSITIVE $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

$str : strlen $2
$str EMPTY 4

gtk_list_store_append $list $iter
gtk_list_store_set $list $iter 0 $2 -1
JUMP 2

gtk_list_store_clear $list
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_spin_get

$value :  gtk_spin_button_get_value $1
RETURN $value

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
$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_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_spin_set

$value :  gtk_spin_button_set_value $1 $2
RETURN $value

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
$cell GET $tree
$sel GET $cell

$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

# ------- GTK3 --------

MACRO m_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 full? If so it is a canvas, skip
$real VALUE 5
$widget EMPTY 3
gtk_widget_modify_font $widget $desc
JUMP 2
gtk_widget_modify_font $1 $desc

pango_font_description_free $desc

$font : $2

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_spin, u_spin
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_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_spin_get, u_spin_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_spin_set, u_spin_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_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