For the inline diff, reverse the diff parts for the right view to get a diff consiste...
[TortoiseGit.git] / src / TortoiseMerge / XSplitter.h
bloba2628be9b25293f9a5bb42131a6501b364017a2f
1 // TortoiseGitMerge - a Diff/Patch program
3 // Copyright (C) 2006, 2011 - TortoiseSVN
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 #pragma once
22 /**
23 * \ingroup TortoiseMerge
24 * Extends the MFC CSplitterWnd with the functionality to
25 * Show/Hide specific columns and rows, allows to lock
26 * the splitter bars so the user can't move them
27 * and also allows dynamic replacing of views with
28 * other views.
30 * \par requirements
31 * win98 or later\n
32 * win2k or later\n
33 * MFC\n
36 class CXSplitter : public CSplitterWnd
38 public:
39 CXSplitter();
40 virtual ~CXSplitter();
42 public:
43 /**
44 * Checks if the splitter has its bars locked.
46 BOOL IsBarLocked() const {return m_bBarLocked;}
47 /**
48 * Locks/Unlocks the bar so the user can't move it.
49 * \param bState TRUE to lock, FALSE to unlock
51 void LockBar(BOOL bState=TRUE) {m_bBarLocked=bState;}
52 /**
53 * Replaces a view in the Splitter with another view.
55 BOOL ReplaceView(int row, int col,CRuntimeClass * pViewClass, SIZE size);
56 /**
57 * Shows a splitter column which was previously hidden. Don't call
58 * this method if the column is already visible! Check it first
59 * with IsColumnHidden()
61 void ShowColumn();
62 /**
63 * Hides the given splitter column. Don't call this method on already hidden columns!
64 * Check it first with IsColumnHidden()
65 * \param nColHide The column to hide
67 void HideColumn(int nColHide);
68 /**
69 * Checks if a given column is hidden.
71 BOOL IsColumnHidden(int nCol) const {return (m_nHiddenCol == nCol);}
72 /**
73 * Shows a splitter row which was previously hidden. Don't call
74 * this method if the row is already visible! Check it first
75 * with IsRowHidden()
77 void ShowRow();
78 /**
79 * Hides the given splitter row. Don't call this method on already hidden rows!
80 * Check it first with IsRowHidden()
81 * \param nRowHide The row to hide
83 void HideRow(int nRowHide);
84 /**
85 * Checks if a given row is hidden.
87 BOOL IsRowHidden(int nRow) const {return (m_nHiddenRow == nRow);}
89 /**
90 * Centers the splitter in the middle of the views
92 void CenterSplitter();
94 int GetOldRowCount() { return m_nOldRows; }
95 int GetOldColCount() { return m_nOldCols; }
96 bool HasOldRowSize() { return m_pRowOldSize != nullptr; }
97 bool HasOldColSize() { return m_pColOldSize != nullptr; }
98 int GetOldRowSize(int index) { return m_pRowOldSize[index]; }
99 int GetOldColSize(int index) { return m_pColOldSize[index]; }
101 protected:
102 afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
103 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
104 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
105 afx_msg void OnMouseMove(UINT nFlags, CPoint point);
106 afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
107 DECLARE_MESSAGE_MAP()
109 void CopyRowAndColInfo();
110 private:
111 BOOL m_bBarLocked; ///< is the splitter bar locked?
112 int m_nHiddenCol; ///< Index of the hidden column.
113 int m_nHiddenRow; ///< Index of the hidden row
114 int * m_pColOldSize; ///< the current size of the last splitter positioning
115 int * m_pRowOldSize; ///< the current size of the last splitter positioning
116 int m_nOldCols;
117 int m_nOldRows;