mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
Merge remote-tracking branch 'upstream/master' into DevNewFeatures
This commit is contained in:
commit
4abdcddede
@ -1 +1 @@
|
||||
2713
|
||||
2714
|
||||
|
||||
@ -19,7 +19,7 @@ Keyboard Shortcuts for Notepad3
|
||||
Tools
|
||||
|
||||
Alt+N Open document in new window.
|
||||
Alt+Shit+N Open new empty window.
|
||||
Alt+Shift+N Open new empty window.
|
||||
Ctrl+M Run MiniPath file browser plugin.
|
||||
Ctrl+L Launch document.
|
||||
Alt+L Open with.
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<assemblyIdentity
|
||||
name="Notepad3"
|
||||
processorArchitecture="*"
|
||||
version="5.20.124.2713"
|
||||
version="5.20.125.2714"
|
||||
type="win32"
|
||||
/>
|
||||
<description>Notepad3 BETA</description>
|
||||
|
||||
@ -26,6 +26,7 @@ extern "C" {
|
||||
#include "Dialogs.h"
|
||||
#include "Encoding.h"
|
||||
#include "Notepad3.h"
|
||||
#include "MuiLanguage.h"
|
||||
#include "resource.h"
|
||||
}
|
||||
|
||||
@ -696,10 +697,16 @@ void LoadSettings()
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
LANGID lngID = 0;
|
||||
Defaults2.PreferredLanguageLocaleName[0] = L'\0';
|
||||
GetUserPreferredLanguage(Defaults2.PreferredLanguageLocaleName, COUNTOF(Defaults2.PreferredLanguageLocaleName), &lngID);
|
||||
|
||||
IniSectionGetString(IniSecSettings2, L"PreferredLanguageLocaleName", Defaults2.PreferredLanguageLocaleName,
|
||||
Settings2.PreferredLanguageLocaleName, COUNTOF(Settings2.PreferredLanguageLocaleName));
|
||||
//_wsetlocale(LC_COLLATE, Settings2.PreferredLanguageLocaleName);
|
||||
|
||||
StringCchCopyW(Globals.InitialPreferredLanguage, COUNTOF(Globals.InitialPreferredLanguage), Settings2.PreferredLanguageLocaleName);
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
StringCchCopyW(Defaults2.DefaultExtension, COUNTOF(Defaults2.DefaultExtension), L"txt");
|
||||
IniSectionGetString(IniSecSettings2, L"DefaultExtension", Defaults2.DefaultExtension,
|
||||
@ -901,20 +908,13 @@ void LoadSettings()
|
||||
Defaults.EFR_Data.fuFlags = 0;
|
||||
Settings.EFR_Data.fuFlags = (UINT)IniSectionGetInt(IniSecSettings, L"efrData_fuFlags", (int)Defaults.EFR_Data.fuFlags);
|
||||
|
||||
Defaults.OpenWithDir[0] = L'\0';
|
||||
if (!IniSectionGetString(IniSecSettings, L"OpenWithDir", Defaults.OpenWithDir, Settings.OpenWithDir, COUNTOF(Settings.OpenWithDir))) {
|
||||
GetKnownFolderPath(FOLDERID_Desktop, Settings.OpenWithDir, COUNTOF(Settings.OpenWithDir));
|
||||
}
|
||||
else {
|
||||
GetKnownFolderPath(FOLDERID_Desktop, Defaults.OpenWithDir, COUNTOF(Defaults.OpenWithDir));
|
||||
if (IniSectionGetString(IniSecSettings, L"OpenWithDir", Defaults.OpenWithDir, Settings.OpenWithDir, COUNTOF(Settings.OpenWithDir))) {
|
||||
PathAbsoluteFromApp(Settings.OpenWithDir, NULL, COUNTOF(Settings.OpenWithDir), true);
|
||||
}
|
||||
|
||||
Defaults.FavoritesDir[0] = L'\0';
|
||||
//StringCchCopyW(Defaults.FavoritesDir, COUNTOF(Defaults.FavoritesDir), L"%USERPROFILE%");
|
||||
if (!IniSectionGetString(IniSecSettings, L"Favorites", Defaults.FavoritesDir, Settings.FavoritesDir, COUNTOF(Settings.FavoritesDir))) {
|
||||
GetKnownFolderPath(FOLDERID_Favorites, Settings.FavoritesDir, COUNTOF(Settings.FavoritesDir));
|
||||
}
|
||||
else {
|
||||
GetKnownFolderPath(FOLDERID_Favorites, Defaults.FavoritesDir, COUNTOF(Defaults.FavoritesDir));
|
||||
if (IniSectionGetString(IniSecSettings, L"Favorites", Defaults.FavoritesDir, Settings.FavoritesDir, COUNTOF(Settings.FavoritesDir))) {
|
||||
PathAbsoluteFromApp(Settings.FavoritesDir, NULL, COUNTOF(Settings.FavoritesDir), true);
|
||||
}
|
||||
|
||||
@ -1494,15 +1494,7 @@ bool SaveSettings(bool bSaveSettingsNow)
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, CustomSchemesDlgSizeY);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, CustomSchemesDlgPosX);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, CustomSchemesDlgPosY);
|
||||
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
const WCHAR* const IniSecSettings2 = Constants.Settings2_Section;
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
IniSectionSetString(IniSecSettings2, L"DefaultWindowPosition", Settings2.DefaultWindowPosition);
|
||||
IniSectionSetString(IniSecSettings2, L"PreferredLanguageLocaleName", Settings2.PreferredLanguageLocaleName);
|
||||
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
const WCHAR* const IniSecWindow = Constants.Window_Section;
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
@ -140,7 +140,7 @@ static bool _LngStrToMultiLngStr(WCHAR* pLngStr, WCHAR* pLngMultiStr, size_t ln
|
||||
// _GetUserPreferredLanguage
|
||||
//
|
||||
//
|
||||
static bool _GetUserPreferredLanguage(LPWSTR pszPrefLocaleName, int cchBuffer, LANGID* pLangID)
|
||||
bool GetUserPreferredLanguage(LPWSTR pszPrefLocaleName, int cchBuffer, LANGID* pLangID)
|
||||
{
|
||||
int res = 0;
|
||||
LANGID lngID = *pLangID;
|
||||
@ -193,6 +193,33 @@ static bool _GetUserPreferredLanguage(LPWSTR pszPrefLocaleName, int cchBuffer, L
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// ChangePreferredLanguage
|
||||
//
|
||||
void SetPreferredLanguage(LANGID iPreferredLanguageID)
|
||||
{
|
||||
Globals.iPrefLANGID = 0;
|
||||
const WCHAR* szLocaleName = NULL;
|
||||
for (int lng = 0; lng < MuiLanguages_CountOf(); ++lng) {
|
||||
if (MUI_LanguageDLLs[lng].LangId == iPreferredLanguageID) {
|
||||
szLocaleName = MUI_LanguageDLLs[lng].szLocaleName;
|
||||
Globals.iPrefLANGID = iPreferredLanguageID;
|
||||
}
|
||||
}
|
||||
if (szLocaleName) {
|
||||
if (StringCchCompareXIW(Settings2.PreferredLanguageLocaleName, szLocaleName) != 0) {
|
||||
StringCchCopyW(Settings2.PreferredLanguageLocaleName, COUNTOF(Settings2.PreferredLanguageLocaleName), szLocaleName);
|
||||
if (StringCchCompareXIW(Settings2.PreferredLanguageLocaleName, Defaults2.PreferredLanguageLocaleName) != 0) {
|
||||
IniFileSetString(Globals.IniFile, Constants.Settings2_Section, L"PreferredLanguageLocaleName", Settings2.PreferredLanguageLocaleName);
|
||||
}
|
||||
else {
|
||||
IniFileDelete(Globals.IniFile, Constants.Settings2_Section, L"PreferredLanguageLocaleName", false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
@ -204,17 +231,6 @@ LANGID LoadLanguageResources()
|
||||
// 1st check language resources
|
||||
Globals.iAvailLngCount = _CheckAvailableLanguageDLLs();
|
||||
|
||||
LANGID languageID = MUI_LanguageDLLs[0].LangId;
|
||||
|
||||
WCHAR wchLngLocalName[LOCALE_NAME_MAX_LENGTH];
|
||||
StringCchCopy(wchLngLocalName, COUNTOF(wchLngLocalName), Settings2.PreferredLanguageLocaleName);
|
||||
|
||||
if (_GetUserPreferredLanguage(wchLngLocalName, COUNTOF(wchLngLocalName), &languageID)) {
|
||||
// push-back (corrected) name found
|
||||
StringCchCopy(Settings2.PreferredLanguageLocaleName, COUNTOF(Settings2.PreferredLanguageLocaleName), wchLngLocalName);
|
||||
//_wsetlocale(LC_COLLATE, Settings2.PreferredLanguageLocaleName);
|
||||
}
|
||||
|
||||
// set the appropriate fallback list
|
||||
int iPrefLngIndex = -1;
|
||||
WCHAR tchAvailLngs[2 * (LOCALE_NAME_MAX_LENGTH + 1)] = { L'\0' };
|
||||
@ -255,26 +271,29 @@ LANGID LoadLanguageResources()
|
||||
|
||||
HINSTANCE _hLangResourceContainer = NULL;
|
||||
Globals.bPrefLngNotAvail = (iPrefLngIndex < 0);
|
||||
int iUsedLngId = (iPrefLngIndex >= 0) ? iPrefLngIndex : 0;
|
||||
|
||||
if ((iPrefLngIndex >= 0) && MUI_LanguageDLLs[iPrefLngIndex].bHasDLL) {
|
||||
_hLangResourceContainer = (iPrefLngIndex == 0) ? Globals.hInstance :
|
||||
LoadMUILibrary(L"lng/np3lng.dll", MUI_LANGUAGE_NAME | MUI_LANGUAGE_EXACT, languageID);
|
||||
LoadMUILibrary(L"lng/np3lng.dll", MUI_LANGUAGE_NAME | MUI_LANGUAGE_EXACT, MUI_LanguageDLLs[iPrefLngIndex].LangId);
|
||||
if (_hLangResourceContainer) {
|
||||
MUI_LanguageDLLs[0].bIsActive = false;
|
||||
MUI_LanguageDLLs[iPrefLngIndex].bIsActive = true;
|
||||
iUsedLngId = iPrefLngIndex;
|
||||
}
|
||||
}
|
||||
|
||||
if (!_hLangResourceContainer) {
|
||||
// fallback to ENGLISH_US
|
||||
//MsgBoxLastError(L"LoadMUILibrary", 0);
|
||||
Globals.bPrefLngNotAvail = (languageID != MUI_LanguageDLLs[0].LangId);
|
||||
languageID = MUI_LanguageDLLs[0].LangId;
|
||||
Globals.bPrefLngNotAvail = (iPrefLngIndex != 0);
|
||||
_hLangResourceContainer = Globals.hInstance;
|
||||
MUI_LanguageDLLs[0].bIsActive = true;
|
||||
iUsedLngId = 0;
|
||||
}
|
||||
|
||||
Globals.hLngResContainer = _hLangResourceContainer;
|
||||
SetThreadUILanguage(languageID);
|
||||
SetThreadUILanguage(MUI_LanguageDLLs[iUsedLngId].LangId);
|
||||
|
||||
// === update language dependent items ===
|
||||
|
||||
@ -298,7 +317,7 @@ LANGID LoadLanguageResources()
|
||||
IniSectionGetString(StatusBar_Section, L"SectionPostfixes", tchDefaultStrg, tchStatusBar, COUNTOF(tchStatusBar));
|
||||
ReadStrgsFromCSV(tchStatusBar, g_mxSBPostfix, STATUS_SECTOR_COUNT, MICRO_BUFFER, L"_POFX_");
|
||||
|
||||
return languageID;
|
||||
return MUI_LanguageDLLs[iUsedLngId].LangId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -33,6 +33,8 @@ typedef struct _muilanguage
|
||||
extern MUILANGUAGE MUI_LanguageDLLs[];
|
||||
int MuiLanguages_CountOf();
|
||||
|
||||
bool GetUserPreferredLanguage(LPWSTR pszPrefLocaleName, int cchBuffer, LANGID* pLangID);
|
||||
void SetPreferredLanguage(LANGID iPreferredLanguageID);
|
||||
|
||||
LANGID LoadLanguageResources();
|
||||
void FreeLanguageResources();
|
||||
|
||||
@ -867,7 +867,7 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
|
||||
// ----------------------------------------------------
|
||||
// MultiLingual
|
||||
//
|
||||
Globals.iPrefLANGID = LoadLanguageResources();
|
||||
SetPreferredLanguage(LoadLanguageResources());
|
||||
|
||||
// ----------------------------------------------------
|
||||
|
||||
@ -974,7 +974,7 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
|
||||
SetTimer(hwnd, IDT_TIMER_MRKALL, USER_TIMER_MINIMUM, (TIMERPROC)MQ_ExecuteNext);
|
||||
|
||||
if (Globals.bPrefLngNotAvail) {
|
||||
InfoBoxLng(MB_ICONWARNING, L"MsgPrefLanguageNotAvailable", IDS_WARN_PREF_LNG_NOT_AVAIL, Settings2.PreferredLanguageLocaleName);
|
||||
InfoBoxLng(MB_ICONWARNING, L"MsgPrefLanguageNotAvailable", IDS_WARN_PREF_LNG_NOT_AVAIL, Globals.InitialPreferredLanguage);
|
||||
}
|
||||
|
||||
MSG msg;
|
||||
@ -3535,14 +3535,18 @@ static void _DynamicLanguageMenuCmd(int cmd)
|
||||
{
|
||||
CloseNonModalDialogs();
|
||||
|
||||
StringCchCopyW(Settings2.PreferredLanguageLocaleName, COUNTOF(Settings2.PreferredLanguageLocaleName), MUI_LanguageDLLs[iLngIdx].szLocaleName);
|
||||
|
||||
LockWindowUpdate(Globals.hwndMain); // prevent intermediate redrawing
|
||||
|
||||
DestroyMenu(Globals.hMainMenu);
|
||||
Globals.iPrefLANGID = MUI_LanguageDLLs[iLngIdx].LangId;
|
||||
|
||||
// desired language
|
||||
SetPreferredLanguage(MUI_LanguageDLLs[iLngIdx].LangId);
|
||||
|
||||
FreeLanguageResources();
|
||||
Globals.iPrefLANGID = LoadLanguageResources();
|
||||
|
||||
// change to available (fallback en-US)
|
||||
SetPreferredLanguage(LoadLanguageResources());
|
||||
|
||||
Globals.hMainMenu = LoadMenu(Globals.hLngResContainer, MAKEINTRESOURCE(IDR_MUI_MAINMENU));
|
||||
if (!Globals.hMainMenu) {
|
||||
MsgBoxLastError(L"LoadMenu()", 0);
|
||||
|
||||
@ -355,6 +355,7 @@ typedef struct _globals_t
|
||||
unsigned idxSelectedTheme;
|
||||
|
||||
WCHAR SelectedThemeName[128];
|
||||
WCHAR InitialPreferredLanguage[LOCALE_NAME_MAX_LENGTH + 1];
|
||||
|
||||
FR_STATES FindReplaceMatchFoundState;
|
||||
|
||||
@ -534,7 +535,7 @@ typedef struct _settings2_t
|
||||
//~float ReliableCEDConfidenceMapping; // = 0.85f;
|
||||
//~float UnReliableCEDConfidenceMapping; //= 0.20f;
|
||||
|
||||
WCHAR PreferredLanguageLocaleName[LOCALE_NAME_MAX_LENGTH+1];
|
||||
WCHAR PreferredLanguageLocaleName[LOCALE_NAME_MAX_LENGTH + 1];
|
||||
WCHAR DefaultExtension[64];
|
||||
WCHAR DefaultDirectory[MAX_PATH];
|
||||
WCHAR FileDlgFilters[XHUGE_BUFFER];
|
||||
|
||||
@ -8,8 +8,8 @@
|
||||
#define SAPPNAME "Notepad3"
|
||||
#define VERSION_MAJOR 5
|
||||
#define VERSION_MINOR 20
|
||||
#define VERSION_REV 124
|
||||
#define VERSION_BUILD 2713
|
||||
#define VERSION_REV 125
|
||||
#define VERSION_BUILD 2714
|
||||
#define SCINTILLA_VER 430
|
||||
#define ONIGURUMA_REGEX_VER 6.9.4
|
||||
#define UCHARDET_VER 2018.09.27
|
||||
|
||||
Loading…
Reference in New Issue
Block a user