OSDN Git Service

SyncDlg Show Conflict when pull
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / SyncDlg.h
1 // TortoiseGit - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2008-2009 - 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 \r
20 #pragma once\r
21 #include "afxcmn.h"\r
22 #include "afxwin.h"\r
23 \r
24 #include "StandAloneDlg.h"\r
25 #include "HistoryCombo.h"\r
26 #include "MenuButton.h"\r
27 #include "registry.h"\r
28 #include "Balloon.h"\r
29 #include "BranchCombox.h"\r
30 #include "GitLoglist.h"\r
31 // CSyncDlg dialog\r
32 #define IDC_SYNC_TAB 0x1000000\r
33 \r
34 #define IDC_CMD_LOG                     0x1\r
35 #define IDC_IN_LOGLIST          0x2\r
36 #define IDC_IN_CHANGELIST       0x3\r
37 #define IDC_IN_CONFLICT         0x4\r
38 #define IDC_OUT_LOGLIST         0x5\r
39 #define IDC_OUT_CHANGELIST      0x6\r
40 \r
41 class CSyncDlg : public CResizableStandAloneDialog,public CBranchCombox\r
42 {\r
43         DECLARE_DYNAMIC(CSyncDlg)\r
44 \r
45 public:\r
46         CSyncDlg(CWnd* pParent = NULL);   // standard constructor\r
47         virtual ~CSyncDlg();\r
48 \r
49 // Dialog Data\r
50         enum { IDD = IDD_SYNC };\r
51 \r
52         enum { GIT_COMMAND_PUSH,\r
53                    GIT_COMMAND_PULL,\r
54                 };\r
55 protected:\r
56         virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support\r
57         BRANCH_COMBOX_EVENT_HANDLE();\r
58 \r
59         int m_CurrentCmd;\r
60 \r
61         CRegDWORD m_regPullButton;\r
62         CRegDWORD m_regPushButton;\r
63         CMFCTabCtrl m_ctrlTabCtrl;\r
64 \r
65         CBalloon                        m_tooltips;\r
66         \r
67         BOOL            m_bInited;\r
68         \r
69         CGitLogList     m_OutLogList;\r
70         CGitLogList m_InLogList;\r
71 \r
72         CGitStatusListCtrl m_OutChangeFileList;\r
73         CGitStatusListCtrl m_InChangeFileList;\r
74         CGitStatusListCtrl m_ConflictFileList;\r
75         \r
76         CRichEditCtrl      m_ctrlCmdOut;\r
77 \r
78         CTGitPathList   m_arOutChangeList;\r
79         CTGitPathList   m_arInChangeList;\r
80 \r
81         int                             m_CmdOutCurrentPos;\r
82 \r
83         CWinThread*                             m_pThread;      \r
84 \r
85         void            ParserCmdOutput(TCHAR ch);\r
86 \r
87         virtual void LocalBranchChange(){FetchOutList();};\r
88         virtual void RemoteBranchChange(){FetchOutList();};\r
89         void ShowTab(int windowid)\r
90         {\r
91                 this->m_ctrlTabCtrl.ShowTab(windowid-1);\r
92                 this->m_ctrlTabCtrl.SetActiveTab(windowid-1);\r
93         }\r
94 \r
95         void FetchOutList(bool force=false);\r
96 \r
97         bool IsURL();\r
98 \r
99         void SetRemote(CString remote)\r
100         {\r
101                 if(!remote.IsEmpty())\r
102                 {\r
103                         this->m_ctrlURL.AddString(remote);\r
104                 }\r
105         }\r
106 \r
107         std::vector<CString> m_GitCmdList;\r
108         \r
109         bool m_bAbort;\r
110 \r
111         int  m_GitCmdStatus;\r
112         \r
113         CString m_LogText;\r
114         CString m_OutLocalBranch;\r
115         CString m_OutRemoteBranch;\r
116         \r
117         CString m_oldHash;\r
118 \r
119         void ShowProgressCtrl(bool bShow=true);\r
120         void ShowInputCtrl(bool bShow=true);\r
121         void SwitchToRun(){ShowProgressCtrl(true);ShowInputCtrl(false);EnableControlButton(false);}\r
122         void SwitchToInput(){ShowProgressCtrl(false);ShowInputCtrl(true);}\r
123         \r
124         LRESULT OnProgressUpdateUI(WPARAM wParam,LPARAM lParam);\r
125 \r
126         void UpateCombox()\r
127         {\r
128                 this->m_strLocalBranch = this->m_ctrlLocalBranch.GetString();\r
129                 this->m_ctrlRemoteBranch.GetWindowText(this->m_strRemoteBranch);\r
130                 this->m_ctrlURL.GetWindowText(this->m_strURL);\r
131                 m_strRemoteBranch=m_strRemoteBranch.Trim();\r
132         }\r
133 \r
134         void AddDiffFileList(CGitStatusListCtrl *pCtrlList, CTGitPathList *pGitList,\r
135                                                         CString &rev1,CString &rev2)\r
136         {\r
137                 g_Git.GetCommitDiffList(rev1,rev2,*pGitList);\r
138                 pCtrlList->m_Rev1=rev1;\r
139                 pCtrlList->m_Rev2=rev2;\r
140                 pCtrlList->Show(0,*pGitList);\r
141                 pCtrlList->SetEmptyString(CString(_T("No changed file")));\r
142                 return;\r
143         }\r
144 \r
145         void PullComplete();\r
146 \r
147         DECLARE_MESSAGE_MAP()\r
148 public:\r
149         BOOL m_bAutoLoadPuttyKey;\r
150         BOOL m_bForce;\r
151         CString m_strURL;\r
152 \r
153         static UINT ProgressThreadEntry(LPVOID pVoid){ return ((CSyncDlg*)pVoid) ->ProgressThread(); };\r
154         UINT            ProgressThread();\r
155         \r
156         CHistoryCombo m_ctrlURL;\r
157         CButton m_ctrlDumyButton;\r
158         CMenuButton m_ctrlPull;\r
159         CMenuButton m_ctrlPush;\r
160         CMenuButton m_ctrlStatus;\r
161         afx_msg void OnBnClickedButtonPull();\r
162         afx_msg void OnBnClickedButtonPush();\r
163         afx_msg void OnBnClickedButtonApply();\r
164         afx_msg void OnBnClickedButtonEmail();\r
165         CProgressCtrl m_ctrlProgress;\r
166         CAnimateCtrl m_ctrlAnimate;\r
167         virtual BOOL OnInitDialog();\r
168         afx_msg void OnBnClickedButtonManage();\r
169         virtual BOOL PreTranslateMessage(MSG* pMsg);\r
170         afx_msg void OnCbenEndeditComboboxexUrl(NMHDR *pNMHDR, LRESULT *pResult);\r
171         afx_msg void OnCbnEditchangeComboboxexUrl();\r
172 \r
173         void EnableControlButton(bool bEnabled=true);\r
174         afx_msg void OnBnClickedButtonCommit();\r
175 };\r