Index: src/ictranslate/ICTranslateDlg.cpp =================================================================== diff -u -N -r2ffaff594233ce671e00b842c718cca32f9498c5 -rd99ea57e5e78d9b2cc7d6024d9f26f2b4da7cc86 --- src/ictranslate/ICTranslateDlg.cpp (.../ICTranslateDlg.cpp) (revision 2ffaff594233ce671e00b842c718cca32f9498c5) +++ src/ictranslate/ICTranslateDlg.cpp (.../ICTranslateDlg.cpp) (revision d99ea57e5e78d9b2cc7d6024d9f26f2b4da7cc86) @@ -92,6 +92,9 @@ ON_BN_CLICKED(IDAPPLY, &CICTranslateDlg::OnBnClickedApply) ON_BN_CLICKED(IDC_CHOOSE_FONT_BUTTON, &CICTranslateDlg::OnBnClickedChooseFontButton) ON_COMMAND(ID_EDIT_CLEANUP_TRANSLATION, &CICTranslateDlg::OnEditCleanupTranslation) + ON_COMMAND(ID_FILE_NEWTRANSLATION, &CICTranslateDlg::OnFileNewTranslation) + ON_COMMAND(ID_FILE_SAVETRANSLATIONAS, &CICTranslateDlg::OnFileSavetranslationAs) + ON_COMMAND(ID_FILE_SAVETRANSLATION, &CICTranslateDlg::OnFileSaveTranslation) END_MESSAGE_MAP() @@ -213,6 +216,7 @@ } UpdateBaseLanguageList(); + UpdateCustomLanguageList(); } } @@ -524,7 +528,7 @@ ictranslate::CTranslationItem* pCustomItem = m_ldCustom.GetTranslationItem(uiID, true); if(pCustomItem) { - pCustomItem->SetText(strText); + pCustomItem->SetText(strText, false); pCustomItem->SetChecksum(pBaseItem->GetChecksum()); } @@ -584,3 +588,60 @@ m_ldCustom.CleanupTranslation(m_ldBase); UpdateCustomLanguageList(); } + +void CICTranslateDlg::OnFileNewTranslation() +{ + // clear the custom translation + m_ldCustom.Clear(); + UpdateCustomLanguageList(); +} + +void CICTranslateDlg::OnFileSavetranslationAs() +{ + CString strFilename = m_ldCustom.GetFilename(false); + CString strPath = m_ldCustom.GetFilename(true); + + CFileDialog dlg(FALSE, _T(".lng"), strFilename, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Language files (*.lng)|*.lng|All files (*.*)|*.*||"), this); + if(dlg.DoModal()) + { + // store additional informations from the dialog box + CString str; + m_ctlDstAuthor.GetWindowText(str); + m_ldCustom.SetAuthor(str); + m_ctlDstLanguageName.GetWindowText(str); + m_ldCustom.SetLangName(str); + m_ctlDstHelpFilename.GetWindowText(str); + m_ldCustom.SetHelpName(str); + bool bRTL = (m_ctlDstRTL.GetCheck() == BST_CHECKED); + m_ldCustom.SetDirection(bRTL); + + // store translation with new name + m_ldCustom.WriteTranslation(dlg.GetPathName()); + m_ctlDstFilename.SetWindowText(m_ldCustom.GetFilename(true)); + } +} + +void CICTranslateDlg::OnFileSaveTranslation() +{ + CString strPath = m_ldCustom.GetFilename(true); + if(strPath.IsEmpty()) + { + OnFileSavetranslationAs(); + } + else + { + // store additional informations from the dialog box + CString str; + m_ctlDstAuthor.GetWindowText(str); + m_ldCustom.SetAuthor(str); + m_ctlDstLanguageName.GetWindowText(str); + m_ldCustom.SetLangName(str); + m_ctlDstHelpFilename.GetWindowText(str); + m_ldCustom.SetHelpName(str); + bool bRTL = (m_ctlDstRTL.GetCheck() == BST_CHECKED); + m_ldCustom.SetDirection(bRTL); + + m_ldCustom.WriteTranslation(NULL); + m_ctlDstFilename.SetWindowText(m_ldCustom.GetFilename(true)); + } +}