1 // TortoiseSVN - a Windows shell extension for easy version control
\r
3 // Copyright (C) 2003-2007 - TortoiseSVN
\r
5 // This program is free software; you can redistribute it and/or
\r
6 // modify it under the terms of the GNU General Public License
\r
7 // as published by the Free Software Foundation; either version 2
\r
8 // of the License, or (at your option) any later version.
\r
10 // This program is distributed in the hope that it will be useful,
\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
13 // GNU General Public License for more details.
\r
15 // You should have received a copy of the GNU General Public License
\r
16 // along with this program; if not, write to the Free Software Foundation,
\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\r
20 #include "TortoiseProc.h"
\r
21 #include "AppUtils.h"
\r
22 #include "StringUtils.h"
\r
23 #include ".\settingsprogsunidiff.h"
\r
26 IMPLEMENT_DYNAMIC(CSettingsProgsUniDiff, ISettingsPropPage)
\r
27 CSettingsProgsUniDiff::CSettingsProgsUniDiff()
\r
28 : ISettingsPropPage(CSettingsProgsUniDiff::IDD)
\r
29 , m_sDiffViewerPath(_T(""))
\r
32 m_regDiffViewerPath = CRegString(_T("Software\\TortoiseGit\\DiffViewer"));
\r
35 CSettingsProgsUniDiff::~CSettingsProgsUniDiff()
\r
39 void CSettingsProgsUniDiff::DoDataExchange(CDataExchange* pDX)
\r
41 ISettingsPropPage::DoDataExchange(pDX);
\r
42 DDX_Text(pDX, IDC_DIFFVIEWER, m_sDiffViewerPath);
\r
43 DDX_Radio(pDX, IDC_DIFFVIEWER_OFF, m_iDiffViewer);
\r
45 GetDlgItem(IDC_DIFFVIEWER)->EnableWindow(m_iDiffViewer == 1);
\r
46 GetDlgItem(IDC_DIFFVIEWERBROWSE)->EnableWindow(m_iDiffViewer == 1);
\r
47 DDX_Control(pDX, IDC_DIFFVIEWER, m_cUnifiedDiffEdit);
\r
51 BEGIN_MESSAGE_MAP(CSettingsProgsUniDiff, ISettingsPropPage)
\r
52 ON_BN_CLICKED(IDC_DIFFVIEWER_OFF, OnBnClickedDiffviewerOff)
\r
53 ON_BN_CLICKED(IDC_DIFFVIEWER_ON, OnBnClickedDiffviewerOn)
\r
54 ON_BN_CLICKED(IDC_DIFFVIEWERBROWSE, OnBnClickedDiffviewerbrowse)
\r
55 ON_EN_CHANGE(IDC_DIFFVIEWER, OnEnChangeDiffviewer)
\r
58 void CSettingsProgsUniDiff::OnBnClickedDiffviewerOff()
\r
62 GetDlgItem(IDC_DIFFVIEWER)->EnableWindow(FALSE);
\r
63 GetDlgItem(IDC_DIFFVIEWERBROWSE)->EnableWindow(FALSE);
\r
67 void CSettingsProgsUniDiff::OnBnClickedDiffviewerOn()
\r
71 GetDlgItem(IDC_DIFFVIEWER)->EnableWindow(TRUE);
\r
72 GetDlgItem(IDC_DIFFVIEWERBROWSE)->EnableWindow(TRUE);
\r
73 GetDlgItem(IDC_DIFFVIEWER)->SetFocus();
\r
77 void CSettingsProgsUniDiff::OnEnChangeDiffviewer()
\r
82 void CSettingsProgsUniDiff::OnBnClickedDiffviewerbrowse()
\r
84 if (CAppUtils::FileOpenSave(m_sDiffViewerPath, NULL, IDS_SETTINGS_SELECTDIFFVIEWER, IDS_PROGRAMSFILEFILTER, true, m_hWnd))
\r
91 BOOL CSettingsProgsUniDiff::OnInitDialog()
\r
93 ISettingsPropPage::OnInitDialog();
\r
97 m_sDiffViewerPath = m_regDiffViewerPath;
\r
98 m_iDiffViewer = IsExternal(m_sDiffViewerPath);
\r
100 SHAutoComplete(::GetDlgItem(m_hWnd, IDC_DIFFVIEWER), SHACF_FILESYSTEM | SHACF_FILESYS_ONLY);
\r
102 m_tooltips.Create(this);
\r
103 m_tooltips.AddTool(IDC_DIFFVIEWER, IDS_SETTINGS_DIFFVIEWER_TT);
\r
109 BOOL CSettingsProgsUniDiff::PreTranslateMessage(MSG* pMsg)
\r
111 m_tooltips.RelayEvent(pMsg);
\r
112 return ISettingsPropPage::PreTranslateMessage(pMsg);
\r
115 BOOL CSettingsProgsUniDiff::OnApply()
\r
118 if (m_iDiffViewer == 0 && !m_sDiffViewerPath.IsEmpty() && m_sDiffViewerPath.Left(1) != _T("#"))
\r
119 m_sDiffViewerPath = _T("#") + m_sDiffViewerPath;
\r
121 m_regDiffViewerPath = m_sDiffViewerPath;
\r
122 SetModified(FALSE);
\r
123 return ISettingsPropPage::OnApply();
\r
126 void CSettingsProgsUniDiff::CheckProgComment()
\r
129 if (m_iDiffViewer == 0 && !m_sDiffViewerPath.IsEmpty() && m_sDiffViewerPath.Left(1) != _T("#"))
\r
130 m_sDiffViewerPath = _T("#") + m_sDiffViewerPath;
\r
131 else if (m_iDiffViewer == 1)
\r
132 m_sDiffViewerPath.TrimLeft('#');
\r