OSDN Git Service

Add Miss PatchViewDlg.cpp and PatchViewDlg.h
authorFrank Li <lznuaa@gmail.com>
Sun, 23 Aug 2009 15:11:02 +0000 (23:11 +0800)
committerFrank Li <lznuaa@gmail.com>
Sun, 23 Aug 2009 15:11:02 +0000 (23:11 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/TortoiseProc/PatchViewDlg.cpp [new file with mode: 0644]
src/TortoiseProc/PatchViewDlg.h [new file with mode: 0644]

diff --git a/src/TortoiseProc/PatchViewDlg.cpp b/src/TortoiseProc/PatchViewDlg.cpp
new file mode 100644 (file)
index 0000000..773346c
--- /dev/null
@@ -0,0 +1,144 @@
+// 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
diff --git a/src/TortoiseProc/PatchViewDlg.h b/src/TortoiseProc/PatchViewDlg.h
new file mode 100644 (file)
index 0000000..31107c4
--- /dev/null
@@ -0,0 +1,31 @@
+#pragma once\r
+#include "SciEdit.h"\r
+#include "ProjectProperties.h"\r
+// CPatchViewDlg dialog\r
+class CCommitDlg;\r
+class CPatchViewDlg : public CDialog\r
+{\r
+       DECLARE_DYNAMIC(CPatchViewDlg)\r
+\r
+public:\r
+       CPatchViewDlg(CWnd* pParent = NULL);   // standard constructor\r
+       virtual ~CPatchViewDlg();\r
+       CCommitDlg      *m_ParentCommitDlg;\r
+\r
+// Dialog Data\r
+       enum { IDD = IDD_PATCH_VIEW };\r
+\r
+protected:\r
+       virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support\r
+       void                            SetAStyle(int style, COLORREF fore, COLORREF back=::GetSysColor(COLOR_WINDOW), int size=-1, const char *face=0);\r
+\r
+       CSciEdit                        m_ctrlPatchView;\r
+\r
+       DECLARE_MESSAGE_MAP()\r
+public:\r
+       ProjectProperties       *m_pProjectProperties;\r
+       virtual BOOL OnInitDialog();\r
+       afx_msg void OnSize(UINT nType, int cx, int cy);\r
+       afx_msg void OnMoving(UINT fwSide, LPRECT pRect);\r
+       afx_msg void OnDestroy();\r
+};\r