OSDN Git Service

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