OSDN Git Service

ImgMergeFrm.*: Implement "Reload" menu item
[winmerge-jp/winmerge-jp.git] / Src / ImgMergeFrm.h
1 /////////////////////////////////////////////////////////////////////////////
2 //    WinMerge:  an interactive diff/merge utility
3 //    Copyright (C) 1997  Dean P. Grimm
4 //
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.
9 //
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.
14 //
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.
18 //
19 /////////////////////////////////////////////////////////////////////////////
20 /** 
21  * @file  ImgMergeFrm.h
22  *
23  * @brief interface of the CImgMergeFrame class
24  *
25  */
26 // ID line follows -- this is updated by SVN
27 // $Id: ImgMergeFrm.h 7166 2010-05-16 12:05:13Z jtuc $
28
29 #include "EditorFilepathBar.h"
30 #include "PathContext.h"
31 #include "DiffFileInfo.h"
32 #include "../Externals/winimerge/src/WinIMergeLib.h"
33
34 class CDirDoc;
35
36 /** 
37  * @brief Frame class for file compare, handles panes, statusbar etc.
38  */
39 class CImgMergeFrame : public CMDIChildWnd
40 {
41         private:
42         enum BUFFERTYPE
43         {
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 */
48         };
49
50         using CMDIChildWnd::Create;
51
52         DECLARE_DYNCREATE(CImgMergeFrame)
53 public:
54         CImgMergeFrame();
55
56
57 // Operations
58 public:
59         bool OpenImages(const PathContext& paths, const bool bRO[], int nPane, CMDIFrameWnd *pParent);
60         void SetDirDoc(CDirDoc * pDirDoc);
61         void UpdateResources();
62         bool CloseNow();
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);
72
73 // Attributes
74 protected:
75         CEditorFilePathBar m_wndFilePathBar;
76         CStatusBar m_wndStatusBar[3];
77 // Overrides
78 public:
79         virtual void GetMessageString(UINT nID, CString& rMessage) const;
80         // ClassWizard generated virtual function overrides
81         //{{AFX_VIRTUAL(CImgMergeFrame)
82         public:
83         virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
84         virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
85         virtual BOOL DestroyWindow();
86         virtual BOOL PreTranslateMessage(MSG *);
87         static CMenu menu;
88
89         protected:
90         //}}AFX_VIRTUAL
91
92 // Implementation
93 private:
94         void LoadOptions();
95         void SaveOptions();
96         void SavePosition();
97         virtual ~CImgMergeFrame();
98         void CreateImgWndStatusBar(CStatusBar &, CWnd *);
99 // Generated message map functions
100 private:
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);
110         HICON m_hIdentical;
111         HICON m_hDifferent;
112         IImgMergeWindow *m_pImgMergeWindow;
113         PathContext m_filePaths;
114         String m_strDesc[3];
115         BUFFERTYPE m_nBufferType[3];
116         DiffFileInfo m_fileInfo[3];
117         bool m_bRO[3];
118         bool m_bAutoMerged;
119         CDirDoc *m_pDirDoc;
120
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();
204         //}}AFX_MSG
205         DECLARE_MESSAGE_MAP()
206 };
207
208 /////////////////////////////////////////////////////////////////////////////
209
210 //{{AFX_INSERT_LOCATION}}
211 // Microsoft Developer Studio will insert additional declarations immediately before the previous line.