1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
#include <gtk/gtk.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
void routine_1();
void routine_2();
void routine_sortie();
void recreation_barre_outil();
GtkWidget *fenetre;
GtkWidget *text_view;
GtkWidget *scrollbar;
GtkWidget *box;
GtkWidget *barre_outil;
GtkTextBuffer *buffer;
GtkWidget *barre_menu;
GtkWidget *menu;
GtkWidget *menuitem_sousmenu_fichier,*menuitem_a,*menuitem_b, *menuitem_quit;
GtkWidget *svg;
int elements_barre_outil;
int main (int argc, char **argv)
{
gtk_init (&argc, &argv);
fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (fenetre), "Test");
gtk_window_set_default_size(GTK_WINDOW(fenetre), 640, 480);
g_signal_connect_object (G_OBJECT(fenetre),"delete-event",G_CALLBACK(routine_sortie),svg,1<<0);
box=gtk_vbox_new(FALSE,5);
gtk_container_add(GTK_CONTAINER(fenetre),box);
barre_menu=gtk_menu_bar_new();
menu=gtk_menu_new();
menuitem_sousmenu_fichier=gtk_menu_item_new_with_label("Fichier");
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem_sousmenu_fichier),menu);
gtk_menu_shell_append(GTK_MENU_SHELL(barre_menu),menuitem_sousmenu_fichier);
menuitem_a=gtk_menu_item_new_with_label("A");
g_signal_connect(G_OBJECT(menuitem_a),"activate",G_CALLBACK(routine_1),fenetre);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem_a);
menuitem_b=gtk_menu_item_new_with_label("B");
g_signal_connect(G_OBJECT(menuitem_b),"activate",G_CALLBACK(routine_2),fenetre);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem_b);
gtk_widget_set_sensitive(menuitem_a,FALSE);
menuitem_quit=gtk_menu_item_new_with_label("Quitter");
g_signal_connect(G_OBJECT(menuitem_quit),"activate",G_CALLBACK(routine_sortie),fenetre);
gtk_menu_shell_append(GTK_MENU_SHELL(menu),menuitem_quit);
gtk_box_pack_start(GTK_BOX(box),barre_menu,FALSE,FALSE,0);
barre_outil=gtk_toolbar_new();
gtk_box_pack_start(GTK_BOX(box),barre_outil,FALSE,FALSE,0);
gtk_toolbar_insert_stock(GTK_TOOLBAR(barre_outil),GTK_STOCK_STOP,NULL,NULL,routine_1,NULL,-1);
gtk_toolbar_insert_stock(GTK_TOOLBAR(barre_outil),GTK_STOCK_QUIT,NULL,NULL,routine_sortie,NULL,-1);
gtk_toolbar_set_style(GTK_TOOLBAR(barre_outil),GTK_TOOLBAR_ICONS);
gtk_toolbar_set_icon_size(GTK_TOOLBAR(barre_outil),GTK_ICON_SIZE_MENU);
elements_barre_outil=2;
gtk_widget_show_all(fenetre);
gtk_main();
return 0;
}
void routine_1()
{
gtk_widget_set_sensitive(menuitem_b,TRUE);
gtk_widget_set_sensitive(menuitem_a,FALSE);
elements_barre_outil=2;
recreation_barre_outil();
printf("routine 1 déclenchée\n");
}
void routine_2()
{
gtk_widget_set_sensitive(menuitem_a,TRUE);
gtk_widget_set_sensitive(menuitem_b,FALSE);
elements_barre_outil=1;
recreation_barre_outil();
printf("routine 2 déclenchée\n");
}
void routine_sortie()
{
GtkWidget *demande_fermeture;
GtkResponseType reponse_fermeture;
demande_fermeture=gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
"Etes-vous sur de vouloir quitter ?");
gtk_window_set_title (GTK_WINDOW (demande_fermeture), "Confirmation");
gtk_window_set_modal(GTK_WINDOW(demande_fermeture), TRUE);
reponse_fermeture=gtk_dialog_run(GTK_DIALOG (demande_fermeture));
gtk_widget_destroy(demande_fermeture);
if (reponse_fermeture==GTK_RESPONSE_YES)
{
gtk_main_quit();
}
}
void recreation_barre_outil()
{
gtk_widget_destroy(barre_outil);
barre_outil=gtk_toolbar_new();
gtk_box_pack_start(GTK_BOX(box),barre_outil,FALSE,FALSE,0);
if (elements_barre_outil==2)
gtk_toolbar_insert_stock(GTK_TOOLBAR(barre_outil),GTK_STOCK_STOP,NULL,NULL,routine_2,NULL,-1);
if (elements_barre_outil==1)
gtk_toolbar_insert_stock(GTK_TOOLBAR(barre_outil),GTK_STOCK_NEW,NULL,NULL,routine_1,NULL,-1);
gtk_toolbar_set_style(GTK_TOOLBAR(barre_outil),GTK_TOOLBAR_ICONS);
gtk_toolbar_set_icon_size(GTK_TOOLBAR(barre_outil),GTK_ICON_SIZE_MENU);
gtk_widget_show(barre_outil);
} |