\r
#include "StandAloneDlg.h"\r
#include "HistoryCombo.h"\r
-\r
+#include "MenuButton.h"\r
+#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\r
+class CSyncDlg : public CResizableStandAloneDialog,public CBranchCombox\r
{\r
DECLARE_DYNAMIC(CSyncDlg)\r
\r
// Dialog Data\r
enum { IDD = IDD_SYNC };\r
\r
+ enum { GIT_COMMAND_PUSH,\r
+ GIT_COMMAND_PULL,\r
+ GIT_COMMAND_FETCH,\r
+ GIT_COMMAND_FETCHANDREBASE,\r
+ GIT_COMMAND_SUBMODULE,\r
+ GIT_COMMAND_REMOTE\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
+ CRegDWORD m_regSubmoduleButton;\r
+\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
+ {\r
+ int index=this->m_ctrlURL.FindStringExact(0,remote);\r
+ if(index>=0)\r
+ {\r
+ m_ctrlURL.SetCurSel(index);\r
+ return;\r
+ }\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 UpdateCombox()\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
+ void FetchComplete();\r
\r
DECLARE_MESSAGE_MAP()\r
public:\r
BOOL m_bAutoLoadPuttyKey;\r
- CComboBoxEx m_ctrlLocalBranch;\r
- CComboBoxEx m_ctrlRemoteBranch;\r
- CComboBoxEx m_ctrlURL;\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
- CButton m_ctrlPull;\r
- CButton m_ctrlPush;\r
- CStatic m_ctrlStatus;\r
+ CMenuButton m_ctrlPull;\r
+ CMenuButton m_ctrlPush;\r
+ CMenuButton m_ctrlStatus;\r
+ CMenuButton m_ctrlSubmodule;\r
afx_msg void OnBnClickedButtonPull();\r
afx_msg void OnBnClickedButtonPush();\r
afx_msg void OnBnClickedButtonApply();\r
CProgressCtrl m_ctrlProgress;\r
CAnimateCtrl m_ctrlAnimate;\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
+protected:\r
+ virtual void OnOK();\r
+public:\r
+ afx_msg void OnBnClickedButtonSubmodule();\r
};\r