SF.net SVN: geany-plugins:[137] trunk/spellcheck
eht16 at users.sourceforge.net
eht16 at xxxxx
Sun Aug 3 18:55:54 UTC 2008
Revision: 137
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=137&view=rev
Author: eht16
Date: 2008-08-03 18:55:54 +0000 (Sun, 03 Aug 2008)
Log Message:
-----------
Disable the Tools menu item and the keybinding callbacks when a dictionary could not be loaded.
Improve error message when loading the chosen dictionary failed.
Modified Paths:
--------------
trunk/spellcheck/ChangeLog
trunk/spellcheck/src/spellcheck.c
Modified: trunk/spellcheck/ChangeLog
===================================================================
--- trunk/spellcheck/ChangeLog 2008-07-27 10:19:37 UTC (rev 136)
+++ trunk/spellcheck/ChangeLog 2008-08-03 18:55:54 UTC (rev 137)
@@ -1,3 +1,11 @@
+2008-08-03 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+
+ * src/spellcheck.c:
+ Disable the Tools menu item and the keybinding callbacks when
+ a dictionary could not be loaded.
+ Improve error message when loading the chosen dictionary failed.
+
+
2008-07-20 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
* src/spellcheck.c:
Modified: trunk/spellcheck/src/spellcheck.c
===================================================================
--- trunk/spellcheck/src/spellcheck.c 2008-07-27 10:19:37 UTC (rev 136)
+++ trunk/spellcheck/src/spellcheck.c 2008-08-03 18:55:54 UTC (rev 137)
@@ -415,15 +415,6 @@
}
-static void broker_init_failed()
-{
- const gchar *err = enchant_broker_get_error(sc->broker);
- p_dialogs->show_msgbox(GTK_MESSAGE_ERROR,
- _("The Enchant library couldn't be initialized (%s)."),
- (err != NULL) ? err : _("unknown error"));
-}
-
-
static void perform_check(GeanyDocument *doc)
{
p_editor->clear_indicators(doc->editor);
@@ -487,25 +478,44 @@
}
+static void broker_init_failed()
+{
+ const gchar *err = enchant_broker_get_error(sc->broker);
+ p_dialogs->show_msgbox(GTK_MESSAGE_ERROR,
+ _("The Enchant library couldn't be initialized (%s)."),
+ (err != NULL) ? err : _("unknown error (maybe the chosen language is not available)"));
+}
+
+
static void init_enchant_dict()
{
- /* Request new dict object */
+ /* Release a previous dict object */
if (sc->dict != NULL)
enchant_broker_free_dict(sc->broker, sc->dict);
+ /* Request new dict object */
sc->dict = enchant_broker_request_dict(sc->broker, sc->default_language);
if (sc->dict == NULL)
{
broker_init_failed();
- return;
+ gtk_widget_set_sensitive(plugin_fields->menu_item, FALSE);
}
+ else
+ {
+ gtk_widget_set_sensitive(plugin_fields->menu_item, TRUE);
+ }
}
static void on_menu_item_activate(GtkMenuItem *menuitem, gpointer gdata)
{
- GeanyDocument *doc = p_document->get_current();
+ GeanyDocument *doc;
+ if (sc->dict == NULL)
+ return;
+
+ doc = p_document->get_current();
+
/* Another language was chosen from the menu item, so make it default for this session. */
if (gdata != NULL)
setptr(sc->default_language, g_strdup(gdata));
@@ -551,6 +561,8 @@
static const gchar *get_default_lang(void)
{
const gchar *lang = g_getenv("LANG");
+ /** TODO check whether the returned lang is actually provided by enchant and
+ * choose something else if not */
if (NZV(lang))
{
if (g_ascii_strncasecmp(lang, "C", 1) == 0)
@@ -608,7 +620,8 @@
g_object_get_data(G_OBJECT(dialog), "check_msgwin"))));
g_key_file_load_from_file(config, sc->config_file, G_KEY_FILE_NONE, NULL);
- g_key_file_set_string(config, "spellcheck", "language", sc->default_language);
+ if (sc->default_language != NULL) /* lang may be NULL */
+ g_key_file_set_string(config, "spellcheck", "language", sc->default_language);
g_key_file_set_boolean(config, "spellcheck", "check_while_typing", sc->check_while_typing);
g_key_file_set_boolean(config, "spellcheck", "use_msgwin", sc->use_msgwin);
@@ -660,12 +673,11 @@
}
-static GtkWidget *create_menu()
+static GtkWidget *create_menu(GtkWidget *sp_item)
{
- GtkWidget *sp_item, *menu, *subitem;
+ GtkWidget *menu, *subitem;
guint i;
- sp_item = gtk_menu_item_new_with_mnemonic(_("_Spell Check"));
gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu), sp_item);
menu = gtk_menu_new();
@@ -713,6 +725,9 @@
locale_init();
+ plugin_fields->menu_item = sp_item = gtk_menu_item_new_with_mnemonic(_("_Spell Check"));
+ plugin_fields->flags = PLUGIN_IS_DOCUMENT_SENSITIVE;
+
sc->broker = enchant_broker_init();
init_enchant_dict();
@@ -725,12 +740,9 @@
create_dicts_array();
create_edit_menu();
- sp_item = create_menu();
+ sp_item = create_menu(sp_item);
gtk_widget_show_all(sp_item);
- plugin_fields->menu_item = sp_item;
- plugin_fields->flags = PLUGIN_IS_DOCUMENT_SENSITIVE;
-
sc->signal_id = g_signal_connect(geany->main_widgets->window,
"key-release-event", G_CALLBACK(on_key_release), NULL);
@@ -761,14 +773,17 @@
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 3);
combo = gtk_combo_box_new_text();
-
+/*
for (i = 0; i < sc->dicts->len; i++)
{
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), g_ptr_array_index(sc->dicts, i));
if (p_utils->str_equal(g_ptr_array_index(sc->dicts, i), sc->default_language))
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), i);
- }
+ }*/
+ /* if the default language couldn't be selected, select the first available language */
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(combo)) == -1)
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
if (sc->dicts->len > 20)
gtk_combo_box_set_wrap_width(GTK_COMBO_BOX(combo), 3);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list