1 /* Example for use of GNU gettext.
2 This file is in the public domain.
3
4 Source code of the C program. */
5
6
7 /* Get GNOME declarations. */
8 #include <gnome.h>
9
10 /* Get getpid() declaration. */
11 #if defined _WIN32 && !defined __CYGWIN__
12 /* native Windows API */
13 # include <process.h>
14 # define getpid _getpid
15 #else
16 /* POSIX API */
17 # include <unistd.h>
18 #endif
19
20 static void
21 quit_callback (GtkWidget *widget, void *data)
22 {
23 gtk_main_quit ();
24 }
25
26 int
27 main (int argc, char *argv[])
28 {
29 GtkWidget *window;
30 GtkWidget *panel;
31 GtkWidget *label1;
32 GtkWidget *label1aligned;
33 GtkWidget *label2;
34 GtkWidget *label2aligned;
35 GtkWidget *button;
36 GtkWidget *buttonbar;
37
38 /* Initializations. */
39
40 gnome_init (PACKAGE, VERSION, argc, argv);
41 textdomain ("hello-c-gnome");
42 bindtextdomain ("hello-c-gnome", LOCALEDIR);
43
44 /* Create the GUI elements. */
45
46 window = gnome_app_new ("hello-c-gnome", "Hello example");
47 gtk_widget_realize (window);
48 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
49 GTK_SIGNAL_FUNC (quit_callback), NULL);
50
51 label1 = gtk_label_new (_("Hello, world!"));
52
53 label1aligned = gtk_alignment_new (0.0, 0.5, 0, 0);
54 gtk_container_add (GTK_CONTAINER (label1aligned), label1);
55
56 label2 = gtk_label_new (g_strdup_printf (_("This program is running as process number %d."), getpid ()));
57
58 label2aligned = gtk_alignment_new (0.0, 0.5, 0, 0);
59 gtk_container_add (GTK_CONTAINER (label2aligned), label2);
60
61 button = gtk_button_new_with_label ("OK");
62 gtk_signal_connect (GTK_OBJECT (button), "clicked",
63 GTK_SIGNAL_FUNC (quit_callback), NULL);
64
65 buttonbar = gtk_hbutton_box_new ();
66 gtk_button_box_set_layout (GTK_BUTTON_BOX (buttonbar), GTK_BUTTONBOX_END);
67 gtk_box_pack_start_defaults (GTK_BOX (buttonbar), button);
68
69 panel = gtk_vbox_new (FALSE, GNOME_PAD_SMALL);
70 gtk_box_pack_start_defaults (GTK_BOX (panel), label1aligned);
71 gtk_box_pack_start_defaults (GTK_BOX (panel), label2aligned);
72 gtk_box_pack_start_defaults (GTK_BOX (panel), buttonbar);
73
74 gnome_app_set_contents (GNOME_APP (window), panel);
75
76 /* Make the GUI elements visible. */
77
78 gtk_widget_show (label1);
79 gtk_widget_show (label1aligned);
80 gtk_widget_show (label2);
81 gtk_widget_show (label2aligned);
82 gtk_widget_show (button);
83 gtk_widget_show (buttonbar);
84 gtk_widget_show (panel);
85 gtk_widget_show (window);
86
87 /* Start the event loop. */
88
89 gtk_main ();
90
91 return 0;
92 }