OSDN Git Service

BrowseRefs: Show context menu icons
authorJohan 't Hart <johanthart@gmail.com>
Tue, 9 Jun 2009 20:23:27 +0000 (22:23 +0200)
committerJohan 't Hart <johanthart@gmail.com>
Tue, 9 Jun 2009 20:23:27 +0000 (22:23 +0200)
src/TortoiseProc/BrowseRefsDlg.cpp

index 04f8524..0236410 100644 (file)
@@ -11,6 +11,7 @@
 #include "SinglePropSheetDlg.h"\r
 #include "MessageBox.h"\r
 #include "RefLogDlg.h"\r
 #include "SinglePropSheetDlg.h"\r
 #include "MessageBox.h"\r
 #include "RefLogDlg.h"\r
+#include "IconMenu.h"\r
 \r
 void SetSortArrow(CListCtrl * control, int nColumn, bool bAscending)\r
 {\r
 \r
 void SetSortArrow(CListCtrl * control, int nColumn, bool bAscending)\r
 {\r
@@ -507,17 +508,22 @@ void CBrowseRefsDlg::OnContextMenu_ListRefLeafs(CPoint point)
 \r
 void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPShadowTree& selectedLeafs)\r
 {\r
 \r
 void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPShadowTree& selectedLeafs)\r
 {\r
-       CMenu popupMenu;\r
+       CIconMenu popupMenu;\r
        popupMenu.CreatePopupMenu();\r
 \r
        popupMenu.CreatePopupMenu();\r
 \r
+       bool bAddSeparator = false;\r
        if(selectedLeafs.size()==1)\r
        {\r
        if(selectedLeafs.size()==1)\r
        {\r
+               bAddSeparator = true;\r
+\r
                bool bShowReflogOption = false;\r
                bool bShowReflogOption = false;\r
-               popupMenu.AppendMenu(MF_STRING,eCmd_ViewLog,L"View log");\r
+               bool bShowDeleteBranchOption = false;\r
+               bool bShowDeleteTagOption = false;\r
+\r
                if(selectedLeafs[0]->IsFrom(L"refs/heads"))\r
                {\r
                if(selectedLeafs[0]->IsFrom(L"refs/heads"))\r
                {\r
-                       popupMenu.AppendMenu(MF_STRING,eCmd_DeleteBranch,L"Delete Branch");\r
                        bShowReflogOption = true;\r
                        bShowReflogOption = true;\r
+                       bShowDeleteBranchOption = true;\r
                }\r
                else if(selectedLeafs[0]->IsFrom(L"refs/remotes"))\r
                {\r
                }\r
                else if(selectedLeafs[0]->IsFrom(L"refs/remotes"))\r
                {\r
@@ -525,12 +531,13 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh
                }\r
                else if(selectedLeafs[0]->IsFrom(L"refs/tags"))\r
                {\r
                }\r
                else if(selectedLeafs[0]->IsFrom(L"refs/tags"))\r
                {\r
-                       popupMenu.AppendMenu(MF_STRING,eCmd_DeleteTag,L"Delete Tag");\r
+                       bShowDeleteTagOption = true;\r
                }\r
 \r
                }\r
 \r
-               if(bShowReflogOption)\r
-                       popupMenu.AppendMenu(MF_STRING, eCmd_ShowReflog, L"Show Reflog");\r
-\r
+                                                                       popupMenu.AppendMenuIcon(eCmd_ViewLog, L"Show Log", IDI_LOG);\r
+               if(bShowReflogOption)           popupMenu.AppendMenuIcon(eCmd_ShowReflog, L"Show Reflog", IDI_LOG);\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
 \r
 \r
 \r
 \r
 \r
 \r
@@ -539,19 +546,20 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh
 //                     return;\r
        }\r
 \r
 //                     return;\r
        }\r
 \r
+       if(bAddSeparator) popupMenu.AppendMenu(MF_SEPARATOR);\r
+\r
        if(hTreePos!=NULL)\r
        {\r
                CShadowTree* pTree=(CShadowTree*)m_RefTreeCtrl.GetItemData(hTreePos);\r
                if(pTree->IsFrom(L"refs/remotes"))\r
                {\r
 //                     popupMenu.AppendMenu(MF_STRING,eCmd_AddRemote,L"Add Remote");\r
        if(hTreePos!=NULL)\r
        {\r
                CShadowTree* pTree=(CShadowTree*)m_RefTreeCtrl.GetItemData(hTreePos);\r
                if(pTree->IsFrom(L"refs/remotes"))\r
                {\r
 //                     popupMenu.AppendMenu(MF_STRING,eCmd_AddRemote,L"Add Remote");\r
-                       if(!m_cmdPath.IsEmpty())\r
-                               popupMenu.AppendMenu(MF_STRING,eCmd_ManageRemotes,L"Manage Remotes");\r
+                       popupMenu.AppendMenuIcon(eCmd_ManageRemotes, L"Manage Remotes", IDI_SETTINGS);\r
                }\r
                else if(pTree->IsFrom(L"refs/heads"))\r
                }\r
                else if(pTree->IsFrom(L"refs/heads"))\r
-                       popupMenu.AppendMenu(MF_STRING,eCmd_CreateBranch,L"Create Branch");\r
+                       popupMenu.AppendMenuIcon(eCmd_CreateBranch, L"Create Branch", IDI_COPY);\r
                else if(pTree->IsFrom(L"refs/tags"))\r
                else if(pTree->IsFrom(L"refs/tags"))\r
-                       popupMenu.AppendMenu(MF_STRING,eCmd_CreateTag,L"Create Tag");\r
+                       popupMenu.AppendMenuIcon(eCmd_CreateTag, L"Create Tag", IDI_TAG);\r
        }\r
 \r
 \r
        }\r
 \r
 \r
@@ -594,7 +602,7 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh
                break;\r
        case eCmd_ManageRemotes:\r
                {\r
                break;\r
        case eCmd_ManageRemotes:\r
                {\r
-                       CSinglePropSheetDlg(L"Git Remote Settings",new CSettingGitRemote(m_cmdPath),this).DoModal();\r
+                       CSinglePropSheetDlg(L"Git Remote Settings",new CSettingGitRemote(g_Git.m_CurrentDir),this).DoModal();\r
 //                     CSettingGitRemote W_Remotes(m_cmdPath);\r
 //                     W_Remotes.DoModal();\r
                        Refresh();\r
 //                     CSettingGitRemote W_Remotes(m_cmdPath);\r
 //                     W_Remotes.DoModal();\r
                        Refresh();\r