lyx_mirror/development/Win32/patches/msvc/aspell-setter-sep06.patch
Joost Verburg 345e85dd06 Updated set of patches for external components
* Compatible with both MSVC and MinGW
* dtl bugfix for recent DVI drivers
* dvipost works for restricted users
* new Aspell Windows port

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_4_X@15083 a592a061-630c-0410-9148-cb99ea01b6c8
2006-09-19 23:10:58 +00:00

214 lines
6.8 KiB
Diff

diff -riwbBu -Xex aspell-setter-sep06/common/config.cpp aspell-setter-sep06-modified/common/config.cpp
--- aspell-setter-sep06/common/config.cpp Mon Dec 12 17:41:06 2005
+++ aspell-setter-sep06-modified/common/config.cpp Sun Sep 17 20:55:02 2006
@@ -78,6 +78,11 @@
namespace aspell {
+#ifdef WIN32PORT
+ HKEY GetRegHive();
+ aspell::String ReadRegString(HKEY type, aspell::String key, aspell::String name);
+#endif
+
const char * const keyinfo_type_name[4] = {
N_("string"), N_("integer"), N_("boolean"), N_("list")
};
@@ -642,20 +647,30 @@
} else if (strcmp(i, "home-dir") == 0) {
- //get the personal folder (e.g. "c:\My Documents")
+ //get the personal folder
+
+ //get from registry
+ HKEY hive;
+ hive = GetRegHive();
+ final_str = ReadRegString(hive, "Software\\Aspell", "Base Path");
+
+ //default location
+ if (final_str == "") {
char * dir = new char[MAX_PATH];
LPITEMIDLIST items = 0;
- HRESULT hand = SHGetSpecialFolderLocation(0, CSIDL_PERSONAL, &items);
+ HRESULT hand = SHGetSpecialFolderLocation(0, CSIDL_APPDATA, &items);
if ((NOERROR == hand) && items) {
if (SHGetPathFromIDList(items, dir)) {
for (char *ptr = dir; *ptr; ++ptr)
if ('\\' == *ptr)
*ptr = '/';
final_str = dir;
+ final_str.append("/Aspell");
}
CoTaskMemFree(items);
}
delete [] dir;
+ }
}
#endif
@@ -1394,20 +1409,6 @@
return no_err;
}
-#if defined(WIN32_USE_PERSONAL_DIR)
-# define HOME_DIR "!home-dir"
-# define PERSONAL "<lang>.pws"
-# define REPL "<lang>.prepl"
-#elif defined(ENABLE_WIN32_RELOCATABLE)
-# define HOME_DIR "<prefix>"
-# define PERSONAL "<lang>.pws"
-# define REPL "<lang>.prepl"
-#else
-# define HOME_DIR "<$HOME|./>"
-# define PERSONAL ".aspell.<lang>.pws"
-# define REPL ".aspell.<lang>.prepl"
-#endif
-
static const KeyInfo config_keys[] = {
// the description should be under 50 chars
{"actual-dict-dir", KeyInfoString, "<dict-dir^master>", 0}
@@ -1484,7 +1485,7 @@
, {"per-conf-path", KeyInfoString, "<home-dir/per-conf>", 0}
, {"personal", KeyInfoString, PERSONAL,
N_("personal dictionary file name")}
- , {"personal-path", KeyInfoString, "<home-dir/personal>", 0}
+ , {"personal-path", KeyInfoString, PERSONAL_DIR, 0}
, {"prefix", KeyInfoString, PREFIX,
N_("prefix directory")}
, {"repl", KeyInfoString, REPL,
@@ -1525,10 +1526,12 @@
, {"warn", KeyInfoBool, "true",
N_("enable warnings")}
#ifdef WIN32PORT
- , {"dict-subdir", KeyInfoString, "dicts",
+ , {"dict-subdir", KeyInfoString, "Dictionaries",
N_("sub directory for dictionaries")}
, {"data-subdir", KeyInfoString, "data",
N_("sub directory for other data")}
+ , {"personal-subdir", KeyInfoString, "Personal",
+ N_("sub directory for personal data")}
#endif
//
@@ -1587,5 +1590,53 @@
config_impl_keys_begin,
config_impl_keys_end);
}
+
+#ifdef WIN32PORT
+
+ String ReadRegString(HKEY hive, String key, String name)
+ {
+
+ // Reads a string from the Windows registry (used to get paths)
+
+ HKEY hKey;
+ unsigned long lType;
+ DWORD dwSize;
+ unsigned char* szValue = NULL;
+
+ if (::RegOpenKeyEx(hive, key.c_str(), 0, KEY_READ, &hKey) == ERROR_SUCCESS)
+ {
+ if(::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, NULL, &dwSize) == ERROR_SUCCESS)
+ {
+ szValue = new unsigned char[dwSize + 1];
+ ::RegQueryValueEx(hKey, name.c_str(), NULL, &lType, szValue, &dwSize);
+ String RegistryReturn((char*)szValue);
+ delete[] szValue;
+ return RegistryReturn;
+ } else {
+ return "";
+ }
+ } else {
+ return "";
+ }
+
+ }
+
+ HKEY GetRegHive()
+ {
+
+ // Check whether Aspell is installed for the current user or for all users
+
+ String value;
+
+ if (ReadRegString(HKEY_LOCAL_MACHINE, "Software\\Aspell", "Dictionary Path") == "")
+ {
+ return HKEY_CURRENT_USER;
+ } else {
+ return HKEY_LOCAL_MACHINE;
+ }
+
+ }
+
+#endif
}
diff -riwbBu -Xex aspell-setter-sep06/common/vector.hpp aspell-setter-sep06-modified/common/vector.hpp
--- aspell-setter-sep06/common/vector.hpp Thu Oct 13 09:42:54 2005
+++ aspell-setter-sep06-modified/common/vector.hpp Sun Sep 17 19:50:46 2006
@@ -50,10 +50,10 @@
T * data_end() {return &*this->end();}
T * pbegin() {return &*this->begin();}
- T * pend() {return &*this->end();}
+ T * pend() {return &this->back()+1;}
const T * pbegin() const {return &*this->begin();}
- const T * pend() const {return &*this->end();}
+ const T * pend() const {return &this->back()+1;}
template <typename U>
U * datap() {
diff -riwbBu -Xex aspell-setter-sep06/win32/dirs.h aspell-setter-sep06-modified/win32/dirs.h
--- aspell-setter-sep06/win32/dirs.h Thu Oct 13 13:29:34 2005
+++ aspell-setter-sep06-modified/win32/dirs.h Sun Sep 17 20:26:26 2006
@@ -1,16 +1,26 @@
#ifndef dirs_h
#define dirs_h
-#ifdef WIN32_USE_EXECUTABLE_DIR
-# define DATA_DIR "<prefix/data-subdir>"
-# define CONF_DIR "<prefix>"
-# define DICT_DIR "<prefix/dict-subdir>"
+# define DATA_DIR "<home-dir/data-subdir>"
+# define CONF_DIR "<home-dir>"
+# define DICT_DIR "<home-dir/dict-subdir>"
+# define PERSONAL_DIR "<home-dir/personal>"
+
+#if defined(WIN32_USE_EXECUTABLE_DIR)
+# define HOME_DIR "<prefix>"
+# define PERSONAL "<personal-subdir>/<lang>.pws"
+# define REPL "<personal-subdir>/<lang>.prepl"
# define PREFIX "!prefix"
+#elif defined(WIN32_USE_PERSONAL_DIR)
+# define HOME_DIR "!home-dir"
+# define PERSONAL "<personal-subdir>/<lang>.pws"
+# define REPL "<personal-subdir>/<lang>.prepl"
+# define PREFIX "<home-dir>"
#else
-# define DATA_DIR "aspell-win32/data"
-# define CONF_DIR "aspell-win32"
-# define DICT_DIR "dicts"
-# define PREFIX "aspell-win32"
+# define HOME_DIR "<$HOME|./>"
+# define PERSONAL "<personal-subdir>/.aspell.<lang>.pws"
+# define REPL "<personal-subdir>/.aspell.<lang>.prepl"
+# define PREFIX "<home-dir>"
#endif
#endif
diff -riwbBu -Xex aspell-setter-sep06/win32/settings.h aspell-setter-sep06-modified/win32/settings.h
--- aspell-setter-sep06/win32/settings.h Wed Sep 6 10:51:16 2006
+++ aspell-setter-sep06-modified/win32/settings.h Sun Sep 17 18:55:23 2006
@@ -9,9 +9,6 @@
/* Defined if curses like POSIX Functions should be used */
#undef CURSES_ONLY
-/* Defined if win32 relocation should be used */
-#define ENABLE_WIN32_RELOCATABLE 1
-
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H