Blame examples/pixmap/pixmap.c

Packit 98cdb6
Packit 98cdb6
#include "config.h"
Packit 98cdb6
#include <gtk/gtk.h>
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
/* XPM data of Open-File icon */
Packit 98cdb6
static const char * xpm_data[] = {
Packit 98cdb6
"16 16 3 1",
Packit 98cdb6
"       c None",
Packit 98cdb6
".      c #000000000000",
Packit 98cdb6
"X      c #FFFFFFFFFFFF",
Packit 98cdb6
"                ",
Packit 98cdb6
"   ......       ",
Packit 98cdb6
"   .XXX.X.      ",
Packit 98cdb6
"   .XXX.XX.     ",
Packit 98cdb6
"   .XXX.XXX.    ",
Packit 98cdb6
"   .XXX.....    ",
Packit 98cdb6
"   .XXXXXXX.    ",
Packit 98cdb6
"   .XXXXXXX.    ",
Packit 98cdb6
"   .XXXXXXX.    ",
Packit 98cdb6
"   .XXXXXXX.    ",
Packit 98cdb6
"   .XXXXXXX.    ",
Packit 98cdb6
"   .XXXXXXX.    ",
Packit 98cdb6
"   .XXXXXXX.    ",
Packit 98cdb6
"   .........    ",
Packit 98cdb6
"                ",
Packit 98cdb6
"                "};
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
/* when invoked (via signal delete_event), terminates the application.
Packit 98cdb6
 */
Packit 98cdb6
gint close_application( GtkWidget *widget,
Packit 98cdb6
                        GdkEvent  *event,
Packit 98cdb6
                        gpointer   data )
Packit 98cdb6
{
Packit 98cdb6
    gtk_main_quit ();
Packit 98cdb6
    return FALSE;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
/* is invoked when the button is clicked.  It just prints a message.
Packit 98cdb6
 */
Packit 98cdb6
void button_clicked( GtkWidget *widget,
Packit 98cdb6
                     gpointer   data ) {
Packit 98cdb6
    g_print ("button clicked\n");
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, *pixmapwid, *button;
Packit 98cdb6
    GdkPixmap *pixmap;
Packit 98cdb6
    GdkBitmap *mask;
Packit 98cdb6
    GtkStyle *style;
Packit 98cdb6
Packit 98cdb6
    /* create the main window, and attach delete_event signal to terminating
Packit 98cdb6
       the application */
Packit 98cdb6
    gtk_init (&argc, &argv);
Packit 98cdb6
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
Packit 98cdb6
    g_signal_connect (window, "delete-event",
Packit 98cdb6
                      G_CALLBACK (close_application), NULL);
Packit 98cdb6
    gtk_container_set_border_width (GTK_CONTAINER (window), 10);
Packit 98cdb6
    gtk_widget_show (window);
Packit 98cdb6
Packit 98cdb6
    /* now for the pixmap from gdk */
Packit 98cdb6
    style = gtk_widget_get_style (window);
Packit 98cdb6
    pixmap = gdk_pixmap_create_from_xpm_d (window->window,  &mask,
Packit 98cdb6
                                           &style->bg[GTK_STATE_NORMAL],
Packit 98cdb6
                                           (gchar **)xpm_data);
Packit 98cdb6
Packit 98cdb6
    /* a pixmap widget to contain the pixmap */
Packit 98cdb6
    pixmapwid = gtk_image_new_from_pixmap (pixmap, mask);
Packit 98cdb6
    gtk_widget_show (pixmapwid);
Packit 98cdb6
Packit 98cdb6
    /* a button to contain the pixmap widget */
Packit 98cdb6
    button = gtk_button_new ();
Packit 98cdb6
    gtk_container_add (GTK_CONTAINER (button), pixmapwid);
Packit 98cdb6
    gtk_container_add (GTK_CONTAINER (window), button);
Packit 98cdb6
    gtk_widget_show (button);
Packit 98cdb6
Packit 98cdb6
    g_signal_connect (button, "clicked",
Packit 98cdb6
                      G_CALLBACK (button_clicked), NULL);
Packit 98cdb6
Packit 98cdb6
    /* show the window */
Packit 98cdb6
    gtk_main ();
Packit 98cdb6
Packit 98cdb6
    return 0;
Packit 98cdb6
}