Index: src/ictranslate/ICTranslateDlg.cpp
===================================================================
diff -u -N -rd99ea57e5e78d9b2cc7d6024d9f26f2b4da7cc86 -rc72f797f7e7795e3ff15dc2ed832032ee6bafd0a
--- src/ictranslate/ICTranslateDlg.cpp	(.../ICTranslateDlg.cpp)	(revision d99ea57e5e78d9b2cc7d6024d9f26f2b4da7cc86)
+++ src/ictranslate/ICTranslateDlg.cpp	(.../ICTranslateDlg.cpp)	(revision c72f797f7e7795e3ff15dc2ed832032ee6bafd0a)
@@ -93,7 +93,7 @@
 	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_SAVETRANSLATIONAS, &CICTranslateDlg::OnFileSaveTranslationAs)
 	ON_COMMAND(ID_FILE_SAVETRANSLATION, &CICTranslateDlg::OnFileSaveTranslation)
 END_MESSAGE_MAP()
 
@@ -222,6 +222,10 @@
 
 void CICTranslateDlg::OnFileOpenYourTranslation()
 {
+	// check for modification flag
+	if(!WarnModified())
+		return;
+
 	CFileDialog fd(TRUE, _T(".lng"), _T(""), OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, _T("Language files (*.lng)|*.lng|All files(*.*)|*.*||"), this);
 	if(fd.DoModal() == IDOK)
 	{
@@ -530,6 +534,7 @@
 	{
 		pCustomItem->SetText(strText, false);
 		pCustomItem->SetChecksum(pBaseItem->GetChecksum());
+		m_ldCustom.SetModified();
 	}
 
 	UpdateCustomListImage(iPos, true);
@@ -569,7 +574,7 @@
 	}
 
 	CFontDialog dlg(&lf);
-	if(dlg.DoModal())
+	if(dlg.DoModal() == IDOK)
 	{
 		// set font info
 		dlg.GetCurrentFont(&lf);
@@ -591,18 +596,22 @@
 
 void CICTranslateDlg::OnFileNewTranslation()
 {
+	// check for modification flag
+	if(!WarnModified())
+		return;
+
 	// clear the custom translation
 	m_ldCustom.Clear();
 	UpdateCustomLanguageList();
 }
 
-void CICTranslateDlg::OnFileSavetranslationAs()
+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())
+	if(dlg.DoModal() == IDOK)
 	{
 		// store additional informations from the dialog box
 		CString str;
@@ -626,7 +635,7 @@
 	CString strPath = m_ldCustom.GetFilename(true);
 	if(strPath.IsEmpty())
 	{
-		OnFileSavetranslationAs();
+		OnFileSaveTranslationAs();
 	}
 	else
 	{
@@ -645,3 +654,21 @@
 		m_ctlDstFilename.SetWindowText(m_ldCustom.GetFilename(true));
 	}
 }
+
+bool CICTranslateDlg::WarnModified() const
+{
+	// check the modification flag
+	if(m_ldCustom.IsModified())
+	{
+		int iRes = AfxMessageBox(_T("You have modified the translation file. If you continue, the changes might be lost. Do you want to continue ?"), MB_YESNO | MB_ICONQUESTION);
+		return iRes == IDYES;
+	}
+	else
+		return true;
+}
+
+void CICTranslateDlg::OnCancel()
+{
+	if(WarnModified())
+		CDialog::OnCancel();
+}