OSDN Git Service

5adb36867f94cebd1eb9da5567bbe61c7500fcde
[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         bool bAutoCreateTargetName = m_bAutoCreateTargetName;\r
120         m_bAutoCreateTargetName = false;\r
121 \r
122 //      m_URLCombo.SaveHistory();\r
123 //      m_URL = m_URLCombo.GetString();\r
124 \r
125 \r
126         UpdateData(FALSE);\r
127         CResizableStandAloneDialog::OnOK();\r
128 }\r
129 \r
130 void CExportDlg::OnBnClickedBrowse()\r
131 {\r
132         m_tooltips.Pop();       // hide the tooltips\r
133 \r
134 }\r
135 \r
136 void CExportDlg::OnBnClickedCheckoutdirectoryBrowse()\r
137 {\r
138         m_tooltips.Pop();       // hide the tooltips\r
139         //\r
140         // Create a folder browser dialog. If the user selects OK, we should update\r
141         // the local data members with values from the controls, copy the checkout\r
142         // directory from the browse folder, then restore the local values into the\r
143         // dialog controls.\r
144         //\r
145         this->UpdateRevsionName();\r
146         CFileDialog dlg(FALSE,_T("Zip"),this->m_VersionName,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,\r
147                                                 _T("*.Zip"));\r
148         \r
149         if(dlg.DoModal()==IDOK)\r
150         {\r
151                 UpdateData(TRUE);\r
152                 m_strExportDirectory = dlg.GetPathName();\r
153                 UpdateData(FALSE);\r
154         }\r
155 }\r
156 \r
157 BOOL CExportDlg::PreTranslateMessage(MSG* pMsg)\r
158 {\r
159         m_tooltips.RelayEvent(pMsg);\r
160         return CResizableStandAloneDialog::PreTranslateMessage(pMsg);\r
161 }\r
162 \r
163 void CExportDlg::OnEnChangeCheckoutdirectory()\r
164 {\r
165         UpdateData(TRUE);\r
166         DialogEnableWindow(IDOK, !m_strExportDirectory.IsEmpty());\r
167 }\r
168 \r
169 void CExportDlg::OnBnClickedHelp()\r
170 {\r
171         OnHelp();\r
172 }\r
173 \r
174 void CExportDlg::OnBnClickedShowlog()\r
175 {\r
176         m_tooltips.Pop();       // hide the tooltips\r
177 \r
178 }\r
179 \r
180 LPARAM CExportDlg::OnRevSelected(WPARAM /*wParam*/, LPARAM lParam)\r
181 {\r
182         CString temp;\r
183         temp.Format(_T("%ld"), lParam);\r
184         SetDlgItemText(IDC_REVISION_NUM, temp);\r
185         CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_N);\r
186         return 0;\r
187 }\r
188 \r
189 void CExportDlg::OnEnChangeRevisionNum()\r
190 {\r
191         UpdateData();\r
192         if (m_sRevision.IsEmpty())\r
193                 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_HEAD);\r
194         else\r
195                 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_N);\r
196 }\r
197 \r
198 void CExportDlg::OnCbnSelchangeEolcombo()\r
199 {\r
200 }\r
201 \r
202 void CExportDlg::SetRevision(const CString& rev)\r
203 {\r
204         if (rev==_T("HEAD"))\r
205                 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_HEAD);\r
206         else\r
207         {\r
208                 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_N);\r
209                 CString sRev;\r
210                 sRev.Format(_T("%s"), rev);\r
211                 SetDlgItemText(IDC_REVISION_NUM, sRev);\r
212         }\r
213 }\r
214 \r
215 void CExportDlg::OnCbnEditchangeUrlcombo()\r
216 {\r
217         if (!m_bAutoCreateTargetName)\r
218                 return;\r
219         if (m_sExportDirOrig.IsEmpty())\r
220                 return;\r
221         // find out what to use as the checkout directory name\r
222         UpdateData();\r
223         m_URLCombo.GetWindowText(m_URL);\r
224         if (m_URL.IsEmpty())\r
225                 return;\r
226         CString name = CAppUtils::GetProjectNameFromURL(m_URL);\r
227         m_strExportDirectory = m_sExportDirOrig+_T('\\')+name;\r
228         UpdateData(FALSE);\r
229 }\r