From: Johan 't Hart Date: Fri, 26 Jun 2009 21:04:34 +0000 (+0200) Subject: BrowseRefs: Fetch context menu item added. X-Git-Url: http://git.sourceforge.jp/view?p=tortoisegit%2FTortoiseGitJp.git;a=commitdiff_plain;h=3b48138eb3256b56f8e6da4f565f02ec3e6c8cdb BrowseRefs: Fetch context menu item added. --- diff --git a/src/TortoiseProc/BrowseRefsDlg.cpp b/src/TortoiseProc/BrowseRefsDlg.cpp index e1a5460..989284a 100644 --- a/src/TortoiseProc/BrowseRefsDlg.cpp +++ b/src/TortoiseProc/BrowseRefsDlg.cpp @@ -543,14 +543,19 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh popupMenu.CreatePopupMenu(); bool bAddSeparator = false; + CString remoteName; + if(selectedLeafs.size()==1) { bAddSeparator = true; - bool bShowReflogOption = false; - bool bShowDeleteBranchOption = false; - bool bShowDeleteTagOption = false; - bool bShowDeleteRemoteBranchOption = false; + bool bShowReflogOption = false; + bool bShowDeleteBranchOption = false; + bool bShowDeleteTagOption = false; + bool bShowDeleteRemoteBranchOption = false; + bool bShowFetchOption = false; + + CString fetchFromCmd; if(selectedLeafs[0]->IsFrom(L"refs/heads")) { @@ -561,6 +566,13 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh { bShowReflogOption = true; bShowDeleteRemoteBranchOption = true; + bShowFetchOption = true; + + int dummy = 0;//Needed for tokenize + remoteName = selectedLeafs[0]->GetRefName(); + remoteName = remoteName.Mid(13); + remoteName = remoteName.Tokenize(L"/", dummy); + fetchFromCmd.Format(L"Fetch from %s", remoteName); } else if(selectedLeafs[0]->IsFrom(L"refs/tags")) { @@ -569,6 +581,7 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh popupMenu.AppendMenuIcon(eCmd_ViewLog, L"Show Log", IDI_LOG); if(bShowReflogOption) popupMenu.AppendMenuIcon(eCmd_ShowReflog, L"Show Reflog", IDI_LOG); + if(bShowFetchOption) popupMenu.AppendMenuIcon(eCmd_Fetch, fetchFromCmd, IDI_PULL); if(bShowDeleteTagOption) popupMenu.AppendMenuIcon(eCmd_DeleteTag, L"Delete Tag", IDI_DELETE); if(bShowDeleteBranchOption) popupMenu.AppendMenuIcon(eCmd_DeleteBranch, L"Delete Branch", IDI_DELETE); if(bShowDeleteRemoteBranchOption) popupMenu.AppendMenuIcon(eCmd_DeleteRemoteBranch, L"Delete Remote Branch", IDI_DELETE); @@ -595,6 +608,19 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh { // popupMenu.AppendMenu(MF_STRING,eCmd_AddRemote,L"Add Remote"); popupMenu.AppendMenuIcon(eCmd_ManageRemotes, L"Manage Remotes", IDI_SETTINGS); + if(selectedLeafs.empty()) + { + int dummy = 0;//Needed for tokenize + remoteName = pTree->GetRefName(); + remoteName = remoteName.Mid(13); + remoteName = remoteName.Tokenize(L"/", dummy); + if(!remoteName.IsEmpty()) + { + CString fetchFromCmd; + fetchFromCmd.Format(L"Fetch from %s", remoteName); + popupMenu.AppendMenuIcon(eCmd_Fetch, fetchFromCmd, IDI_PULL); + } + } } else if(pTree->IsFrom(L"refs/heads")) popupMenu.AppendMenuIcon(eCmd_CreateBranch, L"Create Branch", IDI_COPY); @@ -635,6 +661,16 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh refLogDlg.DoModal(); } break; + case eCmd_Fetch: + { + CString cmd; + cmd.Format(_T("git.exe fetch %s"), remoteName); + CProgressDlg progress; + progress.m_GitCmd=cmd; + progress.DoModal(); + Refresh(); + } + break; case eCmd_AddRemote: { CAddRemoteDlg(this).DoModal(); diff --git a/src/TortoiseProc/BrowseRefsDlg.h b/src/TortoiseProc/BrowseRefsDlg.h index f379dd6..f211b73 100644 --- a/src/TortoiseProc/BrowseRefsDlg.h +++ b/src/TortoiseProc/BrowseRefsDlg.h @@ -68,7 +68,8 @@ public: eCmd_DeleteRemoteBranch, eCmd_DeleteTag, eCmd_ShowReflog, - eCmd_Diff + eCmd_Diff, + eCmd_Fetch }; enum eCol