Merge branch 'restructure-tree'
[TortoiseGit.git] / src / TortoiseProc / MergeWizardOptions.cpp
blobed8948dc5a932c5e18d088525b57ca3eb09e13c8
1 // TortoiseSVN - a Windows shell extension for easy version control
3 // Copyright (C) 2007-2008 - 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 "MergeWizard.h"
22 #include "MergeWizardOptions.h"
23 #include "SVNProgressDlg.h"
26 IMPLEMENT_DYNAMIC(CMergeWizardOptions, CMergeWizardBasePage)
28 CMergeWizardOptions::CMergeWizardOptions()
29 : CMergeWizardBasePage(CMergeWizardOptions::IDD)
31 m_psp.dwFlags |= PSP_DEFAULT|PSP_USEHEADERTITLE|PSP_USEHEADERSUBTITLE;
32 m_psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_MERGEWIZARD_OPTIONSTITLE);
33 m_psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_MERGEWIZARD_OPTIONSSUBTITLE);
36 CMergeWizardOptions::~CMergeWizardOptions()
40 void CMergeWizardOptions::DoDataExchange(CDataExchange* pDX)
42 CMergeWizardBasePage::DoDataExchange(pDX);
43 DDX_Control(pDX, IDC_DEPTH, m_depthCombo);
44 DDX_Check(pDX, IDC_IGNOREANCESTRY, ((CMergeWizard*)GetParent())->m_bIgnoreAncestry);
45 DDX_Control(pDX, IDC_DEPTH, m_depthCombo);
46 DDX_Check(pDX, IDC_IGNOREEOL, ((CMergeWizard*)GetParent())->m_bIgnoreEOL);
47 DDX_Check(pDX, IDC_RECORDONLY, ((CMergeWizard*)GetParent())->m_bRecordOnly);
51 BEGIN_MESSAGE_MAP(CMergeWizardOptions, CMergeWizardBasePage)
52 ON_BN_CLICKED(IDC_DRYRUN, &CMergeWizardOptions::OnBnClickedDryrun)
53 END_MESSAGE_MAP()
56 BOOL CMergeWizardOptions::OnInitDialog()
58 CMergeWizardBasePage::OnInitDialog();
60 m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_WORKING)));
61 m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_INFINITE)));
62 m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_IMMEDIATE)));
63 m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_FILES)));
64 m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_EMPTY)));
65 switch (((CMergeWizard*)GetParent())->m_depth)
67 case svn_depth_unknown:
68 m_depthCombo.SetCurSel(0);
69 break;
70 case svn_depth_infinity:
71 m_depthCombo.SetCurSel(1);
72 break;
73 case svn_depth_immediates:
74 m_depthCombo.SetCurSel(2);
75 break;
76 case svn_depth_files:
77 m_depthCombo.SetCurSel(3);
78 break;
79 case svn_depth_empty:
80 m_depthCombo.SetCurSel(4);
81 break;
82 default:
83 m_depthCombo.SetCurSel(0);
84 break;
87 m_tooltips.Create(this);
88 m_tooltips.AddTool(IDC_RECORDONLY, IDS_MERGEWIZARD_OPTIONS_RECORDONLY_TT);
90 CheckRadioButton(IDC_COMPAREWHITESPACES, IDC_IGNOREALLWHITESPACES, IDC_COMPAREWHITESPACES);
92 AdjustControlSize(IDC_IGNOREANCESTRY);
93 AdjustControlSize(IDC_IGNOREEOL);
94 AdjustControlSize(IDC_COMPAREWHITESPACES);
95 AdjustControlSize(IDC_IGNOREWHITESPACECHANGES);
96 AdjustControlSize(IDC_IGNOREALLWHITESPACES);
97 AdjustControlSize(IDC_RECORDONLY);
99 return TRUE;
102 LRESULT CMergeWizardOptions::OnWizardBack()
104 return ((CMergeWizard*)GetParent())->GetSecondPage();
107 BOOL CMergeWizardOptions::OnWizardFinish()
109 switch (m_depthCombo.GetCurSel())
111 case 0:
112 ((CMergeWizard*)GetParent())->m_depth = svn_depth_unknown;
113 break;
114 case 1:
115 ((CMergeWizard*)GetParent())->m_depth = svn_depth_infinity;
116 break;
117 case 2:
118 ((CMergeWizard*)GetParent())->m_depth = svn_depth_immediates;
119 break;
120 case 3:
121 ((CMergeWizard*)GetParent())->m_depth = svn_depth_files;
122 break;
123 case 4:
124 ((CMergeWizard*)GetParent())->m_depth = svn_depth_empty;
125 break;
126 default:
127 ((CMergeWizard*)GetParent())->m_depth = svn_depth_empty;
128 break;
131 return CMergeWizardBasePage::OnWizardFinish();
134 BOOL CMergeWizardOptions::OnSetActive()
136 CPropertySheet* psheet = (CPropertySheet*) GetParent();
137 psheet->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);
138 SetButtonTexts();
139 GetDlgItem(IDC_RECORDONLY)->EnableWindow(((CMergeWizard*)GetParent())->nRevRangeMerge != MERGEWIZARD_REINTEGRATE);
140 return CMergeWizardBasePage::OnSetActive();
143 void CMergeWizardOptions::OnBnClickedDryrun()
145 UpdateData();
146 CMergeWizard * pWizard = ((CMergeWizard*)GetParent());
147 CSVNProgressDlg progDlg;
148 progDlg.SetCommand(CSVNProgressDlg::SVNProgress_Merge);
149 int options = ProgOptDryRun;
150 options |= pWizard->m_bIgnoreAncestry ? ProgOptIgnoreAncestry : 0;
151 options |= pWizard->m_bRecordOnly ? ProgOptRecordOnly : 0;
152 progDlg.SetOptions(options);
153 progDlg.SetPathList(CTSVNPathList(pWizard->wcPath));
154 progDlg.SetUrl(pWizard->URL1);
155 progDlg.SetSecondUrl(pWizard->URL2);
157 switch (pWizard->nRevRangeMerge)
159 case MERGEWIZARD_REVRANGE:
161 if (pWizard->revRangeArray.GetCount())
163 SVNRevRangeArray tempRevArray = pWizard->revRangeArray;
164 tempRevArray.AdjustForMerge(!!pWizard->bReverseMerge);
165 progDlg.SetRevisionRanges(tempRevArray);
167 else
169 SVNRevRangeArray tempRevArray;
170 tempRevArray.AddRevRange(1, SVNRev::REV_HEAD);
171 progDlg.SetRevisionRanges(tempRevArray);
174 break;
175 case MERGEWIZARD_TREE:
177 progDlg.SetRevision(pWizard->startRev);
178 progDlg.SetRevisionEnd(pWizard->endRev);
179 if (pWizard->URL1.Compare(pWizard->URL2) == 0)
181 SVNRevRangeArray tempRevArray;
182 tempRevArray.AdjustForMerge(!!pWizard->bReverseMerge);
183 tempRevArray.AddRevRange(pWizard->startRev, pWizard->endRev);
184 progDlg.SetRevisionRanges(tempRevArray);
187 break;
188 case MERGEWIZARD_REINTEGRATE:
190 progDlg.SetCommand(CSVNProgressDlg::SVNProgress_MergeReintegrate);
192 break;
195 progDlg.SetDepth(pWizard->m_depth);
196 progDlg.SetDiffOptions(SVN::GetOptionsString(pWizard->m_bIgnoreEOL, pWizard->m_IgnoreSpaces));
197 progDlg.DoModal();
200 BOOL CMergeWizardOptions::PreTranslateMessage(MSG* pMsg)
202 m_tooltips.RelayEvent(pMsg);
203 return CMergeWizardBasePage::PreTranslateMessage(pMsg);