OSDN Git Service

BrowseRefs: Fetch context menu item added.
authorJohan 't Hart <johanthart@gmail.com>
Fri, 26 Jun 2009 21:04:34 +0000 (23:04 +0200)
committerJohan 't Hart <johanthart@gmail.com>
Fri, 26 Jun 2009 21:04:34 +0000 (23:04 +0200)
src/TortoiseProc/BrowseRefsDlg.cpp
src/TortoiseProc/BrowseRefsDlg.h

index e1a5460..989284a 100644 (file)
@@ -543,14 +543,19 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh
        popupMenu.CreatePopupMenu();\r
 \r
        bool bAddSeparator = false;\r
+       CString remoteName;\r
+\r
        if(selectedLeafs.size()==1)\r
        {\r
                bAddSeparator = true;\r
 \r
-               bool bShowReflogOption = false;\r
-               bool bShowDeleteBranchOption = false;\r
-               bool bShowDeleteTagOption = false;\r
-               bool bShowDeleteRemoteBranchOption = false;\r
+               bool bShowReflogOption                          = false;\r
+               bool bShowDeleteBranchOption            = false;\r
+               bool bShowDeleteTagOption                       = false;\r
+               bool bShowDeleteRemoteBranchOption      = false;\r
+               bool bShowFetchOption                           = false;\r
+\r
+               CString fetchFromCmd;\r
 \r
                if(selectedLeafs[0]->IsFrom(L"refs/heads"))\r
                {\r
@@ -561,6 +566,13 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh
                {\r
                        bShowReflogOption = true;\r
                        bShowDeleteRemoteBranchOption = true;\r
+                       bShowFetchOption = true;\r
+\r
+                       int dummy = 0;//Needed for tokenize\r
+                       remoteName = selectedLeafs[0]->GetRefName();\r
+                       remoteName = remoteName.Mid(13);\r
+                       remoteName = remoteName.Tokenize(L"/", dummy);\r
+                       fetchFromCmd.Format(L"Fetch from %s", remoteName);\r
                }\r
                else if(selectedLeafs[0]->IsFrom(L"refs/tags"))\r
                {\r
@@ -569,6 +581,7 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh
 \r
                                                                                        popupMenu.AppendMenuIcon(eCmd_ViewLog, L"Show Log", IDI_LOG);\r
                if(bShowReflogOption)                           popupMenu.AppendMenuIcon(eCmd_ShowReflog, L"Show Reflog", IDI_LOG);\r
+               if(bShowFetchOption)                            popupMenu.AppendMenuIcon(eCmd_Fetch, fetchFromCmd, IDI_PULL);\r
                if(bShowDeleteTagOption)                        popupMenu.AppendMenuIcon(eCmd_DeleteTag, L"Delete Tag", IDI_DELETE);\r
                if(bShowDeleteBranchOption)                     popupMenu.AppendMenuIcon(eCmd_DeleteBranch, L"Delete Branch", IDI_DELETE);\r
                if(bShowDeleteRemoteBranchOption)       popupMenu.AppendMenuIcon(eCmd_DeleteRemoteBranch, L"Delete Remote Branch", IDI_DELETE);\r
@@ -595,6 +608,19 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh
                {\r
 //                     popupMenu.AppendMenu(MF_STRING,eCmd_AddRemote,L"Add Remote");\r
                        popupMenu.AppendMenuIcon(eCmd_ManageRemotes, L"Manage Remotes", IDI_SETTINGS);\r
+                       if(selectedLeafs.empty())\r
+                       {\r
+                               int dummy = 0;//Needed for tokenize\r
+                               remoteName = pTree->GetRefName();\r
+                               remoteName = remoteName.Mid(13);\r
+                               remoteName = remoteName.Tokenize(L"/", dummy);\r
+                               if(!remoteName.IsEmpty())\r
+                               {\r
+                                       CString fetchFromCmd;\r
+                                       fetchFromCmd.Format(L"Fetch from %s", remoteName);\r
+                                       popupMenu.AppendMenuIcon(eCmd_Fetch, fetchFromCmd, IDI_PULL);\r
+                               }\r
+                       }\r
                }\r
                else if(pTree->IsFrom(L"refs/heads"))\r
                        popupMenu.AppendMenuIcon(eCmd_CreateBranch, L"Create Branch", IDI_COPY);\r
@@ -635,6 +661,16 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh
                        refLogDlg.DoModal();\r
                }\r
                break;\r
+       case eCmd_Fetch:\r
+               {\r
+                       CString cmd;\r
+                       cmd.Format(_T("git.exe fetch %s"), remoteName);\r
+                       CProgressDlg progress;\r
+                       progress.m_GitCmd=cmd;\r
+                       progress.DoModal();\r
+                       Refresh();\r
+               }\r
+               break;\r
        case eCmd_AddRemote:\r
                {\r
                        CAddRemoteDlg(this).DoModal();\r
index f379dd6..f211b73 100644 (file)
@@ -68,7 +68,8 @@ public:
                eCmd_DeleteRemoteBranch,\r
                eCmd_DeleteTag,\r
                eCmd_ShowReflog,\r
-               eCmd_Diff\r
+               eCmd_Diff,\r
+               eCmd_Fetch\r
        };\r
 \r
        enum eCol\r