1 /////////////////////////////////////////////////////////////////////////////
2 // WinMerge: an interactive diff/merge utility
3 // Copyright (C) 1997 Dean P. Grimm
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 2 of the License, or
8 // (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
17 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 /////////////////////////////////////////////////////////////////////////////
23 * @brief interface of the CImgMergeFrame class
26 // ID line follows -- this is updated by SVN
27 // $Id: ImgMergeFrm.h 7166 2010-05-16 12:05:13Z jtuc $
29 #include "EditorFilepathBar.h"
30 #include "PathContext.h"
31 #include "DiffFileInfo.h"
32 #include "../Externals/winimerge/src/WinIMergeLib.h"
37 * @brief Frame class for file compare, handles panes, statusbar etc.
39 class CImgMergeFrame : public CMDIChildWnd
44 BUFFER_NORMAL = 0, /**< Normal, file loaded from disk */
45 BUFFER_NORMAL_NAMED, /**< Normal, description given */
46 BUFFER_UNNAMED, /**< Empty, created buffer */
47 BUFFER_UNNAMED_SAVED, /**< Empty buffer saved with filename */
50 using CMDIChildWnd::Create;
52 DECLARE_DYNCREATE(CImgMergeFrame)
59 bool OpenImages(const PathContext& paths, const bool bRO[], int nPane, CMDIFrameWnd *pParent);
60 void SetDirDoc(CDirDoc * pDirDoc);
61 void UpdateResources();
63 void SetSharedMenu(HMENU hMenu) { m_hMenuShared = hMenu; };
64 void SetLastCompareResult(int nResult);
65 void UpdateAutoPaneResize();
66 void UpdateSplitter();
67 bool GenerateReport(LPCTSTR szFileName);
68 void DoAutoMerge(int dstPane);
69 bool IsModified() const;
70 bool IsFileChangedOnDisk(int pane) const;
71 void CheckFileChanged(void);
75 CEditorFilePathBar m_wndFilePathBar;
76 CStatusBar m_wndStatusBar[3];
79 virtual void GetMessageString(UINT nID, CString& rMessage) const;
80 // ClassWizard generated virtual function overrides
81 //{{AFX_VIRTUAL(CImgMergeFrame)
83 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
84 virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
85 virtual BOOL DestroyWindow();
86 virtual BOOL PreTranslateMessage(MSG *);
97 virtual ~CImgMergeFrame();
98 void CreateImgWndStatusBar(CStatusBar &, CWnd *);
99 // Generated message map functions
101 void UpdateDiffItem(CDirDoc * pDirDoc);
102 void UpdateHeaderSizes();
103 void UpdateHeaderPath(int pane);
104 void SetTitle(LPCTSTR lpszTitle);
105 bool DoFileSave(int pane);
106 bool DoFileSaveAs(int pane);
107 bool PromptAndSaveIfNeeded(bool bAllowCancel);
108 bool MergeModeKeyDown(MSG* pMsg);
109 static void OnChildPaneEvent(const IImgMergeWindow::Event& evt);
112 IImgMergeWindow *m_pImgMergeWindow;
113 PathContext m_filePaths;
115 BUFFERTYPE m_nBufferType[3];
116 DiffFileInfo m_fileInfo[3];
121 //{{AFX_MSG(CImgMergeFrame)
122 afx_msg void OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd);
123 afx_msg void OnClose();
124 afx_msg void OnFileSave();
125 afx_msg void OnUpdateFileSave(CCmdUI* pCmdUI);
126 afx_msg void OnFileSaveLeft();
127 afx_msg void OnFileSaveMiddle();
128 afx_msg void OnUpdateFileSaveMiddle(CCmdUI* pCmdUI);
129 afx_msg void OnFileSaveRight();
130 afx_msg void OnFileSaveAsLeft();
131 afx_msg void OnFileSaveAsMiddle();
132 afx_msg void OnUpdateFileSaveAsMiddle(CCmdUI* pCmdUI);
133 afx_msg void OnFileSaveAsRight();
134 afx_msg void OnLeftReadOnly();
135 afx_msg void OnUpdateLeftReadOnly(CCmdUI* pCmdUI);
136 afx_msg void OnMiddleReadOnly();
137 afx_msg void OnUpdateMiddleReadOnly(CCmdUI* pCmdUI);
138 afx_msg void OnRightReadOnly();
139 afx_msg void OnUpdateRightReadOnly(CCmdUI* pCmdUI);
140 afx_msg void OnFileReload();
141 afx_msg void OnFileClose();
142 afx_msg void OnFileRecompareAsBinary();
143 afx_msg void OnWindowChangePane();
144 afx_msg void OnSize(UINT nType, int cx, int cy);
145 afx_msg void OnIdleUpdateCmdUI();
146 afx_msg void OnUpdateStatusNum(CCmdUI* pCmdUI);
147 afx_msg LRESULT OnStorePaneSizes(WPARAM wParam, LPARAM lParam);
148 afx_msg void OnEditUndo();
149 afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
150 afx_msg void OnEditRedo();
151 afx_msg void OnUpdateEditRedo(CCmdUI* pCmdUI);
152 afx_msg void OnViewZoomIn();
153 afx_msg void OnViewZoomOut();
154 afx_msg void OnViewZoomNormal();
155 afx_msg void OnViewSplitVertically();
156 afx_msg void OnUpdateViewSplitVertically(CCmdUI* pCmdUI);
157 afx_msg void OnFirstdiff();
158 afx_msg void OnUpdateFirstdiff(CCmdUI* pCmdUI);
159 afx_msg void OnLastdiff();
160 afx_msg void OnUpdateLastdiff(CCmdUI* pCmdUI);
161 afx_msg void OnNextdiff();
162 afx_msg void OnUpdateNextdiff(CCmdUI* pCmdUI);
163 afx_msg void OnPrevdiff();
164 afx_msg void OnUpdatePrevdiff(CCmdUI* pCmdUI);
165 afx_msg void OnNextConflict();
166 afx_msg void OnUpdateNextConflict(CCmdUI* pCmdUI);
167 afx_msg void OnPrevConflict();
168 afx_msg void OnUpdatePrevConflict(CCmdUI* pCmdUI);
169 afx_msg void OnX2Y(int srcPane, int dstPane);
170 afx_msg void OnUpdateX2Y(CCmdUI* pCmdUI, int srcPane, int dstPane);
171 afx_msg void OnL2r();
172 afx_msg void OnUpdateL2r(CCmdUI* pCmdUI);
173 afx_msg void OnR2l();
174 afx_msg void OnUpdateR2l(CCmdUI* pCmdUI);
175 afx_msg void OnCopyFromLeft();
176 afx_msg void OnUpdateCopyFromLeft(CCmdUI* pCmdUI);
177 afx_msg void OnCopyFromRight();
178 afx_msg void OnUpdateCopyFromRight(CCmdUI* pCmdUI);
179 afx_msg void OnAllLeft();
180 afx_msg void OnUpdateAllLeft(CCmdUI* pCmdUI);
181 afx_msg void OnAllRight();
182 afx_msg void OnUpdateAllRight(CCmdUI* pCmdUI);
183 afx_msg void OnAutoMerge();
184 afx_msg void OnUpdateAutoMerge(CCmdUI* pCmdUI);
185 afx_msg void OnImgViewDifferences();
186 afx_msg void OnUpdateImgViewDifferences(CCmdUI* pCmdUI);
187 afx_msg void OnImgZoom(UINT nId);
188 afx_msg void OnUpdateImgZoom(CCmdUI* pCmdUI);
189 afx_msg void OnImgOverlayMode(UINT nId);
190 afx_msg void OnUpdateImgOverlayMode(CCmdUI* pCmdUI);
191 afx_msg void OnImgDiffBlockSize(UINT nId);
192 afx_msg void OnUpdateImgDiffBlockSize(CCmdUI* pCmdUI);
193 afx_msg void OnImgPrevPage();
194 afx_msg void OnUpdateImgPrevPage(CCmdUI* pCmdUI);
195 afx_msg void OnImgNextPage();
196 afx_msg void OnUpdateImgNextPage(CCmdUI* pCmdUI);
197 afx_msg void OnImgCurPanePrevPage();
198 afx_msg void OnUpdateImgCurPanePrevPage(CCmdUI* pCmdUI);
199 afx_msg void OnImgCurPaneNextPage();
200 afx_msg void OnUpdateImgCurPaneNextPage(CCmdUI* pCmdUI);
201 afx_msg void OnImgUseBackColor();
202 afx_msg void OnUpdateImgUseBackColor(CCmdUI* pCmdUI);
203 afx_msg void OnToolsGenerateReport();
205 DECLARE_MESSAGE_MAP()
208 /////////////////////////////////////////////////////////////////////////////
210 //{{AFX_INSERT_LOCATION}}
211 // Microsoft Developer Studio will insert additional declarations immediately before the previous line.