mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-14 09:32:20 +00:00
345e85dd06
* 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
214 lines
6.8 KiB
Diff
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
|
|
|