Blame examples/pixmap/pixmap.c

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