OSDN Git Service

Add diff two commits command at shell menu
authorFrank Li <lznuaa@gmail.com>
Sat, 23 Jan 2010 04:36:42 +0000 (12:36 +0800)
committerFrank Li <lznuaa@gmail.com>
Sat, 23 Jan 2010 04:36:42 +0000 (12:36 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/TortoiseShell/ContextMenu.cpp
src/TortoiseShell/Globals.h
src/TortoiseShell/ShellExt.h
src/TortoiseShell/resource.h
src/TortoiseShell/resourceshell.rc

index f4c5614..25fe5b0 100644 (file)
@@ -54,7 +54,7 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
 //     { ShellMenuUpdate,                                      MENUSUBUPDATE,                  IDI_UPDATE,                             IDS_MENUUPDATE,                         IDS_MENUDESCUPDATE,                             \r
 //     ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
 \r
-       { ShellSeparator, ITEMIS_GITSVN, 0, 0, 0, 0, 0, 0, 0},\r
+       { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0},\r
 \r
        { ShellMenuCommit,                                              MENUCOMMIT,                     IDI_COMMIT,                             IDS_MENUCOMMIT,                         IDS_MENUDESCCOMMIT,\r
        ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
@@ -73,9 +73,13 @@ CShellExt::MenuInfo CShellExt::menuInfo[] =
        { ShellMenuDiff,                                                MENUDIFF,                       IDI_DIFF,                               IDS_MENUDIFF,                           IDS_MENUDESCDIFF,\r
        ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_FOLDER|ITEMIS_NORMAL, ITEMIS_TWO, 0, 0, 0, 0, 0 },\r
 \r
-       { ShellMenuPrevDiff,                                    MENUPREVDIFF,                   IDI_DIFF,                               IDS_MENUPREVDIFF,                       IDS_MENUDESCPREVDIFF,\r
+       { ShellMenuPrevDiff,                                    MENUPREVDIFF,                   IDI_DIFF,                       IDS_MENUPREVDIFF,                       IDS_MENUDESCPREVDIFF,\r
        ITEMIS_INSVN|ITEMIS_ONLYONE, ITEMIS_FOLDER, 0, 0, 0, 0, 0, 0 },\r
 \r
+       { ShellMenuDiffTwo,                                             MENUDIFFTWO,            IDI_DIFF,                               IDS_MENUDIFFTWO,                        IDS_MENUDESCDIFFTWO,\r
+       ITEMIS_INSVN, 0, ITEMIS_FOLDERINSVN, 0, 0, 0, 0, 0 },\r
+\r
+       { ShellSeparator, 0, 0, 0, 0, 0, 0, 0, 0},\r
 //     { ShellMenuUrlDiff,                                             MENUURLDIFF,            IDI_DIFF,                               IDS_MENUURLDIFF,                        IDS_MENUDESCURLDIFF,\r
 //     ITEMIS_INSVN|ITEMIS_ONLYONE|ITEMIS_EXTENDED, 0, ITEMIS_FOLDERINSVN|ITEMIS_EXTENDED|ITEMIS_ONLYONE, 0, 0, 0, 0, 0 },\r
 \r
@@ -1334,8 +1338,9 @@ STDMETHODIMP CShellExt::QueryContextMenu(HMENU hMenu,
                        {\r
                                if (bInsertMenu)\r
                                {\r
+                                       bool bIsTop = ((topmenu & menuInfo[menuIndex].menuID) != 0);\r
                                        // insert a separator\r
-                                       if ((bMenuEntryAdded)&&(bAddSeparator))\r
+                                       if ((bMenuEntryAdded)&&(bAddSeparator)&&(!bIsTop))\r
                                        {\r
                                                bAddSeparator = false;\r
                                                bMenuEntryAdded = false;\r
@@ -1741,6 +1746,14 @@ STDMETHODIMP CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
                                        svnCmd += folder_;\r
                                svnCmd += _T("\"");\r
                                break;\r
+                       case ShellMenuDiffTwo:\r
+                               svnCmd += _T("diffcommits /path:\"");\r
+                               if (files_.size() == 1)\r
+                                       svnCmd += files_.front();\r
+                               else\r
+                                       svnCmd += folder_;\r
+                               svnCmd += _T("\"");\r
+                               break;\r
                        case ShellMenuDropCopyAdd:\r
                                tempfile = WriteFileListToTempFile();\r
                                svnCmd += _T("dropcopyadd /pathfile:\"");\r
index b06314b..36c01f2 100644 (file)
@@ -68,6 +68,7 @@
 #define MENUSUBADD                     0x0000800000000000\r
 #define MENUSUBSYNC                    0x0001000000000000\r
 #define MENUSTASHPOP           0x0002000000000000\r
+#define MENUDIFFTWO                    0x0004000000000000\r
 \r
 #define MENUSETTINGS           0x2000000000000000\r
 #define MENUHELP                       0x4000000000000000\r
index adefbf2..0ecd319 100644 (file)
@@ -115,6 +115,7 @@ protected:
                ShellMenuDiff,\r
                ShellMenuPrevDiff,\r
                ShellMenuUrlDiff,\r
+               ShellMenuDiffTwo,\r
                ShellMenuDropCopyAdd,\r
                ShellMenuDropMoveAdd,\r
                ShellMenuDropMove,\r
index fa6680f..0052f87 100644 (file)
 #define IDS_MENUSTASHPOP                341\r
 #define IDS_MENUSVNIGNORE               342\r
 #define IDS_MENUSVNIGNORE_DESC          343\r
+#define IDS_MENUDIFFTWO                                        344\r
+#define IDS_MENUDESCDIFFTWO                            345\r
 #define IDC_REVISION                    1001\r
 #define IDC_HEAD_HASH                   1001\r
 #define IDC_LOCKED                      1002\r
index f7d910a..f6f22aa 100644 (file)
@@ -341,6 +341,8 @@ BEGIN
     IDS_MENUUNDOADD         "Undo Add.."\r
     IDS_MENUDESCUNDOADD     "Reverts an addition to version control"\r
     IDS_MENUPREVDIFF        "&Diff with previous version"\r
+       IDS_MENUDIFFTWO                 "Diff Two Commits"\r
+       IDS_MENUDESCDIFFTWO             "Diffs two any commits"\r
     IDS_MENUDESCPREVDIFF    "Diffs the working copy file with the one before the last commit."\r
     IDS_COLTITLEMIMETYPE    "Git mime-type"\r
     IDS_COLDESCMIMETYPE     "Shows the mime type of the versioned file"\r