OSDN Git Service

Fix crash when click loading item
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / MergeWizardOptions.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2007-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 "MergeWizard.h"\r
22 #include "MergeWizardOptions.h"\r
23 #include "SVNProgressDlg.h"\r
24 \r
25 \r
26 IMPLEMENT_DYNAMIC(CMergeWizardOptions, CMergeWizardBasePage)\r
27 \r
28 CMergeWizardOptions::CMergeWizardOptions()\r
29         : CMergeWizardBasePage(CMergeWizardOptions::IDD)\r
30 {\r
31         m_psp.dwFlags |= PSP_DEFAULT|PSP_USEHEADERTITLE|PSP_USEHEADERSUBTITLE;\r
32         m_psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_MERGEWIZARD_OPTIONSTITLE);\r
33         m_psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_MERGEWIZARD_OPTIONSSUBTITLE);\r
34 }\r
35 \r
36 CMergeWizardOptions::~CMergeWizardOptions()\r
37 {\r
38 }\r
39 \r
40 void CMergeWizardOptions::DoDataExchange(CDataExchange* pDX)\r
41 {\r
42         CMergeWizardBasePage::DoDataExchange(pDX);\r
43         DDX_Control(pDX, IDC_DEPTH, m_depthCombo);\r
44         DDX_Check(pDX, IDC_IGNOREANCESTRY, ((CMergeWizard*)GetParent())->m_bIgnoreAncestry);\r
45         DDX_Control(pDX, IDC_DEPTH, m_depthCombo);\r
46         DDX_Check(pDX, IDC_IGNOREEOL, ((CMergeWizard*)GetParent())->m_bIgnoreEOL);\r
47         DDX_Check(pDX, IDC_RECORDONLY, ((CMergeWizard*)GetParent())->m_bRecordOnly);\r
48 }\r
49 \r
50 \r
51 BEGIN_MESSAGE_MAP(CMergeWizardOptions, CMergeWizardBasePage)\r
52         ON_BN_CLICKED(IDC_DRYRUN, &CMergeWizardOptions::OnBnClickedDryrun)\r
53 END_MESSAGE_MAP()\r
54 \r
55 \r
56 BOOL CMergeWizardOptions::OnInitDialog()\r
57 {\r
58         CMergeWizardBasePage::OnInitDialog();\r
59 \r
60         m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_WORKING)));\r
61         m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_INFINITE)));\r
62         m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_IMMEDIATE)));\r
63         m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_FILES)));\r
64         m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_EMPTY)));\r
65         switch (((CMergeWizard*)GetParent())->m_depth)\r
66         {\r
67         case svn_depth_unknown:\r
68                 m_depthCombo.SetCurSel(0);\r
69                 break;\r
70         case svn_depth_infinity:\r
71                 m_depthCombo.SetCurSel(1);\r
72                 break;\r
73         case svn_depth_immediates:\r
74                 m_depthCombo.SetCurSel(2);\r
75                 break;\r
76         case svn_depth_files:\r
77                 m_depthCombo.SetCurSel(3);\r
78                 break;\r
79         case svn_depth_empty:\r
80                 m_depthCombo.SetCurSel(4);\r
81                 break;\r
82         default:\r
83                 m_depthCombo.SetCurSel(0);\r
84                 break;\r
85         }\r
86 \r
87         m_tooltips.Create(this);\r
88         m_tooltips.AddTool(IDC_RECORDONLY, IDS_MERGEWIZARD_OPTIONS_RECORDONLY_TT);\r
89 \r
90         CheckRadioButton(IDC_COMPAREWHITESPACES, IDC_IGNOREALLWHITESPACES, IDC_COMPAREWHITESPACES);\r
91 \r
92         AdjustControlSize(IDC_IGNOREANCESTRY);\r
93         AdjustControlSize(IDC_IGNOREEOL);\r
94         AdjustControlSize(IDC_COMPAREWHITESPACES);\r
95         AdjustControlSize(IDC_IGNOREWHITESPACECHANGES);\r
96         AdjustControlSize(IDC_IGNOREALLWHITESPACES);\r
97         AdjustControlSize(IDC_RECORDONLY);\r
98 \r
99         return TRUE;\r
100 }\r
101 \r
102 LRESULT CMergeWizardOptions::OnWizardBack()\r
103 {\r
104         return ((CMergeWizard*)GetParent())->GetSecondPage();\r
105 }\r
106 \r
107 BOOL CMergeWizardOptions::OnWizardFinish()\r
108 {\r
109         switch (m_depthCombo.GetCurSel())\r
110         {\r
111         case 0:\r
112                 ((CMergeWizard*)GetParent())->m_depth = svn_depth_unknown;\r
113                 break;\r
114         case 1:\r
115                 ((CMergeWizard*)GetParent())->m_depth = svn_depth_infinity;\r
116                 break;\r
117         case 2:\r
118                 ((CMergeWizard*)GetParent())->m_depth = svn_depth_immediates;\r
119                 break;\r
120         case 3:\r
121                 ((CMergeWizard*)GetParent())->m_depth = svn_depth_files;\r
122                 break;\r
123         case 4:\r
124                 ((CMergeWizard*)GetParent())->m_depth = svn_depth_empty;\r
125                 break;\r
126         default:\r
127                 ((CMergeWizard*)GetParent())->m_depth = svn_depth_empty;\r
128                 break;\r
129         }\r
130 \r
131         return CMergeWizardBasePage::OnWizardFinish();\r
132 }\r
133 \r
134 BOOL CMergeWizardOptions::OnSetActive()\r
135 {\r
136         CPropertySheet* psheet = (CPropertySheet*) GetParent();   \r
137         psheet->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);\r
138         SetButtonTexts();\r
139         GetDlgItem(IDC_RECORDONLY)->EnableWindow(((CMergeWizard*)GetParent())->nRevRangeMerge != MERGEWIZARD_REINTEGRATE);\r
140         return CMergeWizardBasePage::OnSetActive();\r
141 }\r
142 \r
143 void CMergeWizardOptions::OnBnClickedDryrun()\r
144 {\r
145         UpdateData();\r
146         CMergeWizard * pWizard = ((CMergeWizard*)GetParent());\r
147         CSVNProgressDlg progDlg;\r
148         progDlg.SetCommand(CSVNProgressDlg::SVNProgress_Merge);\r
149         int options = ProgOptDryRun;\r
150         options |= pWizard->m_bIgnoreAncestry ? ProgOptIgnoreAncestry : 0;\r
151         options |= pWizard->m_bRecordOnly ? ProgOptRecordOnly : 0;\r
152         progDlg.SetOptions(options);\r
153         progDlg.SetPathList(CTSVNPathList(pWizard->wcPath));\r
154         progDlg.SetUrl(pWizard->URL1);\r
155         progDlg.SetSecondUrl(pWizard->URL2);\r
156 \r
157         switch (pWizard->nRevRangeMerge)\r
158         {\r
159         case MERGEWIZARD_REVRANGE:\r
160                 {\r
161                         if (pWizard->revRangeArray.GetCount())\r
162                         {\r
163                                 SVNRevRangeArray tempRevArray = pWizard->revRangeArray;\r
164                                 tempRevArray.AdjustForMerge(!!pWizard->bReverseMerge);\r
165                                 progDlg.SetRevisionRanges(tempRevArray);\r
166                         }\r
167                         else\r
168                         {\r
169                                 SVNRevRangeArray tempRevArray;\r
170                                 tempRevArray.AddRevRange(1, SVNRev::REV_HEAD);\r
171                                 progDlg.SetRevisionRanges(tempRevArray);\r
172                         }\r
173                 }\r
174                 break;\r
175         case MERGEWIZARD_TREE:\r
176                 {\r
177                         progDlg.SetRevision(pWizard->startRev);\r
178                         progDlg.SetRevisionEnd(pWizard->endRev);\r
179                         if (pWizard->URL1.Compare(pWizard->URL2) == 0)\r
180                         {\r
181                                 SVNRevRangeArray tempRevArray;\r
182                                 tempRevArray.AdjustForMerge(!!pWizard->bReverseMerge);\r
183                                 tempRevArray.AddRevRange(pWizard->startRev, pWizard->endRev);\r
184                                 progDlg.SetRevisionRanges(tempRevArray);\r
185                         }\r
186                 }\r
187                 break;\r
188         case MERGEWIZARD_REINTEGRATE:\r
189                 {\r
190                         progDlg.SetCommand(CSVNProgressDlg::SVNProgress_MergeReintegrate);\r
191                 }\r
192                 break;\r
193         }\r
194 \r
195         progDlg.SetDepth(pWizard->m_depth);\r
196         progDlg.SetDiffOptions(SVN::GetOptionsString(pWizard->m_bIgnoreEOL, pWizard->m_IgnoreSpaces));\r
197         progDlg.DoModal();\r
198 }\r
199 \r
200 BOOL CMergeWizardOptions::PreTranslateMessage(MSG* pMsg)\r
201 {\r
202         m_tooltips.RelayEvent(pMsg);\r
203         return CMergeWizardBasePage::PreTranslateMessage(pMsg);\r
204 }\r