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.
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
)
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);
70 case svn_depth_infinity
:
71 m_depthCombo
.SetCurSel(1);
73 case svn_depth_immediates
:
74 m_depthCombo
.SetCurSel(2);
77 m_depthCombo
.SetCurSel(3);
80 m_depthCombo
.SetCurSel(4);
83 m_depthCombo
.SetCurSel(0);
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
);
102 LRESULT
CMergeWizardOptions::OnWizardBack()
104 return ((CMergeWizard
*)GetParent())->GetSecondPage();
107 BOOL
CMergeWizardOptions::OnWizardFinish()
109 switch (m_depthCombo
.GetCurSel())
112 ((CMergeWizard
*)GetParent())->m_depth
= svn_depth_unknown
;
115 ((CMergeWizard
*)GetParent())->m_depth
= svn_depth_infinity
;
118 ((CMergeWizard
*)GetParent())->m_depth
= svn_depth_immediates
;
121 ((CMergeWizard
*)GetParent())->m_depth
= svn_depth_files
;
124 ((CMergeWizard
*)GetParent())->m_depth
= svn_depth_empty
;
127 ((CMergeWizard
*)GetParent())->m_depth
= svn_depth_empty
;
131 return CMergeWizardBasePage::OnWizardFinish();
134 BOOL
CMergeWizardOptions::OnSetActive()
136 CPropertySheet
* psheet
= (CPropertySheet
*) GetParent();
137 psheet
->SetWizardButtons(PSWIZB_BACK
|PSWIZB_FINISH
);
139 GetDlgItem(IDC_RECORDONLY
)->EnableWindow(((CMergeWizard
*)GetParent())->nRevRangeMerge
!= MERGEWIZARD_REINTEGRATE
);
140 return CMergeWizardBasePage::OnSetActive();
143 void CMergeWizardOptions::OnBnClickedDryrun()
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
);
169 SVNRevRangeArray tempRevArray
;
170 tempRevArray
.AddRevRange(1, SVNRev::REV_HEAD
);
171 progDlg
.SetRevisionRanges(tempRevArray
);
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
);
188 case MERGEWIZARD_REINTEGRATE
:
190 progDlg
.SetCommand(CSVNProgressDlg::SVNProgress_MergeReintegrate
);
195 progDlg
.SetDepth(pWizard
->m_depth
);
196 progDlg
.SetDiffOptions(SVN::GetOptionsString(pWizard
->m_bIgnoreEOL
, pWizard
->m_IgnoreSpaces
));
200 BOOL
CMergeWizardOptions::PreTranslateMessage(MSG
* pMsg
)
202 m_tooltips
.RelayEvent(pMsg
);
203 return CMergeWizardBasePage::PreTranslateMessage(pMsg
);