1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2009, 2011, 2013-2016 - TortoiseGit
4 // Copyright (C) 2003-2007 - TortoiseSVN
6 // This program is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU General Public License
8 // as published by the Free Software Foundation; either version 2
9 // of the License, or (at your option) any later version.
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software Foundation,
18 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 #include "TortoiseProc.h"
23 #include "SettingsProgsMerge.h"
26 IMPLEMENT_DYNAMIC(CSettingsProgsMerge
, ISettingsPropPage
)
27 CSettingsProgsMerge::CSettingsProgsMerge()
28 : ISettingsPropPage(CSettingsProgsMerge::IDD
)
30 , m_dlgAdvMerge(L
"Merge")
32 m_regMergePath
= CRegString(L
"Software\\TortoiseGit\\Merge");
35 CSettingsProgsMerge::~CSettingsProgsMerge()
39 void CSettingsProgsMerge::DoDataExchange(CDataExchange
* pDX
)
41 ISettingsPropPage::DoDataExchange(pDX
);
42 DDX_Text(pDX
, IDC_EXTMERGE
, m_sMergePath
);
43 DDX_Radio(pDX
, IDC_EXTMERGE_OFF
, m_iExtMerge
);
45 GetDlgItem(IDC_EXTMERGE
)->EnableWindow(m_iExtMerge
== 1);
46 GetDlgItem(IDC_EXTMERGEBROWSE
)->EnableWindow(m_iExtMerge
== 1);
47 DDX_Control(pDX
, IDC_EXTMERGE
, m_cMergeEdit
);
51 BEGIN_MESSAGE_MAP(CSettingsProgsMerge
, ISettingsPropPage
)
52 ON_BN_CLICKED(IDC_EXTMERGE_OFF
, OnBnClickedExtmergeOff
)
53 ON_BN_CLICKED(IDC_EXTMERGE_ON
, OnBnClickedExtmergeOn
)
54 ON_BN_CLICKED(IDC_EXTMERGEBROWSE
, OnBnClickedExtmergebrowse
)
55 ON_BN_CLICKED(IDC_EXTMERGEADVANCED
, OnBnClickedExtmergeadvanced
)
56 ON_EN_CHANGE(IDC_EXTMERGE
, OnEnChangeExtmerge
)
60 BOOL
CSettingsProgsMerge::OnInitDialog()
62 ISettingsPropPage::OnInitDialog();
64 AdjustControlSize(IDC_EXTMERGE_OFF
);
65 AdjustControlSize(IDC_EXTMERGE_ON
);
68 m_sMergePath
= m_regMergePath
;
69 m_iExtMerge
= IsExternal(m_sMergePath
);
71 SHAutoComplete(::GetDlgItem(m_hWnd
, IDC_EXTMERGE
), SHACF_FILESYSTEM
| SHACF_FILESYS_ONLY
);
73 m_tooltips
.AddTool(IDC_EXTMERGE
, IDS_SETTINGS_EXTMERGE_TT
);
79 BOOL
CSettingsProgsMerge::OnApply()
82 if (m_iExtMerge
== 0 && !m_sMergePath
.IsEmpty() && m_sMergePath
.Left(1) != L
"#")
83 m_sMergePath
= L
'#' + m_sMergePath
;
85 m_regMergePath
= m_sMergePath
;
87 m_dlgAdvMerge
.SaveData();
89 return ISettingsPropPage::OnApply();
92 void CSettingsProgsMerge::OnBnClickedExtmergeOff()
96 GetDlgItem(IDC_EXTMERGE
)->EnableWindow(FALSE
);
97 GetDlgItem(IDC_EXTMERGEBROWSE
)->EnableWindow(FALSE
);
101 void CSettingsProgsMerge::OnBnClickedExtmergeOn()
105 GetDlgItem(IDC_EXTMERGE
)->EnableWindow(TRUE
);
106 GetDlgItem(IDC_EXTMERGEBROWSE
)->EnableWindow(TRUE
);
107 GetDlgItem(IDC_EXTMERGE
)->SetFocus();
111 void CSettingsProgsMerge::OnEnChangeExtmerge()
116 void CSettingsProgsMerge::OnBnClickedExtmergebrowse()
119 CString filename
= m_sMergePath
;
120 if (!PathFileExists(filename
))
122 if (CAppUtils::FileOpenSave(filename
, nullptr, IDS_SETTINGS_SELECTMERGE
, IDS_PROGRAMSFILEFILTER
, true, m_hWnd
))
124 m_sMergePath
= filename
;
130 void CSettingsProgsMerge::OnBnClickedExtmergeadvanced()
132 if (m_dlgAdvMerge
.DoModal() == IDOK
)
136 void CSettingsProgsMerge::CheckProgComment()
139 if (m_iExtMerge
== 0 && !m_sMergePath
.IsEmpty() && m_sMergePath
.Left(1) != L
"#")
140 m_sMergePath
= L
'#' + m_sMergePath
;
141 else if (m_iExtMerge
== 1)
142 m_sMergePath
.TrimLeft(L
'#');