mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-02 16:13:41 +02:00
88 lines
2.8 KiB
ObjectPascal
88 lines
2.8 KiB
ObjectPascal
{
|
|
|
|
This file extracted from the GTK 1.2 tutorial.
|
|
Section 6.4
|
|
|
|
Converted from C to Pascal by Thomas E. Payne
|
|
}
|
|
program Tut6_4;
|
|
|
|
{$mode objfpc}
|
|
|
|
uses
|
|
glib,gdk,gtk,sysutils;
|
|
|
|
//* example-start radiobuttons radiobuttons.c *//
|
|
|
|
procedure close_application( widget : pGtkWidget;
|
|
event : pGdkEvent;
|
|
data : gpointer ); cdecl;
|
|
begin
|
|
gtk_main_quit();
|
|
end;
|
|
|
|
var
|
|
window,box1,box2,button,separator : pGtkWidget;
|
|
group : pGSList;
|
|
|
|
begin
|
|
gtk_init(@argc,@argv);
|
|
|
|
window := Nil;
|
|
|
|
window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
|
|
gtk_signal_connect (GTK_OBJECT (window), 'delete_event',
|
|
GTK_SIGNAL_FUNC(@close_application),
|
|
Nil);
|
|
|
|
gtk_window_set_title (GTK_WINDOW (window), 'radio buttons');
|
|
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
|
|
|
|
box1 := gtk_vbox_new (FALSE, 0);
|
|
gtk_container_add (GTK_CONTAINER (window), box1);
|
|
gtk_widget_show (box1);
|
|
|
|
box2 := gtk_vbox_new (FALSE, 10);
|
|
gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
|
|
gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
|
|
gtk_widget_show (box2);
|
|
|
|
button := gtk_radio_button_new_with_label (Nil, 'button1');
|
|
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
|
|
gtk_widget_show (button);
|
|
|
|
group := gtk_radio_button_group (GTK_RADIO_BUTTON (button));
|
|
button := gtk_radio_button_new_with_label(group, 'button2');
|
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
|
|
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
|
|
gtk_widget_show (button);
|
|
|
|
button := gtk_radio_button_new_with_label(
|
|
gtk_radio_button_group (GTK_RADIO_BUTTON (button)),
|
|
'button3');
|
|
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
|
|
gtk_widget_show (button);
|
|
|
|
separator := gtk_hseparator_new ();
|
|
gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
|
|
gtk_widget_show (separator);
|
|
|
|
box2 := gtk_vbox_new (FALSE, 10);
|
|
gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
|
|
gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
|
|
gtk_widget_show (box2);
|
|
|
|
button := gtk_button_new_with_label ('close');
|
|
gtk_signal_connect_object (GTK_OBJECT (button), 'clicked',
|
|
GTK_SIGNAL_FUNC(@close_application),
|
|
GTK_OBJECT (window));
|
|
gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
|
|
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
|
|
gtk_widget_grab_default (button);
|
|
gtk_widget_show (button);
|
|
gtk_widget_show (window);
|
|
|
|
gtk_main();
|
|
end.
|