# HG changeset patch # User Herman Bloggs # Date 1048358305 0 # Node ID 0fe2ffdb7906e775696bba0e2bf33fbd36c61a7c # Parent 6cb8b0686e463da8c4ef07dacefa6a469f51d951 [gaim-migrate @ 5189] Win32 interface to gtkspell. If Aspell installation is found Gaim will load and use gtkspell dll, if not dummy funcs are used. committer: Tailor Script diff -r 6cb8b0686e46 -r 0fe2ffdb7906 src/win32/wspell.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/win32/wspell.c Sat Mar 22 18:38:25 2003 +0000 @@ -0,0 +1,87 @@ +/* + * wspell.c + * + * Author: Herman Bloggs + * Date: March, 2003 + * Description: Windows Gaim gtkspell interface. + */ +#include +#include +#include +#include +#include +#include +#include "win32dep.h" + +extern void debug_printf(char * fmt, ...); + +/* 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"); +} + +void wgaim_gtkspell_init() { + HKEY hKey; + const char buffer[1024] = ""; + DWORD size = sizeof(buffer); + DWORD type; + + if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, + "Software\\Aspell", + 0, + KEY_QUERY_VALUE, + &hKey)) { + /* Official aspell.net win32 installation or Gaim's aspell installation */ + if(ERROR_SUCCESS == RegQueryValueEx(hKey, "Path", NULL, &type, (LPBYTE)buffer, &size) || + ERROR_SUCCESS == RegQueryValueEx(hKey, "", NULL, &type, (LPBYTE)buffer, &size)) { + int mark = strlen(buffer); + strcat(buffer, "\\aspell-15.dll"); + if(_access( buffer, 0 ) < 0) + debug_printf("Couldn't find aspell-15.dll\n"); + else { + char* tmp=NULL; + buffer[mark] = '\0'; + debug_printf("Found Aspell in %s\n", buffer); + /* Add path to Aspell dlls to PATH */ + tmp = g_malloc0(strlen(getenv("PATH")) + strlen(buffer) + 7); + sprintf(tmp, "PATH=%s;%s", getenv("PATH"), buffer); + putenv(tmp); + g_free(tmp); + load_gtkspell(); + } + } + else { + debug_printf("Couldn't find path for Aspell\n"); + } + RegCloseKey(hKey); + } +} diff -r 6cb8b0686e46 -r 0fe2ffdb7906 src/win32/wspell.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/win32/wspell.h Sat Mar 22 18:38:25 2003 +0000 @@ -0,0 +1,34 @@ +/* + * wspell.h + * + * Author: Herman Bloggs + * Date: March, 2003 + * Description: Windows Gaim gtkspell interface. + */ +#ifndef _WSPELL_H_ +#define _WSPELL_H_ +#include + +extern void wgaim_gtkspell_init(); + +extern GtkSpell* (*wgaim_gtkspell_new_attach)(GtkTextView*, const gchar*, GError**); +#define gtkspell_new_attach( view, lang, error ) \ +wgaim_gtkspell_new_attach( ## view ##, ## lang ##, ## error ## ) + +extern GtkSpell* (*wgaim_gtkspell_get_from_text_view)(GtkTextView*); +#define gtkspell_get_from_text_view( view ) \ +wgaim_gtkspell_get_from_text_view( ## view ## ) + +extern void (*wgaim_gtkspell_detach)(GtkSpell*); +#define gtkspell_detach( spell ) \ +wgaim_gtkspell_detach( ## spell ## ) + +extern gboolean (*wgaim_gtkspell_set_language)(GtkSpell*, const gchar*, GError**); +#define gtkspell_set_language( spell, lang, error ) \ +wgaim_gtkspell_set_language( ## spell ##, ## lang ##, ## error ## ) + +extern void (*wgaim_gtkspell_recheck_all)(GtkSpell*); +#define gtkspell_recheck_all( spell ) \ +wgaim_gtkspell_recheck_all( ## spell ## ) + +#endif /* _WSPELL_H_ */