OSDN Git Service

Sync Dialog remote URL support save history
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / SyncDlg.h
index 4c83628..151e8d8 100644 (file)
 #include "GitLoglist.h"\r
 // CSyncDlg dialog\r
 #define IDC_SYNC_TAB 0x1000000\r
-#define IDC_CMD_LOG            0x1\r
-#define IDC_OUT_LOGLIST 0x2\r
-#define IDC_OUT_CHANGELIST 0x3\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
@@ -44,13 +49,24 @@ public:
 // 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
+               };\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
@@ -61,14 +77,27 @@ protected:
        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();\r
+       void FetchOutList(bool force=false);\r
 \r
        bool IsURL();\r
 \r
@@ -76,27 +105,72 @@ protected:
        {\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);}\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
+       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
        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
@@ -108,4 +182,11 @@ public:
        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