| 12
 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);
 
} | 
Partager