#include /* données XPM d'une icône "Ouvrir fichier" */ static const char * xpm_data[] = { "16 16 3 1", " c None", ". c #000000000000", "X c #FFFFFFFFFFFF", " ", " ...... ", " .XXX.X. ", " .XXX.XX. ", " .XXX.XXX. ", " .XXX..... ", " .XXXXXXX. ", " .XXXXXXX. ", " .XXXXXXX. ", " .XXXXXXX. ", " .XXXXXXX. ", " .XXXXXXX. ", " .XXXXXXX. ", " ......... ", " ", " "}; static char * grace_icon_xpm[] = { "48 39 6 1", " c #000000000000", ". c #FFFFFFFFFFFF", "X c #BEFBBEFBBEFB", "o c #51445144FFFF", "O c #FFFF14514103", "+ c #0000AAAA1861", " ", " .............................................. ", " .............................................. ", " ............... ............. ", " .............................................. ", " ................. ............... ", " .............................................. ", " ....... ...... ", " ....... XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...... ", " ....... XXXXXXXXXXXXXXXXXXXXXXXXXXoXXXX ...... ", " ..... . XXoooXX XXXXXXXXXXXoooXXXX ...... ", " .. .... XXXXXXXXXXXXXXXXXXXXXXXXoXooOXX ...... ", " .. .... XXOOOXX XXXXXXXXXXXXoXOoXXX ...... ", " .. .... XXXXXXXXXXXXXXXXXXXXXXXoOOXooXX ...... ", " .. .... XX+++XX XXXXooXXXXOoXXXXoXX ...... ", " .. .. . XXXXXXXXXXXXXXXoXoXXXOoXXXXXXXX ...... ", " .. .... XXXXXXXXXXXXXXXoXoXOOooXXXXXXXX ...... ", " .. .... XXXXXXXXXXXXXXoXXooXXoXXXXXXXXX ...... ", " .. .... XXXXXXXoXXXXXooXOOoXoXXXXXXXXXX ...... ", " .. .... XXXXXXooXXXXXoOOXXooXXXXXXXXXXX ...... ", " .. .. . XXXXXXoXoXXXoOXXXXXXXXXXXXXXXXX ...... ", " .. .... XXXXXooXoXXOoXXXXXXXXXXXXXXXXXX ...... ", " .. .... XXXXooXXooOooXXXXXXXXXXXXXXXXXX ...... ", " .. .... XXXXoXXOOoXoXXXXXXXXXX+++++XXXX ...... ", " .. .... XXXXoXOXXoXoXXXXXXXXXX+++++XXXX ...... ", " .. .. . XXXooOXXXXoXXXX+++++XX+++++XXXX ...... ", " .. .... XXOoXXXXXXXXXXX+++++XX+++++XXXX ...... ", " .. .... XOoXXXXX+++++XX+++++XX+++++XXXX ...... ", " .. .... XXoXXXXX+++++XX+++++XX+++++XXXX ...... ", " ....... XooXXXXX+++++XX+++++XX+++++XXXX ...... ", " ..... . XXXXXXXX+++++XX+++++XX+++++XXXX ...... ", " ....... ...... ", " .............................................. ", " ........ .... .... .... .... .... .... ....... ", " .............................................. ", " .............. ............ ", " .............................................. ", " .............................................. ", " "}; #define grace_icon_width 48 #define grace_icon_height 48 static unsigned char grace_icon_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x10, 0x02, 0x20, 0x02, 0x00, 0x00, 0x98, 0x02, 0x20, 0x02, 0x00, 0x00, 0x78, 0x02, 0x20, 0x02, 0x00, 0x00, 0x3c, 0x02, 0x20, 0x02, 0x00, 0x00, 0x66, 0x02, 0x20, 0x02, 0x00, 0x0c, 0x43, 0x02, 0x20, 0x02, 0x00, 0xce, 0x81, 0x02, 0x20, 0x02, 0x00, 0xaa, 0x01, 0x02, 0x20, 0x02, 0x00, 0xdb, 0x00, 0x02, 0x20, 0x02, 0x82, 0x57, 0x00, 0x02, 0x20, 0x02, 0x83, 0x71, 0x00, 0x02, 0x20, 0x02, 0xc7, 0x20, 0x00, 0x02, 0x20, 0x82, 0x65, 0x00, 0x00, 0x02, 0x20, 0xc2, 0x7c, 0x00, 0x00, 0x02, 0x20, 0x42, 0x2e, 0x00, 0x00, 0x02, 0x20, 0x42, 0x29, 0x00, 0x0e, 0x02, 0x20, 0xe2, 0x38, 0x00, 0x0e, 0x02, 0x20, 0x32, 0x10, 0x1c, 0x0e, 0x02, 0x20, 0x1a, 0x00, 0x1c, 0x0e, 0x02, 0x00, 0x12, 0x38, 0x1c, 0x0e, 0x02, 0x00, 0x1a, 0x38, 0x1c, 0x0e, 0x02, 0x00, 0x02, 0x38, 0x1c, 0x0e, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; static unsigned char grace_mask_bits[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; /* main window parameters */ static gint gg_wx ,gg_wy ,gg_ww ,gg_wh ,gg_depth; /* Termine l'application lorsqu'elle est appelée * via le signal "delete_event" */ void close_application( GtkWidget *widget, GdkEvent *event, gpointer *data ) { gtk_main_quit(); } /* Invoquée lorsque le bouton est cliqué. Affiche simplement * un message. */ void button_clicked( GtkWidget *widget, gpointer *data ) { printf( "bouton clique'\n" ); } int main( int argc, char *argv[] ) { /* GtkWidget est le type pour déclarer les widgets */ GtkWidget *window, *vbox , *pixmapwid, *button; GdkPixmap *pixmap; GdkBitmap *mask; GtkStyle *style; static GdkColor black = {0. ,0. , 0.}; static GdkColor white = {65000. ,65000. , 65000.}; /* Crée la fenêtre principale et attache le signal "delete_event" pour * terminer l'application */ gtk_init( &argc, &argv ); window = gtk_window_new( GTK_WINDOW_TOPLEVEL ); gtk_signal_connect( GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (close_application), NULL ); gtk_container_border_width( GTK_CONTAINER (window), 10 ); gtk_widget_show( window ); style = gtk_widget_get_style( window ); gdk_window_get_geometry (window->window ,&gg_wx ,&gg_wy ,&gg_ww ,&gg_wh ,&gg_depth); /* Utilisation de GDK pour créer le pixmap a partir du XPM : CA MARCHE * le mask est créé par la fonction */ // pixmap = gdk_pixmap_create_from_xpm_d( window->window, &mask, // &style->bg[GTK_STATE_NORMAL], // (gchar **)grace_icon_xpm ); // vbox = gtk_vbox_new (FALSE, 0); gtk_container_add( GTK_CONTAINER(window), vbox); gtk_widget_show(vbox); /* Utilisation de GDK pour créer le pixmap a partir du XbM */ /* CA MARCHE */ mask = gdk_bitmap_create_from_data (NULL ,(char*)grace_mask_bits ,48 ,48); pixmap = gdk_pixmap_create_from_data (NULL //UBUNTU-10.0.4 window->window ,(char*) grace_icon_bits , grace_icon_width , grace_icon_height , gg_depth //UBUNTU-10.0.4 -1 ,&black ,&white); // /* Charge un pixmap à partir d'un fichier */ // /* // pixmap = gdk_pixmap_create_from_xpm( window->window, &mask, // &style->bg[GTK_STATE_NORMAL], // "/usr/share/app-install/icons/_usr_share_pixmaps_fwbuilder_firewall_64.xpm" ); // */ /* Création d'un widget pixmap GTK pour contenir le pixmap GDK */ pixmapwid = gtk_image_new_from_pixmap ( pixmap, mask ); gtk_widget_show( pixmapwid ); gtk_box_pack_start (GTK_BOX(vbox) ,pixmapwid , TRUE, TRUE, 2); /* Création d'un bouton pour contenir le widget pixmap */ button = gtk_button_new (); gtk_button_set_image (GTK_BUTTON(button) ,pixmapwid); gtk_box_pack_start (GTK_BOX(vbox) ,button , TRUE, TRUE, 2); gtk_widget_show( button ); gtk_signal_connect( GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(button_clicked), NULL ); /* Affichage de la fenêtre */ gtk_main (); return 0; }