picolisp-gtk-server

picoLisp gtk-server interface
git clone https://logand.com/git/picolisp-gtk-server.git/
Log | Files | Refs

commit bfef1588df48be6266fdc3f4aa29c5a1e2846d5d
parent c8a658f8bc6d00f3b2a5072d9f9049fdafac3c83
Author: Tomas Hlavaty <tom@logand.com>
Date:   Wed, 28 Aug 2019 08:07:10 +0200

content added

Diffstat:
Aglade-example.glade | 293+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aglade-example.l | 25+++++++++++++++++++++++++
Agtk-example.l | 28++++++++++++++++++++++++++++
Agtk-gl-teapot.l | 160+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Agtk-mandelbrot.l | 169+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Agtk-server.cfg | 1610+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Agtk.l | 32++++++++++++++++++++++++++++++++
7 files changed, 2317 insertions(+), 0 deletions(-)

diff --git a/glade-example.glade b/glade-example.glade @@ -0,0 +1,293 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> + +<glade-interface> + +<widget class="GtkWindow" id="window"> + <property name="height_request">300</property> + <property name="visible">True</property> + <property name="title" translatable="yes">Designed with Glade</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">False</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> + + <child> + <widget class="GtkTable" id="table1"> + <property name="visible">True</property> + <property name="n_rows">12</property> + <property name="n_columns">11</property> + <property name="homogeneous">False</property> + <property name="row_spacing">0</property> + <property name="column_spacing">0</property> + + <child> + <widget class="GtkMenuBar" id="menubar1"> + <property name="visible">True</property> + + <child> + <widget class="GtkMenuItem" id="menuitem1"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Bestand</property> + <property name="use_underline">True</property> + + <child> + <widget class="GtkMenu" id="menu1"> + + <child> + <widget class="GtkImageMenuItem" id="nieuw1"> + <property name="visible">True</property> + <property name="label">gtk-new</property> + <property name="use_stock">True</property> + </widget> + </child> + + <child> + <widget class="GtkImageMenuItem" id="openen1"> + <property name="visible">True</property> + <property name="label">gtk-open</property> + <property name="use_stock">True</property> + </widget> + </child> + + <child> + <widget class="GtkImageMenuItem" id="opslaan1"> + <property name="visible">True</property> + <property name="label">gtk-save</property> + <property name="use_stock">True</property> + </widget> + </child> + + <child> + <widget class="GtkImageMenuItem" id="opslaan_als1"> + <property name="visible">True</property> + <property name="label">gtk-save-as</property> + <property name="use_stock">True</property> + </widget> + </child> + + <child> + <widget class="GtkSeparatorMenuItem" id="separatormenuitem1"> + <property name="visible">True</property> + </widget> + </child> + + <child> + <widget class="GtkImageMenuItem" id="afsluiten1"> + <property name="visible">True</property> + <property name="label">gtk-quit</property> + <property name="use_stock">True</property> + </widget> + </child> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="menuitem2"> + <property name="visible">True</property> + <property name="label" translatable="yes">Be_werken</property> + <property name="use_underline">True</property> + + <child> + <widget class="GtkMenu" id="menu2"> + + <child> + <widget class="GtkImageMenuItem" id="knippen1"> + <property name="visible">True</property> + <property name="label">gtk-cut</property> + <property name="use_stock">True</property> + </widget> + </child> + + <child> + <widget class="GtkImageMenuItem" id="kopiƫren1"> + <property name="visible">True</property> + <property name="label">gtk-copy</property> + <property name="use_stock">True</property> + </widget> + </child> + + <child> + <widget class="GtkImageMenuItem" id="plakken1"> + <property name="visible">True</property> + <property name="label">gtk-paste</property> + <property name="use_stock">True</property> + </widget> + </child> + + <child> + <widget class="GtkImageMenuItem" id="verwijderen1"> + <property name="visible">True</property> + <property name="label">gtk-delete</property> + <property name="use_stock">True</property> + </widget> + </child> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="menuitem3"> + <property name="visible">True</property> + <property name="label" translatable="yes">Beel_d</property> + <property name="use_underline">True</property> + + <child> + <widget class="GtkMenu" id="menu3"> + </widget> + </child> + </widget> + </child> + + <child> + <widget class="GtkMenuItem" id="menuitem4"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Hulp</property> + <property name="use_underline">True</property> + + <child> + <widget class="GtkMenu" id="menu4"> + + <child> + <widget class="GtkMenuItem" id="info1"> + <property name="visible">True</property> + <property name="label" translatable="yes">In_fo</property> + <property name="use_underline">True</property> + </widget> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">11</property> + <property name="top_attach">0</property> + <property name="bottom_attach">1</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="label" translatable="yes">You don't need Gnome to run glade. Get it at: glade.gnome.org</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_FILL</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">10</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options"></property> + <property name="y_options">expand</property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes">Enter some text here</property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">False</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">10</property> + <property name="top_attach">4</property> + <property name="bottom_attach">6</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkStatusbar" id="statusbar1"> + <property name="visible">True</property> + <property name="has_resize_grip">True</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">11</property> + <property name="top_attach">11</property> + <property name="bottom_attach">12</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="exit_button"> + <property name="width_request">35</property> + <property name="height_request">45</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Exit</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="left_attach">8</property> + <property name="right_attach">10</property> + <property name="top_attach">9</property> + <property name="bottom_attach">11</property> + <property name="x_options">fill</property> + <property name="y_options">expand</property> + </packing> + </child> + + <child> + <widget class="GtkButton" id="print_button"> + <property name="width_request">35</property> + <property name="height_request">45</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Print</property> + <property name="use_underline">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">3</property> + <property name="top_attach">9</property> + <property name="bottom_attach">11</property> + <property name="x_options">fill</property> + <property name="y_options">expand</property> + </packing> + </child> + </widget> + </child> +</widget> + +</glade-interface> diff --git a/glade-example.l b/glade-example.l @@ -0,0 +1,25 @@ +# picoLisp + gtk-server example +# 26feb2009 Tomas Hlavaty +# $ ~/picolisp/p glade-example.l -bye +# requires http://logand.com/gtk/gtk.l + +(load "gtk.l") + +(gtk_init 'NULL 'NULL) +(glade_init) +(setq X (glade_xml_new "glade-example.glade" 'NULL 'NULL)) +(glade_xml_signal_autoconnect X) +(and (glade_xml_get_widget X 'window) + (gtk_server_connect @ 'delete-event 'window) ) +(and (glade_xml_get_widget X 'exit_button) + (gtk_server_connect @ 'clicked 'exit_button) ) +(and (glade_xml_get_widget X 'print_button) + (gtk_server_connect @ 'clicked 'print_button) ) +(setq E (glade_xml_get_widget X 'entry)) +(let V 0 + (until (prog + (setq V (gtk_server_callback 'wait)) + (or (= V 'exit_button) (= V 'window)) ) + (when (= V 'print_button) + (prinl (gtk_entry_get_text E)) ) ) ) +(gtk_exit 0) diff --git a/gtk-example.l b/gtk-example.l @@ -0,0 +1,28 @@ +# picoLisp + gtk-server example +# 26feb2009 Tomas Hlavaty +# $ ~/picolisp/p gtk-example.l -bye +# requires http://logand.com/gtk/gtk.l + +(load "gtk.l") + +(gtk_init 'NULL 'NULL) +(setq W (gtk_window_new 0)) +(gtk_window_set_title W "This is a title") +(gtk_window_set_default_size W 100 100) +(gtk_window_set_position W 1) +(setq G (gtk_table_new 30 30 1)) +(gtk_container_add W G) +(setq B1 (gtk_button_new_with_label "Exit")) +(gtk_table_attach_defaults G B1 17 28 20 25) +(setq B2 (gtk_button_new_with_label "Print text")) +(gtk_table_attach_defaults G B2 2 13 20 25) +(setq E (gtk_entry_new)) +(gtk_table_attach_defaults G E 2 28 5 15) +(gtk_widget_show_all W) +(let V 0 + (until (prog + (setq V (gtk_server_callback 'wait)) + (or (= V B1) (= V W)) ) + (when (= V B2) + (prinl "Contents: " (gtk_entry_get_text E)) ) ) ) +(gtk_exit 0) diff --git a/gtk-gl-teapot.l b/gtk-gl-teapot.l @@ -0,0 +1,160 @@ +# picoLisp + gtk-server example +# 26feb2009 Tomas Hlavaty +# $ ~/picolisp/p gtk-gl-teapot.l -bye +# requires http://logand.com/gtk/gtk.l +# based on http://www.allbasic.info/forum/index.php?topic=173.0;wap2 + +(load "gtk.l") + +(setq *Scl 6) + +# /usr/include/gtkglext-1.0/gdk/gdkglconfig.h +(def 'GDK_GL_MODE_RGB 0) +(def 'GDK_GL_MODE_RGBA 0) +(def 'GDK_GL_MODE_INDEX 1) +(def 'GDK_GL_MODE_SINGLE 0) +(def 'GDK_GL_MODE_DOUBLE 2) +(def 'GDK_GL_MODE_STEREO 4) +(def 'GDK_GL_MODE_ALPHA 8) +(def 'GDK_GL_MODE_DEPTH 16) +(def 'GDK_GL_MODE_STENCIL 32) +(def 'GDK_GL_MODE_ACCUM 64) +(def 'GDK_GL_MODE_MULTISAMPLE 128) + +(def 'GDK_GL_RGBA_TYPE (hex "8014")) +(def 'GDK_GL_COLOR_INDEX_TYPE (hex "0x8015")) + +(in "/usr/include/GL/gl.h" + (until (eof) + (when (match '("#" "d" "e" "f" "i" "n" "e" " " @A "0" "x" @B) (line)) + (let N (intern (pack (clip @A))) + (def N (hex (pack @B))) ) ) ) ) + +(de bitmap_text @ + #(for C (chop S) + # (glutBitmapCharacter GLUT_BITMAP_HELVETICA_18 C)) + ) + +(de stroke_text (S) + #(for C (chop S) + # (glutStrokeCharacter GLUT_STROKE_ROMAN C) ) + ) + +(de idle () + (expose) ) + +(de press () + # keyb = gtk_server_key() + # UNTIL EVENT = win OR keyb = ESCAPE + (prinl 'press) ) + +(de expose () + # Setup the drawing area + (setq GLCONTEXT (gtk_widget_get_gl_context DA)) + (setq GLDRAWABLE (gtk_widget_get_gl_window DA)) + (gdk_gl_drawable_gl_begin GLDRAWABLE GLCONTEXT) + # Define clearing color + (glClearColor "0.5" "1.0" "1.0" 0) + # Clear screen + (glClear (| GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT)) + # Enable shading, depth and lighting + (glShadeModel GL_SMOOTH) + (glEnable GL_DEPTH_TEST) + (glEnable GL_LIGHTING) + (glEnable GL_LIGHT0) + # Setup lighting + (glLightfv GL_LIGHT0 GL_POSITION "AAAAQAAAAEAAAADBAAAAAA==") + (glLightfv GL_LIGHT0 GL_DIFFUSE "AACAPwAAgD8AAIA/AACAPw==") + (glLightfv GL_LIGHT0 GL_AMBIENT "mpkZPpqZGT6amRk+") + (glLightfv GL_LIGHT0 GL_SPECULAR "AACAPwAAgD8AAIA/AACAPw==") + # Setup reflected color of object + (glMaterialfv GL_FRONT GL_AMBIENT_AND_DIFFUSE "zczMPTMzMz/NzMw9AAAAPw==") + # Make sure we see the model + (glMatrixMode GL_MODELVIEW) + # Save current matrix + (glPushMatrix) +#(glMatrixMode GL_PROJECTION) +#(glLoadIdentity) + # Rotate + (glRotatef ROTX 0 1.0 0) + (glRotatef ROTY 1.0 0 0) + # Dump rotated image + (glutSolidTeapot "0.5") #SIZE) + # Undo the last rotation + (glLoadIdentity) + # Setup reflected color of font + (glMaterialfv GL_FRONT GL_AMBIENT_AND_DIFFUSE "AACAP83MzD4AAIA/AAAAAA==") + # Determine position of bitmapped text + (glRasterPos2f 0 -0.8) + # Draw some bitmapped text + (bitmap_text "OpenGL demo with Scriptbasic") + # Setup reflected color of font + (glMaterialfv GL_FRONT GL_AMBIENT_AND_DIFFUSE "AAAAAAAAAAAAAIA/AAAAAA==") + # Determine position of STROKED text -> drawed so translate + (glTranslatef -0.9 0.8 0) + # Setup scaling -> stroked characters are large, make smaller + (glScalef 0.0005 0.0006 0) + # Draw some stroked text + (stroke_text "Using GTK-server with GtkGlExt!") + # Now put back the matrix + (glPopMatrix) + # Now swap buffers and draw + (gdk_gl_drawable_swap_buffers GLDRAWABLE) + (gdk_gl_drawable_gl_end GLDRAWABLE) ) + +(de rotate () + (setq ROTX (+ ROTX 3)) + (setq ROTY (+ ROTY 2)) + (when (< 359 ROTX) + (setq ROTX 0) ) + (when (< ROTX 0) + (setq ROTX 360) ) + (when (< 359 ROTY) + (setq ROTY 0) ) + (when (< ROTY 0) + (setq ROTY 360) ) ) + +(de mainLoop @ + (let E 0 # TODO dispatch events automatically + (until (prog + (setq E (gtk_server_callback 'wait)) + (or (= E 'Exit_Prog) (= E W)) ) + (rotate) + (case E + (idle (idle)) + (press (press)) + (expose (expose)) ) + ) ) + (gtk_exit 0) ) + +# main +(gtk_init 'NULL 'NULL) +(gtk_gl_init 'NULL 'NULL) +(glutInit 'NULL 'NULL) +# Window +(setq W (gtk_window_new 0)) +(gtk_window_set_default_size W 640 480) +(gtk_window_set_title W "This is a teapot demo with picoLisp") +(gtk_window_set_position W 1) +# Signal every 100 msecs +(gtk_server_connect W 'show 'idle) +(gtk_server_timeout 75 W 'show) +(gtk_server_connect W 'key-press-event 'press) +# Drawing area +(setq DA (gtk_drawing_area_new)) +(gtk_container_add W DA) +(gtk_widget_set_gl_capability DA + (gdk_gl_config_new_by_mode + (| GDK_GL_MODE_RGB GDK_GL_MODE_DOUBLE GDK_GL_MODE_DEPTH) ) + 'NULL 1 GDK_GL_RGBA_TYPE ) +(gtk_server_connect DA 'expose-event 'expose) +(gtk_widget_show_all W) +# Initialize variables +(setq GLUT_BITMAP_HELVETICA_18 (glutBitmapHelvetica18)) +(setq GLUT_STROKE_ROMAN (glutStrokeRoman)) +(setq ROTX 0) +(setq ROTY 330) +(setq SIZE 0.5) +# go +(mainLoop) +#gtk_server_exit() diff --git a/gtk-mandelbrot.l b/gtk-mandelbrot.l @@ -0,0 +1,169 @@ +# picoLisp + gtk-server example +# 26feb2009 Tomas Hlavaty +# $ ~/picolisp/p gtk-mandelbrot.l -bye +# requires http://logand.com/gtk/gtk.l +# based on http://www.turtle.dds.nl/newlisp/fractal.lsp + +(load "gtk.l") + +# Callback to exit program +(de Exit_Prog () + (gtk_exit 0) ) + +# Callback to clear canvas +(de Clear_Canvas () + (gdk_color_parse "#ffffff" COLOR) + (gdk_gc_set_rgb_fg_color GC COLOR) + (gdk_draw_rectangle PIX GC 1 0 0 450 265) + (gdk_color_parse "#000000" COLOR) + (gdk_gc_set_rgb_fg_color GC COLOR) + (gdk_draw_layout PIX GC 120 240 LAYOUT) + (gtk_widget_queue_draw IMAGE) ) + +(setq *Scl 6) + +# TODO based on http://logand.com/picoWiki/mandelbrot +(de mandelbrotPoint (X Y N) + (let (X0 X Y0 Y I 0) + (while (and (< I N) + (<= (+ (*/ X X 1.0) (*/ Y Y 1.0)) 4.0) ) + (let (Xx (+ X0 (- (*/ X X 1.0) (*/ Y Y 1.0))) + Yy (+ Y0 (*/ 2 X Y 1.0)) ) + (setq X Xx Y Yy) ) + (inc 'I) ) + I ) ) + +(de mandelbrot (X Y Sx Sy W H C) + (let (N (- C 1) + X1 (- X (/ Sx 2)) + Y1 (- Y (/ Sy 2)) ) + (for (J 0 (< J H) (inc J)) + (for (I 0 (< I W) (inc I)) + (let (X (+ X1 (*/ I Sx W)) + Y (+ Y1 (*/ J Sy H)) ) + (pixel I J (mandelbrotPoint X Y N) C) ) ) + (row) ) ) ) + +(de Draw_Fractal () + # Tell drawing is starting + (gdk_color_parse "#000000" COLOR) + (gdk_gc_set_rgb_fg_color GC COLOR) + (gdk_draw_layout PIX GC 10 240 START) + (gtk_widget_queue_draw IMAGE) + # draw the fractal + (mandelbrot -0.5 0 3.0 2.0 300 265 100) + # Wipe wait text + (gdk_color_parse "#ffffff" COLOR) + (gdk_gc_set_rgb_fg_color GC COLOR) + (gdk_draw_rectangle PIX GC 1 10 240 120 25) + # Tell drawing is ready + (gdk_color_parse "#000000" COLOR) + (gdk_gc_set_rgb_fg_color GC COLOR) + (gdk_draw_layout PIX GC 10 240 READY) + (gtk_widget_queue_draw IMAGE) ) + +(de pix (X Y C) + (gdk_color_parse C COLOR) + (gdk_gc_set_rgb_fg_color GC COLOR) + (gdk_draw_point PIX GC X Y) ) + +(de bw (N C) + (let V (*/ 255 N C) + (pack "#" + (pad 2 (hex V)) + (pad 2 (hex V)) + (pad 2 (hex V)) ) ) ) + +(de pixel (X Y N C) + (let L '("#800000" "#800080" "#8000FF" "#808000" + "#808080" "#8080FF" "#80FF00" "#80FF80" + "#80FFFF" "#FF0000" "#FF0080" "#FF00FF" + "#FF8000" "#FF8080" "#FF80FF" "#FFFF00" ) + (if (< N (- C 1)) + (pix X Y (nth L (+ (*/ 15 N (- C 1)) 1) 1)) +# (pix I J (bw (rand 0 (- C 1)) C)) +# (pix I J (bw N C)) + (pix X Y "#000000") ) ) ) + +(de row () + (gtk_widget_queue_draw IMAGE) + (gtk_main_iteration) ) + +(de mainLoop @ + (let E 0 # TODO dispatch events automatically + (until (prog + (setq E (gtk_server_callback 'wait)) + (or (= E 'Exit_Prog) (= E WIN)) ) + (case E + (Draw_Fractal (Draw_Fractal)) + (Clear_Canvas (Clear_Canvas)) ) + ) ) + (gtk_exit 0) + (wait 200) ) # TODO remove this fix Could not delete FIFO. ERROR + +# Window +(gtk_init 0 0) +(set 'WIN (gtk_window_new 0)) +(gtk_window_set_title WIN "picoLisp fractal") +(gtk_widget_set_size_request WIN 300 300) +(gtk_window_set_position WIN 1) +(gtk_window_set_resizable WIN 0) +(gtk_server_connect WIN 'delete-event 'Exit_Prog) +# Create widget to display image +(set 'IMAGE (gtk_image_new)) +# Create eventbox to catch mouseclick +(set 'EBOX (gtk_event_box_new)) +(gtk_container_add EBOX IMAGE) +# Separator +(set 'SEP (gtk_hseparator_new)) +# Action button +(set 'ACTION_BUTTON (gtk_button_new_with_label "Draw!")) +(gtk_widget_set_size_request ACTION_BUTTON 75 30) +(gtk_server_connect ACTION_BUTTON 'clicked 'Draw_Fractal) +# Clear button +(set 'CLEAR_BUTTON (gtk_button_new_with_label "Clear")) +(gtk_widget_set_size_request CLEAR_BUTTON 75 30) +(gtk_server_connect CLEAR_BUTTON 'clicked 'Clear_Canvas) +# Exit button +(set 'EXIT_BUTTON (gtk_button_new_with_label "Exit")) +(gtk_widget_set_size_request EXIT_BUTTON 75 30) +(gtk_server_connect EXIT_BUTTON 'clicked 'Exit_Prog) +# Now arrange widgets on window using boxes +(set 'HBOX (gtk_hbox_new 0 0)) +(gtk_box_pack_start HBOX CLEAR_BUTTON 0 0 1) +(gtk_box_pack_start HBOX ACTION_BUTTON 0 0 1) +(gtk_box_pack_end HBOX EXIT_BUTTON 0 0 1) +(set 'VBOX (gtk_vbox_new 0 0)) +(gtk_box_pack_start VBOX EBOX 0 0 1) +(gtk_box_pack_start VBOX SEP 0 0 1) +(gtk_box_pack_end VBOX HBOX 0 0 1) +(gtk_container_add WIN VBOX) +# Show all widgets +(gtk_widget_show_all WIN) +# Create the pixmap +(set 'GDKWIN (gtk_widget_get_parent_window IMAGE)) +(set 'PIX (gdk_pixmap_new GDKWIN 300 265 -1)) +(set 'GC (gdk_gc_new PIX)) +(gtk_image_set_from_pixmap IMAGE PIX 0) +# Allocate memory with some random widget for GdkColor +(set 'COLOR (gtk_frame_new 'NULL)) +# Now set foreground and backgroundcolors to WHITE +(gdk_color_parse "#ffffff" COLOR) +(gdk_gc_set_rgb_bg_color GC COLOR) +(gdk_gc_set_rgb_fg_color GC COLOR) +# Clear the complete pixmap with WHITE +(gdk_draw_rectangle PIX GC 1 0 0 300 265) +# Set color to BLACK +(gdk_color_parse "#000000" COLOR) +(gdk_gc_set_rgb_fg_color GC COLOR) +# Put some text on the canvas +(set 'LAYOUT +(gtk_widget_create_pango_layout IMAGE "Draw a fractal with picoLisp!") ) +(gdk_draw_layout PIX GC 120 240 LAYOUT) +# Define start and finishing text +(set 'START (gtk_widget_create_pango_layout IMAGE "Please wait...")) +(set 'READY (gtk_widget_create_pango_layout IMAGE "Drawing ready.")) +# Update the IMAGE widget with the pixmap +(gtk_widget_queue_draw IMAGE) +#(gtk_main) +(mainLoop) diff --git a/gtk-server.cfg b/gtk-server.cfg @@ -0,0 +1,1610 @@ +# +# 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! +# 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, libglib-2.0.so, libgobject-2.0.so +LIB_NAME = libatk-1.0.so, libpango-1.0.so, libgdk_pixbuf_xlib-2.0.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 +# +# Joy, GL and GLUT can be imported also! +LIB_NAME = libglut.so, libGL.so +# +# Mozilla +LIB_NAME = libgtkembedmoz.so +# +# XForms backend +LIB_NAME = libforms.so, libflimage.so, libformsGL.so +# +# Optionally, define a signalnumber to send to the client +# program when the GTK-server exits. See also 'man 7 signal'. +# Examples: SIGQUIT (3) SIGKILL (9) SIGUSR1 (10) +# SIGPIPE (13) SIGTERM (15) +# +# EXIT_SIGNAL = 10 +# +# Directory where to put the logfile if logging is enabled. +LOG_FILE = /tmp +# +# We can include an additional configfile here. +# +# INCLUDE = /etc/gtk-extra.cfg +# +#--------------------------------------------------------------------------- +# +# 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 +# LIB_NAME = libgobject-2.0-0.dll, libatk-1.0-0.dll, libpango-1.0-0.dll, libgdk_pixbuf-2.0-0.dll +# LIB_NAME = libglade-2.0-0.dll +# +# Directory where to put the logfile if logging is enabled. +# In Windows, also use a slash forward (/) to separate directory's! +# LOG_FILE = c: +# +#--------------------------------------------------------------------------- +# +## API name, callback signal type, return value, amount of arguments, arg1, arg2... +# +# GTK_WINDOW +# +FUNCTION_NAME = gtk_window_new, delete-event, WIDGET, 1, LONG +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, LONG, LONG +FUNCTION_NAME = gtk_window_set_position, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = gtk_window_set_resizable, NONE, NONE, 2, WIDGET, BOOL +FUNCTION_NAME = gtk_window_set_transient_for, NONE, NONE, 2, WIDGET, WIDGET +FUNCTION_NAME = gtk_window_set_modal, NONE, NONE, 2, WIDGET, BOOL +FUNCTION_NAME = gtk_window_maximize, NONE, NONE, 1, WIDGET +FUNCTION_NAME = gtk_message_dialog_new, response, WIDGET, 5, WIDGET, LONG, LONG, LONG, STRING +FUNCTION_NAME = gtk_message_dialog_new_with_markup, response, WIDGET, 5, WIDGET, LONG, LONG, LONG, 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, LONG, LONG, LONG +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 +# +# Containers +# +FUNCTION_NAME = gtk_table_new, NONE, WIDGET, 3, LONG, LONG, BOOL +FUNCTION_NAME = gtk_table_attach_defaults, NONE, NONE, 6, WIDGET, WIDGET, LONG, LONG, LONG, LONG +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, LONG +FUNCTION_NAME = gtk_hbox_new, NONE, WIDGET, 2, BOOL, LONG +FUNCTION_NAME = gtk_vbox_new, NONE, WIDGET, 2, BOOL, LONG +FUNCTION_NAME = gtk_box_pack_start, NONE, NONE, 5, WIDGET, WIDGET, BOOL, BOOL, LONG +FUNCTION_NAME = gtk_box_pack_end, NONE, NONE, 5, WIDGET, WIDGET, BOOL, BOOL, LONG +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, LONG +# +# GTK_BUTTON +# +FUNCTION_NAME = gtk_button_new, clicked, WIDGET, 0 +FUNCTION_NAME = gtk_button_new_with_label, clicked, WIDGET, 1, STRING +FUNCTION_NAME = gtk_button_new_from_stock, clicked, WIDGET, 1, STRING +FUNCTION_NAME = gtk_button_new_with_mnemonic, clicked, WIDGET, 1, STRING +FUNCTION_NAME = gtk_button_set_use_stock, NONE, NONE, 2, WIDGET, BOOL +FUNCTION_NAME = gtk_button_set_label, NONE, NONE, 2, WIDGET, STRING +FUNCTION_NAME = gtk_button_set_relief, NONE, NONE, 2, WIDGET, LONG +# +# 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_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, LONG, LONG +FUNCTION_NAME = gtk_editable_get_chars, NONE, STRING, 3, WIDGET, LONG, LONG +FUNCTION_NAME = gtk_editable_set_editable, NONE, NONE, 2, WIDGET, BOOL +FUNCTION_NAME = gtk_editable_select_region, NONE, NONE, 3, WIDGET, LONG, LONG +FUNCTION_NAME = gtk_editable_set_position, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = gtk_editable_get_position, NONE, LONG, 1, WIDGET +FUNCTION_NAME = gtk_editable_get_selection_bounds, NONE, BOOL, 3, WIDGET, PTR_LONG, PTR_LONG +FUNCTION_NAME = gtk_editable_insert_text, NONE, NONE, 4, WIDGET, STRING, LONG, PTR_LONG +# +# 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, LONG +FUNCTION_NAME = gtk_text_buffer_insert_at_cursor, NONE, NONE, 3, WIDGET, STRING, LONG +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, LONG +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, LONG +FUNCTION_NAME = gtk_text_buffer_create_tag, NONE, WIDGET, 5, WIDGET, STRING, STRING, LONG, NULL +FUNCTION_NAME = gtk_text_buffer_insert_with_tags_by_name, NONE, NONE, 8, WIDGET, WIDGET, STRING, LONG, 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, LONG, 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, LONG +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, LONG, LONG +FUNCTION_NAME = gtk_scrolled_window_set_shadow_type, NONE, NONE, 2, WIDGET, LONG +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, LONG +FUNCTION_NAME = gtk_text_view_new_with_buffer, NONE, WIDGET, 1, WIDGET +FUNCTION_NAME = gtk_text_view_set_wrap_mode, NONE, NONE, 2, WIDGET, LONG +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, LONG, LONG +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, LONG +FUNCTION_NAME = gtk_text_view_get_pixels_inside_wrap, NONE, LONG, 1, WIDGET +FUNCTION_NAME = gtk_text_view_set_pixels_above_lines, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = gtk_text_view_get_pixels_above_lines, NONE, LONG, 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, LONG, LONG, LONG, WIDGET, WIDGET +FUNCTION_NAME = gtk_text_iter_forward_search, NONE, BOOL, 6, WIDGET, STRING, LONG, 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, LONG +FUNCTION_NAME = gtk_text_iter_set_line_offset, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = gtk_text_iter_set_line_index, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = gtk_text_iter_get_text, NONE, STRING, 2, WIDGET, WIDGET +FUNCTION_NAME = gtk_text_iter_get_line, NONE, LONG, 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, LONG +FUNCTION_NAME = gtk_text_set_adjustments, NONE, NONE, 3, WIDGET, NULL, WIDGET +FUNCTION_NAME = gtk_text_get_length, NONE, LONG, 1, WIDGET +FUNCTION_NAME = gtk_text_set_word_wrap, NONE, NONE, 2, WIDGET, BOOL +FUNCTION_NAME = gtk_text_backward_delete, NONE, BOOL, 2, WIDGET, LONG +FUNCTION_NAME = gtk_text_forward_delete, NONE, BOOL, 2, WIDGET, LONG +FUNCTION_NAME = gtk_text_set_point, NONE, NONE, 2, WIDGET, LONG +# +# GDK functions and drawing stuff +# +FUNCTION_NAME = gdk_font_load, NONE, WIDGET, 1, STRING +FUNCTION_NAME = gdk_pixmap_new, NONE, WIDGET, 4, WIDGET, LONG, LONG, LONG +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, LONG, LONG, LONG, LONG +FUNCTION_NAME = gdk_draw_arc, NONE, NONE, 9, WIDGET, WIDGET, BOOL, LONG, LONG, LONG, LONG, LONG, LONG +FUNCTION_NAME = gdk_draw_line, NONE, NONE, 6, WIDGET, WIDGET, LONG, LONG, LONG, LONG +FUNCTION_NAME = gdk_draw_point, NONE, NONE, 4, WIDGET, WIDGET, LONG, LONG +FUNCTION_NAME = gdk_draw_layout, NONE, NONE, 5, WIDGET, WIDGET, LONG, LONG, WIDGET +FUNCTION_NAME = gdk_draw_layout_with_colors, NONE, NONE, 7, WIDGET, WIDGET, LONG, LONG, WIDGET, WIDGET, WIDGET +FUNCTION_NAME = gdk_draw_drawable, NONE, NONE, 9, WIDGET, WIDGET, WIDGET, LONG, LONG, LONG, LONG, LONG, LONG +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, LONG, 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_keymap_translate_keyboard_state, NONE, BOOL, 8, NULL, LONG, LONG, LONG, 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, LONG, 1, WIDGET +FUNCTION_NAME = gdk_screen_get_height, NONE, LONG, 1, WIDGET +FUNCTION_NAME = gdk_screen_width, NONE, LONG, 0 +FUNCTION_NAME = gdk_screen_height, NONE, LONG, 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, LONG +FUNCTION_NAME = gdk_window_set_cursor, NONE, NONE, 2, WIDGET, WIDGET +FUNCTION_NAME = gdk_window_get_pointer, NONE, WIDGET, 4, WIDGET, PTR_LONG, PTR_LONG, PTR_WIDGET +# +# 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_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_new_from_file, NONE, WIDGET, 1, STRING +FUNCTION_NAME = gtk_image_new_from_stock, NONE, WIDGET, 2, STRING, LONG +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 +# +# 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, LONG +FUNCTION_NAME = gtk_label_get_width_chars, NONE, LONG, 1, WIDGET +FUNCTION_NAME = gtk_label_get_max_width_chars, NONE, LONG, 1, WIDGET +FUNCTION_NAME = gtk_label_set_markup_with_mnemonic, NONE, NONE, 2, WIDGET, STRING +# +# GTK_FRAME +# +FUNCTION_NAME = gtk_frame_new, NONE, WIDGET, 1, NULL +FUNCTION_NAME = gtk_frame_set_label_align, NONE, NONE, 3, WIDGET, FLOAT, FLOAT +FUNCTION_NAME = gtk_frame_set_label, NONE, NONE, 2, WIDGET, STRING +FUNCTION_NAME = gtk_frame_get_label, NONE, STRING, 1, WIDGET +FUNCTION_NAME = gtk_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 +# +# 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, LONG +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, LONG, 1, WIDGET +FUNCTION_NAME = gtk_notebook_get_nth_page, NONE, WIDGET, 2, WIDGET, LONG +FUNCTION_NAME = gtk_notebook_append_page, NONE, LONG, 3, WIDGET, WIDGET, WIDGET +FUNCTION_NAME = gtk_notebook_insert_page, NONE, LONG, 4, WIDGET, WIDGET, WIDGET, LONG +FUNCTION_NAME = gtk_notebook_remove_page, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = gtk_notebook_get_current_page, NONE, LONG, 1, WIDGET +FUNCTION_NAME = gtk_notebook_get_menu_label, NONE, WIDGET, 2, WIDGET, WIDGET +FUNCTION_NAME = gtk_notebook_set_page, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = gtk_notebook_set_current_page, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = gtk_notebook_set_tab_label_text, NONE, NONE, 3, WIDGET, WIDGET, STRING +FUNCTION_NAME = gtk_notebook_set_scrollable, NONE, NONE, 2, WIDGET, LONG +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, LONG +# +# 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, LONG +FUNCTION_NAME = gtk_spin_button_new_with_range, NONE, WIDGET, 3, DOUBLE, DOUBLE, DOUBLE +FUNCTION_NAME = gtk_spin_button_get_value_as_int, NONE, LONG, 1, WIDGET +FUNCTION_NAME = gtk_spin_button_get_value, NONE, FLOAT, 1, WIDGET +FUNCTION_NAME = gtk_spin_button_set_wrap, NONE, NONE, 2, WIDGET, BOOL +FUNCTION_NAME = gtk_spin_button_set_value, NONE, NONE, 2, WIDGET, DOUBLE +# +# GTK_ARROW +# +FUNCTION_NAME = gtk_arrow_new, NONE, WIDGET, 2, LONG, LONG +# +# File selector +# +FUNCTION_NAME = gtk_file_chooser_dialog_new, NONE, WIDGET, 8, STRING, WIDGET, LONG, STRING, LONG, STRING, LONG, NULL +FUNCTION_NAME = gtk_file_chooser_widget_new, NONE, WIDGET, 1, LONG +FUNCTION_NAME = gtk_dialog_run, NONE, LONG, 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, LONG, LONG +# +# 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, LONG, 2, WIDGET, STRING +FUNCTION_NAME = gtk_statusbar_push, NONE, LONG, 3, WIDGET, LONG, STRING +FUNCTION_NAME = gtk_statusbar_pop, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = gtk_statusbar_remove, NONE, NONE, 3, WIDGET, LONG, LONG +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_append_text, NONE, NONE, 2, WIDGET, STRING +FUNCTION_NAME = gtk_combo_box_insert_text, NONE, NONE, 3, WIDGET, LONG, STRING +FUNCTION_NAME = gtk_combo_box_prepend_text, NONE, NONE, 2, WIDGET, STRING +FUNCTION_NAME = gtk_combo_box_remove_text, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = gtk_combo_box_get_active, NONE, LONG, 1, WIDGET +FUNCTION_NAME = gtk_combo_box_set_active, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = gtk_combo_box_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, LONG +FUNCTION_NAME = gtk_clipboard_get, NONE, WIDGET, 1, LONG +FUNCTION_NAME = gtk_clipboard_set_text, NONE, NONE, 3, WIDGET, STRING, LONG +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, LONG +FUNCTION_NAME = gtk_clist_set_column_title, NONE, NONE, 3, WIDGET, LONG, STRING +FUNCTION_NAME = gtk_clist_column_titles_show, NONE, NONE, 1, WIDGET +FUNCTION_NAME = gtk_clist_append, NONE, LONG, 2, WIDGET, WIDGET +FUNCTION_NAME = gtk_clist_set_text, NONE, NONE, 4, WIDGET, LONG, LONG, STRING +# +# GTK fixed +# +FUNCTION_NAME = gtk_fixed_new, NONE, WIDGET, 0 +FUNCTION_NAME = gtk_fixed_put, NONE, NONE, 4, WIDGET, WIDGET, LONG, LONG +FUNCTION_NAME = gtk_fixed_move, NONE, NONE, 4, WIDGET, WIDGET, LONG, LONG +# +# 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, LONG, LONG +FUNCTION_NAME = gtk_list_store_append, NONE, NONE, 2, WIDGET, WIDGET +FUNCTION_NAME = gtk_list_store_set, NONE, NONE, 5, WIDGET, WIDGET, LONG, STRING, LONG +FUNCTION_NAME = gtk_list_store_set_value, NONE, NONE, 4, WIDGET, WIDGET, LONG, 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, LONG +FUNCTION_NAME = gtk_list_store_insert_with_values, NONE, NONE, 6, WIDGET, WIDGET, LONG, LONG, STRING, LONG +FUNCTION_NAME = gtk_cell_renderer_text_new, NONE, WIDGET, 0 +FUNCTION_NAME = gtk_tree_view_new_with_model, NONE, WIDGET, 1, WIDGET +FUNCTION_NAME = gtk_tree_view_column_new, NONE, WIDGET, 0 +FUNCTION_NAME = gtk_tree_view_column_new_with_attributes, clicked, WIDGET, 5, STRING, WIDGET, STRING, LONG, 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, LONG +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, LONG +FUNCTION_NAME = gtk_tree_model_get, NONE, NONE, 5, WIDGET, WIDGET, LONG, PTR_STRING, LONG +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_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, LONG, LONG +# +# 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, LONG +FUNCTION_NAME = gtk_expander_get_spacing, NONE, LONG, 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 +# +# Calendar +# +FUNCTION_NAME = gtk_calendar_get_date, NONE, NONE, 4, WIDGET, LONG, LONG, LONG +# +# 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, LONG, LONG +FUNCTION_NAME = gtk_widget_size_request, NONE, NONE, 2, WIDGET, WIDGET +FUNCTION_NAME = gtk_widget_set_usize, NONE, NONE, 3, WIDGET, LONG, LONG +FUNCTION_NAME = gtk_widget_modify_base, NONE, NONE, 3, WIDGET, LONG, WIDGET +FUNCTION_NAME = gtk_widget_modify_text, NONE, NONE, 3, WIDGET, LONG, WIDGET +FUNCTION_NAME = gtk_widget_modify_bg, NONE, NONE, 3, WIDGET, LONG, WIDGET +FUNCTION_NAME = gtk_widget_modify_fg, NONE, NONE, 3, WIDGET, LONG, 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_settings_get_default, NONE, WIDGET, 0 +FUNCTION_NAME = gtk_widget_get_parent, NONE, WIDGET, 1, WIDGET +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, LONG +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_widget_set_name, NONE, NONE, 2, WIDGET, STRING +FUNCTION_NAME = gtk_check_version, NONE, STRING, 3, LONG, LONG, LONG +FUNCTION_NAME = gtk_drag_source_set, NONE, NONE, 5, WIDGET, LONG, WIDGET, LONG, LONG +FUNCTION_NAME = gtk_drag_dest_set, NONE, NONE, 5, WIDGET, LONG, WIDGET, LONG, LONG +FUNCTION_NAME = gtk_drag_finish, NONE, NONE, 4, WIDGET, BOOL, BOOL, LONG +FUNCTION_NAME = gtk_drag_set_icon_stock, NONE, NONE, 4, WIDGET, STRING, LONG, LONG +FUNCTION_NAME = gtk_get_current_event_time, NONE, LONG, 0 +FUNCTION_NAME = gtk_widget_get_size_request, NONE, NONE, 3, WIDGET, WIDGET, WIDGET +FUNCTION_NAME = gtk_signal_emit_by_name, NONE, NONE, 2, WIDGET, STRING +FUNCTION_NAME = gtk_invisible_new, NONE, WIDGET, 0 +FUNCTION_NAME = gtk_target_list_new, NONE, WIDGET, 2, NULL, LONG +FUNCTION_NAME = gtk_target_list_add, NONE, NONE, 4, WIDGET, WIDGET, LONG, LONG +FUNCTION_NAME = gtk_target_table_new_from_list, NONE, WIDGET, 2, WIDGET, WIDGET +# +# 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, LONG, LONG, NULL +FUNCTION_NAME = gdk_pixbuf_new_from_file_at_scale, NONE, WIDGET, 5, STRING, LONG, LONG, BOOL, NULL +FUNCTION_NAME = gdk_pixbuf_rotate_simple, NONE, WIDGET, 2, WIDGET, LONG +FUNCTION_NAME = gdk_pixbuf_get_height, NONE, LONG, 1, WIDGET +FUNCTION_NAME = gdk_pixbuf_get_width, NONE, LONG, 1, WIDGET +FUNCTION_NAME = gdk_pixbuf_scale_simple, NONE, WIDGET, 4, WIDGET, LONG, LONG, LONG +# +# GLIB functions +# +FUNCTION_NAME = g_object_unref, NONE, NONE, 1, WIDGET +FUNCTION_NAME = g_object_get, NONE, NONE, 4, WIDGET, STRING, PTR_STRING, NULL +FUNCTION_NAME = g_object_set, NONE, NONE, 4, WIDGET, STRING, LONG, NULL +FUNCTION_NAME = g_locale_to_utf8, NONE, STRING, 5, STRING, LONG, NULL, NULL, NULL +FUNCTION_NAME = g_locale_from_utf8, NONE, STRING, 5, STRING, LONG, NULL, NULL, NULL +FUNCTION_NAME = g_free, NONE, NONE, 1, WIDGET +FUNCTION_NAME = g_printf, NONE, NONE, 2, STRING, WIDGET +FUNCTION_NAME = g_io_channel_unix_new, NONE, WIDGET, 1, LONG +FUNCTION_NAME = g_io_channel_read_line_string, NONE, LONG, 4, WIDGET, STRING, NULL, NULL +# +# Pango +# +FUNCTION_NAME = pango_font_description_from_string, NONE, WIDGET, 1, STRING +FUNCTION_NAME = pango_font_description_free, NONE, NONE, 1, WIDGET +# +# The internal functions (not necessary but sometimes handy for language bindings like newLisp) +# +FUNCTION_NAME = gtk_server_version, NONE, STRING, 0 +FUNCTION_NAME = gtk_server_ffi, NONE, STRING, 0 +FUNCTION_NAME = gtk_server_callback, NONE, STRING, 1, STRING +FUNCTION_NAME = gtk_server_callback_value, 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_disconnect, NONE, STRING, 0 +FUNCTION_NAME = gtk_server_enable_c_string_escaping, NONE, STRING, 0 +FUNCTION_NAME = gtk_server_disable_c_string_escaping, NONE, STRING, 0 +FUNCTION_NAME = gtk_server_set_c_string_escaping, NONE, STRING, 1, STRING +FUNCTION_NAME = gtk_server_mouse, NONE, STRING, 1, STRING +FUNCTION_NAME = gtk_server_define, NONE, STRING, 1, STRING +FUNCTION_NAME = gtk_server_redefine, NONE, STRING, 1, STRING +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_echo, NONE, STRING, 1, STRING +FUNCTION_NAME = gtk_server_cfg, NONE, STRING, 1, STRING +FUNCTION_NAME = gtk_server_exit, NONE, NONE, 0 +FUNCTION_NAME = gtk_server_pid, NONE, STRING, 0 +FUNCTION_NAME = gtk_server_key, NONE, STRING, 0 +FUNCTION_NAME = gtk_server_macro, NONE, STRING, 2, STRING, STRING +FUNCTION_NAME = gtk_server_opaque, NONE, STRING, 0 +# +# Some Glade functions +# +FUNCTION_NAME = glade_init, NONE, NONE, 0 +FUNCTION_NAME = glade_xml_new_from_buffer, NONE, WIDGET, 4, STRING, LONG, 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, LONG +# +# GtkGlExt & GLUT & GL +# +FUNCTION_NAME = gtk_gl_init, NONE, NONE, 2, NULL, NULL +FUNCTION_NAME = gtk_widget_set_gl_capability, NONE, BOOL, 5, WIDGET, WIDGET, WIDGET, BOOL, LONG +FUNCTION_NAME = gdk_gl_config_new_by_mode, NONE, WIDGET, 1, LONG +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_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 +FUNCTION_NAME = glutInit, NONE, NONE, 2, PTR_LONG, PTR_STRING +FUNCTION_NAME = glutSolidTeapot, NONE, NONE, 1, DOUBLE +FUNCTION_NAME = glutSwapBuffers, NONE, NONE, 0 +FUNCTION_NAME = glutBitmapCharacter, NONE, NONE, 2, LONG, LONG +FUNCTION_NAME = glutBitmap9By15, NONE, ADDRESS, 0 +FUNCTION_NAME = glutBitmap8By13, NONE, ADDRESS, 0 +FUNCTION_NAME = glutBitmapTimesRoman10, NONE, ADDRESS, 0 +FUNCTION_NAME = glutBitmapTimesRoman24, NONE, ADDRESS, 0 +FUNCTION_NAME = glutBitmapHelvetica10, NONE, ADDRESS, 0 +FUNCTION_NAME = glutBitmapHelvetica12, NONE, ADDRESS, 0 +FUNCTION_NAME = glutBitmapHelvetica18, NONE, ADDRESS, 0 +FUNCTION_NAME = glutStrokeCharacter, NONE, NONE, 2, LONG, LONG +FUNCTION_NAME = glutStrokeRoman, NONE, ADDRESS, 0 +FUNCTION_NAME = glutStrokeMonoRoman, NONE, ADDRESS, 0 +FUNCTION_NAME = glClearColor, NONE, NONE, 4, FLOAT, FLOAT, FLOAT, FLOAT +FUNCTION_NAME = glClear, NONE, NONE, 1, LONG +FUNCTION_NAME = glEnable, NONE, NONE, 1, LONG +FUNCTION_NAME = glShadeModel, NONE, NONE, 1, LONG +FUNCTION_NAME = glLightfv, NONE, NONE, 3, LONG, LONG, BASE64 +FUNCTION_NAME = glMaterialfv, NONE, NONE, 3, LONG, LONG, BASE64 +FUNCTION_NAME = glMatrixMode, NONE, NONE, 1, LONG +FUNCTION_NAME = glPushMatrix, NONE, NONE, 0 +FUNCTION_NAME = glPopMatrix, NONE, NONE, 0 +FUNCTION_NAME = glFlush, NONE, NONE, 0 +FUNCTION_NAME = glRotatef, NONE, NONE, 4, FLOAT, FLOAT, FLOAT, FLOAT +FUNCTION_NAME = glLoadIdentity, NONE, NONE, 0 +FUNCTION_NAME = glRasterPos2f, NONE, NONE, 2, FLOAT, FLOAT +FUNCTION_NAME = glTranslatef, NONE, NONE, 2, FLOAT, FLOAT +FUNCTION_NAME = glScalef, NONE, NONE, 3, FLOAT, FLOAT, FLOAT +FUNCTION_NAME = glViewport, NONE, NONE, 4, LONG, LONG, LONG, LONG +# +#--------------------------------------------------------------------------- +# +# XForms calls +# +FUNCTION_NAME = fl_bgn_form, NONE, WIDGET, 3, LONG, LONG, LONG +FUNCTION_NAME = fl_end_form, NONE, NONE, 0 +FUNCTION_NAME = fl_show_form, NONE, NONE, 4, WIDGET, LONG, LONG, STRING +FUNCTION_NAME = fl_prepare_form_window, NONE, NONE, 4, WIDGET, LONG, LONG, STRING +FUNCTION_NAME = fl_show_form_window, NONE, NONE, 1, WIDGET +FUNCTION_NAME = fl_set_form_position, NONE, NONE, 3, WIDGET, LONG, LONG +# +FUNCTION_NAME = fl_add_box, NONE, WIDGET, 6, LONG, LONG, LONG, LONG, LONG, STRING +# +FUNCTION_NAME = fl_add_button, NONE, WIDGET, 6, LONG, LONG, LONG, LONG, LONG, STRING +FUNCTION_NAME = fl_set_button, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = fl_get_button, NONE, LONG, 1, WIDGET +FUNCTION_NAME = fl_add_checkbutton, NONE, WIDGET, 6, LONG, LONG, LONG, LONG, LONG, STRING +FUNCTION_NAME = fl_add_roundbutton, NONE, WIDGET, 6, LONG, LONG, LONG, LONG, LONG, STRING +FUNCTION_NAME = fl_add_round3dbutton, NONE, WIDGET, 6, LONG, LONG, LONG, LONG, LONG, STRING +# +FUNCTION_NAME = fl_add_slider, NONE, WIDGET, 6, LONG, LONG, LONG, LONG, LONG, 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, LONG, LONG, LONG, LONG, LONG, STRING +FUNCTION_NAME = fl_set_slider_step, NONE, NONE, 2, WIDGET, DOUBLE +FUNCTION_NAME = fl_set_slider_precision, NONE, NONE, 2, WIDGET, LONG +# +FUNCTION_NAME = fl_add_text, NONE, WIDGET, 6, LONG, LONG, LONG, LONG, LONG, STRING +# +FUNCTION_NAME = fl_add_input, NONE, WIDGET, 6, LONG, LONG, LONG, LONG, LONG, STRING +FUNCTION_NAME = fl_set_input, NONE, NONE, 2, WIDGET, STRING +FUNCTION_NAME = fl_set_input_color, NONE, NONE, 3, WIDGET, LONG, LONG +FUNCTION_NAME = fl_get_input, NONE, STRING, 1, WIDGET +# +FUNCTION_NAME = fl_add_frame, NONE, WIDGET, 6, LONG, LONG, LONG, LONG, LONG, STRING +FUNCTION_NAME = fl_add_labelframe, NONE, WIDGET, 6, LONG, LONG, LONG, LONG, LONG, STRING +# +FUNCTION_NAME = fl_add_choice, NONE, WIDGET, 6, LONG, LONG, LONG, LONG, LONG, STRING +FUNCTION_NAME = fl_clear_choice, NONE, NONE, 1, WIDGET +FUNCTION_NAME = fl_addto_choice, NONE, LONG, 2, WIDGET, STRING +FUNCTION_NAME = fl_delete_choice, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = fl_replace_choice, NONE, NONE, 3, WIDGET, LONG, STRING +FUNCTION_NAME = fl_get_choice, NONE, LONG, 1, WIDGET +FUNCTION_NAME = fl_get_choice_text, NONE, STRING, 1, WIDGET +FUNCTION_NAME = fl_get_choice_item_text, NONE, STRING, 2, WIDGET, LONG +FUNCTION_NAME = fl_get_choice_maxitems, NONE, LONG, 1, WIDGET +# +FUNCTION_NAME = fl_add_browser, NONE, WIDGET, 6, LONG, LONG, LONG, LONG, LONG, 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, LONG, STRING +FUNCTION_NAME = fl_delete_browser_line, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = fl_replace_browser_line, NONE, NONE, 3, WIDGET, LONG, STRING +FUNCTION_NAME = fl_get_browser_line, NONE, STRING, 2, WIDGET, LONG +FUNCTION_NAME = fl_get_browser, NONE, LONG, 1, WIDGET +FUNCTION_NAME = fl_select_browser_line, NONE, NONE, 2, WIDGET, LONG +# +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, LONG, LONG, LONG, LONG +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, LONG, LONG +FUNCTION_NAME = fl_set_object_lsize, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = fl_set_object_lcol, NONE, NONE, 2, WIDGET, LONG +FUNCTION_NAME = fl_set_object_label, NONE, NONE, 2, WIDGET, STRING +FUNCTION_NAME = fl_set_font_name, NONE, LONG, 2, LONG, STRING +FUNCTION_NAME = fl_set_idle_delta, NONE, NONE, 1, LONG +FUNCTION_NAME = fl_finish, NONE, NONE, 0 +# +#--------------------------------------------------------------------------- +# +# We can also define macro objects. Check 'man gtk-server.cfg' for details +# on programming macros. They 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 demoscript 'hug.ksh' in the demo-gtk directory. +# +# GPL, (c) PvE. +#--------------------------------------------------------------------------- +# +# HHHHHHHHH HHHHHHHHHUUUUUUUU UUUUUUUU GGGGGGGGGGGGG +# H:::::::H H:::::::HU::::::U U::::::U GGG::::::::::::G +# H:::::::H H:::::::HU::::::U U::::::U GG:::::::::::::::G +# HH::::::H H::::::HHUU:::::U U:::::UU G:::::GGGGGGGG::::G +# H:::::H H:::::H U:::::U U:::::U G:::::G GGGGGG +# H:::::H H:::::H U:::::D D:::::UG:::::G +# H::::::HHHHH::::::H U:::::D D:::::UG:::::G +# H:::::::::::::::::H U:::::D D:::::UG:::::G GGGGGGGGGG +# H:::::::::::::::::H U:::::D D:::::UG:::::G G::::::::G +# H::::::HHHHH::::::H U:::::D D:::::UG:::::G GGGGG::::G +# H:::::H H:::::H U:::::D D:::::UG:::::G G::::G +# H:::::H H:::::H U::::::U U::::::U G:::::G G::::G +# HH::::::H H::::::HH U:::::::UUU:::::::U G:::::GGGGGGGG::::G +# H:::::::H H:::::::H UU:::::::::::::UU GG:::::::::::::::G +# H:::::::H H:::::::H UU:::::::::UU GGG::::::GGG:::G +# HHHHHHHHH HHHHHHHHH UUUUUUUUU GGGGGG GGGG +# +# ...TO BE CONTINUED... +#--------------------------------------------------------------------------- +# +# Define a new window: +# u_window "title" xsize ysize +# +#--------------------------------------------------------------------------- + +MACRO u_window + +# If the variable $window has a value, skip the gtk_init +$window BNE 2 + +gtk_init + +$window : gtk_window_new 0 +gtk_window_set_title $window $1 +gtk_window_set_position $window 1 +gtk_widget_set_size_request $window $2 $3 +gtk_widget_set_name $window $window +gtk_widget_show $window + +RETURN $window + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define a grid: +# u_grid parent xres yres +# +#--------------------------------------------------------------------------- + +MACRO u_grid + +$grid : gtk_table_new $2 $3 1 +gtk_container_add $1 $grid +gtk_widget_show $grid + +RETURN $grid + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define button: +# u_button "label" xsize ysize +# +#--------------------------------------------------------------------------- + +MACRO u_button + +$button : gtk_button_new_with_label $1 +gtk_widget_set_size_request $button $2 $3 +gtk_widget_set_name $button $button +gtk_widget_show $button + +RETURN $button + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define checkbutton: +# u_check "label" xsize ysize +# +#--------------------------------------------------------------------------- + +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 + +RETURN $check + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define radiobutton: +# u_radio "label" xsize ysize group +# +#--------------------------------------------------------------------------- + +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 + +RETURN $radio + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define text entry: +# u_entry xsize ysize +# +#--------------------------------------------------------------------------- + +MACRO u_entry + +$entry : gtk_entry_new +gtk_widget_set_size_request $entry $1 $2 +gtk_widget_set_name $entry $entry +gtk_widget_show $entry + +RETURN $entry + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define password entry: +# u_password xsize ysize +# +#--------------------------------------------------------------------------- + +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 + +#--------------------------------------------------------------------------- +# +# Define label: +# u_label "text" xsize ysize +# +#--------------------------------------------------------------------------- + +MACRO u_label + +$label : gtk_label_new $1 +gtk_widget_set_size_request $label $2 $3 +gtk_widget_set_name $label $label +gtk_widget_show $label + +RETURN $label + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define droplist: +# u_combo "text1" xsize ysize +# +#--------------------------------------------------------------------------- + +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 + +RETURN $combo + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define horizontal separator: +# u_hseparator xsize +# +#--------------------------------------------------------------------------- + +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 + +#--------------------------------------------------------------------------- +# +# Define vertical separator: +# u_vseparator xsize +# +#--------------------------------------------------------------------------- + +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 + +#--------------------------------------------------------------------------- +# +# Define frame: +# u_frame text xsize ysize +# +#--------------------------------------------------------------------------- + +MACRO u_frame + +$frame : gtk_frame_new +gtk_frame_set_label $frame $1 +gtk_widget_set_size_request $frame $2 $3 +gtk_widget_set_name $frame $frame +gtk_widget_show $frame + +RETURN $frame + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define multiline text: +# u_text xsize ysize +# +#--------------------------------------------------------------------------- + +MACRO u_text + +$text : gtk_text_new +gtk_widget_set_size_request $text $1 $2 +gtk_text_set_word_wrap $text 1 +gtk_text_set_editable $text 1 +gtk_widget_set_name $text $text +gtk_widget_show $text + +RETURN $text + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define a dialog: +# u_dialog "title" "text" xsize ysize +# the "exit" event means button was clicked +#--------------------------------------------------------------------------- + +MACRO u_dialog + +$window : u_window $1 $3 $4 + +$table : gtk_table_new 10 10 1 +gtk_container_add $window $table + +$label : gtk_label_new $2 +gtk_table_attach_defaults $table $label 2 9 2 4 + +$button : gtk_button_new_with_label "OK" +gtk_table_attach_defaults $table $button 3 7 7 9 +gtk_server_connect $button clicked exit + +gtk_widget_show_all $window + +RETURN $window + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define canvas: +# u_canvas xsize ysize (only 1 canvas per application) +# +#--------------------------------------------------------------------------- + +MACRO u_canvas + +$image BNE 12 + +$image : gtk_image_new +gtk_widget_show $image +gtk_server_redefine gdk_pixmap_new NONE WIDGET 4 NULL LONG LONG LONG +$pix : gdk_pixmap_new 0 $1 $2 24 +$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 +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 $1 $2 +gtk_widget_queue_draw $image + +RETURN $image + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define circle: +# u_circle color xcoord ycoord xsize ysize full +# +#--------------------------------------------------------------------------- + +MACRO u_circle + +$kolor : gtk_server_macro u_canvas kolor + +$kolor BEQ 8 + +gdk_color_parse $1 $kolor +$context : gtk_server_macro u_canvas context +gdk_gc_set_rgb_fg_color $context $kolor +$pix : gtk_server_macro u_canvas pix +gdk_draw_arc $pix $context $6 $2 $3 $4 $5 0 23040 +$image : gtk_server_macro u_canvas image +gtk_widget_queue_draw $image + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define pixel: +# u_pixel color xcoord ycoord +# +#--------------------------------------------------------------------------- + +MACRO u_pixel + +$kolor : gtk_server_macro u_canvas kolor + +$kolor BEQ 8 + +gdk_color_parse $1 $kolor +$context : gtk_server_macro u_canvas context +gdk_gc_set_rgb_fg_color $context $kolor +$pix : gtk_server_macro u_canvas pix +gdk_draw_point $pix $context $2 $3 +$image : gtk_server_macro u_canvas image +gtk_widget_queue_draw $image + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define line: +# u_line color xstart ystart xend yend +# +#--------------------------------------------------------------------------- + +MACRO u_line + +$kolor : gtk_server_macro u_canvas kolor + +$kolor BEQ 8 + +gdk_color_parse $1 $kolor +$context : gtk_server_macro u_canvas context +gdk_gc_set_rgb_fg_color $context $kolor +$pix : gtk_server_macro u_canvas pix +gdk_draw_line $pix $context $2 $3 $4 $5 +$image : gtk_server_macro u_canvas image +gtk_widget_queue_draw $image + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define rectangle: +# u_square color xcoord ycoord xsize ysize full +# +#--------------------------------------------------------------------------- + +MACRO u_square + +$kolor : gtk_server_macro u_canvas kolor + +$kolor BEQ 8 + +gdk_color_parse $1 $kolor +$context : gtk_server_macro u_canvas context +gdk_gc_set_rgb_fg_color $context $kolor +$pix : gtk_server_macro u_canvas pix +gdk_draw_rectangle $pix $context $6 $2 $3 $4 $5 +$image : gtk_server_macro u_canvas image +gtk_widget_queue_draw $image + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define text on canvas: +# u_out "text" fgcolor bgcolor xcoord ycoord +# +#--------------------------------------------------------------------------- + +MACRO u_out + +$kolor : gtk_server_macro u_canvas kolor + +$kolor BEQ 11 + +gdk_color_parse $2 $kolor +$context : gtk_server_macro u_canvas context +$pix : gtk_server_macro u_canvas pix +$image : gtk_server_macro u_canvas image +$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 + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD attach: +# u_attach grid widget x1 x2 y1 y2 +# +#--------------------------------------------------------------------------- + +MACRO u_attach + +gtk_table_attach_defaults $1 $2 $3 $4 $5 $6 + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD bgcolor: +# u_bgcolor widget <color state> <color state> ... +# +# color: for example "#00FF00" or "Red" +# +# 0 = GTK_STATE_NORMAL +# 1 = GTK_STATE_ACTIVE +# 2 = GTK_STATE_PRELIGHT +# 3 = GTK_STATE_SELECTED +# 4 = GTK_STATE_INSENSITIVE +# +#--------------------------------------------------------------------------- + +MACRO u_bgcolor + +$opaque : gtk_server_opaque +gdk_color_parse $2 $opaque +gtk_widget_modify_bg $1 0 $opaque +g_free $opaque + +$3 BEQ 20 + +$opaque : gtk_server_opaque +gdk_color_parse $3 $opaque +gtk_widget_modify_bg $1 1 $opaque +g_free $opaque + +$4 BEQ 15 + +$opaque : gtk_server_opaque +gdk_color_parse $4 $opaque +gtk_widget_modify_bg $1 2 $opaque +g_free $opaque + +$5 BEQ 10 + +$opaque : gtk_server_opaque +gdk_color_parse $5 $opaque +gtk_widget_modify_bg $1 3 $opaque +g_free $opaque + +$6 BEQ 5 + +$opaque : gtk_server_opaque +gdk_color_parse $6 $opaque +gtk_widget_modify_bg $1 4 $opaque +g_free $opaque + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD fgcolor: +# u_fgcolor widget <color state> <color state> ... +# +# color: for example "#00FF00" +# +# 0 = GTK_STATE_NORMAL +# 1 = GTK_STATE_ACTIVE +# 2 = GTK_STATE_PRELIGHT +# 3 = GTK_STATE_SELECTED +# 4 = GTK_STATE_INSENSITIVE +# +#--------------------------------------------------------------------------- + +MACRO u_fgcolor + +$opaque : gtk_server_opaque +gdk_color_parse $2 $opaque +gtk_widget_modify_fg $1 0 $opaque +g_free $opaque + +$3 BEQ 20 + +$opaque : gtk_server_opaque +gdk_color_parse $3 $opaque +gtk_widget_modify_fg $1 1 $opaque +g_free $opaque + +$4 BEQ 15 + +$opaque : gtk_server_opaque +gdk_color_parse $4 $opaque +gtk_widget_modify_fg $1 2 $opaque +g_free $opaque + +$5 BEQ 10 + +$opaque : gtk_server_opaque +gdk_color_parse $5 $opaque +gtk_widget_modify_fg $1 3 $opaque +g_free $opaque + +$6 BEQ 5 + +$opaque : gtk_server_opaque +gdk_color_parse $6 $opaque +gtk_widget_modify_fg $1 4 $opaque +g_free $opaque + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD textcolor: +# u_textcolor widget <color state> <color state> ... +# +# color: for example "#00FF00" +# +# 0 = GTK_STATE_NORMAL +# 1 = GTK_STATE_ACTIVE +# 2 = GTK_STATE_PRELIGHT +# 3 = GTK_STATE_SELECTED +# 4 = GTK_STATE_INSENSITIVE +# +#--------------------------------------------------------------------------- + +MACRO u_textcolor + +$opaque : gtk_server_opaque +gdk_color_parse $2 $opaque +gtk_widget_modify_text $1 0 $opaque +g_free $opaque + +$3 BEQ 20 + +$opaque : gtk_server_opaque +gdk_color_parse $3 $opaque +gtk_widget_modify_text $1 1 $opaque +g_free $opaque + +$4 BEQ 15 + +$opaque : gtk_server_opaque +gdk_color_parse $4 $opaque +gtk_widget_modify_text $1 2 $opaque +g_free $opaque + +$5 BEQ 10 + +$opaque : gtk_server_opaque +gdk_color_parse $5 $opaque +gtk_widget_modify_text $1 3 $opaque +g_free $opaque + +$6 BEQ 5 + +$opaque : gtk_server_opaque +gdk_color_parse $6 $opaque +gtk_widget_modify_text $1 4 $opaque +g_free $opaque + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD basecolor: +# u_basecolor widget <color state> <color state> ... +# +# color: for example "#00FF00" +# +# 0 = GTK_STATE_NORMAL +# 1 = GTK_STATE_ACTIVE +# 2 = GTK_STATE_PRELIGHT +# 3 = GTK_STATE_SELECTED +# 4 = GTK_STATE_INSENSITIVE +# +#--------------------------------------------------------------------------- + +MACRO u_basecolor + +$opaque : gtk_server_opaque +gdk_color_parse $2 $opaque +gtk_widget_modify_base $1 0 $opaque +g_free $opaque + +$3 BEQ 20 + +$opaque : gtk_server_opaque +gdk_color_parse $3 $opaque +gtk_widget_modify_base $1 1 $opaque +g_free $opaque + +$4 BEQ 15 + +$opaque : gtk_server_opaque +gdk_color_parse $4 $opaque +gtk_widget_modify_base $1 2 $opaque +g_free $opaque + +$5 BEQ 10 + +$opaque : gtk_server_opaque +gdk_color_parse $5 $opaque +gtk_widget_modify_base $1 3 $opaque +g_free $opaque + +$6 BEQ 5 + +$opaque : gtk_server_opaque +gdk_color_parse $6 $opaque +gtk_widget_modify_base $1 4 $opaque +g_free $opaque + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD font: +# u_font widget font (for example "Arial 15", "Luxi Mono 12") +# +#--------------------------------------------------------------------------- + +MACRO u_font + +$desc : pango_font_description_from_string $2 +gtk_widget_modify_font $1 $desc +pango_font_description_free $desc + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD disable: +# u_disable widget +# +#--------------------------------------------------------------------------- + +MACRO u_disable + +gtk_widget_set_sensitive $1 0 + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD enable: +# u_enable widget +# +#--------------------------------------------------------------------------- + +MACRO u_enable + +gtk_widget_set_sensitive $1 1 + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD hide: +# u_hide widget +# +#--------------------------------------------------------------------------- + +MACRO u_hide + +gtk_widget_hide $1 + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD show: +# u_show widget +# +#--------------------------------------------------------------------------- + +MACRO u_show + +gtk_widget_show $1 + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD focus: +# u_focus widget +# +#--------------------------------------------------------------------------- + +MACRO u_focus + +gtk_widget_grab_focus $1 + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD event: +# u_event <optional async> +# +#--------------------------------------------------------------------------- + +MACRO u_event + +$1 BNE 4 + +$event : gtk_server_callback wait +BRA 2 + +$event : gtk_server_callback update + +RETURN $event + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Define METHOD end: +# u_end +# +#--------------------------------------------------------------------------- + +MACRO u_end + +gtk_server_exit + +ENDMACRO + +#--------------------------------------------------------------------------- +# +# Connect a glade UI: +# glade-ui "filename" +# +#--------------------------------------------------------------------------- + +MACRO glade-ui + +gtk_init +glade_init +$xml : glade_xml_new $1 NULL NULL +glade_xml_signal_autoconnect $xml + +RETURN $xml + +ENDMACRO diff --git a/gtk.l b/gtk.l @@ -0,0 +1,32 @@ +# picoLisp + gtk-server wrapper +# 26feb2009 Tomas Hlavaty +# 26feb2009 minor fix by Peter van Eerten +# available from http://logand.com/gtk/gtk.l + +(def '*GtkServer "gtk-server") + +(de gtk @ + (out *GtkFifo + (while (args) + (prin " ") + (let A (next) + (if (str? A) + (prin "'" A "'") + (prin A) ) ) ) + (prinl) + (flush) ) + (in *GtkFifo + (line T) ) ) + +(de gtkCfg () + (in "gtk-server.cfg" + (until (eof) + (let L (line) + (when (match '("F" "U" "N" @A "=" @B "," @C) L) + (let N (intern (pack (clip @B))) + (def N (fill '(@ (pass gtk 'N)) 'N)) ) ) ) ) ) ) + +(gtkCfg) +(def '*GtkFifo (tmp "gtk.fifo")) +(call *GtkServer (pack "-fifo=" *GtkFifo) "-detach") +(push1 '*Bye (list 'kill (format (gtk_server_pid))))