comparison src/util.c @ 1117:f3e0f41beddb

[gaim-migrate @ 1127] Removed the old, crappy spellchecker code; replaced to use gtkspell. works much better. got gtkspell.[ch] out of gtkspell's cvs repository. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Tue, 21 Nov 2000 09:50:31 +0000
parents f168625b63fe
children 201ec77f3a60
comparison
equal deleted inserted replaced
1116:35476475f794 1117:f3e0f41beddb
728 } 728 }
729 g_free(who); 729 g_free(who);
730 return NULL; 730 return NULL;
731 } 731 }
732 732
733 /*
734
735 This function was taken from EveryBuddy and was written by
736 Torrey Searle. tsearle@valhalla.marko.net
737
738 http://www.everybuddy.com
739
740 */
741
742 void spell_checker(GtkWidget * text)
743 {
744 int start = 0;
745 int end = 0;
746 static GdkColor * color = NULL;
747 int ignore = 0;
748 int point = gtk_editable_get_position(GTK_EDITABLE(text));
749
750 GString * string;
751
752 if( color == NULL )
753 {
754 GdkColormap * gc = gtk_widget_get_colormap( text );
755 color = g_new0(GdkColor, 1);
756 color->red = 255 * 256;
757 gdk_colormap_alloc_color(gc, color, FALSE, TRUE);
758 }
759
760
761
762 end = point-1;
763 for( start = end-1; start >= 0; start-- )
764 {
765 if((isspace(GTK_TEXT_INDEX(GTK_TEXT(text), start)) || start == 0)
766 && !ignore)
767 {
768 char * word;
769 FILE * file;
770 char buff[1024];
771 word = gtk_editable_get_chars( GTK_EDITABLE(text), start, end );
772 g_snprintf(buff, 1024, "echo \"%s\" | ispell -l", word );
773 file = popen(buff, "r");
774
775 buff[0] = 0;
776 fgets(buff, 255, file);
777
778 if(strlen(buff) > 0 )
779 {
780 string = g_string_new(word);
781 gtk_text_set_point(GTK_TEXT(text), end);
782 gtk_text_backward_delete(GTK_TEXT(text), end-start);
783 gtk_text_insert( GTK_TEXT(text), NULL, color, NULL,
784 string->str, string->len );
785 g_string_free( string, TRUE );
786 }
787 else
788 {
789 string = g_string_new(word);
790 gtk_text_set_point(GTK_TEXT(text), end);
791 gtk_text_backward_delete(GTK_TEXT(text), end-start);
792 gtk_text_insert( GTK_TEXT(text), NULL, &(text->style->fg[0]), NULL,
793 string->str, string->len );
794 g_string_free( string, TRUE );
795 }
796 pclose( file);
797 g_free(word);
798 break;
799 }
800 else if(!isalpha(GTK_TEXT_INDEX(GTK_TEXT(text), start)))
801 {
802 ignore = 1;
803 }
804 }
805 gtk_text_set_point(GTK_TEXT(text), point);
806
807 }
808 733
809 /* Look for %n, %d, or %t in msg, and replace with the sender's name, date, 734 /* Look for %n, %d, or %t in msg, and replace with the sender's name, date,
810 or time */ 735 or time */
811 char *away_subs(char *msg, char *name) 736 char *away_subs(char *msg, char *name)
812 { 737 {