OSDN Git Service

Fixed issue #155: Fix SVN Rebase sets upstream as remotes/trunk
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / MergeWizardReintegrate.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 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 "MergeWizardReintegrate.h"\r
23 \r
24 #include "Balloon.h"\r
25 #include "AppUtils.h"\r
26 #include "PathUtils.h"\r
27 \r
28 \r
29 IMPLEMENT_DYNAMIC(CMergeWizardReintegrate, CMergeWizardBasePage)\r
30 \r
31 CMergeWizardReintegrate::CMergeWizardReintegrate()\r
32         : CMergeWizardBasePage(CMergeWizardReintegrate::IDD)\r
33         , m_URL(_T(""))\r
34         , m_pLogDlg(NULL)\r
35         , m_pLogDlg2(NULL)\r
36 {\r
37         m_psp.dwFlags |= PSP_DEFAULT|PSP_USEHEADERTITLE|PSP_USEHEADERSUBTITLE;\r
38         m_psp.pszHeaderTitle = MAKEINTRESOURCE(IDS_MERGEWIZARD_TREETITLE);\r
39         m_psp.pszHeaderSubTitle = MAKEINTRESOURCE(IDS_MERGEWIZARD_TREESUBTITLE);\r
40 }\r
41 \r
42 CMergeWizardReintegrate::~CMergeWizardReintegrate()\r
43 {\r
44         if (m_pLogDlg)\r
45         {\r
46                 m_pLogDlg->DestroyWindow();\r
47                 delete m_pLogDlg;\r
48         }\r
49         if (m_pLogDlg2)\r
50         {\r
51                 m_pLogDlg2->DestroyWindow();\r
52                 delete m_pLogDlg2;\r
53         }\r
54 }\r
55 \r
56 void CMergeWizardReintegrate::DoDataExchange(CDataExchange* pDX)\r
57 {\r
58         CMergeWizardBasePage::DoDataExchange(pDX);\r
59         DDX_Control(pDX, IDC_URLCOMBO, m_URLCombo);\r
60 }\r
61 \r
62 \r
63 BEGIN_MESSAGE_MAP(CMergeWizardReintegrate, CMergeWizardBasePage)\r
64         ON_BN_CLICKED(IDC_SHOWMERGELOG, &CMergeWizardReintegrate::OnBnClickedShowmergelog)\r
65         ON_BN_CLICKED(IDC_BROWSE, &CMergeWizardReintegrate::OnBnClickedBrowse)\r
66         ON_BN_CLICKED(IDC_SHOWLOGWC, &CMergeWizardReintegrate::OnBnClickedShowlogwc)\r
67 END_MESSAGE_MAP()\r
68 \r
69 \r
70 BOOL CMergeWizardReintegrate::OnInitDialog()\r
71 {\r
72         CMergeWizardBasePage::OnInitDialog();\r
73 \r
74         CString sUUID = ((CMergeWizard*)GetParent())->sUUID;\r
75         m_URLCombo.SetURLHistory(TRUE);\r
76         m_URLCombo.LoadHistory(_T("Software\\TortoiseGit\\History\\repoURLS\\")+sUUID, _T("url"));\r
77         if (!(DWORD)CRegDWORD(_T("Software\\TortoiseGit\\MergeWCURL"), FALSE))\r
78                 m_URLCombo.SetCurSel(0);\r
79 \r
80         SetDlgItemText(IDC_WCEDIT, ((CMergeWizard*)GetParent())->wcPath.GetWinPath());\r
81 \r
82         return TRUE;\r
83 }\r
84 \r
85 BOOL CMergeWizardReintegrate::CheckData(bool bShowErrors /* = true */)\r
86 {\r
87         UNREFERENCED_PARAMETER(bShowErrors);\r
88 \r
89         if (!UpdateData(TRUE))\r
90                 return FALSE;\r
91 \r
92 \r
93         m_URLCombo.SaveHistory();\r
94         m_URL = m_URLCombo.GetString();\r
95 \r
96         ((CMergeWizard*)GetParent())->URL1 = m_URL;\r
97 \r
98         UpdateData(FALSE);\r
99         return TRUE;\r
100 }\r
101 \r
102 LRESULT CMergeWizardReintegrate::OnWizardNext()\r
103 {\r
104         if (!CheckData(true))\r
105                 return -1;\r
106 \r
107         return IDD_MERGEWIZARD_OPTIONS;\r
108 }\r
109 \r
110 LRESULT CMergeWizardReintegrate::OnWizardBack()\r
111 {\r
112         return IDD_MERGEWIZARD_START;\r
113 }\r
114 \r
115 BOOL CMergeWizardReintegrate::OnSetActive()\r
116 {\r
117         CPropertySheet* psheet = (CPropertySheet*) GetParent();   \r
118         psheet->SetWizardButtons(PSWIZB_NEXT|PSWIZB_BACK);\r
119         SetButtonTexts();\r
120 \r
121         return CMergeWizardBasePage::OnSetActive();\r
122 }\r
123 \r
124 \r
125 void CMergeWizardReintegrate::OnBnClickedShowmergelog()\r
126 {\r
127         if (::IsWindow(m_pLogDlg->GetSafeHwnd())&&(m_pLogDlg->IsWindowVisible()))\r
128                 return;\r
129         CString url;\r
130         m_URLCombo.GetWindowText(url);\r
131 \r
132         if (!url.IsEmpty())\r
133         {\r
134                 CTSVNPath wcPath = ((CMergeWizard*)GetParent())->wcPath;\r
135                 if (m_pLogDlg)\r
136                         m_pLogDlg->DestroyWindow();\r
137                 delete m_pLogDlg;\r
138                 m_pLogDlg = new CLogDlg();\r
139                 CRegDWORD reg = CRegDWORD(_T("Software\\TortoiseGit\\NumberOfLogs"), 100);\r
140                 int limit = (int)(LONG)reg;\r
141                 m_pLogDlg->SetDialogTitle(CString(MAKEINTRESOURCE(IDS_MERGE_SELECTRANGE)));\r
142 \r
143                 m_pLogDlg->SetSelect(true);\r
144                 m_pLogDlg->m_pNotifyWindow = this;\r
145                 m_pLogDlg->SetParams(CTSVNPath(url), SVNRev::REV_HEAD, SVNRev::REV_HEAD, 1, limit, TRUE, FALSE);\r
146                 m_pLogDlg->SetProjectPropertiesPath(wcPath);\r
147                 m_pLogDlg->SetMergePath(wcPath);\r
148                 m_pLogDlg->Create(IDD_LOGMESSAGE, this);\r
149                 m_pLogDlg->ShowWindow(SW_SHOW);\r
150         }\r
151 }\r
152 \r
153 void CMergeWizardReintegrate::OnBnClickedBrowse()\r
154 {\r
155         SVNRev rev(SVNRev::REV_HEAD);\r
156         CAppUtils::BrowseRepository(m_URLCombo, this, rev);\r
157 }\r
158 \r
159 void CMergeWizardReintegrate::OnBnClickedShowlogwc()\r
160 {\r
161         CTSVNPath wcPath = ((CMergeWizard*)GetParent())->wcPath;\r
162         if (m_pLogDlg2)\r
163                 m_pLogDlg2->DestroyWindow();\r
164         delete m_pLogDlg2;\r
165         m_pLogDlg2 = new CLogDlg();\r
166         CRegDWORD reg = CRegDWORD(_T("Software\\TortoiseGit\\NumberOfLogs"), 100);\r
167         int limit = (int)(LONG)reg;\r
168         m_pLogDlg2->SetDialogTitle(CString(MAKEINTRESOURCE(IDS_MERGE_SELECTRANGE)));\r
169 \r
170         m_pLogDlg2->m_pNotifyWindow = NULL;\r
171         m_pLogDlg2->SetParams(wcPath, SVNRev::REV_HEAD, SVNRev::REV_HEAD, 1, limit, TRUE, FALSE);\r
172         m_pLogDlg2->SetProjectPropertiesPath(wcPath);\r
173         m_pLogDlg2->SetMergePath(wcPath);\r
174         m_pLogDlg2->Create(IDD_LOGMESSAGE, this);\r
175         m_pLogDlg2->ShowWindow(SW_SHOW);\r
176 }\r