OSDN Git Service

FormatPatch Finished
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / UpdateDlg.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2007 - 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 "UpdateDlg.h"\r
22 #include "registry.h"\r
23 \r
24 \r
25 IMPLEMENT_DYNAMIC(CUpdateDlg, CStandAloneDialog)\r
26 CUpdateDlg::CUpdateDlg(CWnd* pParent /*=NULL*/)\r
27         : CStandAloneDialog(CUpdateDlg::IDD, pParent)\r
28         , Revision(_T("HEAD"))\r
29         , m_bNoExternals(FALSE)\r
30         , m_pLogDlg(NULL)\r
31 {\r
32 }\r
33 \r
34 CUpdateDlg::~CUpdateDlg()\r
35 {\r
36         if (m_pLogDlg)\r
37                 delete m_pLogDlg;\r
38 }\r
39 \r
40 void CUpdateDlg::DoDataExchange(CDataExchange* pDX)\r
41 {\r
42         CStandAloneDialog::DoDataExchange(pDX);\r
43         DDX_Text(pDX, IDC_REVNUM, m_sRevision);\r
44         DDX_Check(pDX, IDC_NOEXTERNALS, m_bNoExternals);\r
45         DDX_Control(pDX, IDC_DEPTH, m_depthCombo);\r
46 }\r
47 \r
48 \r
49 BEGIN_MESSAGE_MAP(CUpdateDlg, CStandAloneDialog)\r
50         ON_BN_CLICKED(IDC_LOG, OnBnClickedShowLog)\r
51         ON_REGISTERED_MESSAGE(WM_REVSELECTED, OnRevSelected)\r
52         ON_EN_CHANGE(IDC_REVNUM, &CUpdateDlg::OnEnChangeRevnum)\r
53 END_MESSAGE_MAP()\r
54 \r
55 BOOL CUpdateDlg::OnInitDialog()\r
56 {\r
57         CStandAloneDialog::OnInitDialog();\r
58 \r
59         AdjustControlSize(IDC_NEWEST);\r
60         AdjustControlSize(IDC_REVISION_N);\r
61         AdjustControlSize(IDC_NOEXTERNALS);\r
62 \r
63         m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_WORKING)));\r
64         m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_INFINITE)));\r
65         m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_IMMEDIATE)));\r
66         m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_FILES)));\r
67         m_depthCombo.AddString(CString(MAKEINTRESOURCE(IDS_SVN_DEPTH_EMPTY)));\r
68         m_depthCombo.SetCurSel(0);\r
69 \r
70         CheckRadioButton(IDC_NEWEST, IDC_REVISION_N, IDC_NEWEST);\r
71         GetDlgItem(IDC_REVNUM)->SetFocus();\r
72         if ((m_pParentWnd==NULL)&&(hWndExplorer))\r
73                 CenterWindow(CWnd::FromHandle(hWndExplorer));\r
74         return FALSE;  \r
75 }\r
76 \r
77 void CUpdateDlg::OnOK()\r
78 {\r
79         if (!UpdateData(TRUE))\r
80                 return; // don't dismiss dialog (error message already shown by MFC framework)\r
81 \r
82         Revision = SVNRev(m_sRevision);\r
83         if (GetCheckedRadioButton(IDC_NEWEST, IDC_REVISION_N) == IDC_NEWEST)\r
84         {\r
85                 Revision = SVNRev(_T("HEAD"));\r
86         }\r
87         if (!Revision.IsValid())\r
88         {\r
89                 ShowBalloon(IDC_REVNUM, IDS_ERR_INVALIDREV);\r
90                 return;\r
91         }\r
92         switch (m_depthCombo.GetCurSel())\r
93         {\r
94         case 0:\r
95                 m_depth = svn_depth_unknown;\r
96                 break;\r
97         case 1:\r
98                 m_depth = svn_depth_infinity;\r
99                 break;\r
100         case 2:\r
101                 m_depth = svn_depth_immediates;\r
102                 break;\r
103         case 3:\r
104                 m_depth = svn_depth_files;\r
105                 break;\r
106         case 4:\r
107                 m_depth = svn_depth_empty;\r
108                 break;\r
109         default:\r
110                 m_depth = svn_depth_empty;\r
111                 break;\r
112         }\r
113 \r
114         UpdateData(FALSE);\r
115 \r
116         CStandAloneDialog::OnOK();\r
117 }\r
118 \r
119 void CUpdateDlg::OnBnClickedShowLog()\r
120 {\r
121         UpdateData(TRUE);\r
122         if (::IsWindow(m_pLogDlg->GetSafeHwnd())&&(m_pLogDlg->IsWindowVisible()))\r
123                 return;\r
124         if (!m_wcPath.IsEmpty())\r
125         {\r
126                 delete m_pLogDlg;\r
127                 m_pLogDlg = new CLogDlg();\r
128                 CRegDWORD reg = CRegDWORD(_T("Software\\TortoiseSVN\\NumberOfLogs"), 100);\r
129                 int limit = (int)(LONG)reg;\r
130                 m_pLogDlg->SetSelect(true);\r
131                 m_pLogDlg->m_pNotifyWindow = this;\r
132                 m_pLogDlg->m_wParam = 0;\r
133                 m_pLogDlg->SetParams(m_wcPath, SVNRev::REV_HEAD, SVNRev::REV_HEAD, 1, limit, TRUE);\r
134                 m_pLogDlg->ContinuousSelection(true);\r
135                 m_pLogDlg->Create(IDD_LOGMESSAGE, this);\r
136                 m_pLogDlg->ShowWindow(SW_SHOW);\r
137         }\r
138         AfxGetApp()->DoWaitCursor(-1);\r
139 }\r
140 \r
141 LPARAM CUpdateDlg::OnRevSelected(WPARAM /*wParam*/, LPARAM lParam)\r
142 {\r
143         CString temp;\r
144         temp.Format(_T("%ld"), lParam);\r
145         SetDlgItemText(IDC_REVNUM, temp);\r
146         CheckRadioButton(IDC_NEWEST, IDC_REVISION_N, IDC_REVISION_N);\r
147         return 0;\r
148 }\r
149 \r
150 void CUpdateDlg::OnEnChangeRevnum()\r
151 {\r
152         UpdateData();\r
153         if (m_sRevision.IsEmpty())\r
154                 CheckRadioButton(IDC_NEWEST, IDC_REVISION_N, IDC_NEWEST);\r
155         else\r
156                 CheckRadioButton(IDC_NEWEST, IDC_REVISION_N, IDC_REVISION_N);\r
157 }\r