#include #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); 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 ( window->window // NULL //UBUNTU-10.0.4 ,(char*) grace_icon_bits , grace_icon_width , grace_icon_height , gg_depth ,&black ,&white); /* 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 (); /******************************************************* * Sous Ubuntu-10.04 en local, l'affichage simultané * du label et de l'image ne marche pas * Alors que via le réseau on voit les deux sous Debian! ******************************************************/ gtk_button_set_label (GTK_BUTTON(button) ,"Essai"); gtk_button_set_image (GTK_BUTTON(button) ,pixmapwid); /**********************************/ // gtk_button_set_image_position (GTK_BUTTON(button) ,GTK_POS_RIGHT); 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; }