/** * @brief Display file encoding dialog to user & handle user's choices */ bool CMergeDoc::DoFileEncodingDialog() { if (!PromptAndSaveIfNeeded(true)) return false; CLoadSaveCodepageDlg dlg(m_nBuffers); dlg.EnableSaveCodepage(true); dlg.SetCodepages(m_ptBuf[0]->getCodepage()); if (IDOK != dlg.DoModal()) return false; bool doLeft = dlg.DoesAffectLeft(); bool doMiddle = dlg.DoesAffectMiddle(); bool doRight = dlg.DoesAffectRight(); FileLocation fileloc[3]; bool bRO[3]; for (int pane = 0; pane < m_nBuffers; pane++) { bRO[pane] = m_ptBuf[pane]->GetReadOnly(); if ((pane == 0 && doLeft) || (pane == 1 && doRight && m_nBuffers < 3) || (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(); } else { fileloc[pane].encoding.m_unicoding = m_ptBuf[pane]->getUnicoding(); fileloc[pane].encoding.m_codepage = m_ptBuf[pane]->getCodepage(); } fileloc[pane].setPath(m_filePaths[pane]); } OpenDocs(m_nBuffers, fileloc, bRO, m_strDesc); if (dlg.GetSaveCodepage() != dlg.GetLoadCodepage()) { int nSaveCodepage = dlg.GetSaveCodepage(); for (int pane = 0; pane < m_nBuffers; pane++) { bRO[pane] = m_ptBuf[pane]->GetReadOnly(); if (!bRO[pane] && ( (pane == 0 && doLeft) || (pane == 1 && doRight && m_nBuffers < 3) || (pane == 1 && doMiddle && m_nBuffers == 3) || (pane == 2 && doRight && m_nBuffers == 3) )) { m_ptBuf[pane]->setCodepage(nSaveCodepage); m_ptBuf[pane]->SetModified(); UpdateHeaderPath(pane); } } } return true; }
/** * @brief Display file encoding dialog to user & handle user's choices */ void CMergeDoc::DoFileEncodingDialog() { if (!PromptAndSaveIfNeeded(TRUE)) return; CLoadSaveCodepageDlg dlg; dlg.SetCodepages(m_ptBuf[0]->getCodepage()); if (IDOK != dlg.DoModal()) return; bool doLeft = dlg.DoesAffectLeft(); bool doRight = dlg.DoesAffectRight(); FileLocation filelocLeft, filelocRight; BOOL bROLeft = m_ptBuf[0]->GetReadOnly(); BOOL bRORight = m_ptBuf[1]->GetReadOnly(); if (doLeft) { filelocLeft.encoding.m_unicoding = ucr::NONE; filelocLeft.encoding.m_codepage = dlg.GetLoadCodepage(); } else { filelocLeft.encoding.m_unicoding = m_ptBuf[0]->getUnicoding(); filelocLeft.encoding.m_codepage = m_ptBuf[0]->getCodepage(); } if (doRight) { filelocRight.encoding.m_unicoding = ucr::NONE; filelocRight.encoding.m_codepage = dlg.GetLoadCodepage(); } else { filelocRight.encoding.m_unicoding = m_ptBuf[1]->getUnicoding(); filelocRight.encoding.m_codepage = m_ptBuf[1]->getCodepage(); } filelocLeft.setPath(m_filePaths.GetLeft().c_str()); filelocRight.setPath(m_filePaths.GetRight().c_str()); GetMainFrame()->m_strDescriptions[0] = m_strDesc[0]; GetMainFrame()->m_strDescriptions[1] = m_strDesc[1]; OpenDocs(filelocLeft, filelocRight, bROLeft, bRORight); }