Mercurial > pidgin
changeset 4862:0fe2ffdb7906
[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 <tailor@pidgin.im>
author | Herman Bloggs <hermanator12002@yahoo.com> |
---|---|
date | Sat, 22 Mar 2003 18:38:25 +0000 |
parents | 6cb8b0686e46 |
children | ee46d3875cc8 |
files | src/win32/wspell.c src/win32/wspell.h |
diffstat | 2 files changed, 121 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /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 <hermanator12002@yahoo.com> + * Date: March, 2003 + * Description: Windows Gaim gtkspell interface. + */ +#include <windows.h> +#include <string.h> +#include <stdlib.h> +#include <glib.h> +#include <gtk/gtk.h> +#include <gtkspell/gtkspell.h> +#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); + } +}
--- /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 <hermanator12002@yahoo.com> + * Date: March, 2003 + * Description: Windows Gaim gtkspell interface. + */ +#ifndef _WSPELL_H_ +#define _WSPELL_H_ +#include <gtkspell/gtkspell.h> + +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_ */