Impossible de faire fonctionner des GtkRadioMenuItem.
Bonjour,
Je n'arrive pas à faire fonctionner des GtkRadioMenuItem, le programme plante lorsque je clique sur un menuitem. Voici le code de création des radio menu item:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| menu_scheme_list = NULL;
menuitem_s_classic = gtk_radio_menu_item_new_with_label (menu_scheme_list,"classic");
gtk_widget_show(menuitem_s_classic);
gtk_container_add (GTK_CONTAINER (menu6), menuitem_s_classic);
gtk_radio_menu_item_set_group(GTK_RADIO_MENU_ITEM (menuitem_s_classic),menu_scheme_list);
menu_scheme_list = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM (menuitem_s_classic));
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem_s_classic), TRUE);
g_signal_connect(G_OBJECT(menuitem_s_classic),"activate",G_CALLBACK(toggle_menuitem_s_classic),NULL);
menuitem_s_cobalt = gtk_radio_menu_item_new_with_label (menu_scheme_list,"cobalt");
gtk_widget_show(menuitem_s_cobalt);
gtk_container_add (GTK_CONTAINER (menu6), menuitem_s_cobalt);
gtk_radio_menu_item_set_group(GTK_RADIO_MENU_ITEM (menuitem_s_cobalt),menu_scheme_list);
menu_scheme_list = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM (menuitem_s_cobalt));
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem_s_cobalt), FALSE);
g_signal_connect(G_OBJECT(menuitem_s_cobalt),"activate",G_CALLBACK(toggle_menuitem_s_cobalt),NULL); |
Et les callback:
Code:
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
| void toggle_menuitem_s_classic(GtkWidget *widget, gpointer p)
{
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {
} else {
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem_s_classic),TRUE);
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem_s_cobalt),FALSE);
LISTE_OPEN_FILES *l = liste_editor_open_files;
while(l != NULL) {
gtk_source_buffer_set_style_scheme(l->sBuf,s_classic);
l = l->suiv;
}
}
}
void toggle_menuitem_s_cobalt(GtkWidget *widget, gpointer p)
{
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {
} else {
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem_s_classic),FALSE);
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem_s_cobalt),TRUE);
LISTE_OPEN_FILES *l = liste_editor_open_files;
while(l != NULL) {
gtk_source_buffer_set_style_scheme(l->sBuf,s_cobalt);
l = l->suiv;
}
}
} |
Quand je commente les lignes avec gtk_check_menu_item_set_active, le programme ne plante pas, mais l'ancien menuitem activé reste activé, et celui sur lequel j'ai cliqué ne s'active pas.