OSDN Git Service

Installer: Textual change
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / UrlDiffDlg.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2007-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 "UrlDiffDlg.h"\r
22 #include "RepositoryBrowser.h"\r
23 #include "BrowseFolder.h"\r
24 #include "TSVNPath.h"\r
25 #include "AppUtils.h"\r
26 \r
27 IMPLEMENT_DYNAMIC(CUrlDiffDlg, CResizableStandAloneDialog)\r
28 CUrlDiffDlg::CUrlDiffDlg(CWnd* pParent /*=NULL*/)\r
29         : CResizableStandAloneDialog(CUrlDiffDlg::IDD, pParent)\r
30         , m_URL(_T(""))\r
31         , Revision(_T("HEAD"))\r
32         , m_pLogDlg(NULL)\r
33 {\r
34 }\r
35 \r
36 CUrlDiffDlg::~CUrlDiffDlg()\r
37 {\r
38         if (m_pLogDlg)\r
39                 delete m_pLogDlg;\r
40 }\r
41 \r
42 void CUrlDiffDlg::DoDataExchange(CDataExchange* pDX)\r
43 {\r
44         CResizableStandAloneDialog::DoDataExchange(pDX);\r
45         DDX_Control(pDX, IDC_URLCOMBO, m_URLCombo);\r
46         DDX_Text(pDX, IDC_REVISION_NUM, m_rev);\r
47 }\r
48 \r
49 \r
50 BEGIN_MESSAGE_MAP(CUrlDiffDlg, CResizableStandAloneDialog)\r
51         ON_BN_CLICKED(IDC_BROWSE, OnBnClickedBrowse)\r
52         ON_BN_CLICKED(IDHELP, OnBnClickedHelp)\r
53         ON_EN_CHANGE(IDC_REVISION_NUM, &CUrlDiffDlg::OnEnChangeRevisionNum)\r
54         ON_BN_CLICKED(IDC_LOG, &CUrlDiffDlg::OnBnClickedLog)\r
55         ON_REGISTERED_MESSAGE(WM_REVSELECTED, &CUrlDiffDlg::OnRevSelected)\r
56 END_MESSAGE_MAP()\r
57 \r
58 \r
59 BOOL CUrlDiffDlg::OnInitDialog()\r
60 {\r
61         CResizableStandAloneDialog::OnInitDialog();\r
62 \r
63         CTSVNPath svnPath(m_path);\r
64         m_bFolder = svnPath.IsDirectory();\r
65         SVN svn;\r
66         CString url = svn.GetURLFromPath(svnPath);\r
67         CString sUUID = svn.GetUUIDFromPath(svnPath);\r
68         m_URLCombo.SetURLHistory(TRUE);\r
69         m_URLCombo.LoadHistory(_T("Software\\TortoiseGit\\History\\repoURLS\\")+sUUID, _T("url"));\r
70         m_URLCombo.SetCurSel(0);\r
71 \r
72         if (!url.IsEmpty())\r
73         {\r
74                 m_path = url;\r
75                 m_URLCombo.AddString(CTSVNPath(url).GetUIPathString(), 0);\r
76                 m_URLCombo.SelectString(-1, CTSVNPath(url).GetUIPathString());\r
77                 m_URL = m_path;\r
78         }\r
79 \r
80         // set head revision as default revision\r
81         SetRevision(SVNRev::REV_HEAD);\r
82 \r
83         AddAnchor(IDC_URLLABEL, TOP_LEFT, TOP_RIGHT);\r
84         AddAnchor(IDC_URLCOMBO, TOP_LEFT, TOP_RIGHT);\r
85         AddAnchor(IDC_BROWSE, TOP_RIGHT);\r
86         AddAnchor(IDC_REVGROUP, TOP_LEFT, BOTTOM_RIGHT);\r
87         AddAnchor(IDC_REVISION_HEAD, TOP_LEFT);\r
88         AddAnchor(IDC_REVISION_N, TOP_LEFT);\r
89         AddAnchor(IDC_REVISION_NUM, TOP_LEFT);\r
90         AddAnchor(IDC_LOG, TOP_LEFT);\r
91         AddAnchor(IDOK, BOTTOM_RIGHT);\r
92         AddAnchor(IDCANCEL, BOTTOM_RIGHT);\r
93         AddAnchor(IDHELP, BOTTOM_RIGHT);\r
94 \r
95         if ((m_pParentWnd==NULL)&&(hWndExplorer))\r
96                 CenterWindow(CWnd::FromHandle(hWndExplorer));\r
97         EnableSaveRestore(_T("SwitchDlg"));\r
98         return TRUE;\r
99 }\r
100 \r
101 void CUrlDiffDlg::OnBnClickedBrowse()\r
102 {\r
103         UpdateData();\r
104         SVNRev rev;\r
105         if (GetCheckedRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N) == IDC_REVISION_HEAD)\r
106         {\r
107                 rev = SVNRev::REV_HEAD;\r
108         }\r
109         else\r
110                 rev = SVNRev(m_rev);\r
111         if (!rev.IsValid())\r
112                 rev = SVNRev::REV_HEAD;\r
113         CAppUtils::BrowseRepository(m_URLCombo, this, rev);\r
114         SetRevision(rev);\r
115 }\r
116 \r
117 void CUrlDiffDlg::OnOK()\r
118 {\r
119         if (!UpdateData(TRUE))\r
120                 return; // don't dismiss dialog (error message already shown by MFC framework)\r
121 \r
122         // if head revision, set revision as -1\r
123         if (GetCheckedRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N) == IDC_REVISION_HEAD)\r
124         {\r
125                 m_rev = _T("HEAD");\r
126         }\r
127         Revision = SVNRev(m_rev);\r
128         if (!Revision.IsValid())\r
129         {\r
130                 ShowBalloon(IDC_REVISION_NUM, IDS_ERR_INVALIDREV);\r
131                 return;\r
132         }\r
133 \r
134         m_URLCombo.SaveHistory();\r
135         m_URL = m_URLCombo.GetString();\r
136 \r
137         UpdateData(FALSE);\r
138         CResizableStandAloneDialog::OnOK();\r
139 }\r
140 \r
141 void CUrlDiffDlg::OnBnClickedHelp()\r
142 {\r
143         OnHelp();\r
144 }\r
145 \r
146 void CUrlDiffDlg::OnEnChangeRevisionNum()\r
147 {\r
148         UpdateData();\r
149         if (m_rev.IsEmpty())\r
150                 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_HEAD);\r
151         else\r
152                 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_N);\r
153 }\r
154 \r
155 void CUrlDiffDlg::SetRevision(const SVNRev& rev)\r
156 {\r
157         if (rev.IsHead())\r
158                 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_HEAD);\r
159         else\r
160         {\r
161                 CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_N);\r
162                 m_rev = rev.ToString();\r
163                 UpdateData(FALSE);\r
164         }\r
165 }\r
166 \r
167 void CUrlDiffDlg::OnBnClickedLog()\r
168 {\r
169         UpdateData(TRUE);\r
170         if (::IsWindow(m_pLogDlg->GetSafeHwnd())&&(m_pLogDlg->IsWindowVisible()))\r
171                 return;\r
172         if (!m_path.IsEmpty())\r
173         {\r
174                 delete m_pLogDlg;\r
175                 m_pLogDlg = new CLogDlg();\r
176                 CRegDWORD reg = CRegDWORD(_T("Software\\TortoiseGit\\NumberOfLogs"), 100);\r
177                 int limit = (int)(LONG)reg;\r
178                 m_pLogDlg->SetSelect(true);\r
179                 m_pLogDlg->m_pNotifyWindow = this;\r
180                 m_pLogDlg->m_wParam = 0;\r
181                 m_pLogDlg->SetParams(CTSVNPath(m_path), SVNRev::REV_HEAD, SVNRev::REV_HEAD, 1, limit, TRUE);\r
182                 m_pLogDlg->ContinuousSelection(true);\r
183                 m_pLogDlg->Create(IDD_LOGMESSAGE, this);\r
184                 m_pLogDlg->ShowWindow(SW_SHOW);\r
185         }\r
186         AfxGetApp()->DoWaitCursor(-1);\r
187 }\r
188 \r
189 LPARAM CUrlDiffDlg::OnRevSelected(WPARAM /*wParam*/, LPARAM lParam)\r
190 {\r
191         CString temp;\r
192         temp.Format(_T("%ld"), lParam);\r
193         SetDlgItemText(IDC_REVISION_NUM, temp);\r
194         CheckRadioButton(IDC_REVISION_HEAD, IDC_REVISION_N, IDC_REVISION_N);\r
195         return 0;\r
196 }\r