return retVal;
}
+/*
+ * @brief Type-convert and forward to SaveOption(CString, int)
+ */
+int COptionsMgr::SaveOption(CString name, UINT value)
+{
+ int xvalue = value;
+ return SaveOption(name, xvalue);
+}
+
+/*
+ * @brief Type-convert and forward to SaveOption(CString, int)
+ */
+int COptionsMgr::SaveOption(CString name, COLORREF value)
+{
+ int xvalue = value;
+ return SaveOption(name, xvalue);
+}
+
/**
* @brief Reset option value to default
*/
int retVal = OPT_OK;
val.SetInt(value);
- retVal = Set(name, val);
+ retVal = Set(name, val);
if (retVal == OPT_OK)
retVal = SaveOption(name);
return retVal;
int retVal = OPT_OK;
val.SetBool(value);
- retVal = Set(name, val);
+ retVal = Set(name, val);
if (retVal == OPT_OK)
retVal = SaveOption(name);
return retVal;
virtual int InitOption(CString name, int defaultValue) = 0;
virtual int InitOption(CString name, bool defaultValue) = 0;
-
virtual int SaveOption(CString name) = 0;
virtual int SaveOption(CString name, varprop::VariantValue value) = 0;
virtual int SaveOption(CString name, CString value) = 0;
virtual int SaveOption(CString name, int value) = 0;
virtual int SaveOption(CString name, bool value) = 0;
+ virtual int SaveOption(CString name, UINT value);
+ virtual int SaveOption(CString name, COLORREF value);
+
private:
CMap<CString, LPCTSTR, COption, COption&> m_optionsMap;
m_pageEditor.m_bHiliteSyntax = m_pOptionsMgr->GetBool(OPT_SYNTAX_HIGHLIGHT);
m_pageEditor.m_bAllowMixedEol = m_pOptionsMgr->GetBool(OPT_ALLOW_MIXED_EOL);
m_pageEditor.m_bApplySyntax = m_pOptionsMgr->GetBool(OPT_UNREC_APPLYSYNTAX);
+ m_pageEditor.m_bViewLineDifferences = m_pOptionsMgr->GetBool(OPT_WORDDIFF_HIGHLIGHT);
+ m_pageEditor.m_bBreakOnWords = m_pOptionsMgr->GetBool(OPT_BREAK_ON_WORDS);
+ m_pageEditor.m_nBreakType = m_pOptionsMgr->GetInt(OPT_BREAK_TYPE);
m_pageCodepage.m_nCodepageSystem = m_pOptionsMgr->GetInt(OPT_CP_DEFAULT_MODE);
m_pageCodepage.m_nCustomCodepageValue = m_pOptionsMgr->GetInt(OPT_CP_DEFAULT_CUSTOM);
m_pOptionsMgr->SaveOption(OPT_ALLOW_MIXED_EOL, m_pageEditor.m_bAllowMixedEol == TRUE);
m_pOptionsMgr->SaveOption(OPT_SYNTAX_HIGHLIGHT, m_pageEditor.m_bHiliteSyntax == TRUE);
m_pOptionsMgr->SaveOption(OPT_UNREC_APPLYSYNTAX, m_pageEditor.m_bApplySyntax == TRUE);
-
- m_pOptionsMgr->SaveOption(OPT_CLR_DIFF, (int)m_pageColors.m_clrDiff);
- m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_DIFF, (int)m_pageColors.m_clrSelDiff);
- m_pOptionsMgr->SaveOption(OPT_CLR_DIFF_DELETED, (int)m_pageColors.m_clrDiffDeleted);
- m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_DIFF_DELETED, (int)m_pageColors.m_clrSelDiffDeleted);
- m_pOptionsMgr->SaveOption(OPT_CLR_DIFF_TEXT, (int)m_pageColors.m_clrDiffText);
- m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_DIFF_TEXT, (int)m_pageColors.m_clrSelDiffText);
- m_pOptionsMgr->SaveOption(OPT_CLR_TRIVIAL_DIFF, (int)m_pageColors.m_clrTrivial);
- m_pOptionsMgr->SaveOption(OPT_CLR_TRIVIAL_DIFF_DELETED, (int)m_pageColors.m_clrTrivialDeleted);
- m_pOptionsMgr->SaveOption(OPT_CLR_TRIVIAL_DIFF_TEXT, (int)m_pageColors.m_clrTrivialText);
- m_pOptionsMgr->SaveOption(OPT_CLR_MOVEDBLOCK, (int)m_pageColors.m_clrMoved);
- m_pOptionsMgr->SaveOption(OPT_CLR_MOVEDBLOCK_DELETED, (int)m_pageColors.m_clrMovedDeleted);
- m_pOptionsMgr->SaveOption(OPT_CLR_MOVEDBLOCK_TEXT, (int)m_pageColors.m_clrMovedText);
- m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_MOVEDBLOCK, (int)m_pageColors.m_clrSelMoved);
- m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_MOVEDBLOCK_DELETED, (int)m_pageColors.m_clrSelMovedDeleted);
- m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_MOVEDBLOCK_TEXT, (int)m_pageColors.m_clrSelMovedText);
- m_pOptionsMgr->SaveOption(OPT_CLR_WORDDIFF, (int)m_pageColors.m_clrWordDiff);
- m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_WORDDIFF, (int)m_pageColors.m_clrSelWordDiff);
- m_pOptionsMgr->SaveOption(OPT_CLR_WORDDIFF_TEXT, (int)m_pageColors.m_clrWordDiffText);
- m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_WORDDIFF_TEXT, (int)m_pageColors.m_clrSelWordDiffText);
-
- m_pOptionsMgr->SaveOption(OPT_CP_DEFAULT_MODE, (int)m_pageCodepage.m_nCodepageSystem);
- m_pOptionsMgr->SaveOption(OPT_CP_DEFAULT_CUSTOM, (int)m_pageCodepage.m_nCustomCodepageValue);
+ m_pOptionsMgr->SaveOption(OPT_WORDDIFF_HIGHLIGHT, !!m_pageEditor.m_bViewLineDifferences);
+ m_pOptionsMgr->SaveOption(OPT_BREAK_ON_WORDS, !!m_pageEditor.m_bBreakOnWords);
+ m_pOptionsMgr->SaveOption(OPT_BREAK_TYPE, m_pageEditor.m_nBreakType);
+
+ m_pOptionsMgr->SaveOption(OPT_CLR_DIFF, m_pageColors.m_clrDiff);
+ m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_DIFF, m_pageColors.m_clrSelDiff);
+ m_pOptionsMgr->SaveOption(OPT_CLR_DIFF_DELETED, m_pageColors.m_clrDiffDeleted);
+ m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_DIFF_DELETED, m_pageColors.m_clrSelDiffDeleted);
+ m_pOptionsMgr->SaveOption(OPT_CLR_DIFF_TEXT, m_pageColors.m_clrDiffText);
+ m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_DIFF_TEXT, m_pageColors.m_clrSelDiffText);
+ m_pOptionsMgr->SaveOption(OPT_CLR_TRIVIAL_DIFF, m_pageColors.m_clrTrivial);
+ m_pOptionsMgr->SaveOption(OPT_CLR_TRIVIAL_DIFF_DELETED, m_pageColors.m_clrTrivialDeleted);
+ m_pOptionsMgr->SaveOption(OPT_CLR_TRIVIAL_DIFF_TEXT, m_pageColors.m_clrTrivialText);
+ m_pOptionsMgr->SaveOption(OPT_CLR_MOVEDBLOCK, m_pageColors.m_clrMoved);
+ m_pOptionsMgr->SaveOption(OPT_CLR_MOVEDBLOCK_DELETED, m_pageColors.m_clrMovedDeleted);
+ m_pOptionsMgr->SaveOption(OPT_CLR_MOVEDBLOCK_TEXT, m_pageColors.m_clrMovedText);
+ m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_MOVEDBLOCK, m_pageColors.m_clrSelMoved);
+ m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_MOVEDBLOCK_DELETED, m_pageColors.m_clrSelMovedDeleted);
+ m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_MOVEDBLOCK_TEXT, m_pageColors.m_clrSelMovedText);
+ m_pOptionsMgr->SaveOption(OPT_CLR_WORDDIFF, m_pageColors.m_clrWordDiff);
+ m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_WORDDIFF, m_pageColors.m_clrSelWordDiff);
+ m_pOptionsMgr->SaveOption(OPT_CLR_WORDDIFF_TEXT, m_pageColors.m_clrWordDiffText);
+ m_pOptionsMgr->SaveOption(OPT_CLR_SELECTED_WORDDIFF_TEXT, m_pageColors.m_clrSelWordDiffText);
+
+ m_pOptionsMgr->SaveOption(OPT_CP_DEFAULT_MODE, m_pageCodepage.m_nCodepageSystem);
+ m_pOptionsMgr->SaveOption(OPT_CP_DEFAULT_CUSTOM, m_pageCodepage.m_nCustomCodepageValue);
m_pOptionsMgr->SaveOption(OPT_CP_DETECT, m_pageCodepage.m_bDetectCodepage == TRUE);
m_pOptionsMgr->SaveOption(OPT_VCS_SYSTEM, (int)m_pageVss.m_nVerSys);
BS_AUTORADIOBUTTON | WS_GROUP,128,63,74,10
CONTROL "Insert &Spaces",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,128,72,74,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (less than 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 and above)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,85,63,137,10
CONTROL "Ñëîæè &ðàçñòîÿíèÿ",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,85,72,137,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (less than 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 and above)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,128,63,94,10
CONTROL "In&sereix espais",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,128,72,94,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (anterior al 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 i posterior)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,85,63,137,10
CONTROL "²åÈë¿Õ°×(&N)",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,85,72,137,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (less than 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 and above)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,85,63,137,10
CONTROL "´¡¤JªÅ¥Õ(&N)",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,85,72,137,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (less than 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 and above)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,120,63,100,10
CONTROL "Insert &Spaces",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,120,72,100,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (less than 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 and above)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,85,63,137,10
CONTROL "Indsæt &mellemrum",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,85,72,137,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (less than 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 and above)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,85,63,137,10
CONTROL "Insert &Spaces",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,85,72,137,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (less than 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 and above)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,120,63,67,10
CONTROL "Insérer &espace",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,120,72,67,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (inférieur à 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 et supérieur)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,99,63,145,10
CONTROL "&Leerzeichen einfügen",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,99,72,149,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (kleiner als 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 und höher)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,85,63,137,10
CONTROL "&Szóközök használata",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,85,72,137,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (régebbi mint 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 vagy újabb)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,85,63,137,10
CONTROL "In&serisci spazi",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,85,72,137,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (precedente a 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 e superiore)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,85,63,137,10
CONTROL "\83X\83y\81[\83X\82ð\91}\93ü(&S)",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,85,72,137,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (5.0 \96¢\96\9e)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 \88È\8fã)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,85,63,137,10
CONTROL "°ø¹é(space) »ðÀÔ(&N)",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,85,72,137,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (less than 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 and above)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,110,63,110,10
CONTROL "Sett inn mellomrom",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,110,72,110,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (eldre enn 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 og nyere)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,85,63,137,10
CONTROL "Wstaw spacje",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,85,72,137,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "(Visual SourceSafe (poni¿ej 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 i wy¿ej)"
IDS_VCS_CLEARCASE "Racjonalne dopasowanie wielko\9cci"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,95,63,127,10
CONTROL "&Ïðîáåëû",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,95,72,127,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (ìëàäøå, ÷åì 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 è âûøå)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,120,63,73,10
CONTROL "Vklada\9d medzery",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,120,72,69,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (less than 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 and above)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,105,63,117,10
CONTROL "Insertar e&spacios",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,105,72,117,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (menor que 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 y superior)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
BS_AUTORADIOBUTTON | WS_GROUP,138,63,71,10
CONTROL "Infoga mellanslag",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,138,72,71,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (lägre än 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 eller högre)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
m_options.InitOption(OPT_SINGLE_INSTANCE, false);
m_options.InitOption(OPT_MERGE_MODE, false);
m_options.InitOption(OPT_UNREC_APPLYSYNTAX, false);
+ // OPT_WORDDIFF_HIGHLIGHT is initialized above
+ m_options.InitOption(OPT_BREAK_ON_WORDS, true);
+ m_options.InitOption(OPT_BREAK_TYPE, 0);
+
m_options.InitOption(OPT_CLOSE_WITH_ESC, true);
m_options.InitOption(OPT_LOGGING, 0);
m_options.InitOption(OPT_IGNORE_SMALL_FILETIME, false);
BS_AUTORADIOBUTTON | WS_GROUP,85,63,137,10
CONTROL "Insert &Spaces",IDC_PROP_INSERT_SPACES,"Button",
BS_AUTORADIOBUTTON,85,72,137,10
+ GROUPBOX "Line Difference Coloring",IDC_LINE_COLORING_GROUP,10,97,
+ 218,37
+ CONTROL "View line differences",IDC_VIEW_LINE_DIFFERENCES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,108,100,8
+ CONTROL "Break on words",IDC_BREAK_ON_WORDS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,148,108,73,8
+ COMBOBOX IDC_BREAK_TYPE,17,120,143,34,CBS_DROPDOWNLIST |
+ WS_VSCROLL | WS_TABSTOP
END
IDD_MESSAGE_BOX DIALOGEX 0, 0, 186, 95
IDS_VCS_VSS4 "Visual SourceSafe (less than 5.0)"
IDS_VCS_VSS5 "Visual SourceSafe (5.0 and above)"
IDS_VCS_CLEARCASE "Rational ClearCase"
+ IDS_BREAK_ON_WHITESPACE "Break at whitespace"
+ IDS_BREAK_ON_PUNCTUATION "Break at whitespace or punctuation"
END
// DIRECTORY DIFFING : FILE COPY/DELETE (WITHOUT/WITH NUMBER MARK)
GetLeftView()->UpdateResources();
GetRightView()->UpdateResources();
}
+
+
+// Lookup named property and return as BOOL
+BOOL CMergeDoc::GetOptionBool(LPCTSTR name) const
+{
+ // Currently options are held by the main frame, in a subobject called m_options
+ return mf->m_options.GetInt(name);
+}
+
+// Return current word breaking break type setting (whitespace only or include punctuation)
+bool CMergeDoc::GetBreakType() const
+{
+ return !!GetOptionBool(OPT_BREAK_TYPE);
+}
void SetMergingMode(BOOL bMergingMode);
void SetDetectMovedBlocks(BOOL bDetectMovedBlocks);
+// implementation methods
+private:
+ BOOL GetOptionBool(LPCTSTR name) const;
+ bool GetBreakType() const;
+
// Implementation data
protected:
int m_nCurDiff; /**< Selected diff, 0-based index, -1 if no diff selected */
// Make the call to stringdiffs, which does all the hard & tedious computations
wdiffarray worddiffs;
- stringdiffs_Get(str1, str2, casitive, xwhite, &worddiffs);
+ bool breakType = GetBreakType();
+ stringdiffs_Get(str1, str2, casitive, xwhite, breakType, &worddiffs);
if (!worddiffs.GetSize())
{
// Options that affect comparison
bool casitive = !diffOptions.bIgnoreCase;
int xwhite = diffOptions.nIgnoreWhitespace;
+ int breakType = GetBreakType();
// Make the call to stringdiffs, which does all the hard & tedious computations
- stringdiffs_Get(str1, str2, casitive, xwhite, pworddiffs);
+ stringdiffs_Get(str1, str2, casitive, xwhite, breakType, pworddiffs);
return;
}
const TCHAR OPT_TAB_SIZE[] = _T("Settings/TabSize");
const TCHAR OPT_TAB_TYPE[] = _T("Settings/TabType");
const TCHAR OPT_UNREC_APPLYSYNTAX[] = _T("Settings/ApplyUnrecSyntax");
+const TCHAR OPT_BREAK_ON_WORDS[] = _T("Settings/BreakOnWords");
+const TCHAR OPT_BREAK_TYPE[] = _T("Settings/BreakType");
const TCHAR OPT_EXT_EDITOR_CMD[] = _T("Settings/ExternalEditor");
const TCHAR OPT_USE_RECYCLE_BIN[] = _T("Settings/UseRecycleBin");
m_bAutomaticRescan = FALSE;
m_bAllowMixedEol = FALSE;
m_bApplySyntax = FALSE;
+ m_bViewLineDifferences = FALSE;
+ m_bBreakOnWords = FALSE;
+ m_nBreakType = 0;
//}}AFX_DATA_INIT
}
DDX_Check(pDX, IDC_HILITE_CHECK, m_bHiliteSyntax);
DDX_Radio(pDX, IDC_PROP_INSERT_TABS, m_nTabType);
DDX_Text(pDX, IDC_TAB_EDIT, m_nTabSize);
+ DDV_MinMaxInt(pDX, m_nTabSize, 1, MAX_TABSIZE);
DDX_Check(pDX, IDC_AUTOMRESCAN_CHECK, m_bAutomaticRescan);
DDX_Check(pDX, IDC_MIXED_EOL, m_bAllowMixedEol);
DDX_Check(pDX, IDC_UNREC_APPLYSYNTAX, m_bApplySyntax);
- DDV_MinMaxInt(pDX, m_nTabSize, 1, MAX_TABSIZE);
+ DDX_Check(pDX, IDC_VIEW_LINE_DIFFERENCES, m_bViewLineDifferences);
+ DDX_Check(pDX, IDC_BREAK_ON_WORDS, m_bBreakOnWords);
+ DDX_CBIndex(pDX, IDC_BREAK_TYPE, m_nBreakType);
//}}AFX_DATA_MAP
}
GetDlgItem(IDC_UNREC_APPLYSYNTAX)->EnableWindow(FALSE);
}
+ LoadBreakTypeStrings();
+ UpdateDataToWindow();
+
+ /// @TODO Need to implement the option controlled by this control, 2005-05-03, Perry
+ GetDlgItem(IDC_BREAK_ON_WORDS)->ShowWindow(SW_HIDE);
+
+
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
+/**
+ * @brief Load strings (from resource) into combobox for break type
+ */
+void CPropEditor::LoadBreakTypeStrings()
+{
+ CComboBox * cbo = (CComboBox *)GetDlgItem(IDC_BREAK_TYPE);
+ cbo->AddString(LoadResString(IDS_BREAK_ON_WHITESPACE));
+ cbo->AddString(LoadResString(IDS_BREAK_ON_PUNCTUATION));
+}
+
/**
* @brief Enable/Disable "Apply to other side" checkbox.
*
// Dialog Data
//{{AFX_DATA(CPropEditor)
enum { IDD = IDD_PROPPAGE_EDITOR };
- BOOL m_bHiliteSyntax;
- int m_nTabType;
- UINT m_nTabSize;
- BOOL m_bAutomaticRescan;
- BOOL m_bAllowMixedEol;
- BOOL m_bApplySyntax;
+ BOOL m_bHiliteSyntax;
+ int m_nTabType;
+ UINT m_nTabSize;
+ BOOL m_bAutomaticRescan;
+ BOOL m_bAllowMixedEol;
+ BOOL m_bApplySyntax;
+ BOOL m_bViewLineDifferences;
+ BOOL m_bBreakOnWords;
+ int m_nBreakType;
//}}AFX_DATA
+private:
+// Implementation methods
+ void LoadBreakTypeStrings();
+ void UpdateDataToWindow() { UpdateData(FALSE); }
// Overrides
// ClassWizard generated virtual function overrides
+2005-05-03 Perry
+ PATCH: [ 1157486 ] New options for wordbreak characters
+ (Fixed patch to use existing OPT_WORDDIFF_HIGHLIGHT instead of new option)
+ Src: MainFrm.cpp Merge.rc MergeDoc.cpp MergeDoc.h MergeDocLineDiffs.cpp
+ OptionsDef.h PropEditor.cpp PropEditor.h resource.h stringdiffs.cpp
+ stringdiffs.h stringdiffsi.h
+ Src/Languages: *.rc
+
2005-05-02 Kimmo
BUG: [ 1193059 ] Problems with the mouse at file comparison
Don't refresh filecompare every time mouse is clicked
// Microsoft Developer Studio generated include file.
// Used by Merge.rc
//
-
-
#define IDR_MAINFRAME 100
#define IDR_MERGETYPE 101
#define IDR_POPUP_EDITOR_HEADERBAR 102
#define IDD_PROPPAGE_COLORS 222
#define IDD_PROPPAGE_CODEPAGE 223
#define IDD_PREFERENCES 224
-
#define IDB_ERROR 300
#define IDB_EQUAL 301
#define IDB_NOTEQUAL 302
#define IDB_EDIT_SELECTALL 333
#define IDB_TOOLS_FILTERS 334
#define IDB_TOOLS_COLUMNS 335
-
-
#define IDC_LEFT_EDIT 1000
#define IDC_FILE_EDIT 1000
#define IDC_LEFT_BUTTON 1001
#define IDC_DATABASE_LIST 1081
#define IDC_MULTI_CHECKOUT 1082
#define IDC_CHECK2 1083
+#define IDC_BREAK_ON_WORDS 1083
#define IDC_VCPROJ_SYNC 1084
#define IDC_UNPACKER_NAME 1085
#define IDC_UNPACKER_ALLOW_ALL 1086
#define IDC_TREEOPT_HELP 1160
#define IDC_SINGLE_INSTANCE 1161
#define IDC_IGNORE_SMALLTIMEDIFF 1162
-
+#define IDC_LINE_COLORING_GROUP 1163
+#define IDC_VIEW_LINE_DIFFERENCES 1164
+#define IDC_BREAK_TYPE 1168
#define IDC_EDIT_WHOLE_WORD 8603
#define IDC_EDIT_MATCH_CASE 8604
#define IDC_EDIT_FINDTEXT 8605
#define IDC_EDIT_SCOPE_SELECTION 8613
#define IDC_EDIT_SCOPE_WHOLE_FILE 8614
#define IDC_EDIT_SCOPE_DONT_WRAP 8615
-
#define IDC_SCRIPT_FIRST 8700
#define IDC_SCRIPT_LAST 8749
#define IDC_PREDIFFERS_FIRST 8750
#define IDC_PREDIFFERS_LAST 8799
-
#define IDS_MESSAGEBOX_OK 9001
#define IDS_MESSAGEBOX_CANCEL 9002
#define IDS_MESSAGEBOX_ABORT 9003
#define IDS_MESSAGEBOX_HELP 9014
#define IDS_MESSAGEBOX_DONT_DISPLAY_AGAIN 9015
#define IDS_MESSAGEBOX_DONT_ASK_AGAIN 9016
-
#define IDS_OPTIONSPG_GENERAL 9041
#define IDS_OPTIONSPG_COMPARE 9042
#define IDS_OPTIONSPG_EDITOR 9043
#define IDS_OPTIONSPG_SYSTEM 9045
#define IDS_OPTIONSPG_VERSIONCONTROL 9046
#define IDS_OPTIONSPG_CODEPAGE 9047
-
-
#define IDS_VERSION_FMT 16385
#define IDS_QUICKHELP 16386
-
#define IDS_OPTIONS_TITLE 16400
#define IDS_MESSAGE_BOX_ARE_RESET 16401
#define IDS_DIFF_OPEN_NO_SET_PROPS 16402
#define IDS_FONT_CHANGE 16403
-
#define IDS_OPEN_TITLE 16416
#define IDS_PROGRAMFILES 16417
#define IDS_ALLFILES 16418
#define IDS_PROJECTFILES 16419
#define IDS_PROJECTFILES_EXT 16420
-
#define IDS_COMPMETHOD_FULL_CONTENTS 16432
#define IDS_COMPMETHOD_QUICK_CONTENTS 16433
#define IDS_COMPMETHOD_MODDATE 16434
-
#define IDS_FILTERFILE_NAMETITLE 16448
#define IDS_FILTERFILE_PATHTITLE 16449
#define IDS_FILTER_TITLE 16450
#define IDS_FILEFILTER_FILEMASK 16454
#define IDS_CC_CMD 16464
#define IDS_VSS_CMD 16465
-
-
#define IDS_DIRECTORY_WINDOW_TITLE 16800
#define IDS_FILE_COMPARISON_TITLE 16801
#define IDS_EMPTY_LEFT_FILE 16802
#define IDS_EMPTY_RIGHT_FILE 16803
-
#define IDS_STATUS_RESCANNING 16816
#define IDS_STATUS_OPENING_SELECTION 16817
#define IDS_STATUS_COPYL2R 16818
#define IDS_NO_DIFF_SEL_FMT 16837
#define IDS_1_DIFF_FOUND 16838
#define IDS_STATUSBAR_READONLY 16839
-
#define IDS_ERROR_INCOMPARABLE 17200
#define IDS_DIRSEL_TAG 17201
#define IDS_OPEN_FILESDIRS 17202
#define IDS_OPEN_BOTHINVALID 17205
#define IDS_OPEN_UNPACKERDISABLED 17206
#define IDS_OPEN_MISMATCH 17207
-
#define IDS_ERROR_FILE_NOT_FOUND 17216
#define IDS_ERROR_FILE_NOT_UNPACKED 17217
#define IDS_BINFILES_IDENTICAL 17218
#define IDS_BINFILES_DIFFERENT 17219
#define IDS_OTHER_IS_BINARY 17220
#define IDS_ERROR_FILEOPEN 17221
-
#define IDS_SAVE_AS_TITLE 17232
#define IDS_SAVE_FMT 17233
#define IDS_SAVEREADONLY_FMT 17234
#define IDS_FILECHANGED_RESCAN 17243
#define IDS_SAVE_LEFT_AS 17244
#define IDS_SAVE_RIGHT_AS 17245
-
#define IDS_NOPROJECT 17264
#define IDS_VSS_CHECKOUT_STATUS 17265
#define IDS_VSSERROR 17266
#define IDS_VSSFOLDER_AND_FILE_NOMATCH 17268
#define IDS_VSS_NODATABASES 17269
#define IDS_VSS_ERRORFROM 17270
-
#define ID_DIR_COPY_LEFT_TO_RIGHT 17600
#define ID_DIR_COPY_LEFT_TO_BROWSE 17601
#define ID_DIR_COPY_RIGHT_TO_LEFT 17602
#define IDS_MOVE_RIGHT_TO 17623
#define IDS_MOVE_LEFT_TO2 17624
#define IDS_MOVE_RIGHT_TO2 17625
-
#define IDS_CONFIRM_ALL_LEFT 17632
#define IDS_CONFIRM_ALL_RIGHT 17633
#define IDS_CONFIRM_COPY_SINGLE 17634
#define IDS_CONFIRM_DELETE_ITEMS 17636
#define IDS_CONFIRM_DELETE_DIR 17637
#define IDS_CONFIRM_DELETE_SINGLE 17638
-
#define ID_DIR_OPEN_LEFT 17648
#define ID_DIR_OPEN_LEFT_WITHEDITOR 17649
#define ID_DIR_OPEN_LEFT_WITH 17650
#define ID_DIR_COPY_PATHNAMES_LEFT 17656
#define ID_DIR_COPY_PATHNAMES_RIGHT 17657
#define ID_DIR_COPY_PATHNAMES_BOTH 17658
-
-
#define IDS_UNKNOWN_ARCHIVE_FORMAT 17664
-
#define IDS_DIRECTORY_REPORT_TITLE 17680
-
#define IDS_COLHDR_FILENAME 17696
#define IDS_COLHDR_DIR 17697
#define IDS_COLHDR_RESULT 17698
#define IDS_COLHDR_RESULT_ABBR 17709
#define IDS_COLHDR_LATTRIBUTES 17710
#define IDS_COLHDR_RATTRIBUTES 17711
-
#define IDS_COLHDR_LENCODING 17712
#define IDS_COLHDR_RENCODING 17713
#define IDS_COLHDR_NDIFFS 17714
#define IDS_COLHDR_NSDIFFS 17715
#define IDS_COLHDR_BINARY 17716
-
-
#define IDS_CANT_COMPARE_FILES 17728
#define IDS_FILE_SKIPPED 17729
#define IDS_DIR_SKIPPED 17730
#define IDS_LEFTONLY 17736
#define IDS_RIGHTONLY 17737
#define IDS_DIFFERENT 17738
-
#define IDS_ELAPSED_TIME 17744
#define IDS_STATUS_SELITEM1 17745
#define IDS_STATUS_SELITEMS 17746
-
#define IDS_COLDESC_FILENAME 17760
#define IDS_COLDESC_DIR 17761
#define IDS_COLDESC_RESULT 17762
#define IDS_COLDESC_NDIFFS 17778
#define IDS_COLDESC_NSDIFFS 17779
#define IDS_COLDESC_BINARY 17780
-
#define IDS_FILE_TO_ITSELF 18000
#define IDS_FILESSAME 18001
#define IDS_FILEUNIQUE 18002
#define IDS_SUGGEST_PRESERVEEOL 18008
#define IDS_PREDIFFER_ERROR 18009
#define IDS_SUGGEST_IGNORECODEPAGE 18010
-
#define IDS_LINEDIFF_NODIFF 18016
#define IDS_LINEDIFF_NODIFF_CAPTION 18017
-
#define IDS_NUM_REPLACED 18032
#define IDS_EDIT_TEXT_NOT_FOUND 18033
-
#define ID_EDITOR_COPY_PATH 18048
#define ID_EDITOR_COPY_FILENAME 18049
-
#define IDS_DIFF_SUCCEEDED 18400
#define IDS_DIFF_ITEM1NOTFOUND 18401
#define IDS_DIFF_ITEM2NOTFOUND 18402
#define IDS_PATH_NOT_ABSOLUTE 18409
#define IDS_CANNOT_CREATE_BINARYPATCH 18410
#define IDS_CANNOT_CREATE_DIRPATCH 18411
-
#define IDS_DIR_RESULTS_EMPTIED 18448
#define IDS_NO_ZIP_SUPPORT 18449
-
#define IDS_REGEXP_ERROR 18480
#define IDS_REGEXP_NOMATCH 18481
#define IDS_REGEXP_INVALID 18482
#define IDS_VCS_VSS4 18498
#define IDS_VCS_VSS5 18499
#define IDS_VCS_CLEARCASE 18500
-
-
-
+#define IDS_BREAK_ON_WHITESPACE 18501
+#define IDS_BREAK_ON_PUNCTUATION 18502
#define IDD_LANGUAGE_SELECT 30000
#define IDS_AFRIKAANS 30003
#define IDS_ALBANIAN 30004
#define IDS_UZBEK_LATIN 30128
#define IDS_UZBEK_CYRILLIC 30129
#define IDS_VIETNAMESE 30130
-
#define IDS_CPG_WESTERN_EUROPEAN 30200
#define IDS_CPG_EASTERN_EUROPEAN 30201
#define IDS_CPG_EAST_ASIAN 30202
#define IDS_CPG_SOUTH_ASIAN 30203
#define IDS_CPG_MIDDLE_EASTERN 30204
#define IDS_CPG_NA 30205
-
#define IDS_CPP_WINDOWS 30210
#define IDS_CPP_DOS 30211
#define IDS_CPP_MACINTOSH 30212
#define IDS_CPP_IBM 30213
#define IDS_CPP_NA 30214
-
#define IDS_CP_EBCDIC 30220
#define IDS_CP_IBM_EBCDIC_CYRILLIC 30221
-
#define IDS_CP_DOS_US 30230
#define IDS_CP_DOS_ARABIC 30231
#define IDS_CP_DOS_GREEK 30232
#define IDS_CP_DOS_BALTIC 30233
-#define IDS_CP_DOS_LATIN1 30234
+#define IDS_CP_DOS_LATIN1 30234
#define IDS_CP_DOS_GREEK1 30235
#define IDS_CP_DOS_LATIN2 30236
#define IDS_CP_DOS_CYRILLIC 30237
#define IDS_CP_DOS_NORDIC 30253
#define IDS_CP_DOS_CYRILLIC_CIS1 30254
#define IDS_CP_DOS_GREEK2 30255
-
#define IDS_CP_WINDOWS_THAI 30256
#define IDS_CP_WINDOWS_JAPANESE 30257
#define IDS_CP_WINDOWS_CHINESE_SIMP 30258
#define IDS_CP_WINDOWS_ARABIC 30277
#define IDS_CP_WINDOWS_BALTIC 30278
#define IDS_CP_WINDOWS_VIETNAM 30279
-
#define IDS_CP_MACINTOSH_ROMAN 30290
#define IDS_CP_MACINTOSH_GREEK 30291
#define IDS_CP_MACINTOSH_CYRILLIC 30292
#define IDS_CP_MACINTOSH_CENTRAL_EUROPE 30293
#define IDS_CP_MACINTOSH_ICELANDIC 30294
#define IDS_CP_MACINTOSH_TURKISH 30295
-
#define IDS_CP_UTF7 30300
#define IDS_CP_UTF8 30301
-
#define IDS_CP_WINDOWS_JAPANESE_EXTRA 30320
#define IDS_CP_WINDOWS_CHINESE_SIMP_EXTRA 30321
#define IDS_CP_WINDOWS_KOREAN_EXTRA 30322
#define IDS_CP_WINDOWS_GREEK_EXTRA 30328
#define IDS_CP_WINDOWS_TURKISH_EXTRA 30329
#define IDS_CP_WINDOWS_HEBREW_EXTRA 30340
-
#define ID_FILE_SAVE_LEFT 32768
#define ID_FILE_SAVE_RIGHT 32769
#define ID_FILE_SAVEAS_LEFT 32770
#define ID_EOL_TO_UNIX 32775
#define ID_EOL_TO_MAC 32776
#define ID_FILE_MERGINGMODE 32777
-
#define ID_SHOWLINEWORDDIFF 32783
#define ID_SHOWLINECHARDIFF 32784
#define ID_EDIT_WMGOTO 32785
#define ID_OPTIONS 32786
#define ID_REFRESH 32787
#define ID_EDIT_COPY_LINENUMBERS 32788
-
#define ID_OPTIONS_SHOWIDENTICAL 32800
#define ID_OPTIONS_SHOWDIFFERENT 32801
#define ID_OPTIONS_SHOWUNIQUELEFT 32802
#define ID_OPTIONS_SHOWUNIQUERIGHT 32803
#define ID_OPTIONS_SHOWBINARIES 32804
#define ID_OPTIONS_SHOWSKIPPED 32805
-
#define ID_VIEW_SELECTFONT 32816
#define ID_VIEW_USEDEFAULTFONT 32817
#define ID_VIEW_WHITESPACE 32818
#define ID_VIEW_DIR_STATEPANE 32821
#define ID_VIEW_LANGUAGE 32822
#define ID_VIEW_LINEDIFFS 32823
-
#define ID_PREVDIFF 32832
#define ID_NEXTDIFF 32833
#define ID_FIRSTDIFF 32834
#define ID_R2LNEXT 32840
#define ID_ALL_RIGHT 32841
#define ID_ALL_LEFT 32842
-
#define ID_TOOLS_CUSTOMIZECOLUMNS 32864
#define ID_TOOLS_GENERATEPATCH 32865
#define ID_TOOLS_FILTERS 32866
-
#define ID_UNPACK_MANUAL 32880
#define ID_UNPACK_AUTO 32881
#define ID_POPUP_OPEN_WITH_UNPACKER 32882
#define ID_SUGGESTED_PLUGINS 32884
#define ID_NOT_SUGGESTED_PLUGINS 32885
#define ID_RELOAD_PLUGINS 32886
-
#define ID_WINDOW_CHANGE_PANE 32896
-
#define ID_HELP_CONTENTS 32912
#define ID_HELP_GETCONFIG 32913
#define ID_HELP_GNULICENSE 32914
#define IDS_PRIVATEBUILD_FMT 32915
-
#define ID_TITLE_PLUGINS_SETTINGS 32928
#define ID_PREDIFF_MANUAL 32929
#define ID_PREDIFF_AUTO 32930
#define ID_NO_SCT_SCRIPTS 32932
#define IDS_USERCHOICE_NONE 32933
#define IDS_USERCHOICE_AUTOMATIC 32934
-
#define ID_STATUS_MERGINGMODE 32960
#define ID_STATUS_DIFFNUM 32961
#define ID_STATUS_RIGHTDIR_RO 32962
#define ID_DIR_MOVE_LEFT_TO_BROWSE 32980
#define ID_DIR_MOVE_RIGHT_TO_BROWSE 32981
#define ID_DIR_HIDE_FILENAMES 32982
-
#define ID_SCRIPT_FIRST 32992
#define ID_SCRIPT_LAST 33039
#define ID_PREDIFFERS_FIRST 33040
#define ID_PREDIFFERS_LAST 33087
-
#define ID_DISPLAY_MOVED_NONE 33088
#define ID_DISPLAY_MOVED_ALL 33089
#define ID_DISPLAY_MOVED_FOLLOW_DIFF 33090
#define _APS_3D_CONTROLS 1
#define _APS_NEXT_RESOURCE_VALUE 224
#define _APS_NEXT_COMMAND_VALUE 33096
-#define _APS_NEXT_CONTROL_VALUE 1163
+#define _APS_NEXT_CONTROL_VALUE 1169
#define _APS_NEXT_SYMED_VALUE 111
#endif
#endif
#endif
static bool isSafeWhitespace(TCHAR ch);
+static bool isWordBreak(int breakType, TCHAR ch);
/**
* @brief Construct our worker object and tell it to do the work
*/
void
stringdiffs_Get(const CString & str1, const CString & str2,
- bool case_sensitive, int whitespace,
+ bool case_sensitive, int whitespace, int breakType,
wdiffarray * pDiffs)
{
- stringdiffs sdiffs(str1, str2, case_sensitive, whitespace, pDiffs);
+ stringdiffs sdiffs(str1, str2, case_sensitive, whitespace, breakType, pDiffs);
// Hash all words in both lines and then compare them word by word
// storing differences into m_wdiffs
sdiffs.BuildWordDiffList();
* @brief stringdiffs constructor simply loads all members from arguments
*/
stringdiffs::stringdiffs(const CString & str1, const CString & str2,
- bool case_sensitive, int whitespace,
+ bool case_sensitive, int whitespace, int breakType,
wdiffarray * pDiffs)
: m_str1(str1)
, m_str2(str2)
, m_case_sensitive(case_sensitive)
, m_whitespace(whitespace)
+, m_breakType(breakType)
, m_pDiffs(pDiffs)
{
}
// state when we are inside a word
inword:
- if (i==str.GetLength() || isSafeWhitespace(str[i]))
+ bool atspace=false;
+ if (i==str.GetLength() || (atspace=isSafeWhitespace(str[i])) || isWordBreak(m_breakType, str[i]))
{
if (begin<i)
{
word wd(begin, e, hash(str, begin, e));
words->Add(wd);
}
- goto inspace; // safe even if we're at the end
+ if (i == str.GetLength())
+ {
+ return;
+ }
+ else if (atspace)
+ {
+ goto inspace;
+ }
+ else
+ {
+ // start a new word because we hit a non-whitespace word break (eg, a comma)
+ // but, we have to put each word break character into its own word
+ word wd(i, i, hash(str, i, i));
+ words->Add(wd);
+ ++i;
+ begin = i;
+ goto inword;
+ }
}
++i;
goto inword; // safe even if we're at the end or no longer in a word
}
/**
- * @brief Is it whitespace (excludes all lead & trail bytes)
+ * @brief Is it whitespace (excludes all lead & trail bytes)?
*/
static bool
isSafeWhitespace(TCHAR ch)
}
/**
+ * @brief Is it a non-whitespace wordbreak character (ie, punctuation)?
+ */
+static bool
+isWordBreak(int breakType, TCHAR ch)
+{
+ // breakType==0 means whitespace only
+ if (!breakType) return false;
+ // breakType==1 means break also on punctuation
+ return ch==',' || ch==';' || ch==':';
+}
+
+
+/**
* @brief Return pointer to last character of specified string (handle MBCS)
*
* If the last byte is a broken multibyte (ie, a solo lead byte), this returns previous char
void stringdiffs_Get(const CString & str1, const CString & str2,
- bool case_sensitive, int whitespace,
+ bool case_sensitive, int whitespace, int breakType,
wdiffarray * pDiffs);
void sd_ComputeByteDiff(CString & str1, CString & str2,
{
public:
stringdiffs(const CString & str1, const CString & str2,
- bool case_sensitive, int whitespace,
+ bool case_sensitive, int whitespace, int breakType,
wdiffarray * pDiffs);
void BuildWordDiffList();
const CString & m_str2;
bool m_case_sensitive;
int m_whitespace;
+ int m_breakType;
wdiffarray * m_pDiffs;
wordarray m_words1;
wordarray m_words2;