\r
#include "TortoiseGitBlameDoc.h"\r
#include "TortoiseGitBlameView.h"\r
+#include "MainFrm.h"\r
\r
#ifdef _DEBUG\r
#define new DEBUG_NEW\r
m_lowestrev = LONG_MAX;\r
m_highestrev = 0;\r
m_colorage = true;\r
+\r
+ m_bShowLine=true;\r
}\r
\r
CTortoiseGitBlameView::~CTortoiseGitBlameView()\r
m_TextView.ShowWindow( SW_SHOW);\r
//m_TextView.InsertText(_T("Abdadfasdf"));\r
m_wEditor = m_TextView.m_hWnd;\r
+ CreateFont();\r
+ InitialiseEditor();\r
return CView::OnCreate(lpcs);\r
}\r
\r
if (!pDoc)\r
return;\r
\r
+ DrawBlame(this->GetDC()->m_hDC);\r
// TODO: add draw code for native data here\r
}\r
\r
return TRUE;\r
}\r
\r
-void CTortoiseGitBlameView::SetAStyle(int style, COLORREF fore, COLORREF back, int size, const char *face) \r
+void CTortoiseGitBlameView::SetAStyle(int style, COLORREF fore, COLORREF back, int size, CString *face) \r
{\r
SendEditor(SCI_STYLESETFORE, style, fore);\r
SendEditor(SCI_STYLESETBACK, style, back);\r
if (size >= 1)\r
SendEditor(SCI_STYLESETSIZE, style, size);\r
if (face) \r
- SendEditor(SCI_STYLESETFONT, style, reinterpret_cast<LPARAM>(face));\r
+ SendEditor(SCI_STYLESETFONT, style, reinterpret_cast<LPARAM>(this->m_TextView.StringForControl(*face).GetBuffer()));\r
}\r
\r
void CTortoiseGitBlameView::InitialiseEditor() \r
{\r
-#if 0\r
- m_directFunction = SendMessage(m_wEditor, SCI_GETDIRECTFUNCTION, 0, 0);\r
- m_directPointer = SendMessage(m_wEditor, SCI_GETDIRECTPOINTER, 0, 0);\r
+\r
+ m_directFunction = ::SendMessage(m_wEditor, SCI_GETDIRECTFUNCTION, 0, 0);\r
+ m_directPointer = ::SendMessage(m_wEditor, SCI_GETDIRECTPOINTER, 0, 0);\r
// Set up the global default style. These attributes are used wherever no explicit choices are made.\r
- SetAStyle(STYLE_DEFAULT, black, white, (DWORD)CRegStdWORD(_T("Software\\TortoiseGit\\BlameFontSize"), 10), \r
- ((stdstring)(CRegStdString(_T("Software\\TortoiseGit\\BlameFontName"), _T("Courier New")))).c_str());\r
+ SetAStyle(STYLE_DEFAULT, \r
+ black, \r
+ white, \r
+ (DWORD)CRegStdWORD(_T("Software\\TortoiseGit\\BlameFontSize"), 10), \r
+ &CString(((stdstring)CRegStdString(_T("Software\\TortoiseGit\\BlameFontName"), _T("Courier New"))).c_str())\r
+ );\r
SendEditor(SCI_SETTABWIDTH, (DWORD)CRegStdWORD(_T("Software\\TortoiseGit\\BlameTabSize"), 4));\r
SendEditor(SCI_SETREADONLY, TRUE);\r
- LRESULT pix = SendEditor(SCI_TEXTWIDTH, STYLE_LINENUMBER, (LPARAM)_T("_99999"));\r
- if (ShowLine)\r
+ LRESULT pix = SendEditor(SCI_TEXTWIDTH, STYLE_LINENUMBER, (LPARAM)this->m_TextView.StringForControl(_T("_99999")).GetBuffer());\r
+ if (m_bShowLine)\r
SendEditor(SCI_SETMARGINWIDTHN, 0, pix);\r
else\r
SendEditor(SCI_SETMARGINWIDTHN, 0);\r
SendEditor(SCI_SETCARETFORE, ::GetSysColor(COLOR_WINDOWTEXT));\r
m_regOldLinesColor = CRegStdWORD(_T("Software\\TortoiseGit\\BlameOldColor"), RGB(230, 230, 255));\r
m_regNewLinesColor = CRegStdWORD(_T("Software\\TortoiseGit\\BlameNewColor"), RGB(255, 230, 230));\r
-#endif\r
+ \r
+ this->m_TextView.Call(SCI_SETWRAPMODE, SC_WRAP_NONE);\r
+\r
}\r
\r
void CTortoiseGitBlameView::StartSearch()\r
\r
::ReleaseDC(wBlame, hDC);\r
\r
+ //m_TextView.SetFont(lf.lfFaceName,((DWORD)CRegStdWORD(_T("Software\\TortoiseGit\\BlameFontSize"), 10)));\r
}\r
\r
void CTortoiseGitBlameView::DrawBlame(HDC hDC)\r
{\r
-#if 0\r
+\r
if (hDC == NULL)\r
return;\r
if (m_font == NULL)\r
TCHAR buf[MAX_PATH];\r
RECT rc;\r
BOOL sel = FALSE;\r
- ::GetClientRect(wBlame, &rc);\r
+ //::GetClientRect(this->m_hWnd, &rc);\r
for (LRESULT i=line; i<(line+linesonscreen); ++i)\r
{\r
sel = FALSE;\r
- if (i < (int)revs.size())\r
+ if (i < (int)m_CommitHash.size())\r
{\r
- if (mergelines[i])\r
- oldfont = (HFONT)::SelectObject(hDC, m_italicfont);\r
- else\r
+ // if (mergelines[i])\r
+ // oldfont = (HFONT)::SelectObject(hDC, m_italicfont);\r
+ // else\r
oldfont = (HFONT)::SelectObject(hDC, m_font);\r
::SetBkColor(hDC, m_windowcolor);\r
::SetTextColor(hDC, m_textcolor);\r
- if (authors[i].GetLength()>0)\r
+ if (m_CommitHash[i].GetLength()>0)\r
{\r
- if (authors[i].Compare(m_mouseauthor)==0)\r
+ if (m_CommitHash[i].Compare(m_MouseHash)==0)\r
::SetBkColor(hDC, m_mouseauthorcolor);\r
- if (authors[i].Compare(m_selectedauthor)==0)\r
+ if (m_CommitHash[i].Compare(m_SelectedHash)==0)\r
{\r
::SetBkColor(hDC, m_selectedauthorcolor);\r
::SetTextColor(hDC, m_texthighlightcolor);\r
sel = TRUE;\r
}\r
}\r
- if ((revs[i] == m_mouserev)&&(!sel))\r
- ::SetBkColor(hDC, m_mouserevcolor);\r
- if (revs[i] == m_selectedrev)\r
- {\r
- ::SetBkColor(hDC, m_selectedrevcolor);\r
- ::SetTextColor(hDC, m_texthighlightcolor);\r
- }\r
- _stprintf_s(buf, MAX_PATH, _T("%8ld "), revs[i]);\r
- rc.right = rc.left + m_revwidth;\r
- ::ExtTextOut(hDC, 0, Y, ETO_CLIPPED, &rc, buf, _tcslen(buf), 0);\r
+ //if ((revs[i] == m_mouserev)&&(!sel))\r
+ // ::SetBkColor(hDC, m_mouserevcolor);\r
+ //if (revs[i] == m_selectedrev)\r
+ //{\r
+ // ::SetBkColor(hDC, m_selectedrevcolor);\r
+ // ::SetTextColor(hDC, m_texthighlightcolor);\r
+ //}\r
+\r
+ CString str;\r
+ str.Format(_T("%d.%s"),m_ID[i],m_Authors[i]);\r
+\r
+ //_stprintf_s(buf, MAX_PATH, _T("%8ld "), revs[i]);\r
+ rc.top=Y;rc.left=0; \r
+ rc.bottom=Y+height;\r
+ rc.right = rc.left + 100;\r
+ ::ExtTextOut(hDC, 0, Y, ETO_CLIPPED, &rc, str, str.GetLength(), 0);\r
int Left = m_revwidth;\r
+#if 0\r
if (ShowDate)\r
{\r
rc.right = rc.left + Left + m_datewidth;\r
::ExtTextOut(hDC, Left, Y, ETO_CLIPPED, &rc, buf, _tcslen(buf), 0);\r
Left += m_authorwidth;\r
}\r
+#endif\r
+#if 0\r
if (ShowPath)\r
{\r
rc.right = rc.left + Left + m_pathwidth;\r
::ExtTextOut(hDC, Left, Y, ETO_CLIPPED, &rc, buf, _tcslen(buf), 0);\r
Left += m_authorwidth;\r
}\r
+#endif\r
if ((i==m_SelectedLine)&&(currentDialog))\r
{\r
LOGBRUSH brush;\r
Y += height;\r
}\r
}\r
-#endif\r
}\r
\r
void CTortoiseGitBlameView::DrawHeader(HDC hDC)\r
CString one;\r
int pos=0;\r
\r
+ CLogDataVector * pRevs= GetLogData();\r
+\r
this->m_CommitHash.clear();\r
this->m_Authors.clear();\r
this->m_ID.clear();\r
CString line;\r
+\r
+ CreateFont();\r
+\r
SendEditor(SCI_SETREADONLY, FALSE);\r
SendEditor(SCI_CLEARALL);\r
SendEditor(EM_EMPTYUNDOBUFFER);\r
line=one.Right(one.GetLength()-start-2);\r
this->m_TextView.InsertText(line,true);\r
}\r
+ int id=pRevs->m_HashMap[one.Left(40)]; \r
+ if(id>=0)\r
+ {\r
+ m_ID.push_back(pRevs->size()-id);\r
+ m_Authors.push_back(pRevs->at(id).m_AuthorName);\r
+ }else\r
+ {\r
+ ASSERT(FALSE);\r
+ }\r
}\r
\r
SetupLexer(GetDocument()->m_CurrentFileName);\r
SendEditor(SCI_SETSCROLLWIDTHTRACKING, TRUE);\r
SendEditor(SCI_SETREADONLY, TRUE);\r
\r
+\r
+ this->Invalidate();\r
+}\r
+\r
+CLogDataVector * CTortoiseGitBlameView::GetLogData()\r
+{\r
+ return &(GetDocument()->GetMainFrame()->m_wndOutput.m_LogList.m_logEntries);\r
}
\ No newline at end of file