/packages/gtk1/examples/tutorial/tut6_4.pp

https://github.com/slibre/freepascal · Puppet · 87 lines · 66 code · 21 blank · 0 comment · 0 complexity · 4667a1a82f6455fdc7c281f225948723 MD5 · raw file

  1. {
  2. This file extracted from the GTK 1.2 tutorial.
  3. Section 6.4
  4. Converted from C to Pascal by Thomas E. Payne
  5. }
  6. program Tut6_4;
  7. {$mode objfpc}
  8. uses
  9. glib,gdk,gtk,sysutils;
  10. //* example-start radiobuttons radiobuttons.c *//
  11. procedure close_application( widget : pGtkWidget;
  12. event : pGdkEvent;
  13. data : gpointer ); cdecl;
  14. begin
  15. gtk_main_quit();
  16. end;
  17. var
  18. window,box1,box2,button,separator : pGtkWidget;
  19. group : pGSList;
  20. begin
  21. gtk_init(@argc,@argv);
  22. window := Nil;
  23. window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
  24. gtk_signal_connect (GTK_OBJECT (window), 'delete_event',
  25. GTK_SIGNAL_FUNC(@close_application),
  26. Nil);
  27. gtk_window_set_title (GTK_WINDOW (window), 'radio buttons');
  28. gtk_container_set_border_width (GTK_CONTAINER (window), 0);
  29. box1 := gtk_vbox_new (FALSE, 0);
  30. gtk_container_add (GTK_CONTAINER (window), box1);
  31. gtk_widget_show (box1);
  32. box2 := gtk_vbox_new (FALSE, 10);
  33. gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
  34. gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
  35. gtk_widget_show (box2);
  36. button := gtk_radio_button_new_with_label (Nil, 'button1');
  37. gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
  38. gtk_widget_show (button);
  39. group := gtk_radio_button_group (GTK_RADIO_BUTTON (button));
  40. button := gtk_radio_button_new_with_label(group, 'button2');
  41. gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
  42. gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
  43. gtk_widget_show (button);
  44. button := gtk_radio_button_new_with_label(
  45. gtk_radio_button_group (GTK_RADIO_BUTTON (button)),
  46. 'button3');
  47. gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
  48. gtk_widget_show (button);
  49. separator := gtk_hseparator_new ();
  50. gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
  51. gtk_widget_show (separator);
  52. box2 := gtk_vbox_new (FALSE, 10);
  53. gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
  54. gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
  55. gtk_widget_show (box2);
  56. button := gtk_button_new_with_label ('close');
  57. gtk_signal_connect_object (GTK_OBJECT (button), 'clicked',
  58. GTK_SIGNAL_FUNC(@close_application),
  59. GTK_OBJECT (window));
  60. gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
  61. GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
  62. gtk_widget_grab_default (button);
  63. gtk_widget_show (button);
  64. gtk_widget_show (window);
  65. gtk_main();
  66. end.