[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