OSDN Git Service

Add work dir copy at log dialog
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / GitLogListBase.h
index 47d78a2..97ca779 100644 (file)
@@ -53,7 +53,10 @@ enum LISTITEMSTATES_MINE {
 #define LOGFILTER_REGEX           6\r
 #define LOGFILTER_BUGID    7\r
 \r
-typedef void CALLBACK_PROCESS(void * data, int progress);\r
+//typedef void CALLBACK_PROCESS(void * data, int progress);\r
+#define MSG_LOADED                             (WM_USER+110)\r
+#define MSG_LOAD_PERCENTAGE            (WM_USER+111)\r
+#define MSG_REFLOG_CHANGED             (WM_USER+112)\r
 \r
 class CGitLogListBase : public CHintListCtrl\r
 {\r
@@ -64,11 +67,20 @@ public:
        virtual ~CGitLogListBase();\r
        volatile LONG           m_bNoDispUpdates;\r
        BOOL m_IsIDReplaceAction;\r
+       BOOL m_IsOldFirst;\r
+       BOOL m_IsRebaseReplaceGraph;\r
+\r
+       void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);\r
+       void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);\r
+\r
        BOOL m_bStrictStopped;\r
        BOOL m_bShowBugtraqColumn;\r
        BOOL m_bSearchIndex;\r
        BOOL m_bCancelled;\r
+       unsigned __int64 m_ContextMenuMask;\r
+\r
        bool                            m_hasWC;\r
+       bool                            m_bShowWC;\r
        GitRev                          m_wcRev;\r
        volatile LONG           m_bThreadRunning;\r
        CLogCache                       m_LogCache;\r
@@ -125,18 +137,29 @@ public:
        ID_CREATE_BRANCH,\r
        ID_CREATE_TAG,\r
        ID_SWITCHTOREV,\r
-       ID_RESET\r
+       ID_RESET,\r
+       ID_REBASE_PICK,\r
+       ID_REBASE_EDIT,\r
+       ID_REBASE_SQUASH,\r
+       ID_REBASE_SKIP,\r
+       ID_COMBINE_COMMIT,\r
+       ID_STASH_APPLY,\r
+       ID_REFLOG_DEL,\r
+       ID_REBASE_TO_VERSION,\r
+       ID_CREATE_PATCH,\r
+       ID_DELETE,\r
        };\r
+       inline unsigned __int64 GetContextMenuBit(int i){ return ((unsigned __int64 )0x1)<<i ;}\r
        void InsertGitColumn();\r
        void ResizeAllListCtrlCols();\r
        void CopySelectionToClipBoard(bool hashonly=FALSE);\r
        void DiffSelectedRevWithPrevious();\r
        bool IsSelectionContinuous();\r
        int  FillGitShortLog();\r
-       int  FillGitLog(CTGitPath *path,int infomask=CGit::     LOG_INFO_STAT| CGit::LOG_INFO_FILESTATE);\r
+       int  FillGitLog(CTGitPath *path,int infomask=CGit::     LOG_INFO_STAT| CGit::LOG_INFO_FILESTATE | CGit::LOG_INFO_SHOW_MERGEDFILE,CString *from=NULL,CString *to=NULL);\r
 \r
        inline int ShownCountWithStopped() const { return (int)m_arShownList.GetCount() + (m_bStrictStopped ? 1 : 0); }\r
-       int FetchLogAsync(CALLBACK_PROCESS *proc=NULL, void * data=NULL);\r
+       int FetchLogAsync(void * data=NULL);\r
        CPtrArray                       m_arShownList;\r
        void Refresh();\r
        void RecalculateShownList(CPtrArray * pShownlist);\r
@@ -152,7 +175,7 @@ public:
        CTime                   m_To;\r
     \r
     CTGitPath           m_Path;\r
-    BOOL           m_bAllBranch;\r
+    int                                        m_ShowMask;\r
 \r
        void                            GetTimeRange(CTime &oldest,CTime &latest);\r
        virtual void ContextMenuAction(int cmd,int FirstSelect, int LastSelect)=0;\r
@@ -161,35 +184,52 @@ public:
                m_HashMap.clear();\r
                g_Git.GetMapHashToFriendName(m_HashMap);\r
                m_CurrentBranch=g_Git.GetCurrentBranch();\r
+               this->m_HeadHash=g_Git.GetHash(CString(_T("HEAD"))).Left(40);\r
        }\r
        void TerminateThread()\r
        {\r
                if(this->m_LoadingThread)\r
                        AfxTermThread((HINSTANCE)m_LoadingThread->m_hThread);\r
        };\r
+\r
+       bool IsInWorkingThread()\r
+       {\r
+               return (AfxGetThread() == m_LoadingThread);\r
+       }\r
+\r
+       void SetStartRef(const CString& StartRef)\r
+       {\r
+               m_StartRef=StartRef;\r
+       }\r
+\r
+       CString GetStartRef() const {return m_StartRef;}\r
+\r
        \r
        volatile bool           m_bExitThread;\r
        CWinThread*                     m_LoadingThread;\r
 protected:\r
        DECLARE_MESSAGE_MAP()\r
        afx_msg void OnDestroy();\r
-       afx_msg void OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
-       afx_msg void OnLvnGetdispinfoLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
+       virtual afx_msg void OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
+       virtual afx_msg void OnLvnGetdispinfoLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
        afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);\r
        afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);\r
+       afx_msg LRESULT OnLoad(WPARAM wParam, LPARAM lParam);\r
        void OnNMDblclkLoglist(NMHDR * /*pNMHDR*/, LRESULT *pResult);\r
        afx_msg void OnLvnOdfinditemLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
        void PreSubclassWindow();\r
        virtual BOOL PreTranslateMessage(MSG* pMsg);\r
        static UINT LogThreadEntry(LPVOID pVoid);\r
        UINT LogThread();\r
+       void FetchLastLogInfo();\r
+       void FetchFullLogInfo(CString &from, CString &to);\r
        void FillBackGround(HDC hdc, int Index,CRect &rect);\r
        void DrawTagBranch(HDC,CRect &rect,INT_PTR index);\r
        void DrawGraph(HDC,CRect &rect,INT_PTR index);\r
 \r
        BOOL GetShortName(CString ref, CString &shortname,CString prefix);\r
        void paintGraphLane(HDC hdc,int laneHeight, int type, int x1, int x2,\r
-                                      const COLORREF& col,int top) ; \r
+                                      const COLORREF& col,const COLORREF& activeColor, int top) ; \r
        void DrawLine(HDC hdc, int x1, int y1, int x2, int y2){::MoveToEx(hdc,x1,y1,NULL);::LineTo(hdc,x2,y2);}\r
        /**\r
        * Save column widths to the registry\r
@@ -198,7 +238,7 @@ protected:
 \r
        BOOL IsEntryInDateRange(int i);\r
 \r
-\r
+       int GetHeadIndex();\r
 \r
        bool                            m_bFilterWithRegex;\r
 \r
@@ -216,7 +256,6 @@ protected:
        CRegDWORD                       m_regMaxBugIDColWidth;\r
        int                                     m_nSearchIndex;\r
        \r
-       CALLBACK_PROCESS    *m_ProcCallBack;\r
        void                            *m_ProcData;\r
        CStoreSelection*        m_pStoreSelection;\r
        MAP_HASH_NAME           m_HashMap;\r
@@ -224,9 +263,15 @@ protected:
        CColors                         m_Colors;\r
 \r
        CString                         m_CurrentBranch;\r
+       CString                         m_HeadHash;\r
+\r
+       CString                         m_StartRef; //Ref of the top-commit\r
        \r
+       CString                         m_ColumnRegKey;\r
+\r
        COLORREF                        m_LineColors[Lanes::COLORS_NUM];\r
        DWORD                           m_DateFormat;   // DATE_SHORTDATE or DATE_LONGDATE\r
+       bool                            m_bRelativeTimes;       // Show relative times\r
 };\r
 \r
 \r