| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | {  This file extracted from the GTK tutorial.  pixmap.c  Converted from C to Pascal by Frank Loemker  <[email protected]>}program pixmap;uses  glib,gdk,gtk;{ XPM data of Open-File icon }const  xpm_data:array[0..19] of pchar =  ('16 16 3 1',   '       c None',   '.      c #000000000000',   'X      c #FFFFFFFFFFFF',   '                ',   '   ......       ',   '   .XXX.X.      ',   '   .XXX.XX.     ',   '   .XXX.XXX.    ',   '   .XXX.....    ',   '   .XXXXXXX.    ',   '   .XXXXXXX.    ',   '   .XXXXXXX.    ',   '   .XXXXXXX.    ',   '   .XXXXXXX.    ',   '   .XXXXXXX.    ',   '   .XXXXXXX.    ',   '   .........    ',   '                ',   '                ');{ when invoked (via signal delete_event), terminates the application. }procedure close_application(widget : pGtkWidget ; event: pGdkEvent ; data: pgpointer); cdecl;begin  gtk_main_quit();end;{ is invoked when the button is clicked.  It just prints a message. }procedure button_clicked(widget : pGtkWidget ; data: pgpointer); cdecl;begin  writeln ('button clicked');end;{ GtkWidget is the storage type for widgets }var window, pixmapwid, button : pGtkWidget;  thepixmap                   : pGdkPixmap;  mask                        : pGdkBitmap;  style                       : pGtkStyle;begin  { create the main window, and attach delete_event signal to terminating   the application }  gtk_init( @argc, @argv );  gtk_rc_init;  window := gtk_window_new( GTK_WINDOW_TOPLEVEL );  gtk_signal_connect (pGTKOBJECT (window), 'delete_event',                      GTK_SIGNAL_FUNC (@close_application), NIL );  gtk_container_set_border_width( pGTKCONTAINER (window), 10 );  gtk_widget_show( window );  { now for the pixmap from gdk }  style := gtk_widget_get_style( window );  thepixmap := gdk_pixmap_create_from_xpm_d( window^.window,  @mask,                                        @style^.bg[GTK_STATE_NORMAL],                                        ppgchar (xpm_data ));  { a pixmap widget to contain the pixmap }  pixmapwid := gtk_pixmap_new( thepixmap, mask );  gtk_widget_show( pixmapwid );  { a button to contain the pixmap widget }  button := gtk_button_new();  gtk_container_add( pGTKCONTAINER(button), pixmapwid );  gtk_container_add( pGTKCONTAINER(window), button );  gtk_widget_show( button );  gtk_signal_connect (pGTKOBJECT(button), 'clicked',                      GTK_SIGNAL_FUNC(@button_clicked), NIL );  { show the window }  gtk_main ();end.
 |