96
101
if (sc_info->toolbar_button == NULL)
98
103
sc_info->toolbar_button = gtk_toggle_tool_button_new_from_stock(GTK_STOCK_SPELL_CHECK);
99
#if GTK_CHECK_VERSION(2, 12, 0)
100
gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(sc_info->toolbar_button),
101
_("Toggle spell check while typing"));
104
sc_gui_update_tooltip();
103
106
plugin_add_toolbar_item(geany_plugin, sc_info->toolbar_button);
104
107
ui_add_document_sensitive(GTK_WIDGET(sc_info->toolbar_button));
109
112
gtk_widget_show(GTK_WIDGET(sc_info->toolbar_button));
111
ignore_sc_callback = TRUE;
114
sc_ignore_callback = TRUE;
112
115
gtk_toggle_tool_button_set_active(
113
116
GTK_TOGGLE_TOOL_BUTTON(sc_info->toolbar_button), sc_info->check_while_typing);
114
ignore_sc_callback = FALSE;
117
sc_ignore_callback = FALSE;
401
static void menu_item_activate_cb(GtkMenuItem *menuitem, gpointer gdata)
404
static void update_labels(void)
408
label = g_strdup_printf(_("Default (%s)"),
409
(sc_info->default_language != NULL) ? sc_info->default_language : _("unknown"));
411
gtk_menu_item_set_label(GTK_MENU_ITEM(sc_info->submenu_item_default), label);
415
#if GTK_CHECK_VERSION(2, 12, 0)
416
if (sc_info->toolbar_button != NULL)
418
gchar *text = g_strdup_printf(
419
_("Toggle spell check while typing (current language: %s)"),
420
(sc_info->default_language != NULL) ? sc_info->default_language : _("unknown"));
421
gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(sc_info->toolbar_button), text);
428
static void menu_item_toggled_cb(GtkCheckMenuItem *menuitem, gpointer gdata)
403
430
GeanyDocument *doc;
432
if (sc_ignore_callback)
435
if (menuitem != NULL &&
436
GTK_IS_CHECK_MENU_ITEM(menuitem) &&
437
! gtk_check_menu_item_get_active(menuitem))
405
441
doc = document_get_current();
407
443
/* Another language was chosen from the menu item, so make it default for this session. */
408
444
if (gdata != NULL)
409
446
setptr(sc_info->default_language, g_strdup(gdata));
411
sc_speller_reinit_enchant_dict();
447
sc_speller_reinit_enchant_dict();
413
451
editor_indicator_clear(doc->editor, GEANY_INDICATOR_ERROR);
414
452
if (sc_info->use_msgwin)
454
GtkWidget *sc_gui_create_menu(GtkWidget *sp_item)
492
void sc_gui_update_menu(void)
494
GtkWidget *child, *menu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(sc_info->menu_item));
495
GList *l, *children = gtk_container_get_children(GTK_CONTAINER(menu));
497
sc_ignore_callback = TRUE;
498
for (l = children; l != NULL; l = g_list_next(l))
500
if ((child = GTK_BIN(l->data)->child) != NULL)
502
if (GTK_IS_LABEL(child))
504
if (utils_str_equal(sc_info->default_language, gtk_label_get_text(GTK_LABEL(child))))
505
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(l->data), TRUE);
509
sc_ignore_callback = FALSE;
515
void sc_gui_create_menu(GtkWidget *sp_item)
456
517
GtkWidget *menu, *menu_item;
519
GSList *group = NULL;
459
522
gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu), sp_item);
461
524
menu = gtk_menu_new();
462
525
gtk_menu_item_set_submenu(GTK_MENU_ITEM(sp_item), menu);
464
sc_info->submenu_item_default = gtk_menu_item_new_with_mnemonic(_("Default"));
527
sc_info->submenu_item_default = gtk_menu_item_new();
465
528
gtk_container_add(GTK_CONTAINER(menu), sc_info->submenu_item_default);
466
g_signal_connect(sc_info->submenu_item_default, "activate", G_CALLBACK(menu_item_activate_cb), NULL);
529
g_signal_connect(sc_info->submenu_item_default, "activate",
530
G_CALLBACK(menu_item_toggled_cb), NULL);
468
534
menu_item = gtk_separator_menu_item_new();
469
535
gtk_container_add(GTK_CONTAINER(menu), menu_item);
537
sc_ignore_callback = TRUE;
471
538
for (i = 0; i < sc_info->dicts->len; i++)
473
menu_item = gtk_menu_item_new_with_label(g_ptr_array_index(sc_info->dicts, i));
540
label = g_ptr_array_index(sc_info->dicts, i);
541
menu_item = gtk_radio_menu_item_new_with_label(group, label);
542
group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menu_item));
543
if (utils_str_equal(sc_info->default_language, label))
544
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_item), TRUE);
474
545
gtk_container_add(GTK_CONTAINER(menu), menu_item);
475
g_signal_connect(menu_item, "activate",
476
G_CALLBACK(menu_item_activate_cb), g_ptr_array_index(sc_info->dicts, i));
546
g_signal_connect(menu_item, "toggled", G_CALLBACK(menu_item_toggled_cb), label);
548
sc_ignore_callback = FALSE;