summaryrefslogtreecommitdiff
path: root/plugins/LangMan/src
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2014-03-23 15:35:11 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2014-03-23 15:35:11 +0000
commita2cebd100e7d02704a8d69205f1b766147ed1bb6 (patch)
tree3ab30c9cb750792fcda383aac7aa6a984207397f /plugins/LangMan/src
parentc4377e69f54685eda623f9a63d805f47594d3df1 (diff)
Langman moved to deprecated
git-svn-id: http://svn.miranda-ng.org/main/trunk@8705 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/LangMan/src')
-rw-r--r--plugins/LangMan/src/common.h43
-rw-r--r--plugins/LangMan/src/langpack.cpp393
-rw-r--r--plugins/LangMan/src/langpack.h48
-rw-r--r--plugins/LangMan/src/main.cpp157
-rw-r--r--plugins/LangMan/src/options.cpp588
-rw-r--r--plugins/LangMan/src/options.h27
-rw-r--r--plugins/LangMan/src/resource.h52
-rw-r--r--plugins/LangMan/src/stdafx.cpp18
-rw-r--r--plugins/LangMan/src/version.h14
9 files changed, 0 insertions, 1340 deletions
diff --git a/plugins/LangMan/src/common.h b/plugins/LangMan/src/common.h
deleted file mode 100644
index 2afafaff9d..0000000000
--- a/plugins/LangMan/src/common.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-
-'Language Pack Manager'-Plugin for Miranda IM
-
-Copyright (C) 2005-2007 H. Herkenrath
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program (LangMan-License.txt); if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#define _CRT_SECURE_NO_WARNINGS
-
-#include <windows.h>
-#include <ShlObj.h>
-#include <vsstyle.h>
-#include <Uxtheme.h>
-
-#include <newpluginapi.h>
-#include <m_langpack.h>
-#include <m_options.h>
-#include <m_netlib.h>
-#include <m_clist.h>
-#include <win2k.h>
-
-#include <m_flags.h>
-#include <m_langman.h>
-
-#include "langpack.h"
-#include "options.h"
-#include "resource.h"
-#include "version.h"
-
diff --git a/plugins/LangMan/src/langpack.cpp b/plugins/LangMan/src/langpack.cpp
deleted file mode 100644
index e292c16c74..0000000000
--- a/plugins/LangMan/src/langpack.cpp
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
-
-'Language Pack Manager'-Plugin for Miranda IM
-
-Copyright (C) 2005-2007 H. Herkenrath
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program (LangMan-License.txt); if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "common.h"
-
-/************************* Load ***************************************/
-
-static void TrimString(char *str)
-{
- int len, start;
- len = lstrlenA(str);
- while (str[0]!='\0' && (unsigned char)str[len-1] <= ' ') str[--len] = 0;
- for (start = 0; str[start] && (unsigned char)str[start] <= ' '; ++start);
- MoveMemory(str, str+start, len-start+1);
-}
-
-static BOOL IsEmpty(const char *str)
-{
- int i;
- for(i = 0;str[i]!='\0';i++)
- if (str[i]!=' ' && str[i]!='\r' && str[i]!='\n')
- return FALSE;
- return TRUE;
-}
-
-static void CleanupLanguage(char *szLanguage)
-{
- char *p;
- /* remove any appended ' (default)' */
- p = strstr(szLanguage, " (default)");
- if (p!=NULL) *p = '\0';
-}
-
-static void CleanupAuthors(char *szAuthors)
-{
- char *p, *p2;
- /* remove trailing dot (if any) */
- p = &szAuthors[lstrlenA(szAuthors)-1];
- if (*p == '.') *p = '\0';
- /* remove any extra info in parentheses, which is ok
- * but makes the list very long for some packs */
- for (;;) {
- p = strchr(szAuthors, '(');
- p2 = strchr(szAuthors, ')');
- if (p == NULL || p2 == NULL) {
- p = strchr(szAuthors, '[');
- p2 = strchr(szAuthors, ']');
- if (p == NULL || p2 == NULL) break;
- }
- if (*(p-1) == ' ') --p;
- MoveMemory(p, p2+1, lstrlenA(p2+1)+1);
- }
-}
-
-static void CleanupEmail(char *szAuthorEmail)
-{
- char c, *p, *pAt;
- /* replace ' dot ' with '.' (may be removed) */
- p = strstr(szAuthorEmail, " dot ");
- if (p!=NULL) {
- *p = '.';
- MoveMemory(p+1, p+5, lstrlenA(p+5)+1);
- }
- /* also allow ' at ' instead of '@' for obfuscation */
- p = strstr(szAuthorEmail, " at ");
- if (p!=NULL) {
- *p = '@';
- MoveMemory(p+1, p+4, lstrlenA(p+4)+1);
- }
- /* is valid? */
- pAt = strchr(szAuthorEmail, '@');
- if (pAt == NULL) {
- szAuthorEmail[0] = '\0';
- return;
- }
- /* strip-off extra text except exactly one email address
- * this is needed as a click on the email addres brings up the mail client */
- for(c = ' ';;c = ',') {
- p = strchr(pAt, c);
- if (p!=NULL) *p = '\0';
- p = strrchr(szAuthorEmail, c);
- if (p!=NULL) MoveMemory(szAuthorEmail, p+1, lstrlenA(p+1)+1);
- if (c == ',') break;
- }
- p = strstr(szAuthorEmail, "__");
- if (p!=NULL) MoveMemory(szAuthorEmail, p+2, lstrlenA(p+2)+1);
- /* lower case */
- CharLowerA(szAuthorEmail);
- /* 'none' specified */
- if (!lstrcmpiA(szAuthorEmail, "none")) szAuthorEmail[0] = '\0';
-}
-
-static void CleanupLastModifiedUsing(char *szLastModifiedUsing, int nSize)
-{
- char *p;
- /* remove 'Unicode', as it doesn't matter */
- p = strstr(szLastModifiedUsing, " Unicode");
- if (p!=NULL) MoveMemory(p, p+8, lstrlenA(p+8)+1);
- /* use 'Miranda IM' instead of 'Miranda' */
- p = strstr(szLastModifiedUsing, "Miranda");
- if (p!=NULL && strncmp(p+7, " IM", 3)) {
- MoveMemory(p+10, p+7, lstrlenA(p+7)+1);
- CopyMemory(p+7, " IM", 3);
- }
- /* use 'Plugin' instead of 'plugin' */
- p = strstr(szLastModifiedUsing, " plugin");
- if (p!=NULL) CopyMemory(p, " Plugin", 7);
- /* remove 'v' prefix */
- p = strstr(szLastModifiedUsing, " v0.");
- if (p!=NULL) MoveMemory(p+1, p+2, lstrlenA(p+2)+1);
- /* default if empty */
- if (!szLastModifiedUsing[0]) {
- DWORD v = CallService(MS_SYSTEM_GETVERSION, 0, 0);
- mir_snprintf(szLastModifiedUsing, nSize, "%d.%d.%d.%d", ((v >> 24) & 0xFF), ((v >> 16) & 0xFF), ((v >> 8) & 0xFF), (v & 0xFF));
- }
-}
-
-// pack struct should be initialized to zero before call
-// pack->szFileName needs to be filled in before call
-static BOOL LoadPackData(LANGPACK_INFO *pack, BOOL useRootFolder, const char *pszFileVersionHeader)
-{
- FILE *fp;
- TCHAR szFileName[MAX_PATH];
- char line[4096], *pszColon, *buf;
- char szLanguageA[64]; /* same size as pack->szLanguage */
- /*
- Miranda Language Pack Version 1
- Language: (optional)
- Locale: 0809
- Authors: Miranda NG Development Team (multiple tags allowed)
- Author-email: project-info at miranda-ng.org (" at " instead of "@" allowed)
- Last-Modified-Using: Miranda IM 0.7
- Plugins-included: (multiple tags allowed)
- X-FLName: name as used on the file listing (non-standard extension)
- X-Version: 1.2.3.4 (non-standard extension)
- see 'LangMan-Translation.txt' for some header quidelines
- */
- if ( !GetPackPath( szFileName, SIZEOF(szFileName), useRootFolder, pack->szFileName))
- return FALSE;
-
- fp = _tfopen(szFileName, _T("rt"));
- if (fp == NULL)
- return FALSE;
-
- fgets(line, sizeof(line), fp);
- TrimString(line);
- buf = line;
-
- if (strlen(line) >= 3 && line[0] == '\xef' && line[1] == '\xbb' && line[2] == '\xbf') {
- pack->codepage = CP_UTF8;
- buf += 3;
- }
-
- if ( lstrcmpA(buf, pszFileVersionHeader )) {
- fclose(fp);
- return FALSE;
- }
- pack->flags = LPF_NOLOCALE;
- szLanguageA[0] = '\0';
- while( !feof( fp )) {
- if ( fgets(line, sizeof(line), fp) == NULL) break;
- TrimString(line);
- if ( IsEmpty(line) || line[0] == ';' || line[0] == '\0') continue;
- if ( line[0] == '[' ) break;
- pszColon = strchr(line, ':');
- if ( pszColon == NULL ) continue;
- *pszColon = '\0';
- TrimString(pszColon+1);
- if ( !lstrcmpA(line, "Language") && !pack->szLanguage[0] )
- lstrcpynA(szLanguageA, pszColon+1, sizeof(szLanguageA)); /* buffer safe */
- else if ( !lstrcmpA(line, "Last-Modified-Using") && !pack->szLastModifiedUsing[0] )
- lstrcpynA(pack->szLastModifiedUsing, pszColon+1, sizeof(pack->szLastModifiedUsing)); /* buffer safe */
- else if ( !lstrcmpA(line, "Authors")) {
- buf = pack->szAuthors+lstrlenA(pack->szAuthors); /* allow multiple tags */
- if ((sizeof(pack->szAuthors)-lstrlenA(pack->szAuthors))>0) /* buffer safe */
- mir_snprintf(buf, sizeof(pack->szAuthors)-lstrlenA(pack->szAuthors), (pack->szAuthors[0] == '\0')?"%s":" %s", pszColon+1);
- } else if ( !lstrcmpA(line, "Author-email") && !pack->szAuthorEmail[0])
- lstrcpynA(pack->szAuthorEmail, pszColon+1, sizeof(pack->szAuthorEmail)); /* buffer safe */
- else if ( !lstrcmpA(line, "Locale") && (pack->flags & LPF_NOLOCALE)) {
- pack->Locale = MAKELCID((USHORT)strtol(pszColon+1, NULL, 16), SORT_DEFAULT);
- if (pack->Locale) pack->flags &= ~LPF_NOLOCALE;
- }
- else if ( !lstrcmpA(line, "Plugins-included")) {
- buf = pack->szPluginsIncluded + lstrlenA(pack->szPluginsIncluded); /* allow multiple tags */
- if (( sizeof(pack->szPluginsIncluded)-lstrlenA(pack->szPluginsIncluded)) > 0 ) /* buffer safe */
- mir_snprintf(buf, sizeof(pack->szPluginsIncluded)-lstrlenA(pack->szPluginsIncluded), (pack->szPluginsIncluded[0] == '\0')?"%s":", %s", CharLowerA(pszColon+1));
- }
- else if ( !lstrcmpA(line, "X-Version") && !pack->szVersion[0] )
- lstrcpynA(pack->szVersion, pszColon+1, sizeof(pack->szVersion)); /* buffer safe */
- else if ( !lstrcmpA(line, "X-FLName") && !pack->szFLName[0] )
- lstrcpynA(pack->szFLName, pszColon+1, sizeof(pack->szFLName)); /* buffer safe */
- }
- CleanupLanguage(szLanguageA);
- CleanupAuthors(pack->szAuthors);
- CleanupEmail(pack->szAuthorEmail);
- CleanupLastModifiedUsing(pack->szLastModifiedUsing, sizeof(pack->szLastModifiedUsing));
- /* codepage */
- if (!(pack->flags&LPF_NOLOCALE))
- if (GetLocaleInfoA(pack->Locale, LOCALE_IDEFAULTANSICODEPAGE, line, 6))
- pack->codepage = (WORD)atoi(line); /* CP_ACP on error */
- /* language */
-
- MultiByteToWideChar(pack->codepage, 0, szLanguageA, -1, pack->szLanguage, SIZEOF(pack->szLanguage));
-
- /* ensure the pack always has a language name */
- if (!pack->szLanguage[0] && !GetLocaleInfo(pack->Locale, LOCALE_SENGLANGUAGE, pack->szLanguage, SIZEOF(pack->szLanguage))) {
- TCHAR *p;
- lstrcpyn(pack->szLanguage, pack->szFileName, SIZEOF(pack->szLanguage)); /* buffer safe */
- p = _tcsrchr(pack->szLanguage, _T('.'));
- if (p!=NULL) *p = '\0';
- }
- /* ensure the pack always has a filelisting name */
- if (!pack->szFLName[0])
- lstrcatA(lstrcpyA(pack->szFLName, szLanguageA), " Language Pack"); /* buffer safe */
- fclose(fp);
- return TRUE;
-}
-
-/************************* Enum ***************************************/
-
-BOOL GetPackPath(TCHAR *pszPath, int nSize, BOOL useRootFolder, const TCHAR *pszFile)
-{
- TCHAR *p;
- /* main path */
- if (!GetModuleFileName(NULL, pszPath, nSize)) return FALSE;
- p = _tcsrchr(pszPath, _T('\\'));
- if (p!=NULL) *(p+1) = _T('\0');
- /* subdirectory */
- if (!useRootFolder) {
- if (nSize<(lstrlen(pszPath)+10)) return FALSE;
- lstrcat(pszPath, _T("Languages\\"));
- }
- /* file name */
- if (pszFile!=NULL) {
- if (nSize<(lstrlen(pszFile)+11)) return FALSE;
- lstrcat(pszPath, pszFile);
- }
- return TRUE;
-}
-
-// callback is allowed to be NULL
-// returns TRUE if any pack exists except default
-BOOL EnumPacks(ENUM_PACKS_CALLBACK callback, const TCHAR *pszFilePattern, const char *pszFileVersionHeader, WPARAM wParam, LPARAM lParam)
-{
- BOOL fPackFound = FALSE;
- BOOL res = FALSE;
- LANGPACK_INFO pack;
- WIN32_FIND_DATA wfd;
- HANDLE hFind;
-
- mir_ptr<TCHAR> langpack(db_get_tsa(NULL, "LangMan", "Langpack"));
-
- /* langpacks in root folder */
- if (GetPackPath(pack.szFileName, SIZEOF(pack.szFileName), TRUE, pszFilePattern)) {
- hFind = FindFirstFile(pack.szFileName, &wfd);
- if (hFind!=INVALID_HANDLE_VALUE) {
- do {
- if (wfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) continue;
- if ((lstrlen(wfd.cFileName)<4) || wfd.cFileName[lstrlen(wfd.cFileName)-4]!=_T('.')) continue;
- /* get data */
- ZeroMemory(&pack, sizeof(pack));
- lstrcpy(pack.szFileName, CharLower(wfd.cFileName)); /* buffer safe */
- if (LoadPackData(&pack, TRUE, pszFileVersionHeader)) {
- pack.ftFileDate = wfd.ftLastWriteTime;
- /* enabled? */
- if (!langpack) {
- if (!fPackFound) pack.flags |= LPF_ENABLED;
- fPackFound = TRUE;
- }
- /* callback */
- if (callback!=NULL) res = callback(&pack, wParam, lParam);
- if (!res) { FindClose(hFind); return FALSE; }
- }
- } while(FindNextFile(hFind, &wfd));
- FindClose(hFind);
- }
- }
-
- /* langpacks in languages folder */
- if (GetPackPath(pack.szFileName, SIZEOF(pack.szFileName), FALSE, pszFilePattern)) {
- hFind = FindFirstFile(pack.szFileName, &wfd);
- if (hFind!=INVALID_HANDLE_VALUE) {
- do {
- if (wfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) continue;
- if (lstrlen(wfd.cFileName)<4 || wfd.cFileName[lstrlen(wfd.cFileName)-4]!=_T('.')) continue;
- /* get data */
- ZeroMemory(&pack, sizeof(pack));
- lstrcpy(pack.szFileName, CharLower(wfd.cFileName)); /* buffer safe */
- if (LoadPackData(&pack, FALSE, pszFileVersionHeader)) {
- pack.ftFileDate = wfd.ftLastWriteTime;
- /* enabled? */
- if (langpack) {
- if (!_tcscmp(pack.szFileName, langpack)) {
- if (!fPackFound) pack.flags |= LPF_ENABLED;
- fPackFound = TRUE;
- }
- }
- /* callback */
- if (callback!=NULL) res = callback(&pack, wParam, lParam);
- if (!res) { FindClose(hFind); return FALSE; }
- }
- } while(FindNextFile(hFind, &wfd));
- FindClose(hFind);
- }
- }
-
- /* default: English (GB) */
- if (callback!=NULL) {
- ZeroMemory(&pack, sizeof(pack));
- pack.Locale = LOCALE_USER_DEFAULT; /* miranda uses default locale in this case */
- lstrcpy(pack.szLanguage, _T("English (default)")); /* buffer safe */
- lstrcpyA(pack.szAuthors, "Miranda NG Development Team"); /* buffer safe */
- lstrcpyA(pack.szAuthorEmail, "project-info at miranda-ng.org"); /* buffer safe */
- CleanupEmail(pack.szAuthorEmail); /* correct " at " */
- CleanupLastModifiedUsing(pack.szLastModifiedUsing, sizeof(pack.szLastModifiedUsing));
- /* file date */
- if (GetModuleFileName(NULL, pack.szFileName, SIZEOF(pack.szFileName))) {
- HANDLE hFile;
- hFile = CreateFile(pack.szFileName, 0, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
- if (hFile!=INVALID_HANDLE_VALUE) {
- GetFileTime(hFile, NULL, NULL, &pack.ftFileDate);
- CloseHandle(hFile);
- }
- }
- pack.flags = LPF_NOLOCALE|LPF_DEFAULT;
- pack.Locale = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT);
- if (!fPackFound) pack.flags |= LPF_ENABLED;
- /* callback */
- if (!callback(&pack, wParam, lParam)) return FALSE;
- }
-
- return fPackFound;
-}
-
-void MovePacks(const TCHAR *pszFilePattern)
-{
- TCHAR szFrom[MAX_PATH], szDest[MAX_PATH], szDir[MAX_PATH], *pszFile;
- BOOL fDirCreated = FALSE;
- HANDLE hFind;
- WIN32_FIND_DATA wfd;
-
- /* main path */
- if (!GetModuleFileName(NULL, szDir, SIZEOF(szDir))) return;
- pszFile = _tcsrchr(szDir, _T('\\'));
- if (pszFile != NULL) *pszFile = _T('\0');
-
- if (!GetPackPath(szDest, SIZEOF(szDest), FALSE, _T(""))) return;
-
- /* move wrongly placed packs from 'root' to 'Language' */
- mir_sntprintf(szFrom, SIZEOF(szFrom), _T("%s\\%s"), szDir, pszFilePattern);
- hFind = FindFirstFile(szFrom, &wfd);
- if (hFind != INVALID_HANDLE_VALUE) {
- do {
- if (wfd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) continue;
- if (lstrlen(wfd.cFileName)<4 || wfd.cFileName[lstrlen(wfd.cFileName) - 4] != _T('.')) continue;
- /* set first lp ad default */
- mir_ptr<TCHAR> langpack(db_get_tsa(NULL, "LangMan", "Langpack"));
- if (!langpack)
- db_set_ws(NULL, "LangMan", "Langpack", wfd.cFileName);
- /* ensure dir exists */
- if (!fDirCreated)
- fDirCreated = CreateDirectory(szDest, NULL);
- /* move file */
- if (GetPackPath(szDest, SIZEOF(szDest), FALSE, wfd.cFileName))
- {
- mir_sntprintf(szFrom, SIZEOF(szFrom), _T("%s\\%s"), szDir, wfd.cFileName);
- if (!MoveFile(szFrom, szDest) && GetLastError() == ERROR_ALREADY_EXISTS) {
- DeleteFile(szDest);
- MoveFile(szFrom, szDest);
- }
- }
- } while (FindNextFile(hFind, &wfd));
- FindClose(hFind);
- }
-} \ No newline at end of file
diff --git a/plugins/LangMan/src/langpack.h b/plugins/LangMan/src/langpack.h
deleted file mode 100644
index 01280c757e..0000000000
--- a/plugins/LangMan/src/langpack.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-
-'Language Pack Manager'-Plugin for Miranda IM
-
-Copyright (C) 2005-2007 H. Herkenrath
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program (LangMan-License.txt); if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#define LPF_ENABLED 0x01 // pack is enabled
-#define LPF_NOLOCALE 0x02 // pack has no valid locale
-#define LPF_DEFAULT 0x04 // pack is the english default (no langpack)
-
-/* Langpack Info */
-typedef struct {
- TCHAR szLanguage[64];
- LCID Locale;
- WORD codepage;
- char szAuthors[1024];
- char szAuthorEmail[128];
- char szLastModifiedUsing[64];
- char szPluginsIncluded[4080];
- char szVersion[21];
- char szFLName[128];
- FILETIME ftFileDate;
- TCHAR szFileName[MAX_PATH]; /* just the file name itself */
- BYTE flags; /* see LPIF_* flags */
-} LANGPACK_INFO;
-
-BOOL GetPackPath(TCHAR *pszPath, int nSize, BOOL useRootFolder, const TCHAR *pszFile);
-
-void MovePacks(const TCHAR *pszFilePattern);
-
-/* Enum */
-typedef BOOL (*ENUM_PACKS_CALLBACK)(LANGPACK_INFO *pack, WPARAM wParam, LPARAM lParam);
-BOOL EnumPacks(ENUM_PACKS_CALLBACK callback, const TCHAR *pszFilePattern, const char *pszFileVersionHeader, WPARAM wParam, LPARAM lParam);
diff --git a/plugins/LangMan/src/main.cpp b/plugins/LangMan/src/main.cpp
deleted file mode 100644
index 7e471e4849..0000000000
--- a/plugins/LangMan/src/main.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
-
-'Language Pack Manager'-Plugin for Miranda IM
-
-Copyright (C) 2005-2007 H. Herkenrath
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program (LangMan-License.txt); if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "common.h"
-
-int hLangpack;
-HINSTANCE hInst;
-
-static PLUGININFOEX pluginInfo = {
- sizeof(PLUGININFOEX),
- __PLUGIN_NAME,
- PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM),
- __DESCRIPTION,
- __AUTHOR,
- __AUTHOREMAIL,
- __COPYRIGHT,
- __AUTHORWEB,
- UNICODE_AWARE,
- // {D4BDD1EB-56F1-4A87-A187-67246EE919A2}
- {0xd4bdd1eb, 0x56f1, 0x4a87, {0xa1, 0x87, 0x67, 0x24, 0x6e, 0xe9, 0x19, 0xa2}},
-};
-
-BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, void*)
-{
- hInst = hinstDLL;
- return TRUE;
-}
-
-extern "C" __declspec(dllexport) const PLUGININFOEX* MirandaPluginInfoEx(DWORD)
-{
- return &pluginInfo;
-}
-
-BOOL IsRunAsAdmin()
-{
- BOOL fIsRunAsAdmin = FALSE;
- DWORD dwError = ERROR_SUCCESS;
- PSID pAdministratorsGroup = NULL;
-
- // Allocate and initialize a SID of the administrators group.
- SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
- if (!AllocateAndInitializeSid(
- &NtAuthority,
- 2,
- SECURITY_BUILTIN_DOMAIN_RID,
- DOMAIN_ALIAS_RID_ADMINS,
- 0, 0, 0, 0, 0, 0,
- &pAdministratorsGroup))
- {
- dwError = GetLastError();
- goto Cleanup;
- }
-
- // Determine whether the SID of administrators group is enabled in
- // the primary access token of the process.
- if (!CheckTokenMembership(NULL, pAdministratorsGroup, &fIsRunAsAdmin))
- {
- dwError = GetLastError();
- goto Cleanup;
- }
-
-Cleanup:
- // Centralized cleanup for all allocated resources.
- if (pAdministratorsGroup)
- {
- FreeSid(pAdministratorsGroup);
- pAdministratorsGroup = NULL;
- }
-
- // Throw the error if something failed in the function.
- if (ERROR_SUCCESS != dwError)
- {
- throw dwError;
- }
-
- return fIsRunAsAdmin;
-}
-
-extern "C" __declspec(dllexport) int Load(void)
-{
- mir_getLP( &pluginInfo );
-
- //if (!IsRunAsAdmin())
- MovePacks(_T("langpack_*.txt"));
-
- /*INITCOMMONCONTROLSEX icc;
- icc.dwSize = sizeof(icc);
- icc.dwICC = ICC_TREEVIEW_CLASSES|ICC_USEREX_CLASSES;
- InitCommonControlsEx(&icc);*/
-
- /* menu item */
- CLISTMENUITEM mi = { sizeof(mi) };
- mi.position = 2000089999;
- mi.icolibItem = LoadIcon(hInst, MAKEINTRESOURCE(IDI_RELOAD));
- mi.pszName = LPGEN("Reload langpack");
- mi.pszService = MS_LANGPACK_RELOAD;
- Menu_AddMainMenuItem(&mi);
-
- /* reset langpack */
- mir_ptr<TCHAR> langpack(db_get_tsa(NULL, "LangMan", "Langpack"));
- if (langpack)
- {
- TCHAR szPath[MAX_PATH];
- GetPackPath(szPath, SIZEOF(szPath), FALSE, langpack);
-
- DWORD dwAttrib = GetFileAttributes(szPath);
- if (dwAttrib != INVALID_FILE_ATTRIBUTES && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY))
- CallService(MS_LANGPACK_RELOAD, 0, (LPARAM)szPath);
- }
-
- InitOptions();
-
- return 0;
-}
-
-extern "C" __declspec(dllexport) int Unload(void)
-{
- UninitOptions();
-
- /* move default langpack to root */
- mir_ptr<TCHAR> langpack(db_get_tsa(NULL, "LangMan", "Langpack"));
- if (langpack)
- {
- TCHAR szFrom[MAX_PATH], szDest[MAX_PATH];
- GetPackPath(szFrom, SIZEOF(szFrom), FALSE, langpack);
-
- DWORD dwAttrib = GetFileAttributes(szFrom);
- if (dwAttrib != INVALID_FILE_ATTRIBUTES && !(dwAttrib & FILE_ATTRIBUTE_DIRECTORY))
- {
- GetPackPath(szDest, SIZEOF(szDest), TRUE, langpack);
- if (!MoveFile(szFrom, szDest) && GetLastError() == ERROR_ALREADY_EXISTS) {
- DeleteFile(szDest);
- MoveFile(szFrom, szDest);
- }
- }
- }
-
- return 0;
-} \ No newline at end of file
diff --git a/plugins/LangMan/src/options.cpp b/plugins/LangMan/src/options.cpp
deleted file mode 100644
index 6abdf153c5..0000000000
--- a/plugins/LangMan/src/options.cpp
+++ /dev/null
@@ -1,588 +0,0 @@
-/*
-
-'Language Pack Manager'-Plugin for Miranda IM
-
-Copyright (C) 2005-2007 H. Herkenrath
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program (LangMan-License.txt); if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "common.h"
-
-typedef PLUGININFOEX* (__cdecl *pfnMirandaPluginInfo)(DWORD);
-
-extern HINSTANCE hInst;
-static HANDLE hHookOptInit;
-
-/************************* Utils **************************************/
-
-#define BOX(str) BOX2("%s (err:%i)", str, GetLastError())
-#define BOX2(fmt, p1, p2) { char str[256]; mir_snprintf(str, SIZEOF(str), fmt, p1, p2); MessageBoxA(NULL, str, "dbg", 0); }
-
-// ImageList_Destroy() the return value
-// refresh on WM_THEMECHANGED
-static HIMAGELIST CreateRadioImages(COLORREF clrBk, COLORREF clrText)
-{
- /* draw bitmap */
- HDC hdcScreen = GetDC(NULL);
- if (hdcScreen == NULL)
- return NULL;
-
- HIMAGELIST himl = NULL;
- HDC hdc = CreateCompatibleDC(NULL); /* compatible to screen */
- if (hdc != NULL) {
- SIZE size = { GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON) };
- RECT rc;
- SetRect(&rc, 0, 0, 2 * size.cx, size.cy);
- HBITMAP hbm = CreateCompatibleBitmap(hdcScreen, rc.right, rc.bottom);
- if (hbm != NULL) {
- HBITMAP hbmPrev = (HBITMAP)SelectObject(hdc, hbm);
- if (hbmPrev != NULL) { /* error on select? */
- HTHEME hTheme = OpenThemeData(NULL, L"Button");
- SetRect(&rc, 0, 0, size.cx, size.cy);
- /* unchecked */
- if (!DrawThemeBackground(hTheme, hdc, BP_RADIOBUTTON, RBS_UNCHECKEDNORMAL, &rc, NULL)) {
- /* checked */
- OffsetRect(&rc, size.cx, 0);
- if (!DrawThemeBackground(hTheme, hdc, BP_RADIOBUTTON, RBS_CHECKEDNORMAL, &rc, NULL))
- himl = ImageList_Create(size.cx, size.cy, ILC_COLOR32 | ILC_MASK, 3, 0);
- }
- CloseThemeData(hTheme);
-
- /* the classic way */
- if (himl == NULL) {
- RECT rcRadio;
- HBRUSH hbrBk = CreateSolidBrush(clrBk);
- if (hbrBk != NULL) {
- FillRect(hdc, &rc, hbrBk);
- DeleteObject(hbrBk);
- HDC hdcMono = CreateCompatibleDC(hdc);
- if (hdcMono != NULL) {
- HBITMAP hbmMono = CreateBitmap(rc.right, rc.bottom, 1, 1, NULL);
- if (hbmMono != NULL) {
- HBITMAP hbmPrevMono = (HBITMAP)SelectObject(hdcMono, hbmMono);
- if (hbmPrevMono != NULL) { /* error on select? */
- /* draws a black-and-white mask (see docs)
- * we need to colorize it using BitBlt with text and background color */
- COLORREF clrPrevText = SetTextColor(hdc, clrText);
- COLORREF clrPrevBk = SetBkColor(hdc, clrBk);
- /* check mark is slightly smaller than icon size */
- SetRect(&rcRadio, 0, 0, GetSystemMetrics(SM_CXMENUCHECK), GetSystemMetrics(SM_CYMENUCHECK));
- if (rcRadio.right > size.cx) rcRadio.right = size.cx;
- if (rcRadio.bottom > size.cy) rcRadio.bottom = size.cy;
- SetRect(&rc, ((size.cx - rcRadio.right) / 2) + 1, ((size.cy - rcRadio.bottom) / 2) + 1, rcRadio.right + 1, rcRadio.bottom + 1);
- /* unchecked */
- if (BitBlt(hdcMono, 0, 0, rcRadio.right, rcRadio.bottom, NULL, 0, 0, WHITENESS)) { /* white back */
- if (DrawFrameControl(hdcMono, &rcRadio, DFC_BUTTON, DFCS_BUTTONRADIO | DFCS_FLAT)) {
- if (BitBlt(hdc, rc.left, rc.top, rcRadio.right, rcRadio.bottom, hdcMono, 0, 0, SRCCOPY | NOMIRRORBITMAP)) {
- /* checked */
- OffsetRect(&rc, size.cx, 0);
- if (BitBlt(hdcMono, 0, 0, rcRadio.right, rcRadio.bottom, NULL, 0, 0, WHITENESS)) {/* white back */
- if (DrawFrameControl(hdcMono, &rcRadio, DFC_BUTTON, DFCS_BUTTONRADIO | DFCS_FLAT | DFCS_CHECKED)) {
- if (BitBlt(hdc, rc.left, rc.top, rcRadio.right, rcRadio.bottom, hdcMono, 0, 0, SRCCOPY | NOMIRRORBITMAP))
- himl = ImageList_Create(size.cx, size.cy, ILC_COLOR | ILC_MASK, 3, 0);
- }
- else BOX("second DrawFrameControl() failed");
- }
- else BOX("second BitBlt() failed");
- }
- else BOX("intermediate BitBlt() failed");
- }
- else BOX("DrawFrameControl() failed");
- }
- else BOX("first BitBlt() failed");
- /* restore */
- SetBkColor(hdc, clrPrevBk);
- SetTextColor(hdc, clrPrevText);
- SelectObject(hdcMono, hbmPrevMono);
- }
- else BOX("hbmPrevMono == NULL");
- DeleteObject(hbmMono);
- }
- else BOX("hbmMono == NULL");
- DeleteDC(hdcMono);
- }
- else BOX("hdcMono == NULL");
- }
- }
- SelectObject(hdc, hbmPrev);
- /* create imagelist */
- if (himl != NULL) {
- if (himl == NULL) BOX("img list create failed");
- if (himl != NULL) if (ImageList_AddMasked(himl, hbm, clrBk) == -1) BOX("add failed");
- }
- else BOX("Win9x: drawing code not reached");
- }
- DeleteObject(hbm);
- }
- DeleteDC(hdc);
- }
- ReleaseDC(NULL, hdcScreen);
- return himl;
-}
-
-static void CleanupPluginName(char *szShortName)
-{
- char *p;
- /* strip-off anything in brackets */
- for(p = szShortName;*p!='\0';++p)
- if (*p == '(' || *p == '[') {
- *p = '\0';
- break;
- }
- /* remove trailing space */
- int len = lstrlenA(szShortName);
- while(szShortName[0]!='\0' && szShortName[len-1] == ' ')
- szShortName[--len] = 0;
-}
-
-static void DisplayPackInfo(HWND hwndDlg, const LANGPACK_INFO *pack)
-{
- /* locale string */
- if (!(pack->flags & LPF_NOLOCALE)) {
- TCHAR szLocaleName[128];
- szLocaleName[0] = _T('\0');
- /* can't use LOCALE_SNAME as it is not present on pre WinVista */
- if (!GetLocaleInfo(pack->Locale, LOCALE_SISO639LANGNAME, szLocaleName, SIZEOF(szLocaleName))) { /* Win98/NT4+ */
- if (!GetLocaleInfo(pack->Locale, LOCALE_SLANGUAGE, szLocaleName, SIZEOF(szLocaleName))) /* not unique! */
- szLocaleName[0] = _T('\0');
- }
- else {
- if (GetLocaleInfo(pack->Locale, LOCALE_SISO3166CTRYNAME, &szLocaleName[3], SIZEOF(szLocaleName) - 3)) /* Win98/NT4+ */
- szLocaleName[2] = _T('-');
- }
- /* add some note if its incompatible */
- if (szLocaleName[0]) {
- if (!IsValidLocale(pack->Locale, LCID_INSTALLED)) {
- TCHAR *pszIncompat;
- pszIncompat = TranslateT("(incompatible)");
- szLocaleName[SIZEOF(szLocaleName) - lstrlen(pszIncompat) - 1] = 0;
- lstrcat(lstrcat(szLocaleName, _T(" ")), pszIncompat); /* buffer safe */
- }
- SetDlgItemText(hwndDlg, IDC_LANGLOCALE, szLocaleName);
- }
- else SetDlgItemText(hwndDlg, IDC_LANGLOCALE, TranslateT("Unknown"));
- }
- else SetDlgItemText(hwndDlg, IDC_LANGLOCALE, TranslateT("Current"));
-
- /* file date */
- SYSTEMTIME stFileDate;
- TCHAR szDate[128];
- szDate[0] = _T('\0');
- if (FileTimeToSystemTime(&pack->ftFileDate, &stFileDate))
- GetDateFormat((LCID)CallService(MS_LANGPACK_GETLOCALE, 0, 0), DATE_SHORTDATE, &stFileDate, NULL, szDate, SIZEOF(szDate));
- SetDlgItemText(hwndDlg, IDC_LANGDATE, szDate);
-
- /* version */
- SetDlgItemTextA(hwndDlg, IDC_LANGVERSION, pack->szVersion);
- if (pack->szVersion[0] && pack->szFLName[0]) {
- if (!IsWindowVisible(GetDlgItem(hwndDlg, IDC_LANGVERSIONLABEL))) {
- ShowWindow(GetDlgItem(hwndDlg, IDC_LANGVERSIONLABEL), SW_SHOW);
- ShowWindow(GetDlgItem(hwndDlg, IDC_LANGVERSION), SW_SHOW);
- }
- }
- else {
- ShowWindow(GetDlgItem(hwndDlg, IDC_LANGVERSIONLABEL), SW_HIDE);
- ShowWindow(GetDlgItem(hwndDlg, IDC_LANGVERSION), SW_HIDE);
- }
-
- /* general */
- SetDlgItemTextA(hwndDlg, IDC_LANGMODUSING, pack->szLastModifiedUsing);
- SetDlgItemTextA(hwndDlg, IDC_LANGAUTHORS, pack->szAuthors);
- SetDlgItemTextA(hwndDlg, IDC_LANGEMAIL, pack->szAuthorEmail);
- SetDlgItemText(hwndDlg, IDC_LANGINFOFRAME, TranslateTS(pack->szLanguage));
-}
-
-/************************* Insert/Delete ******************************/
-
-#define M_RELOADLIST (WM_APP+1)
-#define M_SHOWFILECOL (WM_APP+2)
-
-static void DeletePackFile(HWND hwndDlg, HWND hwndList, int iItem, LANGPACK_INFO *pack)
-{
- SHFILEOPSTRUCT sfo = { 0 };
- sfo.hwnd = hwndDlg;
- sfo.wFunc = FO_DELETE;
- sfo.fFlags = FOF_SIMPLEPROGRESS|FOF_SILENT; /* silent = no progress */
-
- /* double zero terminated */
- TCHAR szFileName[MAX_PATH];
- if (GetPackPath(szFileName, SIZEOF(szFileName) - 1, pack->flags & LPF_ENABLED, pack->szFileName)) {
- szFileName[lstrlen(szFileName)+1] = _T('\0');
- sfo.pFrom = szFileName;
- /* ask to delete file */
- if (!SHFileOperation(&sfo) && !sfo.fAnyOperationsAborted) {
- LVITEM lvi;
- lvi.iItem = iItem;
- lvi.iSubItem = 0;
- lvi.mask = LVIF_STATE;
- lvi.stateMask = LVIS_STATEIMAGEMASK|LVIS_SELECTED|LVIS_FOCUSED;
- if (ListView_GetItem(hwndList, &lvi)) {
- ListView_DeleteItem(hwndList, iItem);
- /* enable/select next item at same position */
- int nCount = ListView_GetItemCount(hwndList);
- lvi.iItem = (iItem < nCount) ? iItem : iItem - 1;
- ListView_SetItemState(hwndList, lvi.iItem, lvi.state, lvi.stateMask);
- if (nCount == 1)
- SendMessage(hwndDlg, M_SHOWFILECOL, 0, FALSE);
- }
- }
- }
-}
-
-static BOOL InsertPackItemEnumProc(LANGPACK_INFO *pack, WPARAM wParam, LPARAM lParam)
-{
- LANGPACK_INFO *pack2 = (LANGPACK_INFO*)mir_alloc(sizeof(LANGPACK_INFO));
- if (pack2 == NULL) return FALSE;
- CopyMemory(pack2, pack, sizeof(LANGPACK_INFO));
-
- /* country flag icon */
- LVITEM lvi;
- lvi.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE;
- if ((HIMAGELIST)lParam != NULL) {
- HICON hIcon;
- if (pack->flags & LPF_DEFAULT)
- hIcon = (HICON)CallService(MS_FLAGS_CREATEMERGEDFLAGICON, CTRY_UNITED_STATES, CTRY_UNITED_KINGDOM);
- else {
- int countryId = 0xFFFF; /* Unknown */
- TCHAR szBuf[6];
- /* get country id from locale */
- if (!(pack->flags & LPF_NOLOCALE))
- if (GetLocaleInfo(pack->Locale, LOCALE_ICOUNTRY, szBuf, SIZEOF(szBuf)))
- countryId = _ttoi(szBuf);
- hIcon = (HICON)CallService(MS_FLAGS_LOADFLAGICON, countryId, 0);
- }
- lvi.iImage = (hIcon == NULL) ? -1 : ImageList_AddIcon((HIMAGELIST)lParam, hIcon);
- lvi.mask |= LVIF_IMAGE;
- }
- /* insert */
- lvi.iItem = lvi.iSubItem = 0;
- lvi.stateMask = LVIS_STATEIMAGEMASK | LVIS_SELECTED;
- lvi.state = INDEXTOSTATEIMAGEMASK((pack->flags & LPF_ENABLED)?2:1);
- if (pack->flags & LPF_ENABLED)
- lvi.state |= LVIS_SELECTED | LVIS_FOCUSED;
- lvi.pszText = TranslateTS(pack->szLanguage);
- lvi.lParam = (LPARAM)pack2;
- ListView_InsertItem((HWND)wParam, &lvi);
-
- return TRUE;
-}
-
-static int CALLBACK CompareListItem(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
-{
- int cmp = CompareString((LCID)lParamSort, 0, ((LANGPACK_INFO*)lParam1)->szLanguage, -1, ((LANGPACK_INFO*)lParam2)->szLanguage, -1);
- if (cmp != 0)
- cmp -= 2;
- return cmp;
-}
-
-/************************* Options Page *******************************/
-
-static HWND hwndLangOpt;
-
-static INT_PTR CALLBACK LangOptDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- HWND hwndList = GetDlgItem(hwndDlg, IDC_LANGLIST);
- LVITEM lvi;
-
- switch(msg) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- hwndLangOpt = hwndDlg;
- ListView_SetExtendedListViewStyle(hwndList, LVS_EX_FULLROWSELECT|LVS_EX_LABELTIP);
- ListView_SetImageList(hwndList, CreateRadioImages(ListView_GetBkColor(hwndList), ListView_GetTextColor(hwndList)), LVSIL_STATE); /* auto-destroyed */
- {
- LVCOLUMN lvc;
- lvc.mask = LVCF_TEXT;
- lvc.pszText = TranslateT("Installed Languages");
- ListView_InsertColumn(hwndList, 0, &lvc);
- }
- if ( ServiceExists(MS_FLAGS_LOADFLAGICON))
- ListView_SetImageList(hwndList, ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLOR24, 8, 8), LVSIL_SMALL);
-
- TCHAR szPath[MAX_PATH];
- GetPackPath(szPath, SIZEOF(szPath), FALSE, _T(""));
- SetDlgItemText(hwndDlg, IDC_SKINROOTFOLDER, szPath);
-
- SendMessage(hwndDlg, M_RELOADLIST, 0, 0);
- SendMessage(hwndDlg, M_SHOWFILECOL, 0, 1);
- return TRUE;
-
- case M_RELOADLIST:
- /* init list */
- ListView_DeleteAllItems(hwndList);
- ListView_DeleteColumn(hwndList, 1); /* if present */
- {
- HIMAGELIST himl = ListView_GetImageList(hwndList, LVSIL_SMALL);
- ImageList_RemoveAll(himl);
- /* enum all packs */
- EnumPacks(InsertPackItemEnumProc, _T("langpack_*.txt"), "Miranda Language Pack Version 1", (WPARAM)hwndList, (LPARAM)himl);
- /* make it use current langpack locale for sort */
- ListView_SortItems(hwndList, CompareListItem, CallService(MS_LANGPACK_GETLOCALE, 0, 0));
- //CheckDlgButton(hwndDlg, IDC_ENABLEAUTOUPDATES, db_get_b(NULL, "LangMan", "EnableAutoUpdates", SETTING_ENABLEAUTOUPDATES_DEFAULT) != 0);
- /* show selection */
- int iItem = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED);
- if (iItem != -1)
- ListView_EnsureVisible(hwndList, iItem, FALSE);
- }
- return TRUE;
-
- case M_SHOWFILECOL:
- if ((BOOL)lParam && ListView_GetItemCount(hwndList) > 1) {
- /* add column */
- LVCOLUMN lvc;
- ListView_SetColumnWidth(hwndList, 0, LVSCW_AUTOSIZE_USEHEADER);
- lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
- lvc.pszText = TranslateT("File");
- lvc.cx = 160;
- ListView_InsertColumn(hwndList, lvc.iSubItem = 1, &lvc);
- ListView_SetColumnWidth(hwndList, 0, ListView_GetColumnWidth(hwndList, 0) - lvc.cx);
-
- /* add text */
- lvi.mask = LVIF_PARAM;
- lvi.iSubItem = 0;
- for (lvi.iItem = 0; ListView_GetItem(hwndList, &lvi); ++lvi.iItem) {
- LANGPACK_INFO *pack = (LANGPACK_INFO*)lvi.lParam;
- ListView_SetItemText(hwndList, lvi.iItem, 1, (pack->flags&LPF_DEFAULT) ? TranslateT("built-in") : pack->szFileName);
- }
- }
- else {
- ListView_DeleteColumn(hwndList, 1);
- ListView_SetColumnWidth(hwndList, 0, LVSCW_AUTOSIZE_USEHEADER);
- }
- return TRUE;
-
- case WM_DESTROY:
- ListView_DeleteAllItems(GetDlgItem(hwndDlg, IDC_LANGLIST));
- return TRUE;
-
- case WM_THEMECHANGED:
- case WM_SETTINGCHANGE:
- {
- HIMAGELIST himl = ListView_SetImageList(hwndList, CreateRadioImages(ListView_GetBkColor(hwndList), ListView_GetTextColor(hwndList)), LVSIL_STATE); /* auto-destroyed */
- if (himl != NULL)
- ImageList_Destroy(himl);
- }
- break;
-
- case WM_CTLCOLORLISTBOX: /* mimic readonly edit */
- return (BOOL)SendMessage(hwndDlg, WM_CTLCOLORSTATIC, wParam, lParam);
-
- case WM_COMMAND:
- switch(LOWORD(wParam)) {
- case IDC_LANGEMAIL:
- {
- char buf[512];
- lstrcpyA(buf, "mailto:");
- if (GetWindowTextA(GetDlgItem(hwndDlg, LOWORD(wParam)), &buf[7], sizeof(buf)-7))
- CallService(MS_UTILS_OPENURL, FALSE, (LPARAM)buf);
- return TRUE;
- }
-
- case IDC_MORELANG:
- CallService(MS_UTILS_OPENURL, TRUE, (LPARAM)"http://miranda-ng.org/");
- return TRUE;
- }
- break;
-
- case WM_CONTEXTMENU:
- if (GetDlgCtrlID((HWND)wParam) == IDC_LANGLIST) {
- /* get item */
- LVHITTESTINFO hti;
- POINTSTOPOINT(hti.pt, MAKEPOINTS(lParam));
- if (hti.pt.x == -1 && hti.pt.y == -1) {
- /* keyboard invoked */
- hti.iItem = ListView_GetNextItem((HWND)wParam, -1, LVNI_SELECTED);
- if (hti.iItem != -1)
- break;
-
- RECT rc;
- if (!ListView_GetItemRect((HWND)wParam, hti.iItem, &rc, LVIR_SELECTBOUNDS))
- break;
-
- hti.pt.x = rc.left + (rc.right - rc.left) / 2;
- hti.pt.y = rc.top + (rc.bottom - rc.top) / 2;
- ClientToScreen((HWND)wParam, &hti.pt);
- }
- else {
- ScreenToClient((HWND)wParam, &hti.pt);
- if (ListView_HitTest((HWND)wParam, &hti) == -1 || !(hti.flags&LVHT_ONITEM))
- break;
- POINTSTOPOINT(hti.pt, MAKEPOINTS(lParam));
- }
-
- /* param */
- lvi.iItem = hti.iItem;
- lvi.iSubItem = 0;
- lvi.mask = LVIF_PARAM;
- if (!ListView_GetItem((HWND)wParam, &lvi))
- break;
-
- /* context menu */
- LANGPACK_INFO *pack = (LANGPACK_INFO*)lvi.lParam;
- if (!(pack->flags & LPF_DEFAULT)) {
- HMENU hContextMenu = CreatePopupMenu();
- if (hContextMenu != NULL) {
- AppendMenu(hContextMenu, MF_STRING, 2, TranslateT("&Remove..."));
- if (TrackPopupMenuEx(hContextMenu, TPM_RETURNCMD | TPM_NONOTIFY | TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_HORPOSANIMATION | TPM_VERPOSANIMATION, hti.pt.x, hti.pt.y, (HWND)wParam, NULL))
- DeletePackFile(hwndDlg, (HWND)wParam, hti.iItem, pack);
- DestroyMenu(hContextMenu);
- }
- }
- return TRUE;
- }
- break;
-
- case WM_NOTIFYFORMAT:
- SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, NFR_UNICODE);
- return TRUE;
-
- case WM_NOTIFY:
- NMHDR *nmhdr = (NMHDR*)lParam;
- switch (nmhdr->idFrom) {
- case IDC_LANGLIST:
- switch (nmhdr->code) {
- case LVN_DELETEITEM:
- lvi.iItem = ((NMLISTVIEW*)lParam)->iItem; /* nmlv->lParam is invalid */
- lvi.iSubItem = 0;
- lvi.mask = LVIF_PARAM;
- if (ListView_GetItem(nmhdr->hwndFrom, &lvi))
- mir_free((LANGPACK_INFO*)lvi.lParam);
- break;
-
- case LVN_ITEMCHANGED:
- {
- NMLISTVIEW *nmlv = (NMLISTVIEW*)lParam;
- if (!(nmlv->uChanged&LVIF_STATE))
- break;
-
- /* display info and check radio item */
- if (nmlv->uNewState&LVIS_SELECTED && !(nmlv->uOldState&LVIS_SELECTED)) {
- ListView_SetItemState(nmhdr->hwndFrom, nmlv->iItem, INDEXTOSTATEIMAGEMASK(2), LVIS_STATEIMAGEMASK);
- DisplayPackInfo(hwndDlg, (LANGPACK_INFO*)nmlv->lParam);
- }
- /* disable all other radio items */
- else if (nmlv->uNewState&INDEXTOSTATEIMAGEMASK(2)) {
- for (int iItem = ListView_GetItemCount(nmhdr->hwndFrom) - 1; iItem != -1; --iItem)
- if (iItem != nmlv->iItem)
- ListView_SetItemState(nmhdr->hwndFrom, iItem, INDEXTOSTATEIMAGEMASK(1), LVIS_STATEIMAGEMASK);
-
- /* enable apply */
- if (nmlv->uOldState) {
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
- ShowWindow(GetDlgItem(hwndDlg, IDC_RESTART), SW_SHOW);
- }
- }
- }
- break;
-
- case LVN_KEYDOWN:
- {
- int iItem = ListView_GetNextItem(nmhdr->hwndFrom, -1, LVNI_SELECTED);
- switch (((NMLVKEYDOWN*)lParam)->wVKey) {
- case VK_SPACE:
- ListView_SetItemState(nmhdr->hwndFrom, iItem, INDEXTOSTATEIMAGEMASK(2), LVIS_STATEIMAGEMASK);
- break;
-
- case VK_DELETE:
- lvi.iItem = iItem;
- lvi.iSubItem = 0;
- lvi.mask = LVIF_PARAM;
- if (ListView_GetItem(nmhdr->hwndFrom, &lvi)) {
- LANGPACK_INFO *pack = (LANGPACK_INFO*)lvi.lParam;
- if (!(pack->flags&LPF_DEFAULT))
- DeletePackFile(hwndDlg, nmhdr->hwndFrom, iItem, pack);
- }
- break;
- }
- }
- break;
-
- case NM_CLICK:
- LVHITTESTINFO hti;
- lParam = GetMessagePos();
- POINTSTOPOINT(hti.pt, MAKEPOINTS(lParam));
- ScreenToClient(nmhdr->hwndFrom, &hti.pt);
- if (ListView_HitTest(nmhdr->hwndFrom, &hti) != -1)
- if (hti.flags&(LVHT_ONITEMSTATEICON | LVHT_ONITEMICON)) /* one of them */
- ListView_SetItemState(nmhdr->hwndFrom, hti.iItem, LVIS_SELECTED, LVIS_SELECTED);
- }
- break;
-
- case 0:
- switch (nmhdr->code) {
- case PSN_APPLY:
- lvi.mask = LVIF_STATE | LVIF_PARAM;
- lvi.stateMask = LVIS_STATEIMAGEMASK;
- lvi.iSubItem = 0;
- for (lvi.iItem = 0; ListView_GetItem(hwndList, &lvi); ++lvi.iItem) {
- LANGPACK_INFO *pack = (LANGPACK_INFO*)lvi.lParam;
- if (lvi.state&INDEXTOSTATEIMAGEMASK(2) && !(pack->flags & LPF_ENABLED)) {
- if(!(pack->flags & LPF_DEFAULT))
- db_set_ws(NULL, "LangMan", "Langpack", pack->szFileName);
- else
- db_unset(NULL, "LangMan", "Langpack");
- TCHAR szPath[MAX_PATH];
- GetPackPath(szPath, SIZEOF(szPath), FALSE, pack->szFileName);
- CallService(MS_LANGPACK_RELOAD, 0, (LPARAM)szPath);
- pack->flags |= LPF_ENABLED;
- CloseWindow(GetParent(hwndDlg));
- DestroyWindow(GetParent(hwndDlg));
- }
- else pack->flags &= ~LPF_ENABLED;
- }
- return TRUE;
- }
- }
- break;
- }
- return FALSE;
-}
-
-void ReloadLangOptList(void)
-{
- if (hwndLangOpt != NULL) {
- SendMessage(hwndLangOpt, M_RELOADLIST, 0, 0);
- SendMessage(hwndLangOpt, M_SHOWFILECOL, 0, 1);
- }
-}
-
-static int LangOptInit(WPARAM wParam, LPARAM)
-{
- OPTIONSDIALOGPAGE odp = { sizeof(odp) };
- odp.hInstance = hInst;
- odp.flags = ODPF_BOLDGROUPS|ODPF_TCHAR;
- odp.position = 1200000090;
- odp.ptszTitle = LPGENT("Languages");
- odp.ptszGroup = LPGENT("Customize");
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_LANG);
- odp.pfnDlgProc = LangOptDlgProc;
- Options_AddPage(wParam, &odp);
- return 0;
-}
-
-/************************* Misc ***************************************/
-
-void InitOptions(void)
-{
- hwndLangOpt = NULL;
- hHookOptInit = HookEvent(ME_OPT_INITIALISE, LangOptInit);
- //CorrectPacks(_T("langpack_*.txt"), FALSE);
-}
-
-void UninitOptions(void)
-{
- UnhookEvent(hHookOptInit);
-} \ No newline at end of file
diff --git a/plugins/LangMan/src/options.h b/plugins/LangMan/src/options.h
deleted file mode 100644
index 2b9e93b334..0000000000
--- a/plugins/LangMan/src/options.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-
-'Language Pack Manager'-Plugin for Miranda IM
-
-Copyright (C) 2005-2007 H. Herkenrath
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program (LangMan-License.txt); if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-/* Options Page */
-void ReloadLangOptList(void);
-
-/* Misc */
-void InitOptions(void);
-void UninitOptions(void);
diff --git a/plugins/LangMan/src/resource.h b/plugins/LangMan/src/resource.h
deleted file mode 100644
index 30e82b3fc0..0000000000
--- a/plugins/LangMan/src/resource.h
+++ /dev/null
@@ -1,52 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by d:\Projects\CPlusPlus\MirandaNG\plugins\LangMan\res\resource.rc
-//
-#define IDD_OPT_LANG 101
-#define IDD_UPDATENOTIFY 102
-#define IDD_DOWNLOADLANG 103
-#define IDI_ICON1 104
-#define IDI_RELOAD 104
-#define IDC_LANGLIST 1001
-#define IDC_LANGINFOFRAME 1002
-#define IDC_LANGAUTHORSLABEL 1003
-#define IDC_LANGAUTHORS 1004
-#define IDC_LANGEMAILLABEL 1005
-#define IDC_LANGEMAIL 1006
-#define IDC_LANGMODUSINGLABEL 1007
-#define IDC_LANGMODUSING 1008
-#define IDC_LANGDATELABEL 1009
-#define IDC_LANGDATE 1010
-#define IDC_LANGVERSIONLABEL 1011
-#define IDC_LANGVERSION 1012
-#define IDC_LANGLOCALELABEL 1013
-#define IDC_LANGLOCALE 1014
-#define IDC_LANGNOTINCLUDEDLABEL 1015
-#define IDC_LANGNOTINCLUDED 1016
-#define IDC_MORELANG 1017
-#define IDC_RESTART 1018
-#define IDC_ENABLEAUTOUPDATES 1019
-#define IDC_DOWNLOADLANG 1020
-#define IDC_LANGCOMBO 1021
-#define IDC_LANGAUTHORS2 1021
-#define IDC_DOWNLOADALL 1022
-#define IDC_LOADING 1023
-#define IDC_LANGUAGELABEL 1024
-#define IDC_LANGUAGE 1025
-#define IDC_CURRENTVERSION 1026
-#define IDC_NEWVERSION 1027
-#define IDC_NEWVERSIONLABEL 1028
-#define IDC_SKINROOTFOLDER 1439
-#define IDC_LANGROOTFOLDER 1439
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NO_MFC 1
-#define _APS_NEXT_RESOURCE_VALUE 105
-#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1029
-#define _APS_NEXT_SYMED_VALUE 2001
-#endif
-#endif
diff --git a/plugins/LangMan/src/stdafx.cpp b/plugins/LangMan/src/stdafx.cpp
deleted file mode 100644
index 2aa7ce281e..0000000000
--- a/plugins/LangMan/src/stdafx.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-Copyright (C) 2012-14 Miranda NG project (http://miranda-ng.org)
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation version 2
-of the License.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "common.h" \ No newline at end of file
diff --git a/plugins/LangMan/src/version.h b/plugins/LangMan/src/version.h
deleted file mode 100644
index c95c154578..0000000000
--- a/plugins/LangMan/src/version.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#define __MAJOR_VERSION 0
-#define __MINOR_VERSION 11
-#define __RELEASE_NUM 0
-#define __BUILD_NUM 1
-
-#include <stdver.h>
-
-#define __PLUGIN_NAME "Language pack manager"
-#define __FILENAME "LangMan.dll"
-#define __DESCRIPTION "Helps you manage language packs of different languages."
-#define __AUTHOR "H. Herkenrath"
-#define __AUTHOREMAIL ""
-#define __AUTHORWEB "http://miranda-ng.org/p/LangMan/"
-#define __COPYRIGHT "© 2005-2007 H. Herkenrath, 2014 Miranda NG project"