REM REM Demo to show how to use GTK-server REM The GTK-server tries to access the incoming string directly (LIB interface) to spare memory. REM For that reason, the command needs to be copied to a variable first. REM PvE - March 2009. REM Adapted for newer BaCon versions - Feb 2012. REM REM Get central function from GTK-server IMPORT "gtk" FROM "libgtk-server.so" TYPE char* ALIAS gtk$ REM Wrap around function FUNCTION gui$(STRING c$) dat$ = c$ RETURN gtk$(dat$) END FUNCTION REM Setup GUI REM gui$("gtk_server_cfg -log=/tmp/log.txt") gui$("gtk_init NULL NULL") gui$("glade_init") REM Get Glade file xml$ = gui$("glade_xml_new ./demo.glade NULL NULL") gui$(CONCAT$("glade_xml_signal_autoconnect ", xml$)) REM Get main window ID and connect signal window$ = gui$(CONCAT$("glade_xml_get_widget ", xml$, " window")) gui$(CONCAT$("gtk_server_connect ", window$, " delete-event window")) REM Get exit button ID and connect signal exit$ = gui$(CONCAT$("glade_xml_get_widget ", xml$, " exit_button")) gui$(CONCAT$("gtk_server_connect ", exit$, " clicked exit_button")) REM Get print button ID and connect signal button$ = gui$(CONCAT$("glade_xml_get_widget ", xml$, " print_button")) gui$(CONCAT$("gtk_server_connect ", button$, " clicked print_button")) REM Get entry ID entry$ = gui$(CONCAT$("glade_xml_get_widget ", xml$, " entry")) REM Mainloop WHILE (NOT(EQUAL(event$, "window")) AND NOT(EQUAL(event$, "exit_button"))) DO event$ = gui$("gtk_server_callback wait") IF EQUAL(event$, "print_button") THEN result$ = gui$(CONCAT$("gtk_entry_get_text ", entry$)) PRINT result$ ENDIF WEND REM Exit GTK gui$("gtk_server_exit")