, m_bLoadSaveSameCodepage(true)
// String m_sAffectsLeftString
// String m_sAffectsRightString
+, m_bSaveCodepageBOM(false)
, m_nLoadCodepage(-1)
, m_nSaveCodepage(-1)
, m_bEnableSaveCodepage(false)
DDX_Control(pDX, IDC_AFFECTS_RIGHT_BTN, m_AffectsRightBtn);
DDX_Text(pDX, IDC_LOAD_CODEPAGE_TEXTBOX, m_nLoadCodepage);
DDX_Text(pDX, IDC_SAVE_CODEPAGE_TEXTBOX, m_nSaveCodepage);
+ DDX_Check(pDX, IDC_SAVE_CODEPAGE_BOM, m_bSaveCodepageBOM);
//}}AFX_DATA_MAP
}
EnableDlgItem(IDC_LOAD_SAVE_SAME_CODEPAGE, false);
bool EnableSave = m_bEnableSaveCodepage && !m_bLoadSaveSameCodepage;
EnableDlgItem(IDC_SAVE_CODEPAGE_TEXTBOX, EnableSave);
+ EnableDlgItem(IDC_SAVE_CODEPAGE_BOM, EnableSave);
}
/**
void SetLeftRightAffectStrings(const String & sAffectsLeft, const String & sAffectsMiddle, const String & sAffectsRight);
void EnableSaveCodepage(bool enable) { m_bEnableSaveCodepage = enable; }
void SetCodepages(int codepage) { m_nLoadCodepage = m_nSaveCodepage = codepage; }
+ void SetCodepageBOM(bool bom) { m_bSaveCodepageBOM = bom; }
// Reading results
int GetLoadCodepage() const { return m_nLoadCodepage; }
int GetSaveCodepage() const { return m_nSaveCodepage; }
+ bool GetSaveCodepageBOM() const { return m_bSaveCodepageBOM; }
bool DoesAffectLeft() const { return m_bAffectsLeft; }
bool DoesAffectMiddle() const { return m_bAffectsMiddle; }
bool DoesAffectRight() const { return m_bAffectsRight; }
String m_sAffectsRightString;
int m_nLoadCodepage;
int m_nSaveCodepage;
+ bool m_bSaveCodepageBOM;
bool m_bEnableSaveCodepage;
int m_nFiles;
DEFPUSHBUTTON "Close",IDOK,200,193,50,14\r
END\r
\r
-IDD_LOAD_SAVE_CODEPAGE DIALOGEX 0, 0, 278, 150\r
+IDD_LOAD_SAVE_CODEPAGE DIALOGEX 0, 0, 278, 163\r
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Codepage"\r
FONT 8, "MS Shell Dlg", 0, 0, 0x1\r
LTEXT "(Affects)",IDC_MIDDLE_FILES_LABEL,70,29,193,10\r
CONTROL "&Right",IDC_AFFECTS_RIGHT_BTN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,40,54,10\r
LTEXT "(Affects)",IDC_RIGHT_FILES_LABEL,70,40,193,10\r
- GROUPBOX "Select Codepage for",IDC_LOADING_GROUP,5,59,266,63\r
+ GROUPBOX "Select Codepage for",IDC_LOADING_GROUP,5,59,266,76\r
LTEXT "&File Loading:",IDC_LOAD_FILES_LABEL,12,75,172,10\r
COMBOBOX IDC_LOAD_CODEPAGE_TEXTBOX,86,74,165,12,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP\r
LTEXT "File &Saving:",IDC_SAVE_FILES_LABEL,12,90,67,10\r
COMBOBOX IDC_SAVE_CODEPAGE_TEXTBOX,86,90,165,12,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP\r
+ CONTROL "&BOM",IDC_SAVE_CODEPAGE_BOM,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,86,107,165,10\r
CONTROL "&Use same codepage for both",IDC_LOAD_SAVE_SAME_CODEPAGE,\r
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,107,250,10\r
- DEFPUSHBUTTON "&Ok",IDOK,165,128,50,14\r
- PUSHBUTTON "&Cancel",IDCANCEL,221,128,50,14\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,120,250,10\r
+ DEFPUSHBUTTON "&Ok",IDOK,165,141,50,14\r
+ PUSHBUTTON "&Cancel",IDCANCEL,221,141,50,14\r
END\r
\r
IDD_TEST_FILTER DIALOGEX 0, 0, 249, 142\r
#include "stdafx.h"
#include "MergeDoc.h"
+#include "MergeEditView.h"
#include "LoadSaveCodepageDlg.h"
#include "unicoder.h"
CLoadSaveCodepageDlg dlg(m_nBuffers);
dlg.EnableSaveCodepage(true);
dlg.SetCodepages(m_ptBuf[0]->getCodepage());
+ dlg.SetCodepageBOM(m_ptBuf[0]->getHasBom());
if (IDOK != dlg.DoModal())
return false;
(pane == 1 && doMiddle && m_nBuffers == 3) ||
(pane == 2 && doRight && m_nBuffers == 3))
{
- fileloc[pane].encoding.m_unicoding = ucr::NONE;
- fileloc[pane].encoding.m_codepage = dlg.GetLoadCodepage();
+ fileloc[pane].encoding.SetCodepage(dlg.GetLoadCodepage());
+ switch (fileloc[pane].encoding.m_unicoding)
+ {
+ case ucr::UTF8:
+ case ucr::UCS2LE:
+ case ucr::UCS2BE:
+ m_ptBuf[pane]->setHasBom(dlg.GetSaveCodepageBOM());
+ break;
+ default:
+ break;
+ }
}
else
{
}
OpenDocs(m_nBuffers, fileloc, bRO, m_strDesc);
- if (dlg.GetSaveCodepage() != dlg.GetLoadCodepage())
+ if (dlg.GetSaveCodepage() != dlg.GetLoadCodepage() || m_ptBuf[0]->getHasBom() != dlg.GetSaveCodepageBOM())
{
int nSaveCodepage = dlg.GetSaveCodepage();
for (int pane = 0; pane < m_nBuffers; pane++)
(pane == 2 && doRight && m_nBuffers == 3)
))
{
+ switch (nSaveCodepage)
+ {
+ case ucr::CP_UTF_8:
+ case ucr::CP_UCS2LE:
+ case ucr::CP_UCS2BE:
+ m_ptBuf[pane]->setHasBom(dlg.GetSaveCodepageBOM());
+ break;
+ default:
+ break;
+ }
m_ptBuf[pane]->setCodepage(nSaveCodepage);
m_ptBuf[pane]->SetModified();
UpdateHeaderPath(pane);
+ ForEachView([](auto& pView) { pView->UpdateStatusbar(); });
}
}
}