#include "registry.h"\r
#include "Balloon.h"\r
#include "BranchCombox.h"\r
+#include "GitLoglist.h"\r
// CSyncDlg dialog\r
#define IDC_SYNC_TAB 0x1000000\r
\r
+#define IDC_CMD_LOG 0x1\r
+#define IDC_IN_LOGLIST 0x2\r
+#define IDC_IN_CHANGELIST 0x3\r
+#define IDC_IN_CONFLICT 0x4\r
+#define IDC_OUT_LOGLIST 0x5\r
+#define IDC_OUT_CHANGELIST 0x6\r
+\r
class CSyncDlg : public CResizableStandAloneDialog,public CBranchCombox\r
{\r
DECLARE_DYNAMIC(CSyncDlg)\r
// Dialog Data\r
enum { IDD = IDD_SYNC };\r
\r
+ enum { GIT_COMMAND_PUSH,\r
+ GIT_COMMAND_PULL,\r
+ };\r
protected:\r
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support\r
BRANCH_COMBOX_EVENT_HANDLE();\r
\r
+ int m_CurrentCmd;\r
+\r
CRegDWORD m_regPullButton;\r
CRegDWORD m_regPushButton;\r
CMFCTabCtrl m_ctrlTabCtrl;\r
+\r
CBalloon m_tooltips;\r
\r
+ BOOL m_bInited;\r
+ \r
+ CGitLogList m_OutLogList;\r
+ CGitLogList m_InLogList;\r
+\r
+ CGitStatusListCtrl m_OutChangeFileList;\r
+ CGitStatusListCtrl m_InChangeFileList;\r
+ CGitStatusListCtrl m_ConflictFileList;\r
+ \r
+ CRichEditCtrl m_ctrlCmdOut;\r
+\r
+ CTGitPathList m_arOutChangeList;\r
+ CTGitPathList m_arInChangeList;\r
+\r
+ int m_CmdOutCurrentPos;\r
+\r
+ CWinThread* m_pThread; \r
+\r
+ void ParserCmdOutput(TCHAR ch);\r
+\r
+ virtual void LocalBranchChange(){FetchOutList();};\r
+ virtual void RemoteBranchChange(){FetchOutList();};\r
+ void ShowTab(int windowid)\r
+ {\r
+ this->m_ctrlTabCtrl.ShowTab(windowid-1);\r
+ this->m_ctrlTabCtrl.SetActiveTab(windowid-1);\r
+ }\r
+\r
+ void FetchOutList(bool force=false);\r
+\r
+ bool IsURL();\r
+\r
void SetRemote(CString remote)\r
{\r
if(!remote.IsEmpty())\r
this->m_ctrlURL.AddString(remote);\r
}\r
}\r
+\r
+ std::vector<CString> m_GitCmdList;\r
+ \r
+ bool m_bAbort;\r
+\r
+ int m_GitCmdStatus;\r
+ \r
+ CString m_LogText;\r
+ CString m_OutLocalBranch;\r
+ CString m_OutRemoteBranch;\r
+ \r
+ CString m_oldHash;\r
+\r
+ void ShowProgressCtrl(bool bShow=true);\r
+ void ShowInputCtrl(bool bShow=true);\r
+ void SwitchToRun(){ShowProgressCtrl(true);ShowInputCtrl(false);EnableControlButton(false);}\r
+ void SwitchToInput(){ShowProgressCtrl(false);ShowInputCtrl(true);}\r
+ \r
+ LRESULT OnProgressUpdateUI(WPARAM wParam,LPARAM lParam);\r
+\r
+ void UpateCombox()\r
+ {\r
+ this->m_strLocalBranch = this->m_ctrlLocalBranch.GetString();\r
+ this->m_ctrlRemoteBranch.GetWindowText(this->m_strRemoteBranch);\r
+ this->m_ctrlURL.GetWindowText(this->m_strURL);\r
+ m_strRemoteBranch=m_strRemoteBranch.Trim();\r
+ }\r
+\r
+ void AddDiffFileList(CGitStatusListCtrl *pCtrlList, CTGitPathList *pGitList,\r
+ CString &rev1,CString &rev2)\r
+ {\r
+ g_Git.GetCommitDiffList(rev1,rev2,*pGitList);\r
+ pCtrlList->m_Rev1=rev1;\r
+ pCtrlList->m_Rev2=rev2;\r
+ pCtrlList->Show(0,*pGitList);\r
+ pCtrlList->SetEmptyString(CString(_T("No changed file")));\r
+ return;\r
+ }\r
+\r
+ void PullComplete();\r
+\r
DECLARE_MESSAGE_MAP()\r
public:\r
BOOL m_bAutoLoadPuttyKey;\r
+ BOOL m_bForce;\r
+ CString m_strURL;\r
+\r
+ static UINT ProgressThreadEntry(LPVOID pVoid){ return ((CSyncDlg*)pVoid) ->ProgressThread(); };\r
+ UINT ProgressThread();\r
\r
CHistoryCombo m_ctrlURL;\r
CButton m_ctrlDumyButton;\r
virtual BOOL OnInitDialog();\r
afx_msg void OnBnClickedButtonManage();\r
virtual BOOL PreTranslateMessage(MSG* pMsg);\r
+ afx_msg void OnCbenEndeditComboboxexUrl(NMHDR *pNMHDR, LRESULT *pResult);\r
+ afx_msg void OnCbnEditchangeComboboxexUrl();\r
+\r
+ void EnableControlButton(bool bEnabled=true);\r
+ afx_msg void OnBnClickedButtonCommit();\r
};\r