pixmap.pp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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.1 1999-11-24 23:36:33 peter
  80. * moved to packages dir
  81. Revision 1.4 1999/05/11 00:37:44 peter
  82. * win32 fixes
  83. Revision 1.3 1999/05/10 19:18:13 peter
  84. * more fixes for the examples to work
  85. Revision 1.1 1999/05/10 09:02:36 peter
  86. * gtk 1.2 port working
  87. Revision 1.2 1998/10/22 11:37:30 peter
  88. * fixes for win32
  89. Revision 1.1 1998/10/21 22:27:01 peter
  90. + initial version
  91. }