(root)/
gettext-0.22.4/
gettext-tools/
examples/
hello-c-gnome/
hello.c
       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  }