mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
Merge pull request #859 from RaiKoHoff/Dev_Fix4Releases
Fix: Default Encoding settings
This commit is contained in:
commit
2edd9ad127
165
src/Dialogs.c
165
src/Dialogs.c
@ -2284,72 +2284,131 @@ typedef struct encodedlg {
|
||||
int cyDlg;
|
||||
} ENCODEDLG, *PENCODEDLG;
|
||||
|
||||
INT_PTR CALLBACK SelectDefEncodingDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam)
|
||||
INT_PTR CALLBACK SelectDefEncodingDlgProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
static PENCODEDLG pdd;
|
||||
|
||||
switch(umsg)
|
||||
static int s_iEnc;
|
||||
static bool s_bIsUTF8Fallback;
|
||||
static bool s_bLoadASCIIasUTF8;
|
||||
|
||||
switch (umsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
HBITMAP hbmp;
|
||||
HIMAGELIST himl;
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
HBITMAP hbmp;
|
||||
HIMAGELIST himl;
|
||||
|
||||
pdd = (PENCODEDLG)lParam;
|
||||
if (Globals.hDlgIcon) { SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)Globals.hDlgIcon); }
|
||||
pdd = (PENCODEDLG)lParam;
|
||||
|
||||
hbmp = LoadImage(Globals.hInstance,MAKEINTRESOURCE(IDB_ENCODING),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION);
|
||||
hbmp = ResizeImageForCurrentDPI(hbmp);
|
||||
if (Globals.hDlgIcon) { SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)Globals.hDlgIcon); }
|
||||
|
||||
himl = ImageList_Create(16,16,ILC_COLOR32|ILC_MASK,0,0);
|
||||
ImageList_AddMasked(himl,hbmp,CLR_DEFAULT);
|
||||
DeleteObject(hbmp);
|
||||
SendDlgItemMessage(hwnd,IDC_ENCODINGLIST,CBEM_SETIMAGELIST,0,(LPARAM)himl);
|
||||
SendDlgItemMessage(hwnd,IDC_ENCODINGLIST,CB_SETEXTENDEDUI,true,0);
|
||||
hbmp = LoadImage(Globals.hInstance, MAKEINTRESOURCE(IDB_ENCODING), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
|
||||
hbmp = ResizeImageForCurrentDPI(hbmp);
|
||||
|
||||
Encoding_AddToComboboxEx(GetDlgItem(hwnd,IDC_ENCODINGLIST),pdd->idEncoding,0);
|
||||
himl = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, 0);
|
||||
ImageList_AddMasked(himl, hbmp, CLR_DEFAULT);
|
||||
DeleteObject(hbmp);
|
||||
SendDlgItemMessage(hwnd, IDC_ENCODINGLIST, CBEM_SETIMAGELIST, 0, (LPARAM)himl);
|
||||
SendDlgItemMessage(hwnd, IDC_ENCODINGLIST, CB_SETEXTENDEDUI, true, 0);
|
||||
|
||||
CheckDlgButton(hwnd, IDC_USEASREADINGFALLBACK, DlgBtnChk(Settings.UseDefaultForFileEncoding));
|
||||
CheckDlgButton(hwnd,IDC_NOUNICODEDETECTION, DlgBtnChk(Settings.SkipUnicodeDetection));
|
||||
CheckDlgButton(hwnd, IDC_NOANSICPDETECTION, DlgBtnChk(Settings.SkipANSICodePageDetection));
|
||||
CheckDlgButton(hwnd,IDC_ASCIIASUTF8, DlgBtnChk(Settings.LoadASCIIasUTF8));
|
||||
CheckDlgButton(hwnd,IDC_NFOASOEM, DlgBtnChk(Settings.LoadNFOasOEM));
|
||||
CheckDlgButton(hwnd,IDC_ENCODINGFROMFILEVARS, DlgBtnChk(Settings.NoEncodingTags));
|
||||
CheckDlgButton(hwnd, IDC_USEASREADINGFALLBACK, DlgBtnChk(Settings.UseDefaultForFileEncoding));
|
||||
CheckDlgButton(hwnd, IDC_NOUNICODEDETECTION, DlgBtnChk(Settings.SkipUnicodeDetection));
|
||||
CheckDlgButton(hwnd, IDC_NOANSICPDETECTION, DlgBtnChk(Settings.SkipANSICodePageDetection));
|
||||
CheckDlgButton(hwnd, IDC_ASCIIASUTF8, DlgBtnChk(Settings.LoadASCIIasUTF8));
|
||||
CheckDlgButton(hwnd, IDC_NFOASOEM, DlgBtnChk(Settings.LoadNFOasOEM));
|
||||
CheckDlgButton(hwnd, IDC_ENCODINGFROMFILEVARS, DlgBtnChk(Settings.NoEncodingTags));
|
||||
|
||||
CenterDlgInParent(hwnd);
|
||||
Encoding_AddToComboboxEx(GetDlgItem(hwnd, IDC_ENCODINGLIST), pdd->idEncoding, 0);
|
||||
|
||||
Encoding_GetFromComboboxEx(GetDlgItem(hwnd, IDC_ENCODINGLIST), &s_iEnc);
|
||||
s_bIsUTF8Fallback = Settings.UseDefaultForFileEncoding;
|
||||
s_bLoadASCIIasUTF8 = Settings.LoadASCIIasUTF8;
|
||||
|
||||
CenterDlgInParent(hwnd);
|
||||
}
|
||||
return true;
|
||||
|
||||
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDC_ASCIIASUTF8:
|
||||
if (s_iEnc != CPI_UTF8) {
|
||||
s_bLoadASCIIasUTF8 = (IsDlgButtonChecked(hwnd, IDC_ASCIIASUTF8) == BST_CHECKED);
|
||||
}
|
||||
return true;
|
||||
break;
|
||||
|
||||
|
||||
case WM_COMMAND:
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDOK: {
|
||||
if (Encoding_GetFromComboboxEx(GetDlgItem(hwnd,IDC_ENCODINGLIST),&pdd->idEncoding)) {
|
||||
if (pdd->idEncoding < 0) {
|
||||
MsgBoxLng(MBWARN,IDS_MUI_ERR_ENCODINGNA);
|
||||
EndDialog(hwnd,IDCANCEL);
|
||||
}
|
||||
else {
|
||||
Settings.UseDefaultForFileEncoding = (IsDlgButtonChecked(hwnd, IDC_USEASREADINGFALLBACK) == BST_CHECKED);
|
||||
Settings.SkipUnicodeDetection = (IsDlgButtonChecked(hwnd,IDC_NOUNICODEDETECTION) == BST_CHECKED);
|
||||
Settings.SkipANSICodePageDetection = (IsDlgButtonChecked(hwnd, IDC_NOANSICPDETECTION) == BST_CHECKED);
|
||||
Settings.LoadASCIIasUTF8 = (IsDlgButtonChecked(hwnd,IDC_ASCIIASUTF8) == BST_CHECKED);
|
||||
Settings.LoadNFOasOEM = (IsDlgButtonChecked(hwnd,IDC_NFOASOEM) == BST_CHECKED);
|
||||
Settings.NoEncodingTags = (IsDlgButtonChecked(hwnd,IDC_ENCODINGFROMFILEVARS) == BST_CHECKED);
|
||||
EndDialog(hwnd,IDOK);
|
||||
}
|
||||
}
|
||||
else
|
||||
PostMessage(hwnd,WM_NEXTDLGCTL,(WPARAM)(GetDlgItem(hwnd,IDC_ENCODINGLIST)),1);
|
||||
}
|
||||
break;
|
||||
|
||||
case IDCANCEL:
|
||||
EndDialog(hwnd,IDCANCEL);
|
||||
break;
|
||||
case IDC_USEASREADINGFALLBACK:
|
||||
if (s_iEnc != CPI_ANSI_DEFAULT) {
|
||||
s_bIsUTF8Fallback = (IsDlgButtonChecked(hwnd, IDC_USEASREADINGFALLBACK) == BST_CHECKED);
|
||||
}
|
||||
return true;
|
||||
if (s_iEnc == CPI_UTF8) {
|
||||
if (s_bIsUTF8Fallback) {
|
||||
CheckDlgButton(hwnd, IDC_ASCIIASUTF8, DlgBtnChk(true));
|
||||
DialogEnableWindow(hwnd, IDC_ASCIIASUTF8, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
DialogEnableWindow(hwnd, IDC_ASCIIASUTF8, true);
|
||||
CheckDlgButton(hwnd, IDC_ASCIIASUTF8, DlgBtnChk(s_bLoadASCIIasUTF8));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case IDC_ENCODINGLIST:
|
||||
{
|
||||
Encoding_GetFromComboboxEx(GetDlgItem(hwnd, IDC_ENCODINGLIST), &s_iEnc);
|
||||
|
||||
if (s_iEnc == CPI_UTF8) {
|
||||
if (s_bIsUTF8Fallback) {
|
||||
CheckDlgButton(hwnd, IDC_ASCIIASUTF8, DlgBtnChk(true));
|
||||
DialogEnableWindow(hwnd, IDC_ASCIIASUTF8, false);
|
||||
}
|
||||
DialogEnableWindow(hwnd, IDC_USEASREADINGFALLBACK, true);
|
||||
CheckDlgButton(hwnd, IDC_USEASREADINGFALLBACK, DlgBtnChk(s_bIsUTF8Fallback));
|
||||
}
|
||||
else if (s_iEnc == CPI_ANSI_DEFAULT) {
|
||||
DialogEnableWindow(hwnd, IDC_ASCIIASUTF8, true);
|
||||
CheckDlgButton(hwnd, IDC_ASCIIASUTF8, DlgBtnChk(s_bLoadASCIIasUTF8));
|
||||
CheckDlgButton(hwnd, IDC_USEASREADINGFALLBACK, DlgBtnChk(true));
|
||||
DialogEnableWindow(hwnd, IDC_USEASREADINGFALLBACK, false);
|
||||
}
|
||||
else {
|
||||
DialogEnableWindow(hwnd, IDC_ASCIIASUTF8, true);
|
||||
CheckDlgButton(hwnd, IDC_ASCIIASUTF8, DlgBtnChk(s_bLoadASCIIasUTF8));
|
||||
DialogEnableWindow(hwnd, IDC_USEASREADINGFALLBACK, true);
|
||||
CheckDlgButton(hwnd, IDC_USEASREADINGFALLBACK, DlgBtnChk(s_bIsUTF8Fallback));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case IDOK: {
|
||||
if (Encoding_GetFromComboboxEx(GetDlgItem(hwnd, IDC_ENCODINGLIST), &pdd->idEncoding)) {
|
||||
if (pdd->idEncoding < 0) {
|
||||
MsgBoxLng(MBWARN, IDS_MUI_ERR_ENCODINGNA);
|
||||
EndDialog(hwnd, IDCANCEL);
|
||||
}
|
||||
else {
|
||||
Settings.UseDefaultForFileEncoding = (IsDlgButtonChecked(hwnd, IDC_USEASREADINGFALLBACK) == BST_CHECKED);
|
||||
Settings.SkipUnicodeDetection = (IsDlgButtonChecked(hwnd, IDC_NOUNICODEDETECTION) == BST_CHECKED);
|
||||
Settings.SkipANSICodePageDetection = (IsDlgButtonChecked(hwnd, IDC_NOANSICPDETECTION) == BST_CHECKED);
|
||||
Settings.LoadASCIIasUTF8 = (IsDlgButtonChecked(hwnd, IDC_ASCIIASUTF8) == BST_CHECKED);
|
||||
Settings.LoadNFOasOEM = (IsDlgButtonChecked(hwnd, IDC_NFOASOEM) == BST_CHECKED);
|
||||
Settings.NoEncodingTags = (IsDlgButtonChecked(hwnd, IDC_ENCODINGFROMFILEVARS) == BST_CHECKED);
|
||||
EndDialog(hwnd, IDOK);
|
||||
}
|
||||
}
|
||||
else
|
||||
PostMessage(hwnd, WM_NEXTDLGCTL, (WPARAM)(GetDlgItem(hwnd, IDC_ENCODINGLIST)), 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case IDCANCEL:
|
||||
EndDialog(hwnd, IDCANCEL);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1013,7 +1013,7 @@ bool EditLoadFile(
|
||||
size_t const cbNbytes4Analysis = (cbData < 200000L) ? cbData : 200000L;
|
||||
|
||||
int iPreferedEncoding = (bNfoDizDetected) ? g_DOSEncoding :
|
||||
((Settings.UseDefaultForFileEncoding || (cbNbytes4Analysis == 0)) ? Settings.DefaultEncoding : PREFERRED_DEFAULT_ENCODING);
|
||||
((Settings.UseDefaultForFileEncoding || (cbNbytes4Analysis == 0)) ? Settings.DefaultEncoding : CPI_ANSI_DEFAULT);
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
bool bIsReliable = false;
|
||||
|
||||
@ -56,9 +56,6 @@ extern bool g_bForceCompEncDetection;
|
||||
|
||||
#define Encoding_IsNONE(enc) ((enc) == CPI_NONE)
|
||||
|
||||
//~#define PREFERRED_DAFAULT_ENCODING CPI_ANSI_DEFAULT
|
||||
#define PREFERRED_DEFAULT_ENCODING CPI_UTF8
|
||||
|
||||
typedef struct _np2encoding {
|
||||
UINT uFlags;
|
||||
UINT uCodePage;
|
||||
|
||||
@ -3312,7 +3312,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
|
||||
case IDM_ENCODING_SETDEFAULT:
|
||||
SelectDefEncodingDlg(hwnd,&Settings.DefaultEncoding);
|
||||
SelectDefEncodingDlg(hwnd, &Settings.DefaultEncoding);
|
||||
break;
|
||||
|
||||
|
||||
@ -6842,10 +6842,9 @@ void LoadSettings()
|
||||
GET_BOOL_VALUE_FROM_INISECTION(ViewWhiteSpace, false);
|
||||
GET_BOOL_VALUE_FROM_INISECTION(ViewEOLs, false);
|
||||
|
||||
int const iPrefEncIniSetting = Encoding_MapIniSetting(false, PREFERRED_DEFAULT_ENCODING);
|
||||
GET_INT_VALUE_FROM_INISECTION(DefaultEncoding, iPrefEncIniSetting, CED_NO_MAPPING, Encoding_CountOf()-1);
|
||||
Settings.DefaultEncoding = ((Settings.DefaultEncoding == CPI_NONE) ?
|
||||
PREFERRED_DEFAULT_ENCODING : Encoding_MapIniSetting(true, Settings.DefaultEncoding));
|
||||
int const iPrefEncIniSetting = Encoding_MapIniSetting(false, CPI_UTF8);
|
||||
GET_INT_VALUE_FROM_INISECTION(DefaultEncoding, iPrefEncIniSetting, CED_NO_MAPPING, INT_MAX);
|
||||
Settings.DefaultEncoding = ((Settings.DefaultEncoding == CPI_NONE) ? CPI_UTF8 : Encoding_MapIniSetting(true, Settings.DefaultEncoding));
|
||||
|
||||
GET_BOOL_VALUE_FROM_INISECTION(UseDefaultForFileEncoding, false);
|
||||
GET_BOOL_VALUE_FROM_INISECTION(SkipUnicodeDetection, false);
|
||||
|
||||
@ -64,7 +64,9 @@
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#if (_MSC_VER >= 1916)
|
||||
#if(_MSC_FULL_VER >= 191627024)
|
||||
#if(_MSC_FULL_VER >= 191627025)
|
||||
#define VER_CPL MS Visual C++ 2017 v15.9.4
|
||||
#elif(_MSC_FULL_VER >= 191627024)
|
||||
#define VER_CPL MS Visual C++ 2017 v15.9.(2-3)
|
||||
#elif(_MSC_FULL_VER >= 191627023)
|
||||
#define VER_CPL MS Visual C++ 2017 v15.9.(0-1)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user