OSDN Git Service

BrowseRefs: Show context menu icons
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / BrowseRefsDlg.cpp
index ab3d3f7..0236410 100644 (file)
@@ -11,6 +11,7 @@
 #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
@@ -96,6 +97,8 @@ BOOL CBrowseRefsDlg::OnInitDialog()
 \r
        Refresh(m_initialRef);\r
 \r
+       EnableSaveRestore(L"BrowseRefs");\r
+\r
 \r
        m_ListRefLeafs.SetFocus();\r
        return FALSE;\r
@@ -505,17 +508,22 @@ void CBrowseRefsDlg::OnContextMenu_ListRefLeafs(CPoint point)
 \r
 void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPShadowTree& selectedLeafs)\r
 {\r
-       CMenu popupMenu;\r
+       CIconMenu popupMenu;\r
        popupMenu.CreatePopupMenu();\r
 \r
+       bool bAddSeparator = false;\r
        if(selectedLeafs.size()==1)\r
        {\r
+               bAddSeparator = true;\r
+\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
-                       popupMenu.AppendMenu(MF_STRING,eCmd_DeleteBranch,L"Delete Branch");\r
                        bShowReflogOption = true;\r
+                       bShowDeleteBranchOption = true;\r
                }\r
                else if(selectedLeafs[0]->IsFrom(L"refs/remotes"))\r
                {\r
@@ -523,12 +531,13 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh
                }\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
-               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
@@ -537,19 +546,20 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh
 //                     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(!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
-                       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
-                       popupMenu.AppendMenu(MF_STRING,eCmd_CreateTag,L"Create Tag");\r
+                       popupMenu.AppendMenuIcon(eCmd_CreateTag, L"Create Tag", IDI_TAG);\r
        }\r
 \r
 \r
@@ -592,7 +602,7 @@ void CBrowseRefsDlg::ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPSh
                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