OSDN Git Service

merge original branch.
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / CommitDlg.h
1 // TortoiseGit - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2008 - TortoiseGit\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 #pragma once\r
20 \r
21 #include "StandAloneDlg.h"\r
22 #include "GitStatusListCtrl.h"\r
23 #include "ProjectProperties.h"\r
24 #include "RegHistory.h"\r
25 #include "Registry.h"\r
26 #include "SciEdit.h"\r
27 #include "SplitterControl.h"\r
28 #include "PathWatcher.h"\r
29 #include "BugTraqAssociations.h"\r
30 #include "Tooltip.h"\r
31 #include "..\IBugTraqProvider\IBugTraqProvider_h.h"\r
32 #include "Git.h"\r
33 #include "HyperLink.h"\r
34 #include "PatchViewDlg.h"\r
35 \r
36 #include <regex>\r
37 using namespace std;\r
38 \r
39 #define ENDDIALOGTIMER 100\r
40 #define REFRESHTIMER   101\r
41 \r
42 \r
43 /**\r
44  * \ingroup TortoiseProc\r
45  * Dialog to enter log messages used in a commit.\r
46  */\r
47 class CCommitDlg : public CResizableStandAloneDialog, public CSciEditContextMenuInterface\r
48 {\r
49         DECLARE_DYNAMIC(CCommitDlg)\r
50 \r
51 public:\r
52         CCommitDlg(CWnd* pParent = NULL);   // standard constructor\r
53         virtual ~CCommitDlg();\r
54 \r
55         // CSciEditContextMenuInterface\r
56         virtual void            InsertMenuItems(CMenu& mPopup, int& nCmd);\r
57         virtual bool            HandleMenuItemClick(int cmd, CSciEdit * pSciEdit);\r
58 \r
59         void ShowViewPatchText(bool b=true)\r
60         {\r
61                 if(b)\r
62                         this->m_ctrlShowPatch.SetWindowText(_T("View Patch>>"));\r
63                 else\r
64                         this->m_ctrlShowPatch.SetWindowText(_T("Hide Patch<<"));\r
65         }\r
66 private:\r
67         static UINT StatusThreadEntry(LPVOID pVoid);\r
68         UINT StatusThread();\r
69         void UpdateOKButton();\r
70         void FillPatchView();\r
71 // Dialog Data\r
72         enum { IDD = IDD_COMMITDLG };\r
73 \r
74 protected:\r
75         virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support\r
76 \r
77         virtual BOOL OnInitDialog();\r
78         virtual void OnOK();\r
79         virtual void OnCancel();\r
80         virtual BOOL PreTranslateMessage(MSG* pMsg);\r
81         virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);\r
82         afx_msg void OnBnClickedSelectall();\r
83         afx_msg void OnBnClickedHelp();\r
84         afx_msg void OnBnClickedShowunversioned();\r
85         afx_msg void OnBnClickedHistory();\r
86         afx_msg void OnBnClickedBugtraqbutton();\r
87         afx_msg void OnEnChangeLogmessage();\r
88         afx_msg void OnStnClickedExternalwarning();\r
89         afx_msg void OnFocusMessage();\r
90         afx_msg LRESULT OnGitStatusListCtrlItemCountChanged(WPARAM, LPARAM);\r
91         afx_msg LRESULT OnGitStatusListCtrlNeedsRefresh(WPARAM, LPARAM);\r
92         afx_msg LRESULT OnGitStatusListCtrlCheckChanged(WPARAM, LPARAM);\r
93         afx_msg LRESULT OnGitStatusListCtrlItemChanged(WPARAM, LPARAM);\r
94         \r
95         afx_msg LRESULT OnAutoListReady(WPARAM, LPARAM);\r
96         afx_msg LRESULT OnFileDropped(WPARAM, LPARAM lParam);\r
97         afx_msg void OnTimer(UINT_PTR nIDEvent);\r
98     afx_msg void OnSize(UINT nType, int cx, int cy);\r
99         void Refresh();\r
100         void GetAutocompletionList();\r
101         void ScanFile(const CString& sFilePath, const CString& sRegex);\r
102         void DoSize(int delta);\r
103         void SetSplitterRange();\r
104         void SaveSplitterPos();\r
105         void ParseRegexFile(const CString& sFile, std::map<CString, CString>& mapRegex);\r
106 \r
107         DECLARE_MESSAGE_MAP()\r
108 \r
109 \r
110 public:\r
111         CTGitPathList           m_pathList;\r
112         CTGitPathList           m_updatedPathList;\r
113         CTGitPathList           m_selectedPathList;\r
114         CTGitPathList           m_checkedPathList;\r
115         BOOL                            m_bRecursive;\r
116         CSciEdit                        m_cLogMessage;\r
117         CString                         m_sLogMessage;\r
118         BOOL                            m_bWholeProject;\r
119         CString                         m_sBugID;\r
120         CString                         m_sChangeList;\r
121         BOOL                            m_bKeepChangeList;\r
122         BOOL                            m_bCommitAmend;\r
123         INT_PTR                         m_itemsCount;\r
124         bool                            m_bSelectFilesForCommit;\r
125         CComPtr<IBugTraqProvider> m_BugTraqProvider;\r
126         CString                         m_NoAmendStr;\r
127         CString                         m_AmendStr;\r
128 \r
129         BOOL                            m_bPushAfterCommit;\r
130 \r
131 private:\r
132         CWinThread*                     m_pThread;\r
133         std::set<CString>       m_autolist;\r
134         CGitStatusListCtrl      m_ListCtrl;\r
135         BOOL                            m_bShowUnversioned;\r
136         volatile LONG           m_bBlock;\r
137         volatile LONG           m_bThreadRunning;\r
138         volatile LONG           m_bRunThread;\r
139         CToolTips                       m_tooltips;\r
140         CRegDWORD                       m_regAddBeforeCommit;\r
141         CRegDWORD                       m_regKeepChangelists;\r
142         ProjectProperties       m_ProjectProperties;\r
143         CButton                         m_SelectAll;\r
144         CString                         m_sWindowTitle;\r
145         static UINT                     WM_AUTOLISTREADY;\r
146         int                                     m_nPopupPasteListCmd;\r
147         int                                     m_nPopupPasteLastMessage;\r
148         int                                     m_nPopupRecentMessage;\r
149         CRegHistory                     m_History;\r
150         bool                            m_bCancelled;\r
151         CSplitterControl        m_wndSplitter;\r
152         CRect                           m_DlgOrigRect;\r
153         CRect                           m_LogMsgOrigRect;\r
154         CPathWatcher            m_pathwatcher;\r
155         CHyperLink                      m_ctrlShowPatch;\r
156         CPatchViewDlg           m_patchViewdlg;\r
157 \r
158         CBugTraqAssociation m_bugtraq_association;\r
159         HACCEL                          m_hAccel;\r
160 \r
161 public:\r
162         afx_msg void OnBnClickedSignOff();\r
163         afx_msg void OnStnClickedCommitlabel();\r
164         afx_msg void OnBnClickedCommitAmend();\r
165     afx_msg void OnBnClickedWholeProject();\r
166         afx_msg void OnStnClickedBugidlabel();\r
167         afx_msg void OnScnUpdateUI(NMHDR *pNMHDR, LRESULT *pResult);\r
168         afx_msg void OnStnClickedViewPatch();\r
169         afx_msg void OnMove(int x, int y);\r
170         afx_msg void OnMoving(UINT fwSide, LPRECT pRect);\r
171         afx_msg void OnSizing(UINT fwSide, LPRECT pRect);\r
172         afx_msg void OnHdnItemchangedFilelist(NMHDR *pNMHDR, LRESULT *pResult);\r
173 };\r