Code: function main()
PUBLIC bButtonAction := { || GTK_MSGINFO('Click!!!') }
GTK_INIT()
aRet := GTK_DEFINEWINDOW( 100 , 100 , 400 , 200 , "hello Linux!!!!" )
GTK_DEFINEBUTTON ( aRet [2] , 50 , 50 , 'Click Me!!' )
GTK_ACTIVATEWINDOW()
return nil
*----------------------------------------------------------------------------------------------* PROCEDURE HMG_BUTTON_CALLBACK ( HANDLE ) *----------------------------------------------------------------------------------------------* EVAL ( bButtonAction ) RETURN *----------------------------------------------------------------------------------------------* #pragma BEGINDUMP #include <gtk/gtk.h> // BUTTON ONCLICK EVENT HANDLER //////////////////////////////////// static long button_clicked ( GtkWidget *handle ) { static PHB_DYNS Dyns = 0 ; long int r; if( ! Dyns ) { Dyns = hb_dynsymFindName( "HMG_BUTTON_CALLBACK" ); } hb_vmPushSymbol( hb_dynsymSymbol( Dyns ) ); hb_vmPushNil(); hb_vmPushLong( (long) handle ); hb_vmPushLong( 0 ); hb_vmPushLong( 0 ); hb_vmPushLong( 0 ); hb_vmDo( 4 );
r = hb_parnl( -1 );
return r; } static gboolean delete_event( GtkWidget *widget,GdkEvent *event, gpointer data ) { g_print ("delete event occurred\n"); return FALSE; } static void destroy( GtkWidget *widget, gpointer data ) { gtk_main_quit (); } //--------------------------------------------------------------------------------------------// HB_FUNC ( GTK_INIT ) //--------------------------------------------------------------------------------------------// { gtk_init ( 0 , 0 ); } //--------------------------------------------------------------------------------------------// HB_FUNC ( GTK_DEFINEWINDOW ) //--------------------------------------------------------------------------------------------// { GtkWidget *window; GtkWidget *fixed; char* cTitle = (gchar*) hb_parc(5); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (window, "delete-event",G_CALLBACK (delete_event), NULL); g_signal_connect (window, "destroy",G_CALLBACK (destroy), NULL); gtk_window_move( GTK_WINDOW(window) , hb_parni(2), hb_parni(1) ); gtk_widget_set_size_request( GTK_WIDGET(window) , hb_parni(3) , hb_parni(4) ); gtk_window_set_title( GTK_WINDOW(window) , cTitle ); /* Create a Fixed Container */ fixed = gtk_fixed_new (); gtk_container_add (GTK_CONTAINER (window), fixed); gtk_widget_show (fixed); gtk_widget_show (window); hb_reta(2); hb_storvnl( window , -1 , 1 ); hb_storvnl( fixed , -1 , 2 ); } //--------------------------------------------------------------------------------------------// HB_FUNC ( GTK_DEFINEBUTTON ) //--------------------------------------------------------------------------------------------// { GtkWidget *button; button = gtk_button_new_with_label ( (gchar*) hb_parc(4)); gtk_fixed_put (GTK_FIXED ((long) hb_parnl(1)), button, hb_parni(2), hb_parni(3) ); gtk_widget_show (button); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (button_clicked), (gpointer) button ); } //--------------------------------------------------------------------------------------------// HB_FUNC ( GTK_ACTIVATEWINDOW ) //--------------------------------------------------------------------------------------------// { gtk_main (); } //--------------------------------------------------------------------------------------------// HB_FUNC ( GTK_MSGINFO ) //--------------------------------------------------------------------------------------------// { GtkWidget *dialog; dialog = gtk_message_dialog_new ( 0 , GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, (gchar*) hb_parc (1) ,"Hi1" );
gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog);
#pragma ENDDUMP
|