OSDN Git Service

Fixed issue #112: (6) Low hanging GUI fruits during Commit and Push
[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 \r
34 #include <regex>\r
35 using namespace std;\r
36 \r
37 #define ENDDIALOGTIMER 100\r
38 #define REFRESHTIMER   101\r
39 \r
40 \r
41 /**\r
42  * \ingroup TortoiseProc\r
43  * Dialog to enter log messages used in a commit.\r
44  */\r
45 class CCommitDlg : public CResizableStandAloneDialog, public CSciEditContextMenuInterface\r
46 {\r
47         DECLARE_DYNAMIC(CCommitDlg)\r
48 \r
49 public:\r
50         CCommitDlg(CWnd* pParent = NULL);   // standard constructor\r
51         virtual ~CCommitDlg();\r
52 \r
53         // CSciEditContextMenuInterface\r
54         virtual void            InsertMenuItems(CMenu& mPopup, int& nCmd);\r
55         virtual bool            HandleMenuItemClick(int cmd, CSciEdit * pSciEdit);\r
56 \r
57 private:\r
58         static UINT StatusThreadEntry(LPVOID pVoid);\r
59         UINT StatusThread();\r
60         void UpdateOKButton();\r
61 \r
62 // Dialog Data\r
63         enum { IDD = IDD_COMMITDLG };\r
64 \r
65 protected:\r
66         virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support\r
67 \r
68         virtual BOOL OnInitDialog();\r
69         virtual void OnOK();\r
70         virtual void OnCancel();\r
71         virtual BOOL PreTranslateMessage(MSG* pMsg);\r
72         virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);\r
73         afx_msg void OnBnClickedSelectall();\r
74         afx_msg void OnBnClickedHelp();\r
75         afx_msg void OnBnClickedShowunversioned();\r
76         afx_msg void OnBnClickedHistory();\r
77         afx_msg void OnBnClickedBugtraqbutton();\r
78         afx_msg void OnEnChangeLogmessage();\r
79         afx_msg void OnStnClickedExternalwarning();\r
80         afx_msg void OnFocusMessage();\r
81         afx_msg LRESULT OnGitStatusListCtrlItemCountChanged(WPARAM, LPARAM);\r
82         afx_msg LRESULT OnGitStatusListCtrlNeedsRefresh(WPARAM, LPARAM);\r
83         afx_msg LRESULT OnGitStatusListCtrlCheckChanged(WPARAM, LPARAM);\r
84         afx_msg LRESULT OnAutoListReady(WPARAM, LPARAM);\r
85         afx_msg LRESULT OnFileDropped(WPARAM, LPARAM lParam);\r
86         afx_msg void OnTimer(UINT_PTR nIDEvent);\r
87     afx_msg void OnSize(UINT nType, int cx, int cy);\r
88         void Refresh();\r
89         void GetAutocompletionList();\r
90         void ScanFile(const CString& sFilePath, const CString& sRegex);\r
91         void DoSize(int delta);\r
92         void SetSplitterRange();\r
93         void SaveSplitterPos();\r
94         void ParseRegexFile(const CString& sFile, std::map<CString, CString>& mapRegex);\r
95 \r
96         DECLARE_MESSAGE_MAP()\r
97 \r
98 \r
99 public:\r
100         CTGitPathList           m_pathList;\r
101         CTGitPathList           m_updatedPathList;\r
102         CTGitPathList           m_selectedPathList;\r
103         CTGitPathList           m_checkedPathList;\r
104         BOOL                            m_bRecursive;\r
105         CSciEdit                        m_cLogMessage;\r
106         CString                         m_sLogMessage;\r
107         BOOL                            m_bWholeProject;\r
108         CString                         m_sBugID;\r
109         CString                         m_sChangeList;\r
110         BOOL                            m_bKeepChangeList;\r
111         BOOL                            m_bCommitAmend;\r
112         INT_PTR                         m_itemsCount;\r
113         bool                            m_bSelectFilesForCommit;\r
114         CComPtr<IBugTraqProvider> m_BugTraqProvider;\r
115         CString                         m_NoAmendStr;\r
116         CString                         m_AmendStr;\r
117 \r
118         BOOL                            m_bPushAfterCommit;\r
119 \r
120 private:\r
121         CWinThread*                     m_pThread;\r
122         std::set<CString>       m_autolist;\r
123         CGitStatusListCtrl      m_ListCtrl;\r
124         BOOL                            m_bShowUnversioned;\r
125         volatile LONG           m_bBlock;\r
126         volatile LONG           m_bThreadRunning;\r
127         volatile LONG           m_bRunThread;\r
128         CToolTips                       m_tooltips;\r
129         CRegDWORD                       m_regAddBeforeCommit;\r
130         CRegDWORD                       m_regKeepChangelists;\r
131         ProjectProperties       m_ProjectProperties;\r
132         CButton                         m_SelectAll;\r
133         CString                         m_sWindowTitle;\r
134         static UINT                     WM_AUTOLISTREADY;\r
135         int                                     m_nPopupPasteListCmd;\r
136         int                                     m_nPopupPasteLastMessage;\r
137         int                                     m_nPopupRecentMessage;\r
138         CRegHistory                     m_History;\r
139         bool                            m_bCancelled;\r
140         CSplitterControl        m_wndSplitter;\r
141         CRect                           m_DlgOrigRect;\r
142         CRect                           m_LogMsgOrigRect;\r
143         CPathWatcher            m_pathwatcher;\r
144 \r
145         CBugTraqAssociation m_bugtraq_association;\r
146         HACCEL                          m_hAccel;\r
147 \r
148 public:\r
149         afx_msg void OnBnClickedSignOff();\r
150         afx_msg void OnStnClickedCommitlabel();\r
151         afx_msg void OnBnClickedCommitAmend();\r
152     afx_msg void OnBnClickedWholeProject();\r
153         afx_msg void OnStnClickedBugidlabel();\r
154 };\r