OSDN Git Service

BrowseRefs: Initial branch selection also possible with partial ref-name
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / BrowseRefsDlg.h
index b66de68..6a529b4 100644 (file)
@@ -12,7 +12,7 @@ public:
 \r
        CShadowTree():m_hTree(NULL),m_pParent(NULL){}\r
        \r
-       CShadowTree*    GetNextSub(CString& nameLeft);\r
+       CShadowTree*    GetNextSub(CString& nameLeft, bool bCreateIfNotExist);\r
 \r
        bool                    IsLeaf()const {return m_ShadowTree.empty();}\r
        CString                 GetRefName()const\r
@@ -26,9 +26,12 @@ public:
                return wcsncmp(GetRefName(),from,wcslen(from))==0;\r
        }\r
 \r
+       CShadowTree*    FindLeaf(CString partialRefName);\r
+\r
        CString                 m_csRefName;\r
        CString                 m_csRefHash;\r
        CString                 m_csDate;\r
+       CString                 m_csDate_Iso8601;\r
        CString                 m_csAuthor;\r
        CString                 m_csSubject;\r
 \r
@@ -37,6 +40,7 @@ public:
        TShadowTreeMap  m_ShadowTree;\r
        CShadowTree*    m_pParent;\r
 };\r
+typedef std::vector<CShadowTree*> VectorPShadowTree;\r
 \r
 class CBrowseRefsDlg : public CResizableStandAloneDialog\r
 {\r
@@ -52,7 +56,17 @@ public:
                eCmd_AddRemote,\r
                eCmd_ManageRemotes,\r
                eCmd_CreateBranch,\r
-               eCmd_CreateTag\r
+               eCmd_CreateTag,\r
+               eCmd_DeleteBranch,\r
+               eCmd_DeleteTag\r
+       };\r
+\r
+       enum eCol\r
+       {\r
+               eCol_Name,\r
+               eCol_Date,\r
+               eCol_Msg,\r
+               eCol_Hash\r
        };\r
 \r
 // Dialog Data\r
@@ -66,15 +80,22 @@ public:
        afx_msg void OnBnClickedOk();\r
        virtual BOOL OnInitDialog();\r
 \r
-       void                    Refresh();\r
+       CString                 GetSelectedRef(bool onlyIfLeaf);\r
 \r
-       CShadowTree&    GetTreeNode(CString refName, CShadowTree* pTreePos=NULL);\r
+       void                    Refresh(CString selectRef = CString());\r
+\r
+       CShadowTree&    GetTreeNode(CString refName, CShadowTree* pTreePos=NULL, bool bCreateIfNotExist=false);\r
 \r
        void                    FillListCtrlForTreeNode(HTREEITEM treeNode);\r
 \r
        void                    FillListCtrlForShadowTree(CShadowTree* pTree, CString refNamePrefix, bool isFirstLevel);\r
 \r
-       bool                    SelectRef(CString refName);\r
+       bool                    SelectRef(CString refName, bool bExactMatch);\r
+\r
+       bool                    ConfirmDeleteRef(CString completeRefName);\r
+       bool                    DoDeleteRef(CString completeRefName, bool bForce);\r
+\r
+       CString                 GetFullRefName(CString partialRefName);\r
 \r
 private:\r
        CString                 m_cmdPath;\r
@@ -82,6 +103,9 @@ private:
        CShadowTree             m_TreeRoot;\r
        CTreeCtrl               m_RefTreeCtrl;\r
        CListCtrl               m_ListRefLeafs;\r
+\r
+       int                             m_currSortCol;\r
+       bool                    m_currSortDesc;\r
        afx_msg void OnTvnSelchangedTreeRef(NMHDR *pNMHDR, LRESULT *pResult);\r
 public:\r
 \r
@@ -89,5 +113,17 @@ public:
 \r
        void            OnContextMenu_ListRefLeafs(CPoint point);\r
        void            OnContextMenu_RefTreeCtrl(CPoint point);\r
+\r
+       void            ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPShadowTree& selectedLeafs);\r
        virtual BOOL PreTranslateMessage(MSG* pMsg);\r
+       afx_msg void OnLvnColumnclickListRefLeafs(NMHDR *pNMHDR, LRESULT *pResult);\r
+       afx_msg void OnDestroy();\r
+       afx_msg void OnNMDblclkListRefLeafs(NMHDR *pNMHDR, LRESULT *pResult);\r
+\r
+\r
+public:\r
+       CString m_initialRef;\r
+       CString m_pickedRef;\r
+\r
+       static CString  PickRef(bool returnAsHash = false, CString initialRef = CString()); \r
 };\r