1 // TortoiseSVN - a Windows shell extension for easy version control
\r
3 // Copyright (C) 2003-2008 - TortoiseSVN
\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
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
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
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
30 IMPLEMENT_DYNAMIC(CImportDlg, CResizableStandAloneDialog)
\r
31 CImportDlg::CImportDlg(CWnd* pParent /*=NULL*/)
\r
32 : CResizableStandAloneDialog(CImportDlg::IDD, pParent)
\r
33 , m_bIncludeIgnored(FALSE)
\r
37 CImportDlg::~CImportDlg()
\r
41 void CImportDlg::DoDataExchange(CDataExchange* pDX)
\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
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
57 BOOL CImportDlg::OnInitDialog()
\r
59 CResizableStandAloneDialog::OnInitDialog();
\r
61 m_History.SetMaxHistoryItems((LONG)CRegDWORD(_T("Software\\TortoiseGit\\MaxHistoryItems"), 25));
\r
63 if (m_url.IsEmpty())
\r
65 m_URLCombo.SetURLHistory(TRUE);
\r
66 m_URLCombo.LoadHistory(_T("Software\\TortoiseGit\\History\\repoURLS"), _T("url"));
\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
75 m_URLCombo.SetCurSel(0);
\r
77 m_tooltips.Create(this);
\r
78 m_tooltips.AddTool(IDC_HISTORY, IDS_COMMITDLG_HISTORY_TT);
\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
85 AdjustControlSize(IDC_IMPORTIGNORED);
\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
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
105 void CImportDlg::OnOK()
\r
107 if (m_URLCombo.IsWindowEnabled())
\r
109 m_URLCombo.SaveHistory();
\r
110 m_url = m_URLCombo.GetString();
\r
115 m_sMessage = m_cMessage.GetText();
\r
116 m_History.AddEntry(m_sMessage);
\r
119 CResizableStandAloneDialog::OnOK();
\r
122 void CImportDlg::OnBnClickedBrowse()
\r
124 m_tooltips.Pop(); // hide the tooltips
\r
125 SVNRev rev(SVNRev::REV_HEAD);
\r
126 CAppUtils::BrowseRepository(m_URLCombo, this, rev);
\r
129 BOOL CImportDlg::PreTranslateMessage(MSG* pMsg)
\r
131 m_tooltips.RelayEvent(pMsg);
\r
132 if (pMsg->message == WM_KEYDOWN)
\r
134 switch (pMsg->wParam)
\r
138 if (GetAsyncKeyState(VK_CONTROL)&0x8000)
\r
140 if ( GetDlgItem(IDOK)->IsWindowEnabled() )
\r
142 PostMessage(WM_COMMAND, IDOK);
\r
149 return CResizableStandAloneDialog::PreTranslateMessage(pMsg);
\r
152 void CImportDlg::OnBnClickedHelp()
\r
157 void CImportDlg::OnEnChangeLogmessage()
\r
159 CString sTemp = m_cMessage.GetText();
\r
160 DialogEnableWindow(IDOK, sTemp.GetLength() >= m_ProjectProperties.nMinLogSize);
\r
163 void CImportDlg::OnCancel()
\r
166 if (m_ProjectProperties.sLogTemplate.Compare(m_cMessage.GetText()) != 0)
\r
167 m_History.AddEntry(m_cMessage.GetText());
\r
169 CResizableStandAloneDialog::OnCancel();
\r
172 void CImportDlg::OnBnClickedHistory()
\r
174 m_tooltips.Pop(); // hide the tooltips
\r
176 CHistoryDlg historyDlg;
\r
177 historyDlg.SetHistory(m_History);
\r
178 if (historyDlg.DoModal()==IDOK)
\r
180 if (historyDlg.GetSelectedText().Compare(m_cMessage.GetText().Left(historyDlg.GetSelectedText().GetLength()))!=0)
\r
182 if (m_ProjectProperties.sLogTemplate.Compare(m_cMessage.GetText())!=0)
\r
183 m_cMessage.InsertText(historyDlg.GetSelectedText(), !m_cMessage.GetText().IsEmpty());
\r
185 m_cMessage.SetText(historyDlg.GetSelectedText());
\r
187 DialogEnableWindow(IDOK, m_ProjectProperties.nMinLogSize <= m_cMessage.GetText().GetLength());
\r