pidgin: 2ca6f433: Upgrade GtkSpell to 2.0.16 on Windows. ...
datallah at pidgin.im
datallah at pidgin.im
Wed Mar 3 23:27:26 EST 2010
-----------------------------------------------------------------
Revision: 2ca6f433b2b80e77468b859fc96aeb48070e17c4
Ancestor: 597cb04c9e5f3ce970dfe3586c9dc58a920aebd7
Author: datallah at pidgin.im
Date: 2010-03-04T04:22:19
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/2ca6f433b2b80e77468b859fc96aeb48070e17c4
Modified files:
Makefile.mingw libpurple/win32/global.mak
pidgin/Makefile.mingw pidgin/win32/winpidgin.c
pidgin/win32/wspell.c
ChangeLog:
Upgrade GtkSpell to 2.0.16 on Windows. The installer needs a bunch more work, but that is for later
-------------- next part --------------
============================================================
--- Makefile.mingw 44423e5ee159f50b77317a11b8d552f8bf389168
+++ Makefile.mingw 48f810af27bfc1537258ce4ac1a30050479b9c71
@@ -45,7 +45,8 @@ EXTERNAL_DLLS = \
gssapi32.dll \
k5sprt32.dll \
krb5_32.dll \
- libgtkspell.dll \
+ libenchant.dll \
+ libgtkspell-0.dll \
libmeanwhile-1.dll \
libnspr4.dll \
libplc4.dll \
@@ -88,6 +89,10 @@ endif
endif
$(MAKE) -C share/ca-certs -f $(MINGW_MAKEFILE) install
$(MAKE) -C share/sounds -f $(MINGW_MAKEFILE) install
+ mkdir -p $(PIDGIN_INSTALL_DIR)/spellcheck
+ cp $(GTKSPELL_TOP)/bin/libgtkspell-0.dll $(PIDGIN_INSTALL_DIR)/spellcheck
+ cp $(ENCHANT_TOP)/bin/libenchant.dll $(PIDGIN_INSTALL_DIR)/spellcheck
+ cp -R $(ENCHANT_TOP)/lib $(PIDGIN_INSTALL_DIR)/spellcheck
pidgin/win32/nsis/gtk-runtime-$(GTK_BUNDLE_VERSION).zip:
pidgin/win32/nsis/generate_gtk_zip.sh `pwd`
@@ -101,7 +106,9 @@ create_release_install_dir: install
create_release_install_dir: install
rm -rf $(STRIPPED_RELEASE_DIR)
- cp -R $(PIDGIN_INSTALL_DIR) $(STRIPPED_RELEASE_DIR)
+ mkdir $(STRIPPED_RELEASE_DIR)
+ tar -cf - $(PIDGIN_INSTALL_DIR) --exclude=Gtk --exclude=exchndl.dll --exclude=spellcheck \
+ | tar --strip 2 -xC $(STRIPPED_RELEASE_DIR) -f -
find $(STRIPPED_RELEASE_DIR) \( -name '*.dll' -o -name '*.exe' \) \
-not \( -false $(EXTERNAL_DLLS_FIND_EXP) \) \
-exec $(STRIP) --strip-unneeded {} ';'
============================================================
--- libpurple/win32/global.mak 2ed75a3f9fc09fa29c55378da78a94410cabfeba
+++ libpurple/win32/global.mak f7feb98c2b424b8f7233501d2107896280c6b301
@@ -10,8 +10,8 @@ WIN32_DEV_TOP ?= $(PIDGIN_TREE_TOP)/../w
# Locations of our various dependencies
WIN32_DEV_TOP ?= $(PIDGIN_TREE_TOP)/../win32-dev
-ASPELL_TOP ?= $(WIN32_DEV_TOP)/aspell-dev-0-50-3-3
-GTKSPELL_TOP ?= $(WIN32_DEV_TOP)/gtkspell-2.0.11-daa1
+GTKSPELL_TOP ?= $(WIN32_DEV_TOP)/gtkspell-2.0.16
+ENCHANT_TOP ?= $(WIN32_DEV_TOP)/enchant_1.5.0-2_win32
GTK_TOP ?= $(WIN32_DEV_TOP)/gtk_2_0-2.14
GTK_BIN ?= $(GTK_TOP)/bin
BONJOUR_TOP ?= $(WIN32_DEV_TOP)/Bonjour_SDK
============================================================
--- pidgin/Makefile.mingw b71eadcbc44e0d243180638d301d0778c9be75e1
+++ pidgin/Makefile.mingw 89c89a71ff1f596b225504d8f37bcbd3ebab183b
@@ -9,8 +9,6 @@ DEFINES := $(subst -DWIN32_LEAN_AND_MEAN
DEFINES := $(subst -DWIN32_LEAN_AND_MEAN,,$(DEFINES))
-NEEDED_DLLS = $(GTKSPELL_TOP)/gtkspell/libgtkspell.dll
-
##
## VARIABLE DEFINITIONS
##
@@ -43,14 +41,12 @@ INCLUDE_PATHS += \
-I$(GTK_TOP)/include/atk-1.0 \
-I$(GTK_TOP)/include/cairo \
-I$(GTK_TOP)/lib/gtk-2.0/include \
- -I$(GTKSPELL_TOP) \
- -I$(ASPELL_TOP)/include
+ -I$(GTKSPELL_TOP)/include/gtkspell-2.0
LIB_PATHS += -L$(GTK_TOP)/lib \
-L$(PURPLE_TOP) \
-L$(PIDGIN_TOP) \
- -L$(PIDGIN_IDLETRACK_TOP) \
- -L$(ASPELL_TOP)/lib
+ -L$(PIDGIN_IDLETRACK_TOP)
##
## SOURCES, OBJECTS
@@ -151,7 +147,6 @@ install_shallow: $(PIDGIN_INSTALL_DIR) $
install_shallow: $(PIDGIN_INSTALL_DIR) $(EXE_TARGET).exe $(PIDGIN_TARGET).dll
cp $(EXE_TARGET).exe $(PIDGIN_TARGET).dll $(PIDGIN_INSTALL_DIR)
- cp $(NEEDED_DLLS) $(PIDGIN_INSTALL_DIR)
install: install_shallow all
$(MAKE) -C $(PIDGIN_PLUGINS_TOP) -f $(MINGW_MAKEFILE) install
============================================================
--- pidgin/win32/winpidgin.c f1d18ea326055cf7b09ae47e741c34a0c58f2c02
+++ pidgin/win32/winpidgin.c acfbba1c774a55476ae933e389accb6bd48ddbf9
@@ -188,6 +188,18 @@ static BOOL common_dll_prep(const TCHAR
return TRUE;
}
+static BOOL dll_prep(const TCHAR *pidgin_dir) {
+ TCHAR path[MAX_PATH + 1];
+ path[0] = _T('\0');
+
+ if (*pidgin_dir) {
+ _sntprintf(path, sizeof(path) / sizeof(TCHAR), _T("%s\\Gtk\\bin"), pidgin_dir);
+ path[sizeof(path) / sizeof(TCHAR)] = _T('\0');
+ }
+
+ return common_dll_prep(path);
+}
+
static void portable_mode_dll_prep(const TCHAR *pidgin_dir) {
/* need to be able to fit MAX_PATH + "PIDGIN_ASPELL_DIR=\\Aspell\\bin" in path2 */
TCHAR path[MAX_PATH + 1];
@@ -233,18 +245,6 @@ static void portable_mode_dll_prep(const
}
}
-static BOOL dll_prep(const TCHAR *pidgin_dir) {
- TCHAR path[MAX_PATH + 1];
- path[0] = _T('\0');
-
- if (*pidgin_dir) {
- _sntprintf(path, sizeof(path) / sizeof(TCHAR), _T("%s\\Gtk\\bin"), pidgin_dir);
- path[sizeof(path) / sizeof(TCHAR)] = _T('\0');
- }
-
- return common_dll_prep(path);
-}
-
static TCHAR* winpidgin_lcid_to_posix(LCID lcid) {
TCHAR *posix = NULL;
int lang_id = PRIMARYLANGID(lcid);
============================================================
--- pidgin/win32/wspell.c 91dabe3b056d3f7ce2791bdaedb00cb93913d2b1
+++ pidgin/win32/wspell.c 4a290ff61ae0543684fd7e04eac3bf51298e5f13
@@ -3,7 +3,7 @@
*
* File: wspell.c
* Date: March, 2003
- * Description: Windows Purple gtkspell interface.
+ * Description: Windows Pidgin gtkspell interface.
*
* Copyright (C) 2002-2003, Herman Bloggs <hermanator12002 at yahoo.com>
*
@@ -32,8 +32,22 @@
#include "win32dep.h"
#include "wspell.h"
+/* Intermediate function so that we can eat Enchant error popups when it doesn't find a DLL
+ * This is fixed upstream, but not released */
+GtkSpell* (*wpidginspell_new_attach_proxy) (GtkTextView *,
+ const gchar *,
+ GError **) = NULL;
+
/* GTKSPELL DUMMY FUNCS */
-static GtkSpell* wgtkspell_new_attach(GtkTextView *view, const gchar *lang, GError **error) {return NULL;}
+static GtkSpell* wgtkspell_new_attach(GtkTextView *view, const gchar *lang, GError **error) {
+ GtkSpell *ret = NULL;
+ if (wpidginspell_new_attach_proxy) {
+ UINT old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
+ ret = wpidginspell_new_attach_proxy(view, lang, error);
+ SetErrorMode(old_error_mode);
+ }
+ return ret;
+}
static GtkSpell* wgtkspell_get_from_text_view(GtkTextView *view) {return NULL;}
static void wgtkspell_detach(GtkSpell *spell) {}
static gboolean wgtkspell_set_language(GtkSpell *spell, const gchar *lang, GError **error) {return FALSE;}
@@ -54,28 +68,44 @@ void (*wpidginspell_recheck
void (*wpidginspell_recheck_all) (GtkSpell*) = wgtkspell_recheck_all;
+#define GTKSPELL_DLL "libgtkspell-0.dll"
+
static void load_gtkspell() {
- wpidginspell_new_attach = (void*) wpurple_find_and_loadproc("libgtkspell.dll", "gtkspell_new_attach" );
- wpidginspell_get_from_text_view = (void*) wpurple_find_and_loadproc("libgtkspell.dll", "gtkspell_get_from_text_view");
- wpidginspell_detach = (void*) wpurple_find_and_loadproc("libgtkspell.dll", "gtkspell_detach");
- wpidginspell_set_language = (void*) wpurple_find_and_loadproc("libgtkspell.dll", "gtkspell_set_language");
- wpidginspell_recheck_all = (void*) wpurple_find_and_loadproc("libgtkspell.dll", "gtkspell_recheck_all");
+ UINT old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
+ gchar *tmp, *tmp2;
+ const char *path = g_getenv("PATH");
+ tmp = g_build_filename(wpurple_install_dir(), "spellcheck", NULL);
+ tmp2 = g_strdup_printf("%s%s%s", (path ? path : ""),
+ (path ? G_SEARCHPATH_SEPARATOR_S : ""),
+ tmp);
+ g_free(tmp);
+ g_setenv("PATH", tmp2, TRUE);
+
+ /* Suppress error popups */
+ wpidginspell_new_attach_proxy = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_new_attach" );
+ if (wpidginspell_new_attach_proxy) {
+ wpidginspell_get_from_text_view = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_get_from_text_view");
+ wpidginspell_detach = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_detach");
+ wpidginspell_set_language = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_set_language");
+ wpidginspell_recheck_all = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_recheck_all");
+ } else {
+ purple_debug_warning("wspell", "Couldn't load gtkspell (%s) \n", GTKSPELL_DLL);
+ /*wpidginspell_new_attach = wgtkspell_new_attach;*/
+ }
+ SetErrorMode(old_error_mode);
}
-static char* lookup_aspell_path() {
+static void lookup_aspell_path() {
const char *tmp;
+ gchar *aspell_path;
if ((tmp = g_getenv("PIDGIN_ASPELL_DIR")))
- return g_strdup(tmp);
+ aspell_path = g_strdup(tmp);
+ else
+ aspell_path = wpurple_read_reg_string(HKEY_LOCAL_MACHINE, "Software\\Aspell", "Path");
- return wpurple_read_reg_string(HKEY_LOCAL_MACHINE, "Software\\Aspell", "Path");
-}
-
-void winpidgin_spell_init() {
- char *aspell_path = lookup_aspell_path();
-
if (aspell_path != NULL) {
- char *tmp = g_strconcat(aspell_path, "\\aspell-15.dll", NULL);
+ char *tmp = g_build_filename(aspell_path, "aspell-15.dll", NULL);
if (g_file_test(tmp, G_FILE_TEST_EXISTS)) {
const char *path = g_getenv("PATH");
purple_debug_info("wspell", "Found Aspell in %s\n", aspell_path);
@@ -88,14 +118,18 @@ void winpidgin_spell_init() {
g_setenv("PATH", tmp, TRUE);
- load_gtkspell();
- } else {
+ } else
purple_debug_warning("wspell", "Couldn't find aspell-15.dll\n");
- }
g_free(tmp);
g_free(aspell_path);
- } else {
- purple_debug_warning("wspell", "Couldn't find path for Aspell\n");
- }
+ } else
+ purple_debug_warning("wspell", "Aspell installation not found (this isn't necessarily a problem)\n");
}
+
+void winpidgin_spell_init() {
+ /* We keep doing the aspell path thing so that previously installed dictionaries still work */
+ lookup_aspell_path();
+
+ load_gtkspell();
+}
More information about the Commits
mailing list