From e4f229e22e4908823a20caec2bd7d19e009e1cea Mon Sep 17 00:00:00 2001 From: Frank Li Date: Sat, 23 Jan 2010 12:36:42 +0800 Subject: [PATCH] Add diff two commits command at shell menu Signed-off-by: Frank Li --- src/TortoiseShell/ContextMenu.cpp | 19 ++++++++++++++++--- src/TortoiseShell/Globals.h | 1 + src/TortoiseShell/ShellExt.h | 1 + src/TortoiseShell/resource.h | 2 ++ src/TortoiseShell/resourceshell.rc | 2 ++ 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/TortoiseShell/ContextMenu.cpp b/src/TortoiseShell/ContextMenu.cpp index f4c5614..25fe5b0 100644 --- a/src/TortoiseShell/ContextMenu.cpp +++ b/src/TortoiseShell/ContextMenu.cpp @@ -54,7 +54,7 @@ CShellExt::MenuInfo CShellExt::menuInfo[] = // { ShellMenuUpdate, MENUSUBUPDATE, IDI_UPDATE, IDS_MENUUPDATE, IDS_MENUDESCUPDATE, // ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 }, - { ShellSeparator, ITEMIS_GITSVN, 0, 0, 0, 0, 0, 0, 0}, + { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0}, { ShellMenuCommit, MENUCOMMIT, IDI_COMMIT, IDS_MENUCOMMIT, IDS_MENUDESCCOMMIT, ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 }, @@ -73,9 +73,13 @@ CShellExt::MenuInfo CShellExt::menuInfo[] = { ShellMenuDiff, MENUDIFF, IDI_DIFF, IDS_MENUDIFF, IDS_MENUDESCDIFF, ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_FOLDER|ITEMIS_NORMAL, ITEMIS_TWO, 0, 0, 0, 0, 0 }, - { ShellMenuPrevDiff, MENUPREVDIFF, IDI_DIFF, IDS_MENUPREVDIFF, IDS_MENUDESCPREVDIFF, + { ShellMenuPrevDiff, MENUPREVDIFF, IDI_DIFF, IDS_MENUPREVDIFF, IDS_MENUDESCPREVDIFF, ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_FOLDER, 0, 0, 0, 0, 0, 0 }, + { ShellMenuDiffTwo, MENUDIFFTWO, IDI_DIFF, IDS_MENUDIFFTWO, IDS_MENUDESCDIFFTWO, + ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 }, + + { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0}, // { ShellMenuUrlDiff, MENUURLDIFF, IDI_DIFF, IDS_MENUURLDIFF, IDS_MENUDESCURLDIFF, // ITEMIS_INSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, 0, ITEMIS_FOLDERINSVN|ITEMIS_EXTENDED|ITEMIS_ONLYONE, 0, 0, 0, 0, 0 }, @@ -1334,8 +1338,9 @@ STDMETHODIMP CShellExt::QueryContextMenu(HMENU hMenu, { if (bInsertMenu) { + bool bIsTop = ((topmenu & menuInfo[menuIndex].menuID) != 0); // insert a separator - if ((bMenuEntryAdded)&&(bAddSeparator)) + if ((bMenuEntryAdded)&&(bAddSeparator)&&(!bIsTop)) { bAddSeparator = false; bMenuEntryAdded = false; @@ -1741,6 +1746,14 @@ STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi) svnCmd += folder_; svnCmd += _T("\""); break; + case ShellMenuDiffTwo: + svnCmd += _T("diffcommits /path:\""); + if (files_.size() == 1) + svnCmd += files_.front(); + else + svnCmd += folder_; + svnCmd += _T("\""); + break; case ShellMenuDropCopyAdd: tempfile = WriteFileListToTempFile(); svnCmd += _T("dropcopyadd /pathfile:\""); diff --git a/src/TortoiseShell/Globals.h b/src/TortoiseShell/Globals.h index b06314b..36c01f2 100644 --- a/src/TortoiseShell/Globals.h +++ b/src/TortoiseShell/Globals.h @@ -68,6 +68,7 @@ #define MENUSUBADD 0x0000800000000000 #define MENUSUBSYNC 0x0001000000000000 #define MENUSTASHPOP 0x0002000000000000 +#define MENUDIFFTWO 0x0004000000000000 #define MENUSETTINGS 0x2000000000000000 #define MENUHELP 0x4000000000000000 diff --git a/src/TortoiseShell/ShellExt.h b/src/TortoiseShell/ShellExt.h index adefbf2..0ecd319 100644 --- a/src/TortoiseShell/ShellExt.h +++ b/src/TortoiseShell/ShellExt.h @@ -115,6 +115,7 @@ protected: ShellMenuDiff, ShellMenuPrevDiff, ShellMenuUrlDiff, + ShellMenuDiffTwo, ShellMenuDropCopyAdd, ShellMenuDropMoveAdd, ShellMenuDropMove, diff --git a/src/TortoiseShell/resource.h b/src/TortoiseShell/resource.h index fa6680f..0052f87 100644 --- a/src/TortoiseShell/resource.h +++ b/src/TortoiseShell/resource.h @@ -206,6 +206,8 @@ #define IDS_MENUSTASHPOP 341 #define IDS_MENUSVNIGNORE 342 #define IDS_MENUSVNIGNORE_DESC 343 +#define IDS_MENUDIFFTWO 344 +#define IDS_MENUDESCDIFFTWO 345 #define IDC_REVISION 1001 #define IDC_HEAD_HASH 1001 #define IDC_LOCKED 1002 diff --git a/src/TortoiseShell/resourceshell.rc b/src/TortoiseShell/resourceshell.rc index f7d910a..f6f22aa 100644 --- a/src/TortoiseShell/resourceshell.rc +++ b/src/TortoiseShell/resourceshell.rc @@ -341,6 +341,8 @@ BEGIN IDS_MENUUNDOADD "Undo Add.." IDS_MENUDESCUNDOADD "Reverts an addition to version control" IDS_MENUPREVDIFF "&Diff with previous version" + IDS_MENUDIFFTWO "Diff Two Commits" + IDS_MENUDESCDIFFTWO "Diffs two any commits" IDS_MENUDESCPREVDIFF "Diffs the working copy file with the one before the last commit." IDS_COLTITLEMIMETYPE "Git mime-type" IDS_COLDESCMIMETYPE "Shows the mime type of the versioned file" -- 2.11.0