OSDN Git Service

Show Ignore Sub Menu
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Settings / SetProxyPage.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2007 - TortoiseSVN\r
4 \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
9 \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
14 \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
18 //\r
19 #include "stdafx.h"\r
20 #include "TortoiseProc.h"\r
21 #include "SetProxyPage.h"\r
22 #include "AppUtils.h"\r
23 #include "StringUtils.h"\r
24 #include "SVN.h"\r
25 #include ".\setproxypage.h"\r
26 #include "MessageBox.h"\r
27 \r
28 IMPLEMENT_DYNAMIC(CSetProxyPage, ISettingsPropPage)\r
29 CSetProxyPage::CSetProxyPage()\r
30         : ISettingsPropPage(CSetProxyPage::IDD)\r
31         , m_serveraddress(_T(""))\r
32         , m_serverport(0)\r
33         , m_username(_T(""))\r
34         , m_password(_T(""))\r
35         , m_timeout(0)\r
36         , m_isEnabled(FALSE)\r
37         , m_SSHClient(_T(""))\r
38         , m_Exceptions(_T(""))\r
39 {\r
40         m_regServeraddress = CRegString(_T("Software\\Tigris.org\\Subversion\\Servers\\global\\http-proxy-host"), _T(""));\r
41         m_regServerport = CRegString(_T("Software\\Tigris.org\\Subversion\\Servers\\global\\http-proxy-port"), _T(""));\r
42         m_regUsername = CRegString(_T("Software\\Tigris.org\\Subversion\\Servers\\global\\http-proxy-username"), _T(""));\r
43         m_regPassword = CRegString(_T("Software\\Tigris.org\\Subversion\\Servers\\global\\http-proxy-password"), _T(""));\r
44         m_regTimeout = CRegString(_T("Software\\Tigris.org\\Subversion\\Servers\\global\\http-proxy-timeout"), _T(""));\r
45         m_regSSHClient = CRegString(_T("Software\\TortoiseSVN\\SSH"));\r
46         m_SSHClient = m_regSSHClient;\r
47         m_regExceptions = CRegString(_T("Software\\Tigris.org\\Subversion\\Servers\\global\\http-proxy-exceptions"), _T(""));\r
48 \r
49         m_regServeraddress_copy = CRegString(_T("Software\\TortoiseSVN\\Servers\\global\\http-proxy-host"), _T(""));\r
50         m_regServerport_copy = CRegString(_T("Software\\TortoiseSVN\\Servers\\global\\http-proxy-port"), _T(""));\r
51         m_regUsername_copy = CRegString(_T("Software\\TortoiseSVN\\Servers\\global\\http-proxy-username"), _T(""));\r
52         m_regPassword_copy = CRegString(_T("Software\\TortoiseSVN\\Servers\\global\\http-proxy-password"), _T(""));\r
53         m_regTimeout_copy = CRegString(_T("Software\\TortoiseSVN\\Servers\\global\\http-proxy-timeout"), _T(""));\r
54         m_regExceptions_copy = CRegString(_T("Software\\TortoiseSVN\\Servers\\global\\http-proxy-exceptions"), _T(""));\r
55 }\r
56 \r
57 CSetProxyPage::~CSetProxyPage()\r
58 {\r
59 }\r
60 \r
61 void CSetProxyPage::DoDataExchange(CDataExchange* pDX)\r
62 {\r
63         ISettingsPropPage::DoDataExchange(pDX);\r
64         DDX_Text(pDX, IDC_SERVERADDRESS, m_serveraddress);\r
65         DDX_Text(pDX, IDC_SERVERPORT, m_serverport);\r
66         DDX_Text(pDX, IDC_USERNAME, m_username);\r
67         DDX_Text(pDX, IDC_PASSWORD, m_password);\r
68         DDX_Text(pDX, IDC_TIMEOUT, m_timeout);\r
69         DDX_Text(pDX, IDC_EXCEPTIONS, m_Exceptions);\r
70         DDX_Check(pDX, IDC_ENABLE, m_isEnabled);\r
71         DDX_Text(pDX, IDC_SSHCLIENT, m_SSHClient);\r
72         DDX_Control(pDX, IDC_SSHCLIENT, m_cSSHClientEdit);\r
73 }\r
74 \r
75 \r
76 BEGIN_MESSAGE_MAP(CSetProxyPage, ISettingsPropPage)\r
77         ON_EN_CHANGE(IDC_SERVERADDRESS, OnChange)\r
78         ON_EN_CHANGE(IDC_SERVERPORT, OnChange)\r
79         ON_EN_CHANGE(IDC_USERNAME, OnChange)\r
80         ON_EN_CHANGE(IDC_PASSWORD, OnChange)\r
81         ON_EN_CHANGE(IDC_TIMEOUT, OnChange)\r
82         ON_EN_CHANGE(IDC_SSHCLIENT, OnChange)\r
83         ON_EN_CHANGE(IDC_EXCEPTIONS, OnChange)\r
84         ON_BN_CLICKED(IDC_ENABLE, OnBnClickedEnable)\r
85         ON_BN_CLICKED(IDC_SSHBROWSE, OnBnClickedSshbrowse)\r
86         ON_BN_CLICKED(IDC_EDITSERVERS, OnBnClickedEditservers)\r
87 END_MESSAGE_MAP()\r
88 \r
89 \r
90 \r
91 BOOL CSetProxyPage::OnInitDialog()\r
92 {\r
93         ISettingsPropPage::OnInitDialog();\r
94 \r
95         m_tooltips.Create(this);\r
96         m_tooltips.AddTool(IDC_SERVERADDRESS, IDS_SETTINGS_PROXYSERVER_TT);\r
97         m_tooltips.AddTool(IDC_EXCEPTIONS, IDS_SETTINGS_PROXYEXCEPTIONS_TT);\r
98 \r
99         m_SSHClient = m_regSSHClient;\r
100         m_serveraddress = m_regServeraddress;\r
101         m_serverport = _ttoi((LPCTSTR)(CString)m_regServerport);\r
102         m_username = m_regUsername;\r
103         m_password = m_regPassword;\r
104         m_Exceptions = m_regExceptions;\r
105         m_timeout = _ttoi((LPCTSTR)(CString)m_regTimeout);\r
106 \r
107         if (m_serveraddress.IsEmpty())\r
108         {\r
109                 m_isEnabled = FALSE;\r
110                 EnableGroup(FALSE);\r
111                 // now since we already created our registry entries\r
112                 // we delete them here again...\r
113                 m_regServeraddress.removeValue();\r
114                 m_regServerport.removeValue();\r
115                 m_regUsername.removeValue();\r
116                 m_regPassword.removeValue();\r
117                 m_regTimeout.removeValue();\r
118                 m_regExceptions.removeValue();\r
119         }\r
120         else\r
121         {\r
122                 m_isEnabled = TRUE;\r
123                 EnableGroup(TRUE);\r
124         }\r
125         if (m_serveraddress.IsEmpty())\r
126                 m_serveraddress = m_regServeraddress_copy;\r
127         if (m_serverport==0)\r
128                 m_serverport = _ttoi((LPCTSTR)(CString)m_regServerport_copy);\r
129         if (m_username.IsEmpty())\r
130                 m_username = m_regUsername_copy;\r
131         if (m_password.IsEmpty())\r
132                 m_password = m_regPassword_copy;\r
133         if (m_Exceptions.IsEmpty())\r
134                 m_Exceptions = m_regExceptions_copy;\r
135         if (m_timeout == 0)\r
136                 m_timeout = _ttoi((LPCTSTR)(CString)m_regTimeout_copy);\r
137 \r
138         SHAutoComplete(::GetDlgItem(m_hWnd, IDC_SSHCLIENT), SHACF_FILESYSTEM | SHACF_FILESYS_ONLY);\r
139 \r
140         UpdateData(FALSE);\r
141 \r
142         return TRUE;\r
143 }\r
144 \r
145 void CSetProxyPage::OnBnClickedEnable()\r
146 {\r
147         UpdateData();\r
148         if (m_isEnabled)\r
149         {\r
150                 EnableGroup(TRUE);\r
151         }\r
152         else\r
153         {\r
154                 EnableGroup(FALSE);\r
155         }\r
156         SetModified();\r
157 }\r
158 \r
159 void CSetProxyPage::EnableGroup(BOOL b)\r
160 {\r
161         GetDlgItem(IDC_SERVERADDRESS)->EnableWindow(b);\r
162         GetDlgItem(IDC_SERVERPORT)->EnableWindow(b);\r
163         GetDlgItem(IDC_USERNAME)->EnableWindow(b);\r
164         GetDlgItem(IDC_PASSWORD)->EnableWindow(b);\r
165         GetDlgItem(IDC_TIMEOUT)->EnableWindow(b);\r
166         GetDlgItem(IDC_EXCEPTIONS)->EnableWindow(b);\r
167         GetDlgItem(IDC_PROXYLABEL1)->EnableWindow(b);\r
168         GetDlgItem(IDC_PROXYLABEL2)->EnableWindow(b);\r
169         GetDlgItem(IDC_PROXYLABEL3)->EnableWindow(b);\r
170         GetDlgItem(IDC_PROXYLABEL4)->EnableWindow(b);\r
171         GetDlgItem(IDC_PROXYLABEL5)->EnableWindow(b);\r
172         GetDlgItem(IDC_PROXYLABEL6)->EnableWindow(b);\r
173 }\r
174 \r
175 BOOL CSetProxyPage::PreTranslateMessage(MSG* pMsg)\r
176 {\r
177         m_tooltips.RelayEvent(pMsg);\r
178         return ISettingsPropPage::PreTranslateMessage(pMsg);\r
179 }\r
180 \r
181 void CSetProxyPage::OnChange()\r
182 {\r
183         SetModified();\r
184 }\r
185 \r
186 BOOL CSetProxyPage::OnApply()\r
187 {\r
188         UpdateData();\r
189         if (m_isEnabled)\r
190         {\r
191                 CString temp;\r
192                 Store (m_serveraddress, m_regServeraddress);\r
193                 m_regServeraddress_copy = m_serveraddress;\r
194                 temp.Format(_T("%d"), m_serverport);\r
195                 Store (temp, m_regServerport);\r
196                 m_regServerport_copy = temp;\r
197                 Store (m_username, m_regUsername);\r
198                 m_regUsername_copy = m_username;\r
199                 Store (m_password, m_regPassword);\r
200                 m_regPassword_copy = m_password;\r
201                 temp.Format(_T("%d"), m_timeout);\r
202                 Store (temp, m_regTimeout);\r
203                 m_regTimeout_copy = temp;\r
204                 Store (m_Exceptions, m_regExceptions);\r
205                 m_regExceptions_copy = m_Exceptions;\r
206         }\r
207         else\r
208         {\r
209                 m_regServeraddress.removeValue();\r
210                 m_regServerport.removeValue();\r
211                 m_regUsername.removeValue();\r
212                 m_regPassword.removeValue();\r
213                 m_regTimeout.removeValue();\r
214                 m_regExceptions.removeValue();\r
215 \r
216                 CString temp;\r
217                 m_regServeraddress_copy = m_serveraddress;\r
218                 temp.Format(_T("%d"), m_serverport);\r
219                 m_regServerport_copy = temp;\r
220                 m_regUsername_copy = m_username;\r
221                 m_regPassword_copy = m_password;\r
222                 temp.Format(_T("%d"), m_timeout);\r
223                 m_regTimeout_copy = temp;\r
224                 m_regExceptions_copy = m_Exceptions;\r
225         }\r
226         m_regSSHClient = m_SSHClient;\r
227         SetModified(FALSE);\r
228         return ISettingsPropPage::OnApply();\r
229 }\r
230 \r
231 \r
232 void CSetProxyPage::OnBnClickedSshbrowse()\r
233 {\r
234         CString openPath;\r
235         if (CAppUtils::FileOpenSave(openPath, NULL, IDS_SETTINGS_SELECTSSH, IDS_PROGRAMSFILEFILTER, true, m_hWnd))\r
236         {\r
237                 UpdateData();\r
238                 m_SSHClient = openPath;\r
239                 UpdateData(FALSE);\r
240                 SetModified();\r
241         }\r
242 }\r
243 \r
244 void CSetProxyPage::OnBnClickedEditservers()\r
245 {\r
246         TCHAR buf[MAX_PATH];\r
247         SVN::EnsureConfigFile();\r
248         SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, buf);\r
249         CString path = buf;\r
250         path += _T("\\Subversion\\servers");\r
251         CAppUtils::StartTextViewer(path);\r
252 }\r