MCPcopy Create free account
hub / github.com/WinMerge/winmerge / DoFileEncodingDialog

Method DoFileEncodingDialog

Src/MergeDocEncoding.cpp:28–129  ·  view source on GitHub ↗

* @brief Display file encoding dialog to user & handle user's choices */

Source from the content-addressed store, hash-verified

26 * @brief Display file encoding dialog to user & handle user's choices
27 */
28bool CMergeDoc::DoFileEncodingDialog(int pane)
29{
30 if (!PromptAndSaveIfNeeded(true))
31 return false;
32
33 CLoadSaveCodepageDlg dlg(m_nBuffers);
34 dlg.EnableSaveCodepage(true);
35 if (pane == -1)
36 {
37 dlg.SetCodepages(m_ptBuf[0]->getCodepage());
38 dlg.SetCodepageBOM(m_ptBuf[0]->getHasBom());
39 }
40 else
41 {
42 dlg.SetCodepages(m_ptBuf[pane]->getCodepage());
43 dlg.SetCodepageBOM(m_ptBuf[pane]->getHasBom());
44 if (pane == 0)
45 {
46 dlg.SetAffectMiddle(false);
47 dlg.SetAffectRight(false);
48 }
49 if (m_nBuffers > 2 && pane == 1)
50 {
51 dlg.SetAffectLeft(false);
52 dlg.SetAffectRight(false);
53 }
54 if (pane == m_nBuffers - 1)
55 {
56 dlg.SetAffectLeft(false);
57 dlg.SetAffectMiddle(false);
58 }
59 }
60 if (IDOK != dlg.DoModal())
61 return false;
62
63 bool doLeft = dlg.DoesAffectLeft();
64 bool doMiddle = dlg.DoesAffectMiddle();
65 bool doRight = dlg.DoesAffectRight();
66 FileLocation fileloc[3];
67 bool bRO[3];
68 for (pane = 0; pane < m_nBuffers; pane++)
69 {
70 bRO[pane] = m_ptBuf[pane]->GetReadOnly();
71 if ((pane == 0 && doLeft) ||
72 (pane == 1 && doRight && m_nBuffers < 3) ||
73 (pane == 1 && doMiddle && m_nBuffers == 3) ||
74 (pane == 2 && doRight && m_nBuffers == 3))
75 {
76 fileloc[pane].encoding.SetCodepage(dlg.GetLoadCodepage());
77 switch (fileloc[pane].encoding.m_unicoding)
78 {
79 case ucr::UTF8:
80 case ucr::UCS2LE:
81 case ucr::UCS2BE:
82 m_ptBuf[pane]->setHasBom(dlg.GetSaveCodepageBOM());
83 break;
84 default:
85 break;

Callers

nothing calls this directly

Calls 15

EnableSaveCodepageMethod · 0.80
SetCodepagesMethod · 0.80
getCodepageMethod · 0.80
SetCodepageBOMMethod · 0.80
getHasBomMethod · 0.80
SetAffectMiddleMethod · 0.80
SetAffectRightMethod · 0.80
SetAffectLeftMethod · 0.80
DoesAffectLeftMethod · 0.80
DoesAffectMiddleMethod · 0.80
DoesAffectRightMethod · 0.80
GetLoadCodepageMethod · 0.80

Tested by

no test coverage detected