Adjust checkbox and radio control widths to required size
[TortoiseGit.git] / src / TortoiseProc / Settings / SettingsProgsMerge.cpp
blob2f2a08b3c2feefac1614836d0900d73b62ac5e64
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2003-2007 - TortoiseSVN
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 #include "stdafx.h"
20 #include "TortoiseProc.h"
21 #include "AppUtils.h"
22 #include "StringUtils.h"
23 #include "SettingsProgsMerge.h"
26 IMPLEMENT_DYNAMIC(CSettingsProgsMerge, ISettingsPropPage)
27 CSettingsProgsMerge::CSettingsProgsMerge()
28 : ISettingsPropPage(CSettingsProgsMerge::IDD)
29 , m_sMergePath(_T(""))
30 , m_iExtMerge(0)
31 , m_dlgAdvMerge(_T("Merge"))
33 m_regMergePath = CRegString(_T("Software\\TortoiseGit\\Merge"));
36 CSettingsProgsMerge::~CSettingsProgsMerge()
40 void CSettingsProgsMerge::DoDataExchange(CDataExchange* pDX)
42 ISettingsPropPage::DoDataExchange(pDX);
43 DDX_Text(pDX, IDC_EXTMERGE, m_sMergePath);
44 DDX_Radio(pDX, IDC_EXTMERGE_OFF, m_iExtMerge);
46 GetDlgItem(IDC_EXTMERGE)->EnableWindow(m_iExtMerge == 1);
47 GetDlgItem(IDC_EXTMERGEBROWSE)->EnableWindow(m_iExtMerge == 1);
48 DDX_Control(pDX, IDC_EXTMERGE, m_cMergeEdit);
52 BEGIN_MESSAGE_MAP(CSettingsProgsMerge, ISettingsPropPage)
53 ON_BN_CLICKED(IDC_EXTMERGE_OFF, OnBnClickedExtmergeOff)
54 ON_BN_CLICKED(IDC_EXTMERGE_ON, OnBnClickedExtmergeOn)
55 ON_BN_CLICKED(IDC_EXTMERGEBROWSE, OnBnClickedExtmergebrowse)
56 ON_BN_CLICKED(IDC_EXTMERGEADVANCED, OnBnClickedExtmergeadvanced)
57 ON_EN_CHANGE(IDC_EXTMERGE, OnEnChangeExtmerge)
58 END_MESSAGE_MAP()
61 BOOL CSettingsProgsMerge::OnInitDialog()
63 ISettingsPropPage::OnInitDialog();
65 AdjustControlSize(IDC_EXTMERGE_OFF);
66 AdjustControlSize(IDC_EXTMERGE_ON);
67 EnableToolTips();
69 m_sMergePath = m_regMergePath;
70 m_iExtMerge = IsExternal(m_sMergePath);
72 SHAutoComplete(::GetDlgItem(m_hWnd, IDC_EXTMERGE), SHACF_FILESYSTEM | SHACF_FILESYS_ONLY);
74 m_tooltips.Create(this);
75 m_tooltips.AddTool(IDC_EXTMERGE, IDS_SETTINGS_EXTMERGE_TT);
77 UpdateData(FALSE);
78 return TRUE;
81 BOOL CSettingsProgsMerge::PreTranslateMessage(MSG* pMsg)
83 m_tooltips.RelayEvent(pMsg);
84 return ISettingsPropPage::PreTranslateMessage(pMsg);
87 BOOL CSettingsProgsMerge::OnApply()
89 UpdateData();
90 if (m_iExtMerge == 0 && !m_sMergePath.IsEmpty() && m_sMergePath.Left(1) != _T("#"))
91 m_sMergePath = _T("#") + m_sMergePath;
93 m_regMergePath = m_sMergePath;
95 m_dlgAdvMerge.SaveData();
96 SetModified(FALSE);
97 return ISettingsPropPage::OnApply();
100 void CSettingsProgsMerge::OnBnClickedExtmergeOff()
102 m_iExtMerge = 0;
103 SetModified();
104 GetDlgItem(IDC_EXTMERGE)->EnableWindow(FALSE);
105 GetDlgItem(IDC_EXTMERGEBROWSE)->EnableWindow(FALSE);
106 CheckProgComment();
109 void CSettingsProgsMerge::OnBnClickedExtmergeOn()
111 m_iExtMerge = 1;
112 SetModified();
113 GetDlgItem(IDC_EXTMERGE)->EnableWindow(TRUE);
114 GetDlgItem(IDC_EXTMERGEBROWSE)->EnableWindow(TRUE);
115 GetDlgItem(IDC_EXTMERGE)->SetFocus();
116 CheckProgComment();
119 void CSettingsProgsMerge::OnEnChangeExtmerge()
121 SetModified();
124 void CSettingsProgsMerge::OnBnClickedExtmergebrowse()
126 if (CAppUtils::FileOpenSave(m_sMergePath, NULL, IDS_SETTINGS_SELECTMERGE, IDS_PROGRAMSFILEFILTER, true, m_hWnd))
128 UpdateData(FALSE);
129 SetModified();
133 void CSettingsProgsMerge::OnBnClickedExtmergeadvanced()
135 if (m_dlgAdvMerge.DoModal() == IDOK)
136 SetModified();
139 void CSettingsProgsMerge::CheckProgComment()
141 UpdateData();
142 if (m_iExtMerge == 0 && !m_sMergePath.IsEmpty() && m_sMergePath.Left(1) != _T("#"))
143 m_sMergePath = _T("#") + m_sMergePath;
144 else if (m_iExtMerge == 1)
145 m_sMergePath.TrimLeft('#');
146 UpdateData(FALSE);