pixmap.pp 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. {
  2. $Id$
  3. This file extracted from the GTK tutorial.
  4. pixmap.c
  5. Converted from C to Pascal by Frank Loemker
  6. <[email protected]>
  7. }
  8. program pixmap;
  9. uses
  10. glib,gdk,gtk;
  11. { XPM data of Open-File icon }
  12. const
  13. xpm_data:array[0..19] of pchar =
  14. ('16 16 3 1',
  15. ' c None',
  16. '. c #000000000000',
  17. 'X c #FFFFFFFFFFFF',
  18. ' ',
  19. ' ...... ',
  20. ' .XXX.X. ',
  21. ' .XXX.XX. ',
  22. ' .XXX.XXX. ',
  23. ' .XXX..... ',
  24. ' .XXXXXXX. ',
  25. ' .XXXXXXX. ',
  26. ' .XXXXXXX. ',
  27. ' .XXXXXXX. ',
  28. ' .XXXXXXX. ',
  29. ' .XXXXXXX. ',
  30. ' .XXXXXXX. ',
  31. ' ......... ',
  32. ' ',
  33. ' ');
  34. { when invoked (via signal delete_event), terminates the application. }
  35. procedure close_application(widget : pGtkWidget ; event: pGdkEvent ; data: pgpointer); cdecl;
  36. begin
  37. gtk_main_quit();
  38. end;
  39. { is invoked when the button is clicked. It just prints a message. }
  40. procedure button_clicked(widget : pGtkWidget ; data: pgpointer); cdecl;
  41. begin
  42. writeln ('button clicked');
  43. end;
  44. { GtkWidget is the storage type for widgets }
  45. var window, pixmapwid, button : pGtkWidget;
  46. thepixmap : pGdkPixmap;
  47. mask : pGdkBitmap;
  48. style : pGtkStyle;
  49. begin
  50. { create the main window, and attach delete_event signal to terminating
  51. the application }
  52. gtk_init( @argc, @argv );
  53. gtk_rc_init;
  54. window := gtk_window_new( GTK_WINDOW_TOPLEVEL );
  55. gtk_signal_connect (pGTKOBJECT (window), 'delete_event',
  56. GTK_SIGNAL_FUNC (@close_application), NIL );
  57. gtk_container_set_border_width( pGTKCONTAINER (window), 10 );
  58. gtk_widget_show( window );
  59. { now for the pixmap from gdk }
  60. style := gtk_widget_get_style( window );
  61. thepixmap := gdk_pixmap_create_from_xpm_d( window^.window, @mask,
  62. @style^.bg[GTK_STATE_NORMAL],
  63. ppgchar (xpm_data ));
  64. { a pixmap widget to contain the pixmap }
  65. pixmapwid := gtk_pixmap_new( thepixmap, mask );
  66. gtk_widget_show( pixmapwid );
  67. { a button to contain the pixmap widget }
  68. button := gtk_button_new();
  69. gtk_container_add( pGTKCONTAINER(button), pixmapwid );
  70. gtk_container_add( pGTKCONTAINER(window), button );
  71. gtk_widget_show( button );
  72. gtk_signal_connect (pGTKOBJECT(button), 'clicked',
  73. GTK_SIGNAL_FUNC(@button_clicked), NIL );
  74. { show the window }
  75. gtk_main ();
  76. end.
  77. {
  78. $Log$
  79. Revision 1.2 2000-07-13 11:33:18 michael
  80. + removed logs
  81. }