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.
|