Programmierung


[ Seminar Linux, WWW, Java und Internet ] ... [ Thema GNOME ] ... [ Fazit ]

Übersicht


Programmbeispiel "Hello GNOME"

/* gnome-hello-basic.c -- Example for the "Starting with GNOME" section
 * of the Gnome Developers' Tutorial (that's is included in the
 * Gnome Developers' Documentation in devel-progs/)
 *
 *Includes:
 *   Basic stuff
 *
 * Copyright (C) 1998 Mark Galassi, Horacio J. Peña, all rights reserved
 */


/*
 * Including gnome.h gives you all you need to use the gtk toolkit as
 * well as the GNOME libraries; it also handles internationalization
 * via GNU gettext. Including config.h before gnome.h is very important
 * (else gnome-i18n can't find ENABLE_NLS), of course i'm assuming
 * that we're in the gnome tree.
 */
#include 
#include 


/* This points to our toplevel window */
GtkWidget *app;


/* Callbacks functions */

static void
hello_cb (GtkWidget *widget, void *data)
{
        g_print ("Hello GNOME\n");
        gtk_main_quit ();

        return;
}

static void
quit_cb (GtkWidget *widget, void *data)
{
        gtk_main_quit ();

        return;
}

static void
prepare_app()
{
        GtkWidget *button;

        /*
         * Makes the main window and binds the delete event so you can close
         * the program from your WM
         */
        app = gnome_app_new ("hello", "Hello World Gnomified");
        gtk_widget_realize (app);
        gtk_signal_connect (GTK_OBJECT (app), "delete_event",
                            GTK_SIGNAL_FUNC (quit_cb),
                            NULL);

        /*
         * We make a button, bind the 'clicked' signal to hello and setting it
         * to be the content of the main window
         */
        button = gtk_button_new_with_label ("Hello GNOME");
        gtk_signal_connect (GTK_OBJECT (button), "clicked",
                            GTK_SIGNAL_FUNC (hello_cb), NULL);
        gtk_container_set_border_width (GTK_CONTAINER (button), 60);

        gnome_app_set_contents (GNOME_APP (app), button);

        /*
         * We now show the widgets, the order doesn't matter, but i suggests
         * showing the main window last so the whole window will popup at
         * once rather than seeing the window pop up, and then the button form
         * inside of it. Although with such simple example, you'd never notice.
         */
        gtk_widget_show (button);
        gtk_widget_show (app);
}

int
main(int argc, char *argv[])
{
        gnome_init ("gnome-hello-0-basic", VERSION, argc, argv);

        /*
         * prepare_app() makes all the gtk calls necessary to set up a
         * minimal Gnome application; It's based on the hello world example
         * from the Gtk+ tutorial
         */
        prepare_app ();

        gtk_main ();

        return 0;
}

[ Seminar Linux, WWW, Java und Internet ] ... [ Thema GNOME ] ... [ Fazit ]