OSDN Git Service

Enable GDI+
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / ImportDlg.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-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 "ImportDlg.h"\r
22 #include "RepositoryBrowser.h"\r
23 #include "AppUtils.h"\r
24 #include "DirFileEnum.h"\r
25 #include "MessageBox.h"\r
26 #include "BrowseFolder.h"\r
27 #include "Registry.h"\r
28 #include "HistoryDlg.h"\r
29 \r
30 IMPLEMENT_DYNAMIC(CImportDlg, CResizableStandAloneDialog)\r
31 CImportDlg::CImportDlg(CWnd* pParent /*=NULL*/)\r
32         : CResizableStandAloneDialog(CImportDlg::IDD, pParent)\r
33         , m_bIncludeIgnored(FALSE)\r
34 {\r
35 }\r
36 \r
37 CImportDlg::~CImportDlg()\r
38 {\r
39 }\r
40 \r
41 void CImportDlg::DoDataExchange(CDataExchange* pDX)\r
42 {\r
43         CResizableStandAloneDialog::DoDataExchange(pDX);\r
44         DDX_Control(pDX, IDC_URLCOMBO, m_URLCombo);\r
45         DDX_Control(pDX, IDC_BROWSE, m_butBrowse);\r
46         DDX_Control(pDX, IDC_MESSAGE, m_cMessage);\r
47         DDX_Check(pDX, IDC_IMPORTIGNORED, m_bIncludeIgnored);\r
48 }\r
49 \r
50 BEGIN_MESSAGE_MAP(CImportDlg, CResizableStandAloneDialog)\r
51         ON_BN_CLICKED(IDC_BROWSE, OnBnClickedBrowse)\r
52         ON_BN_CLICKED(IDHELP, OnBnClickedHelp)\r
53         ON_EN_CHANGE(IDC_MESSAGE, OnEnChangeLogmessage)\r
54         ON_BN_CLICKED(IDC_HISTORY, OnBnClickedHistory)\r
55 END_MESSAGE_MAP()\r
56 \r
57 BOOL CImportDlg::OnInitDialog()\r
58 {\r
59         CResizableStandAloneDialog::OnInitDialog();\r
60 \r
61         m_History.SetMaxHistoryItems((LONG)CRegDWORD(_T("Software\\TortoiseGit\\MaxHistoryItems"), 25));\r
62 \r
63         if (m_url.IsEmpty())\r
64         {\r
65                 m_URLCombo.SetURLHistory(TRUE);\r
66                 m_URLCombo.LoadHistory(_T("Software\\TortoiseGit\\History\\repoURLS"), _T("url"));\r
67         }\r
68         else\r
69         {\r
70                 m_URLCombo.SetWindowText(m_url);\r
71                 if (GetFocus() == &m_URLCombo)\r
72                         SendMessage(WM_NEXTDLGCTL, 0, FALSE);\r
73                 m_URLCombo.EnableWindow(FALSE);\r
74         }\r
75         m_URLCombo.SetCurSel(0);\r
76 \r
77         m_tooltips.Create(this);\r
78         m_tooltips.AddTool(IDC_HISTORY, IDS_COMMITDLG_HISTORY_TT);\r
79         \r
80         m_History.Load(_T("Software\\TortoiseGit\\History\\commit"), _T("logmsgs"));\r
81         m_ProjectProperties.ReadProps(m_path);\r
82         m_cMessage.Init(m_ProjectProperties);\r
83         m_cMessage.SetFont((CString)CRegString(_T("Software\\TortoiseGit\\LogFontName"), _T("Courier New")), (DWORD)CRegDWORD(_T("Software\\TortoiseGit\\LogFontSize"), 8));\r
84 \r
85         AdjustControlSize(IDC_IMPORTIGNORED);\r
86 \r
87         AddAnchor(IDC_STATIC1, TOP_LEFT, TOP_RIGHT);\r
88         AddAnchor(IDC_STATIC4, TOP_LEFT);\r
89         AddAnchor(IDC_URLCOMBO, TOP_LEFT, TOP_RIGHT);\r
90         AddAnchor(IDC_BROWSE, TOP_RIGHT);\r
91         AddAnchor(IDC_STATIC2, TOP_LEFT, BOTTOM_RIGHT);\r
92         AddAnchor(IDC_MESSAGE, TOP_LEFT, BOTTOM_RIGHT);\r
93         AddAnchor(IDC_HISTORY, TOP_LEFT);\r
94         AddAnchor(IDC_IMPORTIGNORED, BOTTOM_LEFT);\r
95         AddAnchor(IDOK, BOTTOM_RIGHT);\r
96         AddAnchor(IDCANCEL, BOTTOM_RIGHT);\r
97         AddAnchor(IDHELP, BOTTOM_RIGHT);\r
98 \r
99         if (hWndExplorer)\r
100                 CenterWindow(CWnd::FromHandle(hWndExplorer));\r
101         EnableSaveRestore(_T("ImportDlg"));\r
102         return TRUE;  // return TRUE  unless you set the focus to a control\r
103 }\r
104 \r
105 void CImportDlg::OnOK()\r
106 {\r
107         if (m_URLCombo.IsWindowEnabled())\r
108         {\r
109                 m_URLCombo.SaveHistory();\r
110                 m_url = m_URLCombo.GetString();\r
111                 UpdateData();\r
112         }\r
113 \r
114         UpdateData();\r
115         m_sMessage = m_cMessage.GetText();\r
116         m_History.AddEntry(m_sMessage);\r
117         m_History.Save();\r
118 \r
119         CResizableStandAloneDialog::OnOK();\r
120 }\r
121 \r
122 void CImportDlg::OnBnClickedBrowse()\r
123 {\r
124         m_tooltips.Pop();       // hide the tooltips\r
125         SVNRev rev(SVNRev::REV_HEAD);\r
126         CAppUtils::BrowseRepository(m_URLCombo, this, rev);\r
127 }\r
128 \r
129 BOOL CImportDlg::PreTranslateMessage(MSG* pMsg)\r
130 {\r
131         m_tooltips.RelayEvent(pMsg);\r
132         if (pMsg->message == WM_KEYDOWN)\r
133         {\r
134                 switch (pMsg->wParam)\r
135                 {\r
136                 case VK_RETURN:\r
137                         {\r
138                                 if (GetAsyncKeyState(VK_CONTROL)&0x8000)\r
139                                 {\r
140                                         if ( GetDlgItem(IDOK)->IsWindowEnabled() )\r
141                                         {\r
142                                                 PostMessage(WM_COMMAND, IDOK);\r
143                                         }\r
144                                 }\r
145                         }\r
146                         break;\r
147                                 }\r
148                         }\r
149         return CResizableStandAloneDialog::PreTranslateMessage(pMsg);\r
150 }\r
151 \r
152 void CImportDlg::OnBnClickedHelp()\r
153 {\r
154         OnHelp();\r
155 }\r
156 \r
157 void CImportDlg::OnEnChangeLogmessage()\r
158 {\r
159     CString sTemp = m_cMessage.GetText();\r
160         DialogEnableWindow(IDOK, sTemp.GetLength() >= m_ProjectProperties.nMinLogSize);\r
161 }\r
162 \r
163 void CImportDlg::OnCancel()\r
164 {\r
165         UpdateData();\r
166         if (m_ProjectProperties.sLogTemplate.Compare(m_cMessage.GetText()) != 0)\r
167                 m_History.AddEntry(m_cMessage.GetText());\r
168         m_History.Save();\r
169         CResizableStandAloneDialog::OnCancel();\r
170 }\r
171 \r
172 void CImportDlg::OnBnClickedHistory()\r
173 {\r
174         m_tooltips.Pop();       // hide the tooltips\r
175         SVN svn;\r
176         CHistoryDlg historyDlg;\r
177         historyDlg.SetHistory(m_History);\r
178         if (historyDlg.DoModal()==IDOK)\r
179         {\r
180                 if (historyDlg.GetSelectedText().Compare(m_cMessage.GetText().Left(historyDlg.GetSelectedText().GetLength()))!=0)\r
181                 {\r
182                         if (m_ProjectProperties.sLogTemplate.Compare(m_cMessage.GetText())!=0)\r
183                                 m_cMessage.InsertText(historyDlg.GetSelectedText(), !m_cMessage.GetText().IsEmpty());\r
184                         else\r
185                                 m_cMessage.SetText(historyDlg.GetSelectedText());\r
186                 }\r
187                 DialogEnableWindow(IDOK, m_ProjectProperties.nMinLogSize <= m_cMessage.GetText().GetLength());\r
188         }\r
189 \r
190 }\r