PRAGMALDFLAGS`pkg-config--cflags--libsgtk+-2.0`'--- '--- GTK example with BACON'--- March 2009 - PvE.'--- Adapted November 2009. adapted for Hscale 2013 alexfish'--- Ported to PROTO/PRAGMA/IMPORT syntax 2013 bigbass'--- Get needed functions from GTKPROTOgtk_table_attach_defaultsPROTOgtk_window_set_titlePROTOgtk_button_new_from_stock'PROTO gtk_range_get_valuePROTOgtk_table_newPROTOgtk_window_newPROTOgtk_container_addPROTOgtk_exit'PROTO gtk_hscale_new_with_rangePROTOgtk_initPROTOgtk_label_newPROTOgtk_widget_show_allPROTOgtk_mainPROTOg_signal_connect_data'----------------------------------------------------' get around low level pointers USING IMPORT'----------------------------------------------------CONSTGtk$="libgtk-x11-2.0.so.0"'-- Get needed functions from GTK using IMPORTIMPORT"gtk_hscale_new_with_range(double,double,double)"FROMGtk$TYPElongIMPORT"gtk_range_get_value(long)"FROMGtk$TYPEdouble'----------------------------------------------------'--- Callback for closing windowSUBexit_progPRINT"QUIT"gtk_exit(0)ENDSUBSUBChangedLOCALgetget=gtk_range_get_value(Hscale)PRINT" CHANGED ",getENDSUB'--- Main program starts heregtk_init(0,0)window=gtk_window_new(0)gtk_window_set_title(window,"scale PROTO")table=gtk_table_new(15,15,1)gtk_container_add(window,table)Hscale=gtk_hscale_new_with_range(0,1000,1)button=gtk_button_new_from_stock("gtk-quit")gtk_table_attach_defaults(table,button,10,14,12,14)gtk_table_attach_defaults(table,Hscale,1,14,3,14)'--- Use as callback the defined SUBg_signal_connect_data(button,"clicked",exit_prog,0,0,0)g_signal_connect_data(Hscale,"value-changed",Changed,0,0,0)g_signal_connect_data(window,"delete-event",exit_prog,0,0,0)'--- Show whole GUIgtk_widget_show_all(window)gtk_main
KEYPRESSED
gets key pressed and displays it in terminal
and in the title
*mouse must stay in the window to catch the event
Example code: keypressed-gtk2-proto.bac
PRAGMALDFLAGS`pkg-config--cflags--libsgtk+-2.0`PRAGMAINCLUDEgtk-2.0/gtk/gtk.h'--- GTKPROTOgtk_initPROTOgtk_mainPROTOgtk_widget_showPROTOgtk_window_newPROTOgtk_exitPROTOgtk_window_set_title'---extrasPROTOg_signal_connect_dataPROTOg_printerr'--- GDKPROTOgdk_keyval_name'--- Declare variablesDECLARE*windowTYPEGtkWidgetDECLARE*eventTYPEGdkEventKeyFUNCTIONkey_event(GtkWidget*widget,GdkEventKey*event)g_printerr("%s\n",gdk_keyval_name(event->keyval))keypressed$=gdk_keyval_name(event->keyval)gtk_window_set_title(GTK_WINDOW(window),keypressed$)RETURNFALSEENDFUNCTION'--- Callback for closing windowSUBexit_progPRINT"QUIT"gtk_exit(0)ENDSUBgtk_init(0,0)window=gtk_window_new(GTK_WINDOW_TOPLEVEL)gtk_window_set_title(GTK_WINDOW(window),"get key press")'--- Use as callback the defined SUB/FUNCTIONSg_signal_connect_data(window,"delete-event",exit_prog,0,0,0)g_signal_connect_data(window,"key-release-event",G_CALLBACK(key_event),0,0,0)gtk_widget_show(window)gtk_main
Last edit: big-bass 2021-04-28
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
HSCALE
Example code: hscale-gtk2-proto.bac
KEYPRESSED
gets key pressed and displays it in terminal
and in the title
*mouse must stay in the window to catch the event
Example code: keypressed-gtk2-proto.bac
Last edit: big-bass 2021-04-28