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 "InputLogDlg.h"
\r
22 #include "Registry.h"
\r
23 #include "HistoryDlg.h"
\r
24 #include "RegHistory.h"
\r
27 // CInputLogDlg dialog
\r
29 IMPLEMENT_DYNAMIC(CInputLogDlg, CResizableStandAloneDialog)
\r
31 CInputLogDlg::CInputLogDlg(CWnd* pParent /*=NULL*/)
\r
32 : CResizableStandAloneDialog(CInputLogDlg::IDD, pParent)
\r
33 , m_pProjectProperties(NULL)
\r
38 CInputLogDlg::~CInputLogDlg()
\r
42 void CInputLogDlg::DoDataExchange(CDataExchange* pDX)
\r
44 CResizableStandAloneDialog::DoDataExchange(pDX);
\r
45 DDX_Control(pDX, IDC_INPUTTEXT, m_cInput);
\r
49 BEGIN_MESSAGE_MAP(CInputLogDlg, CResizableStandAloneDialog)
\r
50 ON_EN_CHANGE(IDC_INPUTTEXT, OnEnChangeLogmessage)
\r
51 ON_BN_CLICKED(IDC_HISTORY, &CInputLogDlg::OnBnClickedHistory)
\r
55 BOOL CInputLogDlg::OnInitDialog()
\r
57 CResizableStandAloneDialog::OnInitDialog();
\r
60 if (m_pProjectProperties == NULL)
\r
61 TRACE("InputLogDlg: project properties not set\n");
\r
62 if (m_sActionText.IsEmpty())
\r
63 TRACE("InputLogDlg: action text not set\n");
\r
64 if (m_sUUID.IsEmpty())
\r
65 TRACE("InputLogDlg: repository UUID not set\n");
\r
68 if (m_pProjectProperties)
\r
69 m_cInput.Init(*m_pProjectProperties);
\r
73 m_cInput.SetFont((CString)CRegString(_T("Software\\TortoiseSVN\\LogFontName"), _T("Courier New")), (DWORD)CRegDWORD(_T("Software\\TortoiseSVN\\LogFontSize"), 8));
\r
75 if (m_pProjectProperties)
\r
77 if (m_pProjectProperties->nLogWidthMarker)
\r
79 m_cInput.Call(SCI_SETWRAPMODE, SC_WRAP_NONE);
\r
80 m_cInput.Call(SCI_SETEDGEMODE, EDGE_LINE);
\r
81 m_cInput.Call(SCI_SETEDGECOLUMN, m_pProjectProperties->nLogWidthMarker);
\r
85 m_cInput.Call(SCI_SETEDGEMODE, EDGE_NONE);
\r
86 m_cInput.Call(SCI_SETWRAPMODE, SC_WRAP_WORD);
\r
88 m_cInput.SetText(m_pProjectProperties->sLogTemplate);
\r
91 SetDlgItemText(IDC_ACTIONLABEL, m_sActionText);
\r
93 AddAnchor(IDC_ACTIONLABEL, TOP_LEFT, TOP_RIGHT);
\r
94 AddAnchor(IDC_GROUPBOX, TOP_LEFT, BOTTOM_RIGHT);
\r
95 AddAnchor(IDC_HISTORY, TOP_LEFT);
\r
96 AddAnchor(IDC_INPUTTEXT, TOP_LEFT, BOTTOM_RIGHT);
\r
97 AddAnchor(IDCANCEL, BOTTOM_RIGHT);
\r
98 AddAnchor(IDOK, BOTTOM_RIGHT);
\r
99 EnableSaveRestore(_T("InputDlg"));
\r
101 CenterWindow(CWnd::FromHandle(hWndExplorer));
\r
102 GetDlgItem(IDC_INPUTTEXT)->SetFocus();
\r
106 void CInputLogDlg::OnOK()
\r
109 m_sLogMsg = m_cInput.GetText();
\r
112 reg.Format(_T("Software\\TortoiseSVN\\History\\commit%s"), (LPCTSTR)m_sUUID);
\r
114 CRegHistory history;
\r
115 history.Load(reg, _T("logmsgs"));
\r
116 history.AddEntry(m_sLogMsg);
\r
119 CResizableStandAloneDialog::OnOK();
\r
122 BOOL CInputLogDlg::PreTranslateMessage(MSG* pMsg)
\r
124 if (pMsg->message == WM_KEYDOWN)
\r
126 switch (pMsg->wParam)
\r
130 if (GetAsyncKeyState(VK_CONTROL)&0x8000)
\r
132 if ( GetDlgItem(IDOK)->IsWindowEnabled() )
\r
134 PostMessage(WM_COMMAND, IDOK);
\r
142 return CResizableStandAloneDialog::PreTranslateMessage(pMsg);
\r
145 void CInputLogDlg::OnEnChangeLogmessage()
\r
150 void CInputLogDlg::UpdateOKButton()
\r
152 CString sTemp = m_cInput.GetText();
\r
153 if (((m_pProjectProperties==NULL)||(sTemp.GetLength() >= m_pProjectProperties->nMinLogSize)))
\r
155 DialogEnableWindow(IDOK, TRUE);
\r
159 DialogEnableWindow(IDOK, FALSE);
\r
163 void CInputLogDlg::OnBnClickedHistory()
\r
166 reg.Format(_T("Software\\TortoiseSVN\\History\\commit%s"), (LPCTSTR)m_sUUID);
\r
167 CRegHistory history;
\r
168 history.Load(reg, _T("logmsgs"));
\r
169 CHistoryDlg HistoryDlg;
\r
170 HistoryDlg.SetHistory(history);
\r
171 if (HistoryDlg.DoModal()==IDOK)
\r
173 if (HistoryDlg.GetSelectedText().Compare(m_cInput.GetText().Left(HistoryDlg.GetSelectedText().GetLength()))!=0)
\r
175 if ((m_pProjectProperties)&&(m_pProjectProperties->sLogTemplate.Compare(m_cInput.GetText())!=0))
\r
176 m_cInput.InsertText(HistoryDlg.GetSelectedText(), !m_cInput.GetText().IsEmpty());
\r
178 m_cInput.SetText(HistoryDlg.GetSelectedText());
\r
182 GetDlgItem(IDC_INPUTTEXT)->SetFocus();
\r