OSDN Git Service

Merge branch 'master' of git://repo.or.cz/TortoiseGit
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / ExportDlg.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2008 - 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 "ExportDlg.h"\r
22 \r
23 #include "Messagebox.h"\r
24 #include "PathUtils.h"\r
25 #include "BrowseFolder.h"\r
26 #include "AppUtils.h"\r
27 \r
28 \r
29 IMPLEMENT_DYNAMIC(CExportDlg, CResizableStandAloneDialog)\r
30 CExportDlg::CExportDlg(CWnd* pParent /*=NULL*/)\r
31         : CResizableStandAloneDialog(CExportDlg::IDD, pParent)\r
32         , CChooseVersion(this)\r
33         , m_Revision(_T("HEAD"))\r
34         , m_strExportDirectory(_T(""))\r
35         , m_sExportDirOrig(_T(""))\r
36         , m_bNoExternals(FALSE)\r
37         , m_pLogDlg(NULL)\r
38 {\r
39 }\r
40 \r
41 CExportDlg::~CExportDlg()\r
42 {\r
43         if (m_pLogDlg)\r
44                 delete m_pLogDlg;\r
45 }\r
46 \r
47 void CExportDlg::DoDataExchange(CDataExchange* pDX)\r
48 {\r
49         CResizableStandAloneDialog::DoDataExchange(pDX);\r
50         DDX_Text(pDX, IDC_CHECKOUTDIRECTORY, m_strExportDirectory);\r
51         DDX_Control(pDX, IDC_CHECKOUTDIRECTORY, m_cCheckoutEdit);\r
52 \r
53         CHOOSE_VERSION_DDX;\r
54 \r
55 }\r
56 \r
57 \r
58 BEGIN_MESSAGE_MAP(CExportDlg, CResizableStandAloneDialog)\r
59         ON_REGISTERED_MESSAGE(WM_REVSELECTED, OnRevSelected)\r
60         ON_BN_CLICKED(IDC_CHECKOUTDIRECTORY_BROWSE, OnBnClickedCheckoutdirectoryBrowse)\r
61         ON_EN_CHANGE(IDC_CHECKOUTDIRECTORY, OnEnChangeCheckoutdirectory)\r
62         ON_BN_CLICKED(IDHELP, OnBnClickedHelp)\r
63 \r
64         CHOOSE_VERSION_EVENT\r
65 END_MESSAGE_MAP()\r
66 \r
67 BOOL CExportDlg::OnInitDialog()\r
68 {\r
69         CResizableStandAloneDialog::OnInitDialog();\r
70 \r
71         m_sExportDirOrig = m_strExportDirectory;\r
72         m_bAutoCreateTargetName = !PathIsDirectoryEmpty(m_sExportDirOrig);\r
73 \r
74         AddAnchor(IDC_REPOGROUP, TOP_LEFT, TOP_RIGHT);\r
75         AddAnchor(IDC_EXPORT_CHECKOUTDIR, TOP_LEFT);\r
76         AddAnchor(IDC_CHECKOUTDIRECTORY, TOP_LEFT, TOP_RIGHT);\r
77 \r
78         AddAnchor(IDOK, BOTTOM_RIGHT);\r
79         AddAnchor(IDCANCEL, BOTTOM_RIGHT);\r
80         AddAnchor(IDHELP, BOTTOM_RIGHT);\r
81 \r
82         CHOOSE_VERSION_ADDANCHOR;\r
83         Init();\r
84         if(this->m_Revision.IsEmpty())\r
85         {\r
86                 SetDefaultChoose(IDC_RADIO_HEAD);\r
87         }\r
88         else\r
89         {\r
90                 SetDefaultChoose(IDC_RADIO_VERSION);\r
91                 this->GetDlgItem(IDC_COMBOBOXEX_VERSION)->SetWindowTextW(m_Revision);\r
92         }\r
93 \r
94         m_tooltips.Create(this);\r
95         m_tooltips.AddTool(IDC_CHECKOUTDIRECTORY, IDS_CHECKOUT_TT_DIR);\r
96 \r
97         SHAutoComplete(GetDlgItem(IDC_CHECKOUTDIRECTORY)->m_hWnd, SHACF_FILESYSTEM);\r
98 \r
99         if ((m_pParentWnd==NULL)&&(hWndExplorer))\r
100                 CenterWindow(CWnd::FromHandle(hWndExplorer));\r
101         EnableSaveRestore(_T("ExportDlg"));\r
102         return TRUE;\r
103 }\r
104 \r
105 void CExportDlg::OnOK()\r
106 {\r
107         if (!UpdateData(TRUE))\r
108                 return; // don't dismiss dialog (error message already shown by MFC framework)\r
109 \r
110         // check it the export path is a valid windows path\r
111         UpdateRevsionName();\r
112 \r
113         if (m_VersionName.IsEmpty())\r
114         {\r
115                 ShowBalloon(IDC_REVISION_NUM, IDS_ERR_INVALIDREV);\r
116                 return;\r
117         }\r
118 \r
119         m_bAutoCreateTargetName = false;\r
120 \r
121 //      m_URLCombo.SaveHistory();\r
122 //      m_URL = m_URLCombo.GetString();\r
123 \r
124 \r
125         UpdateData(FALSE);\r
126         CResizableStandAloneDialog::OnOK();\r
127 }\r
128 \r
129 void CExportDlg::OnBnClickedBrowse()\r
130 {\r
131         m_tooltips.Pop();       // hide the tooltips\r
132 \r
133 }\r
134 \r
135 void CExportDlg::OnBnClickedCheckoutdirectoryBrowse()\r
136 {\r
137         m_tooltips.Pop();       // hide the tooltips\r
138         //\r
139         // Create a folder browser dialog. If the user selects OK, we should update\r
140         // the local data members with values from the controls, copy the checkout\r
141         // directory from the browse folder, then restore the local values into the\r
142         // dialog controls.\r
143         //\r
144         this->UpdateRevsionName();\r
145         CFileDialog dlg(FALSE,_T("Zip"),this->m_VersionName,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,\r
146                                                 _T("*.Zip"));\r
147         \r
148         if(dlg.DoModal()==IDOK)\r
149         {\r
150                 UpdateData(TRUE);\r
151                 m_strExportDirectory = dlg.GetPathName();\r
152                 UpdateData(FALSE);\r
153         }\r
154 }\r
155 \r
156 BOOL CExportDlg::PreTranslateMessage(MSG* pMsg)\r
157 {\r
158         m_tooltips.RelayEvent(pMsg);\r
159         return CResizableStandAloneDialog::PreTranslateMessage(pMsg);\r
160 }\r
161 \r
162 void CExportDlg::OnEnChangeCheckoutdirectory()\r
163 {\r
164         UpdateData(TRUE);\r
165         DialogEnableWindow(IDOK, !m_strExportDirectory.IsEmpty());\r
166 }\r
167 \r
168 void CExportDlg::OnBnClickedHelp()\r
169 {\r
170         OnHelp();\r
171 }\r
172 \r
173 void CExportDlg::OnBnClickedShowlog()\r
174 {\r
175         m_tooltips.Pop();       // hide the tooltips\r
176 \r
177 }\r
178 \r
179 LPARAM CExportDlg::OnRevSelected(WPARAM /*wParam*/, LPARAM lParam)\r
180 {\r
181         CString temp;\r
182         temp.Format(_T("%ld"), lParam);\r
183         SetDlgItemText(IDC_REVISION_NUM, temp);\r
184         CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_N);\r
185         return 0;\r
186 }\r
187 \r
188 void CExportDlg::OnEnChangeRevisionNum()\r
189 {\r
190         UpdateData();\r
191         if (m_sRevision.IsEmpty())\r
192                 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_HEAD);\r
193         else\r
194                 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_N);\r
195 }\r
196 \r
197 void CExportDlg::OnCbnSelchangeEolcombo()\r
198 {\r
199 }\r
200 \r
201 void CExportDlg::SetRevision(const CString& rev)\r
202 {\r
203         if (rev==_T("HEAD"))\r
204                 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_HEAD);\r
205         else\r
206         {\r
207                 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_N);\r
208                 CString sRev;\r
209                 sRev.Format(_T("%s"), rev);\r
210                 SetDlgItemText(IDC_REVISION_NUM, sRev);\r
211         }\r
212 }\r
213 \r
214 void CExportDlg::OnCbnEditchangeUrlcombo()\r
215 {\r
216         if (!m_bAutoCreateTargetName)\r
217                 return;\r
218         if (m_sExportDirOrig.IsEmpty())\r
219                 return;\r
220         // find out what to use as the checkout directory name\r
221         UpdateData();\r
222         m_URLCombo.GetWindowText(m_URL);\r
223         if (m_URL.IsEmpty())\r
224                 return;\r
225         CString name = CAppUtils::GetProjectNameFromURL(m_URL);\r
226         m_strExportDirectory = m_sExportDirOrig+_T('\\')+name;\r
227         UpdateData(FALSE);\r
228 }\r