Mercurial > pidgin.yaz
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 { |