mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
+ fix: 'uchardet' result interpretation
+ fix: 'title-bar' display format for analyze result
This commit is contained in:
parent
1caa332305
commit
b3d299acdb
@ -1 +1 @@
|
||||
1627
|
||||
1628
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<assemblyIdentity
|
||||
name="Notepad3"
|
||||
processorArchitecture="*"
|
||||
version="5.19.228.1627"
|
||||
version="5.19.301.1628"
|
||||
type="win32"
|
||||
/>
|
||||
<description>Notepad3 XpErImEnTaL</description>
|
||||
|
||||
19
src/Edit.c
19
src/Edit.c
@ -1042,7 +1042,6 @@ bool EditLoadFile(
|
||||
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// UCHARDET
|
||||
@ -1057,20 +1056,24 @@ bool EditLoadFile(
|
||||
else {
|
||||
StringCchCat(szAdditionalTitleInfo, ADDTITLEINFO_BUF_LEN, (iAnalyzedEncoding == CPI_ASCII_7BIT) ? L"ASCII" : L"<unknown>");
|
||||
}
|
||||
StringCchPrintf((LPWSTR)wchOrigUCHARDET, 128, L"' Conf=%4.2f%%", confidence);
|
||||
StringCchPrintf((LPWSTR)wchOrigUCHARDET, 128, L"' Conf=%3.0f%%", confidence * 100.0f);
|
||||
StringCchCat(szAdditionalTitleInfo, ADDTITLEINFO_BUF_LEN, (LPWSTR)wchOrigUCHARDET);
|
||||
|
||||
StringCchCat(szAdditionalTitleInfo, ADDTITLEINFO_BUF_LEN, L" CED='");
|
||||
if (iAnalyzedEncoding_CED >= 0)
|
||||
{
|
||||
//GetLngString(g_Encodings[iAnalyzedEncoding_CED].idsName, (LPWSTR)wchOrigUCHARDET, 128);
|
||||
StringCchCat(szAdditionalTitleInfo, ADDTITLEINFO_BUF_LEN, g_Encodings[iAnalyzedEncoding_CED].wchLabel);
|
||||
StringCchCat(szAdditionalTitleInfo, ADDTITLEINFO_BUF_LEN, Encoding_GetLabel(iAnalyzedEncoding_CED));
|
||||
}
|
||||
else {
|
||||
StringCchCat(szAdditionalTitleInfo, ADDTITLEINFO_BUF_LEN, (iAnalyzedEncoding == CPI_ASCII_7BIT) ? L"ASCII" : L"<unknown>");
|
||||
StringCchCat(szAdditionalTitleInfo, ADDTITLEINFO_BUF_LEN, (iAnalyzedEncoding_CED == CPI_ASCII_7BIT) ? L"ascii" : L"<unknown>");
|
||||
}
|
||||
if ((iAnalyzedEncoding_CED >= 0) || (iAnalyzedEncoding_CED == CPI_ASCII_7BIT)) {
|
||||
StringCchPrintf((LPWSTR)wchOrigUCHARDET, 128, L"' (%s).", bIsReliable ? L"reliable" : L"NOT reliable");
|
||||
StringCchCat(szAdditionalTitleInfo, ADDTITLEINFO_BUF_LEN, (LPWSTR)wchOrigUCHARDET);
|
||||
}
|
||||
else {
|
||||
StringCchCat(szAdditionalTitleInfo, ADDTITLEINFO_BUF_LEN, L"'");
|
||||
}
|
||||
StringCchPrintf((LPWSTR)wchOrigUCHARDET, 128, L"' (%s).", bIsReliable ? L"reliable" : L"NOT reliable");
|
||||
StringCchCat(szAdditionalTitleInfo, ADDTITLEINFO_BUF_LEN, (LPWSTR)wchOrigUCHARDET);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -1370,8 +1373,6 @@ bool EditSaveFile(
|
||||
bEncodingMismatch = false;
|
||||
}
|
||||
if (bEncodingMismatch) {
|
||||
Encoding_SetLabel(iAltEncoding);
|
||||
Encoding_SetLabel(iEncoding);
|
||||
InfoBoxLng(0,L"MsgEncodingMismatch",IDS_MUI_ENCODINGMISMATCH,
|
||||
g_Encodings[iAltEncoding].wchLabel,
|
||||
g_Encodings[iEncoding].wchLabel);
|
||||
|
||||
@ -234,32 +234,33 @@ int Encoding_MapUnicode(int iUni)
|
||||
// ============================================================================
|
||||
|
||||
|
||||
void Encoding_SetLabel(int iEncoding)
|
||||
void Encoding_SetLabel(int iEncoding)
|
||||
{
|
||||
if (g_Encodings[iEncoding].wchLabel[0] == L'\0') {
|
||||
WCHAR wch1[128] = { L'\0' };
|
||||
WCHAR wch2[128] = { L'\0' };
|
||||
GetLngString(g_Encodings[iEncoding].idsName, wch1, COUNTOF(wch1));
|
||||
WCHAR *pwsz = StrChr(wch1, L';');
|
||||
WCHAR wch1[128] = { L'\0' };
|
||||
GetLngString(g_Encodings[iEncoding].idsName, wch1, COUNTOF(wch1));
|
||||
|
||||
// point to correct label in list
|
||||
WCHAR* pwsz = StrChr(wch1, L';');
|
||||
if (pwsz) {
|
||||
pwsz = StrChr(CharNext(pwsz), L';');
|
||||
if (pwsz) {
|
||||
pwsz = StrChr(CharNext(pwsz), L';');
|
||||
if (pwsz) {
|
||||
pwsz = CharNext(pwsz);
|
||||
}
|
||||
pwsz = CharNext(pwsz);
|
||||
}
|
||||
if (!pwsz)
|
||||
pwsz = wch1;
|
||||
|
||||
StringCchCopyN(wch2, COUNTOF(wch2), pwsz, COUNTOF(wch1));
|
||||
|
||||
if (Encoding_IsANSI(iEncoding))
|
||||
StringCchCatN(wch2, COUNTOF(wch2), wchANSI, COUNTOF(wchANSI));
|
||||
else if (Encoding_IsOEM(iEncoding))
|
||||
StringCchCatN(wch2, COUNTOF(wch2), wchOEM, COUNTOF(wchOEM));
|
||||
|
||||
StringCchCopyN(g_Encodings[iEncoding].wchLabel, COUNTOF(g_Encodings[iEncoding].wchLabel),
|
||||
wch2, COUNTOF(g_Encodings[iEncoding].wchLabel));
|
||||
}
|
||||
if (!pwsz)
|
||||
pwsz = wch1;
|
||||
|
||||
WCHAR wch2[128] = { L'\0' };
|
||||
StringCchCopyN(wch2, COUNTOF(wch2), pwsz, COUNTOF(wch1));
|
||||
|
||||
if (Encoding_IsANSI(iEncoding)) {
|
||||
StringCchCatN(wch2, COUNTOF(wch2), wchANSI, COUNTOF(wchANSI));
|
||||
}
|
||||
else if (Encoding_IsOEM(iEncoding)) {
|
||||
StringCchCatN(wch2, COUNTOF(wch2), wchOEM, COUNTOF(wchOEM));
|
||||
}
|
||||
|
||||
StringCchCopyN(g_Encodings[iEncoding].wchLabel, COUNTOF(g_Encodings[iEncoding].wchLabel), wch2, COUNTOF(wch2));
|
||||
}
|
||||
// ============================================================================
|
||||
|
||||
|
||||
@ -299,16 +299,19 @@ extern "C" NP2ENCODING g_Encodings[] = {
|
||||
/* 137 *///{ NCP_EXTERNAL_8BIT|NCP_RECODE, 57011, "x-iscii-pa,xisciipa,", 00000, L"" }, // ISCII Panjabi
|
||||
};
|
||||
|
||||
constexpr int _CountOfEncodings() { return ARRAYSIZE(g_Encodings); }
|
||||
|
||||
extern "C" int Encoding_CountOf()
|
||||
{
|
||||
return ARRAYSIZE(g_Encodings);
|
||||
return _CountOfEncodings();
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
||||
|
||||
constexpr int _MapCPI2Encoding(const int iNP3Encoding)
|
||||
{
|
||||
if ((iNP3Encoding < 0) || (iNP3Encoding >= Encoding_CountOf())) {
|
||||
if ((iNP3Encoding < 0) || (iNP3Encoding >= _CountOfEncodings())) {
|
||||
return UNKNOWN_ENCODING; // CPI_NONE, CPI_GET
|
||||
}
|
||||
|
||||
@ -388,7 +391,7 @@ constexpr int _FindCodePage(const Encoding& encoding)
|
||||
break;
|
||||
|
||||
default:
|
||||
for (int i = 0; i < Encoding_CountOf(); ++i) {
|
||||
for (int i = 0; i < _CountOfEncodings(); ++i) {
|
||||
if (encoding == g_Encodings[i].iCEDEncoding) {
|
||||
iCodePage = static_cast<int>(g_Encodings[i].uCodePage);
|
||||
break;
|
||||
@ -418,7 +421,7 @@ static int _MapCEDEncoding2CPI(const char* const text, const size_t len, const
|
||||
|
||||
if (cpiEncoding == CPI_NONE)
|
||||
{
|
||||
for (int cpiIdx = 0; cpiIdx < Encoding_CountOf(); ++cpiIdx) {
|
||||
for (int cpiIdx = 0; cpiIdx < _CountOfEncodings(); ++cpiIdx) {
|
||||
if (encoding == g_Encodings[cpiIdx].iCEDEncoding) {
|
||||
cpiEncoding = cpiIdx;
|
||||
break;
|
||||
@ -601,10 +604,12 @@ extern "C" int Encoding_Analyze_UCHARDET(const char* const text, const size_t le
|
||||
uchardet_t hUcharDet = uchardet_new();
|
||||
|
||||
int const result = uchardet_handle_data(hUcharDet, text, len);
|
||||
uchardet_data_end(hUcharDet); // transfer results
|
||||
|
||||
uchardet_data_end(hUcharDet); // transfer report
|
||||
|
||||
switch (result)
|
||||
{
|
||||
case HANDLE_DATA_RESULT_NEED_MORE_DATA: // need more data is a result too
|
||||
case HANDLE_DATA_RESULT_DETECTED:
|
||||
{
|
||||
const char* charset = uchardet_get_charset(hUcharDet);
|
||||
@ -615,11 +620,6 @@ extern "C" int Encoding_Analyze_UCHARDET(const char* const text, const size_t le
|
||||
}
|
||||
break;
|
||||
|
||||
case HANDLE_DATA_RESULT_NEED_MORE_DATA:
|
||||
encoding = CPI_NONE;
|
||||
confidence = 0.0f;
|
||||
break;
|
||||
|
||||
case HANDLE_DATA_RESULT_ERROR:
|
||||
default:
|
||||
encoding = CPI_NONE;
|
||||
|
||||
@ -22,7 +22,9 @@
|
||||
|
||||
//=============================================================================
|
||||
|
||||
MUILANGUAGE MUI_LanguageDLLs[NUM_OF_MUI_LANGUAGES] =
|
||||
//NUM_OF_MUI_LANGUAGES
|
||||
|
||||
MUILANGUAGE MUI_LanguageDLLs[] =
|
||||
{
|
||||
{ IDS_MUI_LANG_EN_US, L"en-US", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), true, false }, // internal - must be 1st
|
||||
// ----------------------------
|
||||
@ -42,6 +44,7 @@ MUILANGUAGE MUI_LanguageDLLs[NUM_OF_MUI_LANGUAGES] =
|
||||
{ IDS_MUI_LANG_ZH_CN, L"zh-CN", MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), false, false}
|
||||
};
|
||||
|
||||
int MuiLanguages_CountOf() { return COUNTOF(MUI_LanguageDLLs); };
|
||||
|
||||
|
||||
//=============================================================================
|
||||
@ -55,7 +58,7 @@ static int _CheckAvailableLanguageDLLs()
|
||||
WCHAR wchAbsPath[MAX_PATH];
|
||||
|
||||
int count = 1;
|
||||
for (int lng = 1; lng < NUM_OF_MUI_LANGUAGES; ++lng)
|
||||
for (int lng = 1; lng < MuiLanguages_CountOf(); ++lng)
|
||||
{
|
||||
if (IsValidLocaleName(MUI_LanguageDLLs[lng].szLocaleName))
|
||||
{
|
||||
@ -203,7 +206,7 @@ HMODULE LoadLanguageResources(LANGID* pPrefLanguageID)
|
||||
// set the appropriate fallback list
|
||||
int iPrefLngIndex = -1;
|
||||
WCHAR tchAvailLngs[2 * (LOCALE_NAME_MAX_LENGTH + 1)] = { L'\0' };
|
||||
for (int lng = 0; lng < NUM_OF_MUI_LANGUAGES; ++lng) {
|
||||
for (int lng = 0; lng < MuiLanguages_CountOf(); ++lng) {
|
||||
if (StringCchCompareXIW(MUI_LanguageDLLs[lng].szLocaleName, Settings2.PreferredLanguageLocaleName) == 0) {
|
||||
if (MUI_LanguageDLLs[lng].bHasDLL && (lng > 0)) {
|
||||
StringCchCatW(tchAvailLngs, COUNTOF(tchAvailLngs), MUI_LanguageDLLs[lng].szLocaleName);
|
||||
@ -257,6 +260,12 @@ HMODULE LoadLanguageResources(LANGID* pPrefLanguageID)
|
||||
|
||||
SetThreadUILanguage(languageID);
|
||||
|
||||
// update language dependent items
|
||||
for (int enc = 0; enc < Encoding_CountOf(); ++enc)
|
||||
{
|
||||
Encoding_SetLabel(enc);
|
||||
}
|
||||
|
||||
*pPrefLanguageID = languageID;
|
||||
return hLangResourceContainer;
|
||||
}
|
||||
@ -274,7 +283,7 @@ void FreeLanguageResources(HMODULE hLangResourceContainer)
|
||||
FreeMUILibrary(hLangResourceContainer);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < NUM_OF_MUI_LANGUAGES; ++i) {
|
||||
for (int i = 0; i < MuiLanguages_CountOf(); ++i) {
|
||||
MUI_LanguageDLLs[i].bIsLoaded = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,9 +28,8 @@ typedef struct _muilanguage
|
||||
|
||||
} MUILANGUAGE, *PMUILANGUAGE;
|
||||
|
||||
|
||||
#define NUM_OF_MUI_LANGUAGES 15
|
||||
extern MUILANGUAGE MUI_LanguageDLLs[];
|
||||
int MuiLanguages_CountOf();
|
||||
|
||||
|
||||
HMODULE LoadLanguageResources(LANGID* pPrefLanguageID);
|
||||
|
||||
@ -487,7 +487,7 @@ static bool _InsertLanguageMenu(HMENU hMenuBar)
|
||||
|
||||
WCHAR wchMenuItemFmt[128];
|
||||
WCHAR wchMenuItemStrg[196];
|
||||
for (int lng = 0; lng < NUM_OF_MUI_LANGUAGES; ++lng)
|
||||
for (int lng = 0; lng < MuiLanguages_CountOf(); ++lng)
|
||||
{
|
||||
if (MUI_LanguageDLLs[lng].bHasDLL)
|
||||
{
|
||||
@ -2914,7 +2914,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
i = (int)StringCchLenW(Settings2.AdministrationTool, COUNTOF(Settings2.AdministrationTool));
|
||||
EnableCmd(hmenu, IDM_HELP_ADMINEXE, i);
|
||||
|
||||
for (int lng = 0; lng < NUM_OF_MUI_LANGUAGES; ++lng) {
|
||||
for (int lng = 0; lng < MuiLanguages_CountOf(); ++lng) {
|
||||
//EnableCmd(hmenu, MUI_LanguageDLLs[lng].rid, MUI_LanguageDLLs[lng].bHasDLL);
|
||||
CheckCmd(hmenu, MUI_LanguageDLLs[lng].rid, MUI_LanguageDLLs[lng].bIsLoaded);
|
||||
}
|
||||
@ -2932,7 +2932,7 @@ static bool _DynamicLanguageMenuCmd(int cmd)
|
||||
{
|
||||
int iLngIdx = (cmd - IDS_MUI_LANG_EN_US); // consecutive IDs
|
||||
|
||||
if ((iLngIdx < 0) || (iLngIdx >= NUM_OF_MUI_LANGUAGES)) {
|
||||
if ((iLngIdx < 0) || (iLngIdx >= MuiLanguages_CountOf())) {
|
||||
return false;
|
||||
}
|
||||
if (!MUI_LanguageDLLs[iLngIdx].bIsLoaded)
|
||||
@ -8636,8 +8636,6 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
int const iEncoding = Encoding_Current(CPI_GET);
|
||||
if (bForceRedraw || (s_iEncoding != iEncoding))
|
||||
{
|
||||
Encoding_SetLabel(iEncoding);
|
||||
|
||||
StringCchPrintf(tchStatusBar[STATUS_CODEPAGE], txtWidth, L"%s%s%s",
|
||||
s_mxSBPrefix[STATUS_CODEPAGE], Encoding_GetLabel(iEncoding), s_mxSBPostfix[STATUS_CODEPAGE]);
|
||||
|
||||
|
||||
@ -7,8 +7,8 @@
|
||||
#define SAPPNAME "Notepad3"
|
||||
#define VERSION_MAJOR 5
|
||||
#define VERSION_MINOR 19
|
||||
#define VERSION_REV 228
|
||||
#define VERSION_BUILD 1627
|
||||
#define VERSION_REV 301
|
||||
#define VERSION_BUILD 1628
|
||||
#define SCINTILLA_VER 414+
|
||||
#define ONIGMO_REGEX_VER 6.2.0
|
||||
#define VERSION_PATCH XpErImEnTaL
|
||||
|
||||
Loading…
Reference in New Issue
Block a user