[evolution-patches] [gtkhtml] patch to display spelling suggestions in the menu



Hi all,
Attached is a patch which puts all the spelling suggestions (from
various dictionaries) in the right click menu itself, instead of another
dialog.
Find the attached screen-shot which shows the exact way it works. The
patch is for the html-editor component of gtkthml.

Suggestions for improvements are welcome.

Cheers,
partha
Index: popup.c
===================================================================
RCS file: /cvs/gnome/gtkhtml/components/html-editor/popup.c,v
retrieving revision 1.90
diff -u -p -r1.90 popup.c
--- popup.c	19 Dec 2005 06:40:33 -0000	1.90
+++ popup.c	19 Jan 2006 17:15:42 -0000
@@ -292,6 +292,12 @@ spell_check_cb (GtkWidget *mi, GtkHTMLCo
 }
 
 static void
+replace_suggestion_cb (GtkWidget *mi, GtkHTMLControlData *cd)
+{
+	html_engine_replace_spell_word_with (cd->html->engine, g_object_get_data (G_OBJECT (mi), "rep_word"));
+}
+
+static void
 spell_add (GtkWidget *mi, GtkHTMLControlData *cd)
 {
 	HTMLEngine *e = cd->html->engine;
@@ -372,7 +378,7 @@ insert_html (GtkWidget *mi, GtkHTMLContr
         (*props) ++;
 
 #define SUBMENU(l) \
-		        menuitem = gtk_menu_item_new_with_label (l); \
+		        menuitem = gtk_menu_item_new_with_mnemonic (l); \
 			gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); \
 			gtk_widget_show (menuitem); \
 			(*items)++; items_sep++; \
@@ -534,7 +540,33 @@ prepare_properties_and_menu (GtkHTMLCont
 	if (!active && obj && html_object_is_text (obj)
 	    && !html_engine_spell_word_is_valid (e)) {
 		ADD_SEP;
-		ADD_ITEM (_("Check Word Spelling..."), spell_check_cb, NONE);
+		if (get_n_languages (cd) >= 1) {
+			gchar *word;
+			gint i, j, k;
+			GNOME_Spell_StringSeq* seq;
+			CORBA_Environment ev;
+
+			for (i = 0; i < cd->languages->_length; i ++) {
+				if (strstr (html_engine_get_language (cd->html->engine), cd->languages->_buffer [i].abbreviation)) {
+					word = html_engine_get_spell_word (cd->html->engine);
+					CORBA_exception_init (&ev);
+					seq = GNOME_Spell_Dictionary_getSuggestions(cd->dict, word, &ev);
+					CORBA_exception_free (&ev);
+					g_free (word);
+					SUBMENU (cd->languages->_buffer [i].name);
+					k = seq->_length/10;
+					for (j = 0; j < seq->_length; j+=2) {
+						if (!strcmp (cd->languages->_buffer[i].abbreviation, (char *)seq->_buffer[j+1])) {
+							ADD_ITEM ((gchar *)seq->_buffer[j], replace_suggestion_cb, NONE);
+							g_object_set_data (G_OBJECT (menuitem), "rep_word", (gchar *)seq->_buffer[j]);
+						}
+					}
+					END_SUBMENU;
+				}
+			}
+			
+		} 
+		ADD_SEP;
 		ADD_ITEM (_("Ignore Misspelled Word"), spell_ignore, NONE);		
 		if (get_n_languages (cd) > 1) {
 			gchar *lang;

Attachment: screenshot.jpg
Description: JPEG image



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]