OSDN Git Service

5a89063708d521652ca590f8a1339ee306b137b5
[tortoisegit/TortoiseGitJp.git] / src / TortoiseGitBlame / TortoiseGitBlameView.h
1 \r
2 // TortoiseGitBlameView.h : interface of the CTortoiseGitBlameView class\r
3 //\r
4 \r
5 \r
6 #pragma once\r
7 \r
8 #include "Scintilla.h"\r
9 #include "SciLexer.h"\r
10 #include "registry.h"\r
11 #include "SciEdit.h"\r
12 \r
13 #include "GitBlameLogList.h"\r
14 #include "Balloon.h"\r
15 \r
16 const COLORREF black = RGB(0,0,0);\r
17 const COLORREF white = RGB(0xff,0xff,0xff);\r
18 const COLORREF red = RGB(0xFF, 0, 0);\r
19 const COLORREF offWhite = RGB(0xFF, 0xFB, 0xF0);\r
20 const COLORREF darkGreen = RGB(0, 0x80, 0);\r
21 const COLORREF darkBlue = RGB(0, 0, 0x80);\r
22 const COLORREF lightBlue = RGB(0xA6, 0xCA, 0xF0);\r
23 const int blockSize = 128 * 1024;\r
24 \r
25 #define BLAMESPACE 5\r
26 #define HEADER_HEIGHT 18\r
27 #define LOCATOR_WIDTH 10\r
28 \r
29 #define MAX_LOG_LENGTH 2000\r
30 \r
31 \r
32 #ifndef GET_X_LPARAM\r
33 #define GET_X_LPARAM(lp)                        ((int)(short)LOWORD(lp))\r
34 #endif\r
35 #ifndef GET_Y_LPARAM\r
36 #define GET_Y_LPARAM(lp)                        ((int)(short)HIWORD(lp))\r
37 #endif\r
38 \r
39 \r
40 class CTortoiseGitBlameView : public CView\r
41 {\r
42 protected: // create from serialization only\r
43         CTortoiseGitBlameView();\r
44         DECLARE_DYNCREATE(CTortoiseGitBlameView)\r
45 \r
46 // Attributes\r
47 public:\r
48         CTortoiseGitBlameDoc* GetDocument() const;\r
49 \r
50 // Operations\r
51 public:\r
52 \r
53 // Overrides\r
54 public:\r
55         virtual void OnDraw(CDC* pDC);  // overridden to draw this view\r
56         virtual BOOL PreCreateWindow(CREATESTRUCT& cs);\r
57 protected:\r
58         virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);\r
59         virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);\r
60         virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);\r
61 \r
62 // Implementation\r
63 public:\r
64         virtual ~CTortoiseGitBlameView();\r
65 #ifdef _DEBUG\r
66         virtual void AssertValid() const;\r
67         virtual void Dump(CDumpContext& dc) const;\r
68 #endif\r
69 \r
70 protected:\r
71 \r
72 // Generated message map functions\r
73 protected:\r
74         BOOL PreTranslateMessage(MSG* pMsg);\r
75         afx_msg void OnEditFind();\r
76         afx_msg void OnEditGoto();\r
77         afx_msg void OnFilePrintPreview();\r
78         afx_msg void OnRButtonUp(UINT nFlags, CPoint point);\r
79         afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);\r
80         afx_msg int OnCreate(LPCREATESTRUCT lpcs);\r
81         afx_msg void OnSize(UINT nType, int cx, int cy);\r
82         afx_msg void OnSciPainted(NMHDR*, LRESULT*);\r
83         afx_msg void OnLButtonDown(UINT nFlags,CPoint point);\r
84         afx_msg void OnRButtonDown(UINT nFlags,CPoint point){OnLButtonDown(nFlags,point);CView::OnRButtonDown(nFlags,point);};\r
85         afx_msg void OnSciGetBkColor(NMHDR*, LRESULT*);\r
86         afx_msg void OnMouseHover(UINT nFlags, CPoint point);\r
87         afx_msg void OnMouseMove(UINT nFlags, CPoint point);\r
88     afx_msg LRESULT OnFindDialogMessage(WPARAM   wParam,   LPARAM   lParam);\r
89         DECLARE_MESSAGE_MAP()\r
90 \r
91     static UINT m_FindDialogMessage;\r
92 public:\r
93 \r
94         void UpdateInfo();\r
95         void FocusOn(GitRev *pRev);\r
96 \r
97         CSciEdit                        m_TextView;\r
98         CBalloon                        m_ToolTip;\r
99 \r
100         HINSTANCE hInstance;\r
101         HINSTANCE hResource;\r
102         HWND currentDialog;\r
103         HWND wMain;\r
104         HWND m_wEditor;\r
105         HWND wBlame;\r
106         HWND wHeader;\r
107         HWND wLocator;\r
108         HWND hwndTT;\r
109 \r
110         BOOL bIgnoreEOL;\r
111         BOOL bIgnoreSpaces;\r
112         BOOL bIgnoreAllSpaces;\r
113 \r
114         BOOL m_bShowAuthor;\r
115         BOOL m_bShowDate;\r
116 \r
117 \r
118         LRESULT SendEditor(UINT Msg, WPARAM wParam=0, LPARAM lParam=0);\r
119 \r
120         void GetRange(int start, int end, char *text);\r
121 \r
122         void SetTitle();\r
123         BOOL OpenFile(const char *fileName);\r
124         BOOL OpenLogFile(const char *fileName);\r
125 \r
126         void Command(int id);\r
127         void Notify(SCNotification *notification);\r
128 \r
129         void SetAStyle(int style, COLORREF fore, COLORREF back=::GetSysColor(COLOR_WINDOW), int size=-1, CString *face=0);\r
130 \r
131         void InitialiseEditor();\r
132     void InitSize();\r
133         LONG GetBlameWidth();\r
134         void DrawBlame(HDC hDC);\r
135         void DrawHeader(HDC hDC);\r
136         void DrawLocatorBar(HDC hDC);\r
137         void StartSearch();\r
138         void CopySelectedLogToClipboard();\r
139         void BlamePreviousRevision();\r
140         void DiffPreviousRevision();\r
141         void ShowLog();\r
142         bool DoSearch(CString what, DWORD flags);\r
143         bool GotoLine(long line);\r
144         bool ScrollToLine(long line);\r
145         void GotoLineDlg();\r
146         static INT_PTR CALLBACK GotoDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);\r
147 \r
148         void SetSelectedLine(LONG line) { m_SelectedLine=line;};\r
149 \r
150         LONG                                            m_mouserev;\r
151         LONG                                            m_MouseLine;\r
152         LONG                                            m_selectedrev;\r
153         LONG                                            m_selectedorigrev;\r
154         CString                                         m_SelectedHash;\r
155         CString                                         m_selecteddate;\r
156         static long                                     m_gotoline;\r
157         long                                            m_lowestrev;\r
158         long                                            m_highestrev;\r
159         bool                                            m_colorage;\r
160 \r
161 //      std::vector<bool>               m_Mergelines;\r
162         std::vector<LONG>               m_ID;\r
163         std::vector<LONG>               m_LineNum;\r
164 //      std::vector<LONG>               m_Origrevs;\r
165         std::vector<CString>    m_Dates;\r
166         std::vector<CString>    m_Authors;\r
167         std::vector<CString>    m_CommitHash;\r
168 \r
169         std::map<CString,GitRev> m_NoListCommit;\r
170 \r
171 //      std::vector<CString>    m_Paths;\r
172 //      std::map<LONG, CString> logmessages;\r
173         char                                            m_szTip[MAX_LOG_LENGTH*2+6];\r
174         wchar_t                                         m_wszTip[MAX_LOG_LENGTH*2+6];\r
175         void StringExpand(LPSTR str);\r
176         void StringExpand(LPWSTR str);\r
177         BOOL                                            ttVisible;\r
178 \r
179         CLogDataVector *                GetLogData();\r
180 \r
181         BOOL m_bShowLine;\r
182 \r
183 protected:\r
184         void CreateFont();\r
185         void SetupLexer(CString filename);\r
186         void SetupCppLexer();\r
187         COLORREF InterColor(COLORREF c1, COLORREF c2, int Slider);\r
188         CString GetAppDirectory();\r
189         std::vector<COLORREF>           colors;\r
190         HFONT                                           m_font;\r
191         HFONT                                           m_italicfont;\r
192         LONG                                            m_blamewidth;\r
193         LONG                                            m_revwidth;\r
194         LONG                                            m_datewidth;\r
195         LONG                                            m_authorwidth;\r
196         LONG                                            m_pathwidth;\r
197         LONG                                            m_linewidth;\r
198         LONG                                            m_SelectedLine; ///< zero-based\r
199 \r
200         COLORREF                                        m_mouserevcolor;\r
201         COLORREF                                        m_mouseauthorcolor;\r
202         COLORREF                                        m_selectedrevcolor;\r
203         COLORREF                                        m_selectedauthorcolor;\r
204         COLORREF                                        m_windowcolor;\r
205         COLORREF                                        m_textcolor;\r
206         COLORREF                                        m_texthighlightcolor;\r
207 \r
208         LRESULT                                         m_directFunction;\r
209         LRESULT                                         m_directPointer;\r
210         FINDREPLACE                                     fr;\r
211         TCHAR                                           szFindWhat[80];\r
212 \r
213         CRegStdWORD                                     m_regOldLinesColor;\r
214         CRegStdWORD                                     m_regNewLinesColor;\r
215 \r
216         CGitBlameLogList * GetLogList();\r
217 \r
218     CFindReplaceDialog          *m_pFindDialog;\r
219 \r
220         DWORD                                           m_DateFormat;   // DATE_SHORTDATE or DATE_LONGDATE\r
221 };\r
222 \r
223 #ifndef _DEBUG  // debug version in TortoiseGitBlameView.cpp\r
224 inline CTortoiseGitBlameDoc* CTortoiseGitBlameView::GetDocument() const\r
225    { return reinterpret_cast<CTortoiseGitBlameDoc*>(m_pDocument); }\r
226 #endif\r
227 \r