Blame examples/buttons/buttons.c

Packit 98cdb6
Packit 98cdb6
#include <stdlib.h>
Packit 98cdb6
#include <gtk/gtk.h>
Packit 98cdb6
Packit 98cdb6
/* Create a new hbox with an image and a label packed into it
Packit 98cdb6
 * and return the box. */
Packit 98cdb6
Packit 98cdb6
static GtkWidget *xpm_label_box( gchar     *xpm_filename,
Packit 98cdb6
                                 gchar     *label_text )
Packit 98cdb6
{
Packit 98cdb6
    GtkWidget *box;
Packit 98cdb6
    GtkWidget *label;
Packit 98cdb6
    GtkWidget *image;
Packit 98cdb6
Packit 98cdb6
    /* Create box for image and label */
Packit 98cdb6
    box = gtk_hbox_new (FALSE, 0);
Packit 98cdb6
    gtk_container_set_border_width (GTK_CONTAINER (box), 2);
Packit 98cdb6
Packit 98cdb6
    /* Now on to the image stuff */
Packit 98cdb6
    image = gtk_image_new_from_file (xpm_filename);
Packit 98cdb6
Packit 98cdb6
    /* Create a label for the button */
Packit 98cdb6
    label = gtk_label_new (label_text);
Packit 98cdb6
Packit 98cdb6
    /* Pack the image and label into the box */
Packit 98cdb6
    gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 3);
Packit 98cdb6
    gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 3);
Packit 98cdb6
Packit 98cdb6
    gtk_widget_show (image);
Packit 98cdb6
    gtk_widget_show (label);
Packit 98cdb6
Packit 98cdb6
    return box;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
/* Our usual callback function */
Packit 98cdb6
static void callback( GtkWidget *widget,
Packit 98cdb6
                      gpointer   data )
Packit 98cdb6
{
Packit 98cdb6
    g_print ("Hello again - %s was pressed\n", (char *) data);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
int main( int   argc,
Packit 98cdb6
          char *argv[] )
Packit 98cdb6
{
Packit 98cdb6
    /* GtkWidget is the storage type for widgets */
Packit 98cdb6
    GtkWidget *window;
Packit 98cdb6
    GtkWidget *button;
Packit 98cdb6
    GtkWidget *box;
Packit 98cdb6
Packit 98cdb6
    gtk_init (&argc, &argv);
Packit 98cdb6
Packit 98cdb6
    /* Create a new window */
Packit 98cdb6
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
Packit 98cdb6
Packit 98cdb6
    gtk_window_set_title (GTK_WINDOW (window), "Pixmap'd Buttons!");
Packit 98cdb6
Packit 98cdb6
    /* It's a good idea to do this for all windows. */
Packit 98cdb6
    g_signal_connect (G_OBJECT (window), "destroy",
Packit 98cdb6
	              G_CALLBACK (gtk_main_quit), NULL);
Packit 98cdb6
Packit 98cdb6
    g_signal_connect (G_OBJECT (window), "delete-event",
Packit 98cdb6
	 	      G_CALLBACK (gtk_main_quit), NULL);
Packit 98cdb6
Packit 98cdb6
    /* Sets the border width of the window. */
Packit 98cdb6
    gtk_container_set_border_width (GTK_CONTAINER (window), 10);
Packit 98cdb6
Packit 98cdb6
    /* Create a new button */
Packit 98cdb6
    button = gtk_button_new ();
Packit 98cdb6
Packit 98cdb6
    /* Connect the "clicked" signal of the button to our callback */
Packit 98cdb6
    g_signal_connect (G_OBJECT (button), "clicked",
Packit 98cdb6
		      G_CALLBACK (callback), (gpointer) "cool button");
Packit 98cdb6
Packit 98cdb6
    /* This calls our box creating function */
Packit 98cdb6
    box = xpm_label_box ("info.xpm", "cool button");
Packit 98cdb6
Packit 98cdb6
    /* Pack and show all our widgets */
Packit 98cdb6
    gtk_widget_show (box);
Packit 98cdb6
Packit 98cdb6
    gtk_container_add (GTK_CONTAINER (button), box);
Packit 98cdb6
Packit 98cdb6
    gtk_widget_show (button);
Packit 98cdb6
Packit 98cdb6
    gtk_container_add (GTK_CONTAINER (window), button);
Packit 98cdb6
Packit 98cdb6
    gtk_widget_show (window);
Packit 98cdb6
Packit 98cdb6
    /* Rest in gtk_main and wait for the fun to begin! */
Packit 98cdb6
    gtk_main ();
Packit 98cdb6
Packit 98cdb6
    return 0;
Packit 98cdb6
}