OSDN Git Service

Fixed issue #187: Allow start new rebase after finish rebase
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / RebaseDlg.h
1 #pragma once\r
2 #include "afxcmn.h"\r
3 #include "afxwin.h"\r
4 #include "StandAloneDlg.h"\r
5 #include "GitStatusListCtrl.h"\r
6 #include "SciEdit.h"\r
7 #include "SplitterControl.h"\r
8 #include "HistoryCombo.h"\r
9 #include "Balloon.h"\r
10 #include "GitLogList.h"\r
11 #include "MenuButton.h"\r
12 // CRebaseDlg dialog\r
13 #define IDC_REBASE_TAB 0x1000000\r
14 \r
15 #define REBASE_TAB_CONFLICT  0\r
16 #define REBASE_TAB_MESSAGE   1\r
17 #define REBASE_TAB_LOG           2\r
18 \r
19 #define MSG_REBASE_UPDATE_UI    (WM_USER+151)\r
20 \r
21 class CRebaseDlg : public CResizableStandAloneDialog\r
22 {\r
23         DECLARE_DYNAMIC(CRebaseDlg)\r
24 \r
25 public:\r
26         CRebaseDlg(CWnd* pParent = NULL);   // standard constructor\r
27         virtual ~CRebaseDlg();\r
28 \r
29 // Dialog Data\r
30         enum { IDD = IDD_REBASE };\r
31 \r
32         enum REBASE_STAGE\r
33         {\r
34                 CHOOSE_BRANCH,\r
35                 CHOOSE_COMMIT_PICK_MODE,\r
36                 REBASE_START,\r
37                 REBASE_CONTINUE,\r
38                 REBASE_ABORT,\r
39                 REBASE_FINISH,\r
40                 REBASE_CONFLICT,\r
41                 REBASE_EDIT,\r
42                 REBASE_SQUASH_EDIT,\r
43                 REBASE_SQUASH_CONFLICT,\r
44                 REBASE_DONE,\r
45         };\r
46 \r
47 protected:\r
48         virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support\r
49         virtual BOOL OnInitDialog();\r
50         DECLARE_MESSAGE_MAP()\r
51         virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);\r
52         LRESULT OnRebaseUpdateUI(WPARAM wParam, LPARAM lParam);\r
53         void DoSize(int delta);\r
54         void AddRebaseAnchor();\r
55         void RemoveAnchor();\r
56 \r
57         void SetSplitterRange();\r
58         void SaveSplitterPos();\r
59         \r
60         void LoadBranchInfo();\r
61         void FetchLogList();\r
62         void SetAllRebaseAction(int action);\r
63         void OnCancel();\r
64 \r
65         CRect                           m_DlgOrigRect;\r
66         CRect                           m_CommitListOrigRect;\r
67         BOOL PreTranslateMessage(MSG* pMsg);\r
68 \r
69         CSciEdit m_wndOutputRebase;\r
70         void SetContinueButtonText();\r
71         void SetControlEnable();\r
72         void UpdateProgress();\r
73         void UpdateCurrentStatus();\r
74         void ListConflictFile();\r
75         int  DoRebase();\r
76         volatile LONG           m_bThreadRunning;\r
77         int  RebaseThread();\r
78         static UINT RebaseThreadEntry(LPVOID pVoid){return ((CRebaseDlg *)pVoid)->RebaseThread();};\r
79         BOOL IsEnd();\r
80 \r
81         BOOL m_IsFastForward;\r
82 \r
83         CString m_OrigBranchHash;\r
84         CString m_OrigUpstreamHash;\r
85 \r
86         int VerifyNoConflict();\r
87         CString GetRebaseModeName(int rebasemode);\r
88 \r
89         CString m_SquashMessage;\r
90 \r
91         int CheckNextCommitIsSquash();\r
92         int GetCurrentCommitID();\r
93         int FinishRebase();\r
94 \r
95         CMenuButton m_PostButton;\r
96 \r
97 public:\r
98    \r
99     afx_msg void OnBnClickedPickAll();\r
100     afx_msg void OnBnClickedSquashAll();\r
101     afx_msg void OnBnClickedEditAll();\r
102     afx_msg void OnBnClickedRebaseSplit();\r
103         afx_msg void OnSize(UINT nType, int cx, int cy);\r
104         afx_msg void OnCbnSelchangeBranch();\r
105         afx_msg void OnCbnSelchangeUpstream();\r
106         afx_msg void OnBnClickedContinue();\r
107         afx_msg void OnBnClickedAbort();\r
108 \r
109     CProgressCtrl m_ProgressBar;\r
110     CStatic m_CtrlStatusText;\r
111         CBalloon                        m_tooltips;\r
112 \r
113         CString m_PreCmd;\r
114 \r
115     BOOL m_bPickAll;\r
116     BOOL m_bSquashAll;\r
117     BOOL m_bEditAll;\r
118         \r
119         BOOL m_bForce;\r
120         CStringArray m_PostButtonTexts;\r
121 \r
122         CSplitterControl        m_wndSplitter;\r
123         CMFCTabCtrl m_ctrlTabCtrl;\r
124         CGitStatusListCtrl m_FileListCtrl;\r
125         CSciEdit                   m_LogMessageCtrl;\r
126         \r
127         CGitLogList                m_CommitList;\r
128 \r
129         CHistoryCombo m_BranchCtrl;\r
130         CHistoryCombo m_UpstreamCtrl;\r
131         \r
132         CString           m_Upstream;\r
133         CString           m_Branch;\r
134 \r
135         BOOL              m_IsCherryPick;\r
136 \r
137         REBASE_STAGE       m_RebaseStage;\r
138 \r
139         void AddBranchToolTips(CHistoryCombo *pBranch);\r
140         void AddLogString(CString str);\r
141         int      StartRebase();\r
142         int  CheckRebaseCondition();\r
143         int  m_CurrentRebaseIndex;\r
144         int  StateAction();\r
145         int  GoNext();\r
146         afx_msg void OnBnClickedButtonBrowse();\r
147         afx_msg void OnBnClickedRebaseCheckForce();\r
148         afx_msg void OnStnClickedStatusStatic();\r
149         afx_msg void OnBnClickedRebasePostButton();\r
150 };\r