diff pidgin/win32/wspell.c @ 15374:5fe8042783c1

Rename gtk/ and libgaim/ to pidgin/ and libpurple/
author Sean Egan <seanegan@gmail.com>
date Sat, 20 Jan 2007 02:32:10 +0000
parents
children d75099d2567e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/win32/wspell.c	Sat Jan 20 02:32:10 2007 +0000
@@ -0,0 +1,104 @@
+/*
+ * gaim
+ *
+ * File: wspell.c
+ * Date: March, 2003
+ * Description: Windows Gaim gtkspell interface.
+ *
+ * Copyright (C) 2002-2003, Herman Bloggs <hermanator12002@yahoo.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+#include <windows.h>
+#include <string.h>
+#include <stdlib.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <gtkspell/gtkspell.h>
+#include "debug.h"
+#include "win32dep.h"
+
+/* GTKSPELL DUMMY FUNCS */
+GtkSpell* wgtkspell_new_attach(GtkTextView *view,
+			       const gchar *lang,
+			       GError **error) {return NULL;}
+GtkSpell* wgtkspell_get_from_text_view(GtkTextView *view) {return NULL;}
+void      wgtkspell_detach(GtkSpell *spell) {}
+gboolean  wgtkspell_set_language(GtkSpell *spell,
+				const gchar *lang,
+				GError **error) {return 0;}
+void      wgtkspell_recheck_all(GtkSpell *spell) {}
+
+/* GTKSPELL PROTOS */
+GtkSpell*         (*wgaim_gtkspell_new_attach)              (GtkTextView *,
+							     const gchar *,
+							     GError **) = wgtkspell_new_attach;
+
+GtkSpell*         (*wgaim_gtkspell_get_from_text_view)      (GtkTextView*) = wgtkspell_get_from_text_view;
+
+void              (*wgaim_gtkspell_detach)                  (GtkSpell*) = wgtkspell_detach;
+
+gboolean          (*wgaim_gtkspell_set_language)            (GtkSpell*,
+							     const gchar*,
+							     GError**) = wgtkspell_set_language;
+
+void              (*wgaim_gtkspell_recheck_all)             (GtkSpell*) = wgtkspell_recheck_all;
+
+static void load_gtkspell() {
+	wgaim_gtkspell_new_attach = (void*)wgaim_find_and_loadproc("libgtkspell.dll", "gtkspell_new_attach" );
+	wgaim_gtkspell_get_from_text_view = (void*)wgaim_find_and_loadproc("libgtkspell.dll", "gtkspell_get_from_text_view");
+	wgaim_gtkspell_detach = (void*)wgaim_find_and_loadproc("libgtkspell.dll", "gtkspell_detach");
+	wgaim_gtkspell_set_language = (void*)wgaim_find_and_loadproc("libgtkspell.dll", "gtkspell_set_language");
+	wgaim_gtkspell_recheck_all = (void*)wgaim_find_and_loadproc("libgtkspell.dll", "gtkspell_recheck_all");
+}
+
+static char* lookup_aspell_path() {
+	const char *tmp;
+
+	if ((tmp = g_getenv("GAIM_ASPELL_DIR")))
+		return g_strdup(tmp);
+
+	return wgaim_read_reg_string(HKEY_LOCAL_MACHINE, "Software\\Aspell", "Path");
+}
+
+void wgaim_gtkspell_init() {
+	char *aspell_path = lookup_aspell_path();
+
+	if (aspell_path != NULL) {
+		char *tmp = g_strconcat(aspell_path, "\\aspell-15.dll", NULL);
+		if (g_file_test(tmp, G_FILE_TEST_EXISTS)) {
+			const char *path = g_getenv("PATH");
+			gaim_debug_info("wspell", "Found Aspell in %s\n", aspell_path);
+
+			g_free(tmp);
+
+			tmp = g_strdup_printf("%s%s%s", (path ? path : ""),
+					(path ? G_SEARCHPATH_SEPARATOR_S : ""),
+					aspell_path);
+
+			g_setenv("PATH", tmp, TRUE);
+
+			load_gtkspell();
+		} else {
+			gaim_debug_warning("wspell", "Couldn't find aspell-15.dll\n");
+		}
+
+		g_free(tmp);
+		g_free(aspell_path);
+	} else {
+		gaim_debug_warning("wspell", "Couldn't find path for Aspell\n");
+	}
+}