[Goodies-commits] r4650 - in xfce4-dict/trunk: . lib
Enrico Troeger
enrico at xfce.org
Tue Apr 22 21:10:49 CEST 2008
Author: enrico
Date: 2008-04-22 19:10:49 +0000 (Tue, 22 Apr 2008)
New Revision: 4650
Modified:
xfce4-dict/trunk/ChangeLog
xfce4-dict/trunk/lib/aspell.c
xfce4-dict/trunk/lib/common.h
xfce4-dict/trunk/lib/dictd.c
xfce4-dict/trunk/lib/gui.c
Log:
If searching with the Dict method and nothing was found, automatically search with aspell (if available) as fallback in case of a typo.
Modified: xfce4-dict/trunk/ChangeLog
===================================================================
--- xfce4-dict/trunk/ChangeLog 2008-04-22 14:07:37 UTC (rev 4649)
+++ xfce4-dict/trunk/ChangeLog 2008-04-22 19:10:49 UTC (rev 4650)
@@ -1,3 +1,9 @@
+2008-04-20 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+
+ * If searching with the Dict method and nothing was found, automatically
+ search with aspell (if available) as fallback in case of a typo.
+
+
2008-04-18 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
* Add command line option "--ignore-plugin" to start the stand-alone
Modified: xfce4-dict/trunk/lib/aspell.c
===================================================================
--- xfce4-dict/trunk/lib/aspell.c 2008-04-22 14:07:37 UTC (rev 4649)
+++ xfce4-dict/trunk/lib/aspell.c 2008-04-22 19:10:49 UTC (rev 4650)
@@ -59,10 +59,8 @@
if (cond & (G_IO_IN | G_IO_PRI))
{
gchar *msg, *tmp;
- GtkTextIter iter;
DictData *dd = data;
- gtk_text_buffer_get_start_iter(dd->main_textbuffer, &iter);
while (g_io_channel_read_line(ioc, &msg, NULL, NULL, NULL) && msg != NULL)
{
if (msg[0] == '&')
@@ -71,24 +69,24 @@
dict_gui_status_add(dd, _("%d suggestion(s) found."), atoi(tmp));
tmp = g_strdup_printf(_("Suggestions for \"%s\":\n"), dd->searched_word);
- gtk_text_buffer_insert_with_tags(dd->main_textbuffer, &iter, tmp, -1,
- dd->main_boldtag, NULL);
+ gtk_text_buffer_insert_with_tags(
+ dd->main_textbuffer, &dd->textiter, tmp, -1, dd->main_boldtag, NULL);
g_free(tmp);
tmp = strchr(msg, ':') + 2;
- gtk_text_buffer_insert(dd->main_textbuffer, &iter, g_strchomp(tmp), -1);
+ gtk_text_buffer_insert(dd->main_textbuffer, &dd->textiter, g_strchomp(tmp), -1);
}
else if (msg[0] == '*')
{
tmp = g_strdup_printf(_("\"%s\" is spelled correctly.\n"), dd->searched_word);
- gtk_text_buffer_insert(dd->main_textbuffer, &iter, tmp, -1);
+ gtk_text_buffer_insert(dd->main_textbuffer, &dd->textiter, tmp, -1);
g_free(tmp);
}
else if (msg[0] == '#')
{
tmp = g_strdup_printf(_("No suggestions could be found for \"%s\".\n"),
dd->searched_word);
- gtk_text_buffer_insert(dd->main_textbuffer, &iter, tmp, -1);
+ gtk_text_buffer_insert(dd->main_textbuffer, &dd->textiter, tmp, -1);
g_free(tmp);
}
g_free(msg);
Modified: xfce4-dict/trunk/lib/common.h
===================================================================
--- xfce4-dict/trunk/lib/common.h 2008-04-22 14:07:37 UTC (rev 4649)
+++ xfce4-dict/trunk/lib/common.h 2008-04-22 19:10:49 UTC (rev 4650)
@@ -86,6 +86,7 @@
GtkWidget *main_textview;
GtkTextBuffer *main_textbuffer;
GtkTextTag *main_boldtag;
+ GtkTextIter textiter;
GdkPixbuf *icon;
} DictData;
Modified: xfce4-dict/trunk/lib/dictd.c
===================================================================
--- xfce4-dict/trunk/lib/dictd.c 2008-04-22 14:07:37 UTC (rev 4649)
+++ xfce4-dict/trunk/lib/dictd.c 2008-04-22 19:10:49 UTC (rev 4650)
@@ -48,6 +48,7 @@
#include "common.h"
#include "dictd.h"
#include "gui.h"
+#include "aspell.h"
#define BUF_SIZE 256
@@ -136,11 +137,20 @@
if (strncmp("552", answer, 3) == 0)
{
dict_gui_status_add(dd, _("Ready."));
- gtk_text_buffer_get_start_iter(dd->main_textbuffer, &iter);
+
tmp = g_strdup_printf(_("No matches could be found for \"%s\"."), dd->searched_word);
- gtk_text_buffer_insert(dd->main_textbuffer, &iter, tmp, -1);
+ gtk_text_buffer_insert(dd->main_textbuffer, &dd->textiter, tmp, -1);
g_free(tmp);
g_free(dd->query_buffer);
+
+ /* if we had no luck searching a word, maybe we have a typo so try searching with
+ * aspell */
+ if (NZV(dd->spell_bin))
+ {
+ gtk_text_buffer_insert(dd->main_textbuffer, &dd->textiter, "\n\n", 2);
+ dict_aspell_start_query(dd, dd->searched_word);
+ }
+
return FALSE;
}
else if (strncmp("150", answer, 3) != 0 && strncmp("552", answer, 3) != 0)
@@ -165,8 +175,8 @@
return FALSE;
}
- gtk_text_buffer_get_start_iter(dd->main_textbuffer, &iter);
- gtk_text_buffer_insert(dd->main_textbuffer, &iter, "\n", 1);
+ gtk_text_buffer_get_start_iter(dd->main_textbuffer, &dd->textiter);
+ gtk_text_buffer_insert(dd->main_textbuffer, &dd->textiter, "\n", 1);
i = -1;
while (i < max_lines)
@@ -175,7 +185,7 @@
if (strncmp(lines[i], "250", 3) == 0) break; /* end of data */
if (strncmp(lines[i], "error:", 6) == 0) /* an error occurred */
{
- gtk_text_buffer_insert(dd->main_textbuffer, &iter, lines[i], -1);
+ gtk_text_buffer_insert(dd->main_textbuffer, &dd->textiter, lines[i], -1);
break;
}
if (strncmp(lines[i], "151", 3) != 0) continue; /* unexpected line start, try next line */
@@ -188,9 +198,9 @@
if (tmp != NULL)
{
/* skip the found quote and the following space */
- gtk_text_buffer_insert_with_tags(dd->main_textbuffer, &iter, tmp + 2, -1,
+ gtk_text_buffer_insert_with_tags(dd->main_textbuffer, &dd->textiter, tmp + 2, -1,
dd->main_boldtag, NULL);
- gtk_text_buffer_insert(dd->main_textbuffer, &iter, "\n", 1);
+ gtk_text_buffer_insert(dd->main_textbuffer, &dd->textiter, "\n", 1);
}
}
if (i >= (max_lines - 2)) break;
@@ -202,13 +212,13 @@
stripped = g_strstrip(lines[i]);
if (strlen(stripped) > 0)
{
- gtk_text_buffer_insert(dd->main_textbuffer, &iter, stripped, -1);
+ gtk_text_buffer_insert(dd->main_textbuffer, &dd->textiter, stripped, -1);
if (i < (max_lines - 1) && lines[i + 1][0] != '.')
- gtk_text_buffer_insert(dd->main_textbuffer, &iter, "\n", 1);
+ gtk_text_buffer_insert(dd->main_textbuffer, &dd->textiter, "\n", 1);
}
i++;
}
- gtk_text_buffer_insert(dd->main_textbuffer, &iter, "\n\n", 2);
+ gtk_text_buffer_insert(dd->main_textbuffer, &dd->textiter, "\n\n", 2);
}
g_strfreev(lines);
g_free(dd->query_buffer);
Modified: xfce4-dict/trunk/lib/gui.c
===================================================================
--- xfce4-dict/trunk/lib/gui.c 2008-04-22 14:07:37 UTC (rev 4649)
+++ xfce4-dict/trunk/lib/gui.c 2008-04-22 19:10:49 UTC (rev 4650)
@@ -60,11 +60,11 @@
void dict_gui_clear_text_buffer(DictData *dd)
{
- GtkTextIter start_iter, end_iter;
+ GtkTextIter end_iter;
- gtk_text_buffer_get_start_iter(dd->main_textbuffer, &start_iter);
+ gtk_text_buffer_get_start_iter(dd->main_textbuffer, &dd->textiter);
gtk_text_buffer_get_end_iter(dd->main_textbuffer, &end_iter);
- gtk_text_buffer_delete(dd->main_textbuffer, &start_iter, &end_iter);
+ gtk_text_buffer_delete(dd->main_textbuffer, &dd->textiter, &end_iter);
gtk_widget_grab_focus(dd->main_entry);
}
More information about the Goodies-commits
mailing list