1 // PatchViewDlg.cpp : implementation file
\r
5 #include "TortoiseProc.h"
\r
6 #include "PatchViewDlg.h"
\r
7 #include "Registry.h"
\r
8 #include "CommitDlg.h"
\r
9 #include "UnicodeUtils.h"
\r
10 // CPatchViewDlg dialog
\r
12 IMPLEMENT_DYNAMIC(CPatchViewDlg, CDialog)
\r
14 CPatchViewDlg::CPatchViewDlg(CWnd* pParent /*=NULL*/)
\r
15 : CDialog(CPatchViewDlg::IDD, pParent)
\r
20 CPatchViewDlg::~CPatchViewDlg()
\r
24 void CPatchViewDlg::DoDataExchange(CDataExchange* pDX)
\r
26 CDialog::DoDataExchange(pDX);
\r
27 DDX_Control(pDX, IDC_PATCH, m_ctrlPatchView);
\r
30 BEGIN_MESSAGE_MAP(CPatchViewDlg, CDialog)
\r
36 void CPatchViewDlg::SetAStyle(int style, COLORREF fore, COLORREF back, int size, const char *face)
\r
38 m_ctrlPatchView.Call(SCI_STYLESETFORE, style, fore);
\r
39 m_ctrlPatchView.Call(SCI_STYLESETBACK, style, back);
\r
41 m_ctrlPatchView.Call(SCI_STYLESETSIZE, style, size);
\r
43 m_ctrlPatchView.Call(SCI_STYLESETFONT, style, reinterpret_cast<LPARAM>(face));
\r
47 // CPatchViewDlg message handlers
\r
49 BOOL CPatchViewDlg::OnInitDialog()
\r
51 CDialog::OnInitDialog();
\r
53 // TODO: Add extra initialization here
\r
54 m_ctrlPatchView.Init(*m_pProjectProperties);
\r
55 m_ctrlPatchView.SetFont((CString)CRegString(_T("Software\\TortoiseGit\\LogFontName"), _T("Courier New")), (DWORD)CRegDWORD(_T("Software\\TortoiseGit\\LogFontSize"), 8));
\r
57 SetAStyle(STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOWTEXT), ::GetSysColor(COLOR_WINDOW),
\r
58 // Reusing TortoiseBlame's setting which already have an user friendly
\r
59 // pane in TortoiseSVN's Settings dialog, while there is no such
\r
60 // pane for TortoiseUDiff.
\r
61 CRegStdDWORD(_T("Software\\TortoiseGit\\BlameFontSize"), 10),
\r
62 WideToMultibyte(CRegStdString(_T("Software\\TortoiseGit\\BlameFontName"), _T("Courier New"))).c_str());
\r
64 m_ctrlPatchView.Call(SCI_SETTABWIDTH, 4);
\r
65 m_ctrlPatchView.Call(SCI_SETREADONLY, TRUE);
\r
66 //LRESULT pix = m_ctrlPatchView.Call(SCI_TEXTWIDTH, STYLE_LINENUMBER, (LPARAM)"_99999");
\r
67 //m_ctrlPatchView.Call(SCI_SETMARGINWIDTHN, 0, pix);
\r
68 //m_ctrlPatchView.Call(SCI_SETMARGINWIDTHN, 1);
\r
69 //m_ctrlPatchView.Call(SCI_SETMARGINWIDTHN, 2);
\r
70 //Set the default windows colors for edit controls
\r
71 m_ctrlPatchView.Call(SCI_STYLESETFORE, STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOWTEXT));
\r
72 m_ctrlPatchView.Call(SCI_STYLESETBACK, STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOW));
\r
73 m_ctrlPatchView.Call(SCI_SETSELFORE, TRUE, ::GetSysColor(COLOR_HIGHLIGHTTEXT));
\r
74 m_ctrlPatchView.Call(SCI_SETSELBACK, TRUE, ::GetSysColor(COLOR_HIGHLIGHT));
\r
75 m_ctrlPatchView.Call(SCI_SETCARETFORE, ::GetSysColor(COLOR_WINDOWTEXT));
\r
77 //SendEditor(SCI_SETREADONLY, FALSE);
\r
78 m_ctrlPatchView.Call(SCI_CLEARALL);
\r
79 m_ctrlPatchView.Call(EM_EMPTYUNDOBUFFER);
\r
80 m_ctrlPatchView.Call(SCI_SETSAVEPOINT);
\r
81 m_ctrlPatchView.Call(SCI_CANCEL);
\r
82 m_ctrlPatchView.Call(SCI_SETUNDOCOLLECTION, 0);
\r
84 m_ctrlPatchView.Call(SCI_SETUNDOCOLLECTION, 1);
\r
85 m_ctrlPatchView.Call(SCI_SETWRAPMODE,SC_WRAP_NONE);
\r
87 //::SetFocus(m_hWndEdit);
\r
88 m_ctrlPatchView.Call(EM_EMPTYUNDOBUFFER);
\r
89 m_ctrlPatchView.Call(SCI_SETSAVEPOINT);
\r
90 m_ctrlPatchView.Call(SCI_GOTOPOS, 0);
\r
92 m_ctrlPatchView.Call(SCI_CLEARDOCUMENTSTYLE, 0, 0);
\r
93 m_ctrlPatchView.Call(SCI_SETSTYLEBITS, 5, 0);
\r
95 //SetAStyle(SCE_DIFF_DEFAULT, RGB(0, 0, 0));
\r
96 SetAStyle(SCE_DIFF_COMMAND, RGB(0x0A, 0x24, 0x36));
\r
97 SetAStyle(SCE_DIFF_POSITION, RGB(0xFF, 0, 0));
\r
98 SetAStyle(SCE_DIFF_HEADER, RGB(0x80, 0, 0), RGB(0xFF, 0xFF, 0x80));
\r
99 SetAStyle(SCE_DIFF_COMMENT, RGB(0, 0x80, 0));
\r
100 m_ctrlPatchView.Call(SCI_STYLESETBOLD, SCE_DIFF_COMMENT, TRUE);
\r
101 SetAStyle(SCE_DIFF_DELETED, ::GetSysColor(COLOR_WINDOWTEXT), RGB(0xFF, 0x80, 0x80));
\r
102 SetAStyle(SCE_DIFF_ADDED, ::GetSysColor(COLOR_WINDOWTEXT), RGB(0x80, 0xFF, 0x80));
\r
104 m_ctrlPatchView.Call(SCI_SETLEXER, SCLEX_DIFF);
\r
105 m_ctrlPatchView.Call(SCI_SETKEYWORDS, 0, (LPARAM)"revision");
\r
106 m_ctrlPatchView.Call(SCI_COLOURISE, 0, -1);
\r
108 return TRUE; // return TRUE unless you set the focus to a control
\r
109 // EXCEPTION: OCX Property Pages should return FALSE
\r
112 void CPatchViewDlg::OnSize(UINT nType, int cx, int cy)
\r
114 CDialog::OnSize(nType, cx, cy);
\r
116 // TODO: Add your message handler code here
\r
117 if (this->IsWindowVisible())
\r
120 GetClientRect(rect);
\r
121 GetDlgItem(IDC_PATCH)->MoveWindow(rect.left, rect.top, cx, cy);
\r
125 void CPatchViewDlg::OnMoving(UINT fwSide, LPRECT pRect)
\r
127 // TODO: Add your message handler code here
\r
128 #define STICKYSIZE 5
\r
130 this->m_ParentCommitDlg->GetWindowRect(&parentRect);
\r
131 if (abs(parentRect.right - pRect->left) < STICKYSIZE)
\r
133 int width = pRect->right - pRect->left;
\r
134 pRect->left = parentRect.right;
\r
135 pRect->right = pRect->left + width;
\r
137 CDialog::OnMoving(fwSide, pRect);
\r
140 void CPatchViewDlg::OnDestroy()
\r
142 CDialog::OnDestroy();
\r
144 this->m_ParentCommitDlg->ShowViewPatchText(true);
\r
145 // TODO: Add your message handler code here
\r