mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-05 12:52:31 +02:00
99 lines
2.8 KiB
ObjectPascal
99 lines
2.8 KiB
ObjectPascal
{
|
|
|
|
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 - '+PAnsiChar(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), PAnsiChar('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), PAnsiChar('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.
|