OSDN Git Service

CSyncDlg switch to log when click push. support push with tags and force
authorFrank Li <lznuaa@gmail.com>
Fri, 24 Jul 2009 14:44:24 +0000 (22:44 +0800)
committerFrank Li <lznuaa@gmail.com>
Fri, 24 Jul 2009 14:44:24 +0000 (22:44 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/TortoiseProc/SyncDlg.cpp
src/TortoiseProc/SyncDlg.h
src/TortoiseProc/TortoiseProc.vcproj

index e1185a6..f2bd99b 100644 (file)
@@ -31,11 +31,11 @@ IMPLEMENT_DYNAMIC(CSyncDlg, CResizableStandAloneDialog)
 \r
 CSyncDlg::CSyncDlg(CWnd* pParent /*=NULL*/)\r
        : CResizableStandAloneDialog(CSyncDlg::IDD, pParent)\r
-       , m_bAutoLoadPuttyKey(FALSE)\r
 {\r
        m_pTooltip=&this->m_tooltips;\r
        m_bInited=false;\r
        m_CmdOutCurrentPos=0;\r
+       m_bAutoLoadPuttyKey = CAppUtils::IsSSHPutty();\r
 }\r
 \r
 CSyncDlg::~CSyncDlg()\r
@@ -46,6 +46,7 @@ void CSyncDlg::DoDataExchange(CDataExchange* pDX)
 {\r
        CDialog::DoDataExchange(pDX);\r
        DDX_Check(pDX, IDC_CHECK_PUTTY_KEY, m_bAutoLoadPuttyKey);\r
+       DDX_Check(pDX, IDC_CHECK_FORCE,m_bForce);\r
        DDX_Control(pDX, IDC_COMBOBOXEX_URL, m_ctrlURL);\r
        DDX_Control(pDX, IDC_BUTTON_TABCTRL, m_ctrlDumyButton);\r
        DDX_Control(pDX, IDC_BUTTON_PULL, m_ctrlPull);\r
@@ -90,21 +91,41 @@ void CSyncDlg::OnBnClickedButtonPull()
 void CSyncDlg::OnBnClickedButtonPush()\r
 {\r
        // TODO: Add your control notification handler code here\r
+       this->UpdateData();\r
+\r
        this->m_regPushButton=this->m_ctrlPush.GetCurrentEntry();\r
        this->SwitchToRun();\r
        this->m_bAbort=false;\r
        this->m_GitCmdList.clear();\r
 \r
+       ShowTab(IDC_CMD_LOG);\r
+\r
        CString cmd;\r
        CString tags;\r
        CString force;\r
+       CString all;\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
-       cmd.Format(_T("git.exe push %s %s \"%s\" %s"),\r
-                               tags,force,\r
+       this->GetDlgItem(IDC_CHECK_PUTTY_KEY)->EnableWindow(this->m_bAutoLoadPuttyKey);\r
+\r
+       switch (m_ctrlPush.GetCurrentEntry())\r
+       {\r
+       case 1:\r
+               tags = _T(" --tags ");\r
+               break;\r
+       case 2:\r
+               all = _T(" --all ");\r
+               break;\r
+       }\r
+\r
+       if(this->m_bForce)\r
+               force = _T(" --force ");\r
+\r
+       cmd.Format(_T("git.exe push %s %s %s \"%s\" %s"),\r
+                               tags,force,all,\r
                                m_strURL,\r
                                m_strLocalBranch);\r
 \r
@@ -115,6 +136,13 @@ void CSyncDlg::OnBnClickedButtonPush()
        \r
        m_GitCmdList.push_back(cmd);\r
 \r
+       m_CurrentCmd = GIT_COMMAND_PUSH;\r
+\r
+       if(this->m_bAutoLoadPuttyKey)\r
+       {\r
+               CAppUtils::LaunchPAgent(NULL,&this->m_strURL);\r
+       }\r
+\r
        m_pThread = AfxBeginThread(ProgressThreadEntry, this, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED);\r
        if (m_pThread==NULL)\r
        {\r
@@ -198,7 +226,8 @@ BOOL CSyncDlg::OnInitDialog()
        }\r
 \r
        m_ctrlTabCtrl.InsertTab(&m_ctrlCmdOut,_T("Log"),-1);\r
-       m_ctrlCmdOut.ReplaceSel(_T("Hello"));\r
+       \r
+       //m_ctrlCmdOut.ReplaceSel(_T("Hello"));\r
 \r
        //----------  Create Commit List Ctrl---------------\r
                        \r
@@ -212,6 +241,7 @@ BOOL CSyncDlg::OnInitDialog()
        }\r
 \r
        m_ctrlTabCtrl.InsertTab(&m_OutLogList,_T("Out Commits"),-1);\r
+       \r
 \r
        m_OutLogList.InsertGitColumn();\r
 \r
@@ -259,7 +289,7 @@ BOOL CSyncDlg::OnInitDialog()
 \r
        this->m_ctrlPush.AddEntry(CString(_T("Push")));\r
        this->m_ctrlPush.AddEntry(CString(_T("Push tags")));\r
-       this->m_ctrlPush.AddEntry(CString(_T("Push All")));\r
+       ///this->m_ctrlPush.AddEntry(CString(_T("Push All")));\r
 \r
        this->m_ctrlPull.AddEntry(CString(_T("&Pull")));\r
        this->m_ctrlPull.AddEntry(CString(_T("&Fetch")));\r
@@ -289,6 +319,8 @@ BOOL CSyncDlg::OnInitDialog()
        this->m_bInited=true;\r
        FetchOutList();\r
        \r
+       m_ctrlTabCtrl.ShowTab(IDC_CMD_LOG-1,false);\r
+\r
        return TRUE;  // return TRUE unless you set the focus to a control\r
        // EXCEPTION: OCX Property Pages should return FALSE\r
 }\r
@@ -305,7 +337,7 @@ BOOL CSyncDlg::PreTranslateMessage(MSG* pMsg)
        m_tooltips.RelayEvent(pMsg);\r
        return __super::PreTranslateMessage(pMsg);\r
 }\r
-void CSyncDlg::FetchOutList()\r
+void CSyncDlg::FetchOutList(bool force)\r
 {\r
        if(!m_bInited)\r
                return;\r
@@ -343,7 +375,7 @@ void CSyncDlg::FetchOutList()
                CString localbranch;\r
                localbranch=this->m_ctrlLocalBranch.GetString();\r
 \r
-               if(localbranch != m_OutLocalBranch || m_OutRemoteBranch != remotebranch)\r
+               if(localbranch != m_OutLocalBranch || m_OutRemoteBranch != remotebranch || force)\r
                {\r
                        m_OutLogList.ClearText();\r
                        m_OutLogList.FillGitLog(NULL,CGit::     LOG_INFO_STAT| CGit::LOG_INFO_FILESTATE | CGit::LOG_INFO_SHOW_MERGEDFILE,\r
@@ -418,10 +450,11 @@ LRESULT CSyncDlg::OnProgressUpdateUI(WPARAM wParam,LPARAM lParam)
                m_ctrlProgress.SetPos(100);\r
                //this->DialogEnableWindow(IDOK,TRUE);\r
 \r
-               if(wParam == MSG_PROGRESSDLG_END)\r
+               //if(wParam == MSG_PROGRESSDLG_END)\r
                {\r
                        EnableControlButton(true);\r
                        SwitchToInput();\r
+                       this->FetchOutList(true);\r
                }\r
        }\r
 \r
index c40ba20..31b4180 100644 (file)
@@ -44,10 +44,15 @@ public:
 // 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
@@ -73,8 +78,13 @@ protected:
 \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
@@ -87,7 +97,9 @@ protected:
        }\r
 \r
        std::vector<CString> m_GitCmdList;\r
+       \r
        bool m_bAbort;\r
+\r
        int  m_GitCmdStatus;\r
        \r
        CString m_LogText;\r
@@ -104,6 +116,7 @@ protected:
        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
index 95e9e42..2bafd62 100644 (file)
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\copy.ico"\r
+                               RelativePath=".\copy.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\copy.ico"\r
+                               RelativePath="..\Resources\copy.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\explorer.ico"\r
+                               RelativePath="..\Resources\explorer.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\explorer.ico"\r
+                               RelativePath=".\explorer.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\newfolder.ico"\r
+                               RelativePath=".\newfolder.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\newfolder.ico"\r
+                               RelativePath="..\Resources\newfolder.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\refresh.ico"\r
+                               RelativePath=".\refresh.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\refresh.ico"\r
+                               RelativePath="..\Resources\refresh.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\save.ico"\r
+                               RelativePath="..\Resources\save.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\save.ico"\r
+                               RelativePath=".\save.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\up.ico"\r
+                               RelativePath=".\up.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\up.ico"\r
+                               RelativePath="..\Resources\up.ico"\r
                                >\r
                        </File>\r
                        <File\r