Clean up warning
[TortoiseGit.git] / src / TortoiseProc / SwitchDlg.cpp
blob7264b0d5deff2954fbeb17944deb89fdbce959c0
1 // TortoiseSVN - a Windows shell extension for easy version control
3 // Copyright (C) 2003-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 "SwitchDlg.h"
22 //#include "RepositoryBrowser.h"
23 #include "BrowseFolder.h"
24 #include "TGitPath.h"
25 #include "AppUtils.h"
27 IMPLEMENT_DYNAMIC(CSwitchDlg, CResizableStandAloneDialog)
28 CSwitchDlg::CSwitchDlg(CWnd* pParent /*=NULL*/)
29 : CResizableStandAloneDialog(CSwitchDlg::IDD, pParent)
30 , m_URL(_T(""))
31 // , Revision(_T("HEAD"))
32 , m_pLogDlg(NULL)
36 CSwitchDlg::~CSwitchDlg()
38 if (m_pLogDlg)
39 delete m_pLogDlg;
42 void CSwitchDlg::DoDataExchange(CDataExchange* pDX)
44 CResizableStandAloneDialog::DoDataExchange(pDX);
45 DDX_Control(pDX, IDC_URLCOMBO, m_URLCombo);
46 DDX_Text(pDX, IDC_REVISION_NUM, m_rev);
50 BEGIN_MESSAGE_MAP(CSwitchDlg, CResizableStandAloneDialog)
51 ON_BN_CLICKED(IDC_BROWSE, OnBnClickedBrowse)
52 ON_BN_CLICKED(IDHELP, OnBnClickedHelp)
53 ON_EN_CHANGE(IDC_REVISION_NUM, &CSwitchDlg::OnEnChangeRevisionNum)
54 ON_BN_CLICKED(IDC_LOG, &CSwitchDlg::OnBnClickedLog)
55 ON_REGISTERED_MESSAGE(WM_REVSELECTED, &CSwitchDlg::OnRevSelected)
56 ON_WM_SIZING()
57 END_MESSAGE_MAP()
59 void CSwitchDlg::SetDialogTitle(const CString& sTitle)
61 m_sTitle = sTitle;
64 void CSwitchDlg::SetUrlLabel(const CString& sLabel)
66 m_sLabel = sLabel;
69 BOOL CSwitchDlg::OnInitDialog()
71 CResizableStandAloneDialog::OnInitDialog();
73 CTGitPath GitPath(m_path);
74 SetDlgItemText(IDC_SWITCHPATH, m_path);
75 m_bFolder = GitPath.IsDirectory();
76 //Git Git;
77 //CString url = Git.GetURLFromPath(GitPath);
78 //CString sUUID = Git.GetUUIDFromPath(GitPath);
79 //m_URLCombo.SetURLHistory(TRUE);
80 //m_URLCombo.LoadHistory(_T("Software\\TortoiseGit\\History\\repoURLS\\")+sUUID, _T("url"));
81 //m_URLCombo.SetCurSel(0);
83 // if (!url.IsEmpty())
84 // {
85 // m_path = url;
86 // m_URLCombo.AddString(CTGitPath(url).GetUIPathString(), 0);
87 // m_URLCombo.SelectString(-1, CTGitPath(url).GetUIPathString());
88 // m_URL = m_path;
89 // }
91 if (m_sTitle.IsEmpty())
92 GetWindowText(m_sTitle);
93 SetWindowText(m_sTitle);
94 if (m_sLabel.IsEmpty())
95 GetDlgItemText(IDC_URLLABEL, m_sLabel);
96 SetDlgItemText(IDC_URLLABEL, m_sLabel);
98 // set head revision as default revision
99 // SetRevision(GitRev::REV_HEAD);
101 RECT rect;
102 GetWindowRect(&rect);
103 m_height = rect.bottom - rect.top;
105 AddAnchor(IDC_SWITCHLABEL, TOP_LEFT, TOP_RIGHT);
106 AddAnchor(IDC_SWITCHPATH, TOP_LEFT, TOP_RIGHT);
107 AddAnchor(IDC_URLLABEL, TOP_LEFT, TOP_RIGHT);
108 AddAnchor(IDC_URLCOMBO, TOP_LEFT, TOP_RIGHT);
109 AddAnchor(IDC_BROWSE, TOP_RIGHT);
110 AddAnchor(IDC_REVGROUP, TOP_LEFT, BOTTOM_RIGHT);
111 AddAnchor(IDC_REVISION_HEAD, TOP_LEFT);
112 AddAnchor(IDC_REVISION_N, TOP_LEFT);
113 AddAnchor(IDC_REVISION_NUM, TOP_LEFT);
114 AddAnchor(IDC_LOG, TOP_LEFT);
115 AddAnchor(IDOK, BOTTOM_RIGHT);
116 AddAnchor(IDCANCEL, BOTTOM_RIGHT);
117 AddAnchor(IDHELP, BOTTOM_RIGHT);
119 if ((m_pParentWnd==NULL)&&(hWndExplorer))
120 CenterWindow(CWnd::FromHandle(hWndExplorer));
121 EnableSaveRestore(_T("SwitchDlg"));
122 return TRUE;
125 void CSwitchDlg::OnBnClickedBrowse()
127 UpdateData();
128 GitRev rev;
129 if (GetCheckedRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N) == IDC_REVISION_HEAD)
131 // rev = GitRev::REV_HEAD;
133 // else
134 // rev = GitRev(m_rev);
135 // if (!rev.IsValid())
136 // rev = GitRev::REV_HEAD;
137 // CAppUtils::BrowseRepository(m_URLCombo, this, rev);
138 // SetRevision(rev);
141 void CSwitchDlg::OnOK()
143 if (!UpdateData(TRUE))
144 return; // don't dismiss dialog (error message already shown by MFC framework)
146 // if head revision, set revision as HEAD
147 if (GetCheckedRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N) == IDC_REVISION_HEAD)
149 m_rev = _T("HEAD");
151 // Revision = GitRev(m_rev);
152 // if (!Revision.IsValid())
153 // {
154 // ShowBalloon(IDC_REVISION_NUM, IDS_ERR_INVALIDREV);
155 // return;
156 // }
158 m_URLCombo.SaveHistory();
159 m_URL = m_URLCombo.GetString();
161 UpdateData(FALSE);
162 CResizableStandAloneDialog::OnOK();
165 void CSwitchDlg::OnBnClickedHelp()
167 OnHelp();
170 void CSwitchDlg::OnEnChangeRevisionNum()
172 UpdateData();
173 if (m_rev.IsEmpty())
174 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_HEAD);
175 else
176 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_N);
179 void CSwitchDlg::SetRevision(const GitRev& /*rev*/)
181 // if (rev.IsHead())
182 // CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_HEAD);
183 // else
184 // {
185 // CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_N);
186 // m_rev = rev.ToString();
187 // UpdateData(FALSE);
188 // }
191 void CSwitchDlg::OnBnClickedLog()
193 UpdateData(TRUE);
194 if (::IsWindow(m_pLogDlg->GetSafeHwnd())&&(m_pLogDlg->IsWindowVisible()))
195 return;
196 m_URL = m_URLCombo.GetString();
197 if (!m_URL.IsEmpty())
199 delete m_pLogDlg;
200 m_pLogDlg = new CLogDlg();
201 // CRegDWORD reg = CRegDWORD(_T("Software\\TortoiseGit\\NumberOfLogs"), 100);
202 // int limit = (int)(LONG)reg;
203 m_pLogDlg->SetSelect(true);
204 m_pLogDlg->m_pNotifyWindow = this;
205 m_pLogDlg->m_wParam = 0;
206 // m_pLogDlg->SetParams(CTGitPath(m_URL), GitRev::REV_HEAD, GitRev::REV_HEAD, 1, limit, TRUE);
207 m_pLogDlg->ContinuousSelection(true);
208 m_pLogDlg->Create(IDD_LOGMESSAGE, this);
209 m_pLogDlg->ShowWindow(SW_SHOW);
211 AfxGetApp()->DoWaitCursor(-1);
214 LPARAM CSwitchDlg::OnRevSelected(WPARAM /*wParam*/, LPARAM lParam)
216 CString temp;
217 temp.Format(_T("%ld"), lParam);
218 SetDlgItemText(IDC_REVISION_NUM, temp);
219 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_N);
220 return 0;
223 void CSwitchDlg::OnSizing(UINT fwSide, LPRECT pRect)
225 // don't allow the dialog to be changed in height
226 switch (fwSide)
228 case WMSZ_BOTTOM:
229 case WMSZ_BOTTOMLEFT:
230 case WMSZ_BOTTOMRIGHT:
231 pRect->bottom = pRect->top + m_height;
232 break;
233 case WMSZ_TOP:
234 case WMSZ_TOPLEFT:
235 case WMSZ_TOPRIGHT:
236 pRect->top = pRect->bottom - m_height;
237 break;
239 CResizableStandAloneDialog::OnSizing(fwSide, pRect);