diff options
author | George Hazan <george.hazan@gmail.com> | 2012-06-03 20:59:43 +0000 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2012-06-03 20:59:43 +0000 |
commit | 81ff20eeeb59aa2c72b737d7c6e18baa1a2478d5 (patch) | |
tree | 23ba4f180287ca66042c1d90c06d0816b4b99165 | |
parent | d08dc5de734505b7016a517e27f7ab6eef06e271 (diff) |
MS_LANGPACK_RELOAD - dynamically reloads a language pack
git-svn-id: http://svn.miranda-ng.org/main/trunk@290 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r-- | include/m_langpack.h | 8 | ||||
-rw-r--r-- | src/modules/langpack/langpack.cpp | 19 | ||||
-rw-r--r-- | src/modules/langpack/lpservices.cpp | 11 |
3 files changed, 32 insertions, 6 deletions
diff --git a/include/m_langpack.h b/include/m_langpack.h index cdcd401d59..da15c63ea0 100644 --- a/include/m_langpack.h +++ b/include/m_langpack.h @@ -191,11 +191,15 @@ __inline static INT_PTR Langpack_PCharToTChar(const char* str) #define MS_LANGPACK_REGISTER "LangPack/Register"
#if defined( MIRANDA_CUSTOM_LP )
-
__forceinline void mir_getLP( const PLUGININFOEX* pInfo )
{ CallService(MS_LANGPACK_REGISTER, (WPARAM)&hLangpack, (LPARAM)pInfo);
}
-
#endif
+//reloads langpack
+//wParam=0 (ignored)
+//lParam=(LPARAM)(TCHAR*)langpack file name or NULL to reload the current one
+//always returns 0
+#define MS_LANGPACK_RELOAD "LangPack/Reload"
+
#endif // M_LANGPACK_H__
diff --git a/src/modules/langpack/langpack.cpp b/src/modules/langpack/langpack.cpp index 8950bc61c5..cec6511386 100644 --- a/src/modules/langpack/langpack.cpp +++ b/src/modules/langpack/langpack.cpp @@ -539,10 +539,9 @@ int LoadLangPackModule(void) void UnloadLangPackModule()
{
- int i;
-
if ( !bModuleInitialized ) return;
+ int i;
for ( i=0; i < lMuuids.getCount(); i++ )
mir_free( lMuuids[i] );
lMuuids.destroy();
@@ -555,8 +554,7 @@ void UnloadLangPackModule() mir_free( p2->local);
mir_free( p2->wlocal);
mir_free( p2 );
- }
- }
+ } }
mir_free( p->local );
mir_free( p->wlocal );
@@ -567,3 +565,16 @@ void UnloadLangPackModule() langPack.entry=0;
langPack.entryCount=0;
} }
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+INT_PTR ReloadLangpack(WPARAM wParam, LPARAM lParam)
+{
+ TCHAR* pszStr = ( TCHAR* )lParam;
+ if ( pszStr == NULL )
+ pszStr = langPack.filename;
+
+ UnloadLangPackModule();
+ LoadLangPack(pszStr);
+ return 0;
+}
diff --git a/src/modules/langpack/lpservices.cpp b/src/modules/langpack/lpservices.cpp index 3f7ae689e6..48c0aea155 100644 --- a/src/modules/langpack/lpservices.cpp +++ b/src/modules/langpack/lpservices.cpp @@ -124,16 +124,22 @@ static INT_PTR LPRegister(WPARAM wParam, LPARAM lParam) return 0;
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
static INT_PTR GetDefaultCodePage(WPARAM,LPARAM)
{
return LangPackGetDefaultCodePage();
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
static INT_PTR GetDefaultLocale(WPARAM, LPARAM)
{
return LangPackGetDefaultLocale();
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
static INT_PTR PcharToTchar(WPARAM wParam, LPARAM lParam)
{
char* pszStr = ( char* )lParam;
@@ -154,6 +160,10 @@ static INT_PTR PcharToTchar(WPARAM wParam, LPARAM lParam) #endif
}
+/////////////////////////////////////////////////////////////////////////////////////////
+
+INT_PTR ReloadLangpack(WPARAM wParam, LPARAM lParam);
+
int LoadLangPackServices(void)
{
CreateServiceFunction(MS_LANGPACK_TRANSLATESTRING,TranslateString);
@@ -163,6 +173,7 @@ int LoadLangPackServices(void) CreateServiceFunction(MS_LANGPACK_GETLOCALE,GetDefaultLocale);
CreateServiceFunction(MS_LANGPACK_PCHARTOTCHAR,PcharToTchar);
CreateServiceFunction(MS_LANGPACK_REGISTER,LPRegister);
+ CreateServiceFunction(MS_LANGPACK_RELOAD,ReloadLangpack);
return 0;
}
|