1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
{
This file extracted from the GTK 1.2 tutorial.
Section 4.5
Converted from C to Pascal by Thomas E. Payne
}
program Tut4_5;
{$mode objfpc}
uses
glib,gdk,gtk,sysutils;
//* Our callback.
//* The data passed to this function is printed to stdout */
procedure callback(widget : pGtkWidget ; data: pgpointer ); cdecl;
begin
writeln('Hello again - '+pchar(data)+' was pressed');
end;
//* This callback quits the program */
function delete_event (widget : pGtkWidget ; event: pGdkEvent; data: pgpointer ): integer; cdecl;
begin
gtk_main_quit();
delete_event:=0;
end;
var
window, button, table :pGtkWidget;
begin
gtk_init (@argc, @argv);
//* Create a new window */
window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
//* Set the window title */
gtk_window_set_title (GTK_WINDOW (window), 'Table');
//* Set a handler for delete_event that immediately
//* exits GTK. */
gtk_signal_connect (GTK_OBJECT (window), 'delete_event',
GTK_SIGNAL_FUNC (@delete_event), NIL);
//* Sets the border width of the window. */
gtk_container_set_border_width (GTK_CONTAINER (window), 20);
//* Create a 2x2 table */
table := gtk_table_new (2, 2, TRUE);
//* Put the table in the main window */
gtk_container_add (GTK_CONTAINER (window), table);
//* Create first button */
button := gtk_button_new_with_label ('button 1');
//* When the button is clicked, we call the "callback" function
//* with a pointer to "button 1" as its argument */
gtk_signal_connect (GTK_OBJECT (button), 'clicked',
GTK_SIGNAL_FUNC (@callback), pchar('button 1'));
//* Insert button 1 into the upper left quadrant of the table */
gtk_table_attach_defaults (GTK_TABLE(table), button, 0, 1, 0, 1);
gtk_widget_show (button);
//* Create second button */
button := gtk_button_new_with_label ('button 2');
//* When the button is clicked, we call the "callback" function
//* with a pointer to "button 2" as its argument */
gtk_signal_connect (GTK_OBJECT (button), 'clicked',
GTK_SIGNAL_FUNC (@callback), pchar('button 2'));
//* Insert button 2 into the upper right quadrant of the table */
gtk_table_attach_defaults (GTK_TABLE(table), button, 1, 2, 0, 1);
gtk_widget_show (button);
//* Create "Quit" button */
button := gtk_button_new_with_label ('Quit');
//* When the button is clicked, we call the "delete_event" function
//* and the program exits */
gtk_signal_connect (GTK_OBJECT (button), 'clicked',
GTK_SIGNAL_FUNC (@delete_event), NIL);
//* Insert the quit button into the both
//* lower quadrants of the table */
gtk_table_attach_defaults (GTK_TABLE(table), button, 0, 2, 1, 2);
gtk_widget_show (button);
gtk_widget_show (table);
gtk_widget_show (window);
gtk_main ();
end.
|