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