Mercurial > pidgin
comparison src/gtkutils.c @ 12067:e859c1663a27
[gaim-migrate @ 14362]
Revert GtkSpell dynamic loading. A GtkSpell plugin is a better idea, and nosnilmot says he has one that's close to fully functional.
committer: Tailor Script <tailor@pidgin.im>
| author | Richard Laager <rlaager@wiktel.com> |
|---|---|
| date | Sun, 13 Nov 2005 01:44:11 +0000 |
| parents | cb9d1a005aef |
| children | 3b52d94437f3 |
comparison
equal
deleted
inserted
replaced
| 12066:ee8312c764b1 | 12067:e859c1663a27 |
|---|---|
| 145 imhtml = gtk_imhtml_new(NULL, NULL); | 145 imhtml = gtk_imhtml_new(NULL, NULL); |
| 146 gtk_imhtml_set_editable(GTK_IMHTML(imhtml), editable); | 146 gtk_imhtml_set_editable(GTK_IMHTML(imhtml), editable); |
| 147 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), GTK_IMHTML_ALL ^ GTK_IMHTML_IMAGE); | 147 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), GTK_IMHTML_ALL ^ GTK_IMHTML_IMAGE); |
| 148 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(imhtml), GTK_WRAP_WORD_CHAR); | 148 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(imhtml), GTK_WRAP_WORD_CHAR); |
| 149 if (editable && gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) | 149 if (editable && gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
| 150 gaim_gtk_gtkspell_setup(GTK_TEXT_VIEW(imhtml)); | 150 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(imhtml)); |
| 151 gtk_widget_show(imhtml); | 151 gtk_widget_show(imhtml); |
| 152 | 152 |
| 153 if (editable) { | 153 if (editable) { |
| 154 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(toolbar), imhtml); | 154 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(toolbar), imhtml); |
| 155 gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(toolbar), "default"); | 155 gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(toolbar), "default"); |
| 895 | 895 |
| 896 g_free(tmp); | 896 g_free(tmp); |
| 897 return buf; | 897 return buf; |
| 898 } | 898 } |
| 899 | 899 |
| 900 void | |
| 901 gaim_gtk_setup_gtkspell(GtkTextView *textview) | |
| 902 { | |
| 900 #ifdef USE_GTKSPELL | 903 #ifdef USE_GTKSPELL |
| 901 static GtkSpell* (*gtkspell_get_from_text_view_ptr)(GtkTextView *view); | |
| 902 static void (*gtkspell_detach_ptr)(GtkSpell *spell); | |
| 903 static GtkSpell* (*gtkspell_new_attach_ptr)(GtkTextView *view, const gchar *lang, GError **error); | |
| 904 static int gtkspell_available = -1; /* -1 unknown, 0 false, 1 true */ | |
| 905 | |
| 906 #define GTKSPELL_SONAME "libgtkspell." G_MODULE_SUFFIX ".0" | |
| 907 | |
| 908 static void | |
| 909 setup_gtkspell() | |
| 910 { | |
| 911 #if GLIB_CHECK_VERSION(2,3,3) | |
| 912 GModule *handle = g_module_open(GTKSPELL_SONAME, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL); | |
| 913 #else | |
| 914 GModule *handle = g_module_open(GTKSPELL_SONAME, G_MODULE_BIND_LAZY); | |
| 915 #endif | |
| 916 | |
| 917 if (handle != NULL) | |
| 918 { | |
| 919 gpointer ptr; /* squash GCC strict aliasing warnings */ | |
| 920 | |
| 921 g_module_symbol(handle, "gtkspell_new_attach", &ptr); | |
| 922 gtkspell_new_attach_ptr = ptr; | |
| 923 | |
| 924 g_module_symbol(handle, "gtkspell_detach", &ptr); | |
| 925 gtkspell_detach_ptr = ptr; | |
| 926 | |
| 927 g_module_symbol(handle, "gtkspell_get_from_text_view", &ptr); | |
| 928 gtkspell_get_from_text_view_ptr = ptr; | |
| 929 | |
| 930 gtkspell_available = TRUE; | |
| 931 } | |
| 932 else | |
| 933 { | |
| 934 gaim_debug_warning("gtkspell", "Failed to load %s: %s\n", GTKSPELL_SONAME, g_module_error()); | |
| 935 gtkspell_available = FALSE; | |
| 936 } | |
| 937 } | |
| 938 | |
| 939 gboolean | |
| 940 gaim_gtk_gtkspell_is_available() | |
| 941 { | |
| 942 if (gtkspell_available == -1) | |
| 943 setup_gtkspell(); | |
| 944 | |
| 945 return gtkspell_available; | |
| 946 } | |
| 947 | |
| 948 void | |
| 949 gaim_gtk_gtkspell_setup(GtkTextView *textview) | |
| 950 { | |
| 951 GError *error = NULL; | 904 GError *error = NULL; |
| 952 char *locale = NULL; | 905 char *locale = NULL; |
| 953 | 906 |
| 954 g_return_if_fail(textview != NULL); | 907 g_return_if_fail(textview != NULL); |
| 955 g_return_if_fail(GTK_IS_TEXT_VIEW(textview)); | 908 g_return_if_fail(GTK_IS_TEXT_VIEW(textview)); |
| 956 | 909 |
| 957 if (!gaim_gtk_gtkspell_is_available()) | 910 if (gtkspell_new_attach(textview, locale, &error) == NULL && error) |
| 958 return; | |
| 959 | |
| 960 if (gtkspell_new_attach_ptr(textview, locale, &error) == NULL && error) | |
| 961 { | 911 { |
| 962 gaim_debug_warning("gtkspell", "Failed to setup GtkSpell: %s\n", error->message); | 912 gaim_debug_warning("gtkspell", "Failed to setup GtkSpell: %s\n", |
| 913 error->message); | |
| 963 g_error_free(error); | 914 g_error_free(error); |
| 964 } | 915 } |
| 965 } | 916 #endif /* USE_GTKSPELL */ |
| 966 | 917 } |
| 967 void | |
| 968 gaim_gtk_gtkspell_unsetup(GtkTextView *textview) | |
| 969 { | |
| 970 GtkSpell *spell; | |
| 971 | |
| 972 if (!gtkspell_available) | |
| 973 return; | |
| 974 | |
| 975 spell = gtkspell_get_from_text_view_ptr(textview); | |
| 976 gtkspell_detach_ptr(spell); | |
| 977 } | |
| 978 | |
| 979 #else /* !USE_GTKSPELL */ | |
| 980 | |
| 981 gboolean | |
| 982 gaim_gtk_gtkspell_is_available() | |
| 983 { | |
| 984 return FALSE; | |
| 985 } | |
| 986 | |
| 987 void | |
| 988 gaim_gtk_gtkspell_setup(GtkTextView *textview) | |
| 989 { | |
| 990 } | |
| 991 | |
| 992 void | |
| 993 gaim_gtk_gtkspell_unsetup(GtkTextView *textview) | |
| 994 { | |
| 995 } | |
| 996 | |
| 997 #endif /* !USE_GTKSPELL */ | |
| 998 | 918 |
| 999 void | 919 void |
| 1000 gaim_gtk_save_accels_cb(GtkAccelGroup *accel_group, guint arg1, | 920 gaim_gtk_save_accels_cb(GtkAccelGroup *accel_group, guint arg1, |
| 1001 GdkModifierType arg2, GClosure *arg3, | 921 GdkModifierType arg2, GClosure *arg3, |
| 1002 gpointer data) | 922 gpointer data) |
