xref: /netbsd-src/external/gpl2/gettext/dist/gettext-tools/examples/hello-c++-gnome/hello.cc (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 #include <gtk--.h>
11 
12 /* Get getpid() declaration.  */
13 #if HAVE_UNISTD_H
14 # include <unistd.h>
15 #endif
16 
17 static Gtk::Main *application;
18 
19 static gint
quit_callback(GdkEventAny *)20 quit_callback (GdkEventAny*)
21 {
22   application->quit ();
23 }
24 
25 int
main(int argc,char * argv[])26 main (int argc, char *argv[])
27 {
28   Gtk::Window *window;
29   Gtk::VBox *panel;
30   Gtk::Label *label1;
31   Gtk::Alignment *label1aligned;
32   Gtk::Label *label2;
33   Gtk::Alignment *label2aligned;
34   Gtk::Button *button;
35   Gtk::HButtonBox *buttonbar;
36 
37   /* Initializations.  */
38 
39   setlocale (LC_ALL, "");
40   application = new Gtk::Main (argc, argv);
41   textdomain ("hello-c++-gnome");
42   bindtextdomain ("hello-c++-gnome", LOCALEDIR);
43 
44   /* Create the GUI elements.  */
45 
46   window = new Gtk::Window (GTK_WINDOW_TOPLEVEL);
47   window->set_title ("Hello example");
48   window->realize ();
49   window->delete_event.connect (SigC::slot (quit_callback));
50 
51   label1 = new Gtk::Label (_("Hello, world!"));
52 
53   label1aligned = new Gtk::Alignment (0.0, 0.5, 0, 0);
54   label1aligned->add (*label1);
55 
56   label2 = new Gtk::Label (g_strdup_printf (_("This program is running as process number %d."), getpid ()));
57 
58   label2aligned = new Gtk::Alignment (0.0, 0.5, 0, 0);
59   label2aligned->add (*label2);
60 
61   button = new Gtk::Button ("OK");
62   button->clicked.connect (Gtk::Main::quit.slot()); //slot (quit_callback));
63 
64   buttonbar = new Gtk::HButtonBox (GTK_BUTTONBOX_END);
65   buttonbar->pack_start (*button);
66 
67   panel = new Gtk::VBox (false, GNOME_PAD_SMALL);
68   panel->pack_start (*label1aligned);
69   panel->pack_start (*label2aligned);
70   panel->pack_start (*buttonbar);
71 
72   window->add (*panel);
73 
74   /* Make the GUI elements visible.  */
75 
76   label1->show ();
77   label1aligned->show ();
78   label2->show ();
79   label2aligned->show ();
80   button->show ();
81   buttonbar->show ();
82   panel->show ();
83   window->show ();
84 
85   /* Start the event loop.  */
86 
87   application->run ();
88 }
89