OSDN Git Service

Show Push Dialog after close commit dialog
authorFrank Li <lznuaa@gmail.com>
Fri, 5 Jun 2009 15:38:05 +0000 (23:38 +0800)
committerFrank Li <lznuaa@gmail.com>
Fri, 5 Jun 2009 15:38:05 +0000 (23:38 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/TortoiseProc/AppUtils.cpp
src/TortoiseProc/AppUtils.h
src/TortoiseProc/Commands/CommitCommand.cpp
src/TortoiseProc/Commands/PushCommand.cpp
src/TortoiseProc/CommitDlg.cpp
src/TortoiseProc/CommitDlg.h

index c1c0f54..44c464a 100644 (file)
@@ -45,6 +45,7 @@
 #include "ChangedDlg.h"\r
 #include "SendMailDlg.h"\r
 #include "SVNProgressDlg.h"\r
+#include "PushDlg.h"\r
 \r
 CAppUtils::CAppUtils(void)\r
 {\r
@@ -2036,4 +2037,47 @@ int CAppUtils::SaveCommitUnicodeFile(CString &filename, CString &message)
        file.Close();\r
        delete buf;\r
        return 0;\r
+}\r
+\r
+bool CAppUtils::Push()\r
+{\r
+       CPushDlg dlg;\r
+//     dlg.m_Directory=this->orgCmdLinePath.GetWinPathString();\r
+       if(dlg.DoModal()==IDOK)\r
+       {\r
+//             CString dir=dlg.m_Directory;\r
+//             CString url=dlg.m_URL;\r
+               CString cmd;\r
+               CString force;\r
+               CString tags;\r
+               CString thin;\r
+\r
+               if(dlg.m_bAutoLoad)\r
+               {\r
+                       CAppUtils::LaunchPAgent(NULL,&dlg.m_URL);\r
+               }\r
+\r
+               if(dlg.m_bPack)\r
+                       thin=_T("--thin");\r
+               if(dlg.m_bTags)\r
+                       tags=_T("--tags");\r
+               if(dlg.m_bForce)\r
+                       force=_T("--force");\r
+               \r
+               cmd.Format(_T("git.exe push %s %s %s \"%s\" %s"),\r
+                               thin,tags,force,\r
+                               dlg.m_URL,\r
+                               dlg.m_BranchSourceName);\r
+               if (!dlg.m_BranchRemoteName.IsEmpty())\r
+               {\r
+                       cmd += _T(":") + dlg.m_BranchRemoteName;\r
+               }\r
+\r
+               CProgressDlg progress;\r
+               progress.m_GitCmd=cmd;\r
+               if(progress.DoModal()==IDOK)\r
+                       return TRUE;\r
+               \r
+       }\r
+       return FALSE;\r
 }
\ No newline at end of file
index 597201d..27d1274 100644 (file)
@@ -200,6 +200,8 @@ public:
 \r
        static int  GetLogOutputEncode();\r
 \r
+       static bool Push();\r
+\r
 private:\r
        static CString PickDiffTool(const CTGitPath& file1, const CTGitPath& file2);\r
        static bool GetMimeType(const CTGitPath& file, CString& mimetype);\r
index fa5bda5..301b1c6 100644 (file)
@@ -24,6 +24,7 @@
 #include "StringUtils.h"\r
 #include "Hooks.h"\r
 #include "MessageBox.h"\r
+#include "AppUtils.h"\r
 \r
 CString CommitCommand::LoadLogMessage()\r
 {\r
@@ -101,6 +102,11 @@ bool CommitCommand::Execute()
                        pathList = dlg.m_updatedPathList;\r
                        sLogMsg = dlg.m_sLogMessage;\r
                        bSelectFilesForCommit = true;\r
+\r
+                       if( dlg.m_bPushAfterCommit )\r
+                       {\r
+                               CAppUtils::Push();\r
+                       }\r
 //                     CGitProgressDlg progDlg;\r
 //                     progDlg.SetChangeList(dlg.m_sChangeList, !!dlg.m_bKeepChangeList);\r
 //                     if (parser.HasVal(_T("closeonend")))\r
index acd7e12..f663f13 100644 (file)
 \r
 bool PushCommand::Execute()\r
 {\r
-       CPushDlg dlg;\r
-//     dlg.m_Directory=this->orgCmdLinePath.GetWinPathString();\r
-       if(dlg.DoModal()==IDOK)\r
-       {\r
-//             CString dir=dlg.m_Directory;\r
-//             CString url=dlg.m_URL;\r
-               CString cmd;\r
-               CString force;\r
-               CString tags;\r
-               CString thin;\r
-\r
-               if(dlg.m_bAutoLoad)\r
-               {\r
-                       CAppUtils::LaunchPAgent(NULL,&dlg.m_URL);\r
-               }\r
-\r
-               if(dlg.m_bPack)\r
-                       thin=_T("--thin");\r
-               if(dlg.m_bTags)\r
-                       tags=_T("--tags");\r
-               if(dlg.m_bForce)\r
-                       force=_T("--force");\r
-               \r
-               cmd.Format(_T("git.exe push %s %s %s \"%s\" %s"),\r
-                               thin,tags,force,\r
-                               dlg.m_URL,\r
-                               dlg.m_BranchSourceName);\r
-               if (!dlg.m_BranchRemoteName.IsEmpty())\r
-               {\r
-                       cmd += _T(":") + dlg.m_BranchRemoteName;\r
-               }\r
-\r
-               CProgressDlg progress;\r
-               progress.m_GitCmd=cmd;\r
-               if(progress.DoModal()==IDOK)\r
-                       return TRUE;\r
-               \r
-       }\r
-       return FALSE;\r
+       return CAppUtils::Push();\r
 }\r
index 0dbf8e6..0ca8712 100644 (file)
@@ -59,6 +59,7 @@ CCommitDlg::CCommitDlg(CWnd* pParent /*=NULL*/)
        , m_bSelectFilesForCommit(TRUE)\r
 {\r
        this->m_bCommitAmend=FALSE;\r
+       m_bPushAfterCommit = FALSE;\r
 }\r
 \r
 CCommitDlg::~CCommitDlg()\r
@@ -513,8 +514,7 @@ void CCommitDlg::OnOK()
                else if(userResponse == IDCANCEL)\r
                {\r
                        //User pressed 'Push' button after successful commit.\r
-                       PushCommand cmdPush;\r
-                       cmdPush.Execute();\r
+                       m_bPushAfterCommit=true;\r
                }\r
 \r
                CFile::Remove(tempfile);\r
index b8f13a1..a10f5fd 100644 (file)
@@ -114,6 +114,8 @@ public:
        CString                         m_NoAmendStr;\r
        CString                         m_AmendStr;\r
 \r
+       BOOL                            m_bPushAfterCommit;\r
+\r
 private:\r
        CWinThread*                     m_pThread;\r
        std::set<CString>       m_autolist;\r