--- /dev/null
+// PatchViewDlg.cpp : implementation file\r
+//\r
+\r
+#include "stdafx.h"\r
+#include "TortoiseProc.h"\r
+#include "PatchViewDlg.h"\r
+#include "Registry.h"\r
+#include "CommitDlg.h"\r
+#include "UnicodeUtils.h"\r
+// CPatchViewDlg dialog\r
+\r
+IMPLEMENT_DYNAMIC(CPatchViewDlg, CDialog)\r
+\r
+CPatchViewDlg::CPatchViewDlg(CWnd* pParent /*=NULL*/)\r
+ : CDialog(CPatchViewDlg::IDD, pParent)\r
+{\r
+\r
+}\r
+\r
+CPatchViewDlg::~CPatchViewDlg()\r
+{\r
+}\r
+\r
+void CPatchViewDlg::DoDataExchange(CDataExchange* pDX)\r
+{\r
+ CDialog::DoDataExchange(pDX);\r
+ DDX_Control(pDX, IDC_PATCH, m_ctrlPatchView);\r
+}\r
+\r
+BEGIN_MESSAGE_MAP(CPatchViewDlg, CDialog)\r
+ ON_WM_SIZE()\r
+ ON_WM_MOVING()\r
+ ON_WM_DESTROY()\r
+END_MESSAGE_MAP()\r
+\r
+void CPatchViewDlg::SetAStyle(int style, COLORREF fore, COLORREF back, int size, const char *face) \r
+{\r
+ m_ctrlPatchView.Call(SCI_STYLESETFORE, style, fore);\r
+ m_ctrlPatchView.Call(SCI_STYLESETBACK, style, back);\r
+ if (size >= 1)\r
+ m_ctrlPatchView.Call(SCI_STYLESETSIZE, style, size);\r
+ if (face) \r
+ m_ctrlPatchView.Call(SCI_STYLESETFONT, style, reinterpret_cast<LPARAM>(face));\r
+}\r
+\r
+\r
+// CPatchViewDlg message handlers\r
+\r
+BOOL CPatchViewDlg::OnInitDialog()\r
+{\r
+ CDialog::OnInitDialog();\r
+\r
+ // TODO: Add extra initialization here\r
+ m_ctrlPatchView.Init(*m_pProjectProperties);\r
+ m_ctrlPatchView.SetFont((CString)CRegString(_T("Software\\TortoiseGit\\LogFontName"), _T("Courier New")), (DWORD)CRegDWORD(_T("Software\\TortoiseGit\\LogFontSize"), 8));\r
+\r
+ SetAStyle(STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOWTEXT), ::GetSysColor(COLOR_WINDOW),\r
+ // Reusing TortoiseBlame's setting which already have an user friendly\r
+ // pane in TortoiseSVN's Settings dialog, while there is no such\r
+ // pane for TortoiseUDiff.\r
+ CRegStdDWORD(_T("Software\\TortoiseGit\\BlameFontSize"), 10),\r
+ WideToMultibyte(CRegStdString(_T("Software\\TortoiseGit\\BlameFontName"), _T("Courier New"))).c_str());\r
+\r
+ m_ctrlPatchView.Call(SCI_SETTABWIDTH, 4);\r
+ m_ctrlPatchView.Call(SCI_SETREADONLY, TRUE);\r
+ //LRESULT pix = m_ctrlPatchView.Call(SCI_TEXTWIDTH, STYLE_LINENUMBER, (LPARAM)"_99999");\r
+ //m_ctrlPatchView.Call(SCI_SETMARGINWIDTHN, 0, pix);\r
+ //m_ctrlPatchView.Call(SCI_SETMARGINWIDTHN, 1);\r
+ //m_ctrlPatchView.Call(SCI_SETMARGINWIDTHN, 2);\r
+ //Set the default windows colors for edit controls\r
+ m_ctrlPatchView.Call(SCI_STYLESETFORE, STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOWTEXT));\r
+ m_ctrlPatchView.Call(SCI_STYLESETBACK, STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOW));\r
+ m_ctrlPatchView.Call(SCI_SETSELFORE, TRUE, ::GetSysColor(COLOR_HIGHLIGHTTEXT));\r
+ m_ctrlPatchView.Call(SCI_SETSELBACK, TRUE, ::GetSysColor(COLOR_HIGHLIGHT));\r
+ m_ctrlPatchView.Call(SCI_SETCARETFORE, ::GetSysColor(COLOR_WINDOWTEXT));\r
+\r
+ //SendEditor(SCI_SETREADONLY, FALSE);\r
+ m_ctrlPatchView.Call(SCI_CLEARALL);\r
+ m_ctrlPatchView.Call(EM_EMPTYUNDOBUFFER);\r
+ m_ctrlPatchView.Call(SCI_SETSAVEPOINT);\r
+ m_ctrlPatchView.Call(SCI_CANCEL);\r
+ m_ctrlPatchView.Call(SCI_SETUNDOCOLLECTION, 0);\r
+\r
+ m_ctrlPatchView.Call(SCI_SETUNDOCOLLECTION, 1);\r
+ //::SetFocus(m_hWndEdit);\r
+ m_ctrlPatchView.Call(EM_EMPTYUNDOBUFFER);\r
+ m_ctrlPatchView.Call(SCI_SETSAVEPOINT);\r
+ m_ctrlPatchView.Call(SCI_GOTOPOS, 0);\r
+\r
+ m_ctrlPatchView.Call(SCI_CLEARDOCUMENTSTYLE, 0, 0);\r
+ m_ctrlPatchView.Call(SCI_SETSTYLEBITS, 5, 0);\r
+\r
+ //SetAStyle(SCE_DIFF_DEFAULT, RGB(0, 0, 0));\r
+ SetAStyle(SCE_DIFF_COMMAND, RGB(0x0A, 0x24, 0x36));\r
+ SetAStyle(SCE_DIFF_POSITION, RGB(0xFF, 0, 0));\r
+ SetAStyle(SCE_DIFF_HEADER, RGB(0x80, 0, 0), RGB(0xFF, 0xFF, 0x80));\r
+ SetAStyle(SCE_DIFF_COMMENT, RGB(0, 0x80, 0));\r
+ m_ctrlPatchView.Call(SCI_STYLESETBOLD, SCE_DIFF_COMMENT, TRUE);\r
+ SetAStyle(SCE_DIFF_DELETED, ::GetSysColor(COLOR_WINDOWTEXT), RGB(0xFF, 0x80, 0x80));\r
+ SetAStyle(SCE_DIFF_ADDED, ::GetSysColor(COLOR_WINDOWTEXT), RGB(0x80, 0xFF, 0x80));\r
+\r
+ m_ctrlPatchView.Call(SCI_SETLEXER, SCLEX_DIFF);\r
+ m_ctrlPatchView.Call(SCI_SETKEYWORDS, 0, (LPARAM)"revision");\r
+ m_ctrlPatchView.Call(SCI_COLOURISE, 0, -1);\r
+\r
+ return TRUE; // return TRUE unless you set the focus to a control\r
+ // EXCEPTION: OCX Property Pages should return FALSE\r
+}\r
+\r
+void CPatchViewDlg::OnSize(UINT nType, int cx, int cy)\r
+{\r
+ CDialog::OnSize(nType, cx, cy);\r
+\r
+ // TODO: Add your message handler code here\r
+ if (this->IsWindowVisible())\r
+ {\r
+ CRect rect;\r
+ GetClientRect(rect);\r
+ GetDlgItem(IDC_PATCH)->MoveWindow(rect.left, rect.top, cx, cy);\r
+ }\r
+}\r
+\r
+void CPatchViewDlg::OnMoving(UINT fwSide, LPRECT pRect)\r
+{\r
+ // TODO: Add your message handler code here\r
+#define STICKYSIZE 5\r
+ RECT parentRect;\r
+ this->m_ParentCommitDlg->GetWindowRect(&parentRect);\r
+ if (abs(parentRect.right - pRect->left) < STICKYSIZE)\r
+ {\r
+ int width = pRect->right - pRect->left;\r
+ pRect->left = parentRect.right;\r
+ pRect->right = pRect->left + width;\r
+ }\r
+ CDialog::OnMoving(fwSide, pRect);\r
+}\r
+\r
+void CPatchViewDlg::OnDestroy()\r
+{\r
+ CDialog::OnDestroy();\r
+\r
+ this->m_ParentCommitDlg->ShowViewPatchText(true);\r
+ // TODO: Add your message handler code here\r
+}\r