1 // TortoiseSVN - a Windows shell extension for easy version control
\r
3 // Copyright (C) 2007-2008 - TortoiseSVN
\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
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
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
20 #include "TortoiseProc.h"
\r
21 #include "MergeWizard.h"
\r
22 #include "MergeWizardOptions.h"
\r
23 #include "SVNProgressDlg.h"
\r
26 IMPLEMENT_DYNAMIC(CMergeWizardOptions, CMergeWizardBasePage)
\r
28 CMergeWizardOptions::CMergeWizardOptions()
\r
29 : CMergeWizardBasePage(CMergeWizardOptions::IDD)
\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
36 CMergeWizardOptions::~CMergeWizardOptions()
\r
40 void CMergeWizardOptions::DoDataExchange(CDataExchange* pDX)
\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
51 BEGIN_MESSAGE_MAP(CMergeWizardOptions, CMergeWizardBasePage)
\r
52 ON_BN_CLICKED(IDC_DRYRUN, &CMergeWizardOptions::OnBnClickedDryrun)
\r
56 BOOL CMergeWizardOptions::OnInitDialog()
\r
58 CMergeWizardBasePage::OnInitDialog();
\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
67 case svn_depth_unknown:
\r
68 m_depthCombo.SetCurSel(0);
\r
70 case svn_depth_infinity:
\r
71 m_depthCombo.SetCurSel(1);
\r
73 case svn_depth_immediates:
\r
74 m_depthCombo.SetCurSel(2);
\r
76 case svn_depth_files:
\r
77 m_depthCombo.SetCurSel(3);
\r
79 case svn_depth_empty:
\r
80 m_depthCombo.SetCurSel(4);
\r
83 m_depthCombo.SetCurSel(0);
\r
87 m_tooltips.Create(this);
\r
88 m_tooltips.AddTool(IDC_RECORDONLY, IDS_MERGEWIZARD_OPTIONS_RECORDONLY_TT);
\r
90 CheckRadioButton(IDC_COMPAREWHITESPACES, IDC_IGNOREALLWHITESPACES, IDC_COMPAREWHITESPACES);
\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
102 LRESULT CMergeWizardOptions::OnWizardBack()
\r
104 return ((CMergeWizard*)GetParent())->GetSecondPage();
\r
107 BOOL CMergeWizardOptions::OnWizardFinish()
\r
109 switch (m_depthCombo.GetCurSel())
\r
112 ((CMergeWizard*)GetParent())->m_depth = svn_depth_unknown;
\r
115 ((CMergeWizard*)GetParent())->m_depth = svn_depth_infinity;
\r
118 ((CMergeWizard*)GetParent())->m_depth = svn_depth_immediates;
\r
121 ((CMergeWizard*)GetParent())->m_depth = svn_depth_files;
\r
124 ((CMergeWizard*)GetParent())->m_depth = svn_depth_empty;
\r
127 ((CMergeWizard*)GetParent())->m_depth = svn_depth_empty;
\r
131 return CMergeWizardBasePage::OnWizardFinish();
\r
134 BOOL CMergeWizardOptions::OnSetActive()
\r
136 CPropertySheet* psheet = (CPropertySheet*) GetParent();
\r
137 psheet->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);
\r
139 GetDlgItem(IDC_RECORDONLY)->EnableWindow(((CMergeWizard*)GetParent())->nRevRangeMerge != MERGEWIZARD_REINTEGRATE);
\r
140 return CMergeWizardBasePage::OnSetActive();
\r
143 void CMergeWizardOptions::OnBnClickedDryrun()
\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
157 switch (pWizard->nRevRangeMerge)
\r
159 case MERGEWIZARD_REVRANGE:
\r
161 if (pWizard->revRangeArray.GetCount())
\r
163 SVNRevRangeArray tempRevArray = pWizard->revRangeArray;
\r
164 tempRevArray.AdjustForMerge(!!pWizard->bReverseMerge);
\r
165 progDlg.SetRevisionRanges(tempRevArray);
\r
169 SVNRevRangeArray tempRevArray;
\r
170 tempRevArray.AddRevRange(1, SVNRev::REV_HEAD);
\r
171 progDlg.SetRevisionRanges(tempRevArray);
\r
175 case MERGEWIZARD_TREE:
\r
177 progDlg.SetRevision(pWizard->startRev);
\r
178 progDlg.SetRevisionEnd(pWizard->endRev);
\r
179 if (pWizard->URL1.Compare(pWizard->URL2) == 0)
\r
181 SVNRevRangeArray tempRevArray;
\r
182 tempRevArray.AdjustForMerge(!!pWizard->bReverseMerge);
\r
183 tempRevArray.AddRevRange(pWizard->startRev, pWizard->endRev);
\r
184 progDlg.SetRevisionRanges(tempRevArray);
\r
188 case MERGEWIZARD_REINTEGRATE:
\r
190 progDlg.SetCommand(CSVNProgressDlg::SVNProgress_MergeReintegrate);
\r
195 progDlg.SetDepth(pWizard->m_depth);
\r
196 progDlg.SetDiffOptions(SVN::GetOptionsString(pWizard->m_bIgnoreEOL, pWizard->m_IgnoreSpaces));
\r
200 BOOL CMergeWizardOptions::PreTranslateMessage(MSG* pMsg)
\r
202 m_tooltips.RelayEvent(pMsg);
\r
203 return CMergeWizardBasePage::PreTranslateMessage(pMsg);
\r