OSDN Git Service

Remove unused resource IDs
[winmerge-jp/winmerge-jp.git] / Src / ImgMergeFrm.h
1 /////////////////////////////////////////////////////////////////////////////
2 //    WinMerge:  an interactive diff/merge utility
3 //    Copyright (C) 1997  Dean P. Grimm
4 //    SPDX-License-Identifier: GPL-2.0-or-later
5 /////////////////////////////////////////////////////////////////////////////
6 /** 
7  * @file  ImgMergeFrm.h
8  *
9  * @brief interface of the CImgMergeFrame class
10  *
11  */
12 #pragma once
13
14 #include "EditorFilepathBar.h"
15 #include "PathContext.h"
16 #include "DiffFileInfo.h"
17 #include "IMergeDoc.h"
18 #include "WinIMergeLib.h"
19 #include "LocationBar.h"
20 #include "FileLocation.h"
21 #include "MergeFrameCommon.h"
22 #include "FileTransform.h"
23
24 class CDirDoc;
25
26 /** 
27  * @brief Frame class for file compare, handles panes, statusbar etc.
28  */
29 class CImgMergeFrame : public CMergeFrameCommon,public IMergeDoc
30 {
31         private:
32         enum class BUFFERTYPE
33         {
34                 NORMAL = 0, /**< Normal, file loaded from disk */
35                 NORMAL_NAMED, /**< Normal, description given */
36                 UNNAMED, /**< Empty, created buffer */
37                 UNNAMED_SAVED, /**< Empty buffer saved with filename */
38         };
39
40         using CMDIChildWnd::Create;
41
42         DECLARE_DYNCREATE(CImgMergeFrame)
43 public:
44         CImgMergeFrame();
45
46
47 // Operations
48 public:
49         bool OpenDocs(int nFiles, const FileLocation fileloc[], const bool bRO[], const String strDesc[], CMDIFrameWnd *pParent);
50         void MoveOnLoad(int nPane = -1, int nLineIndex = -1);
51         void ChangeFile(int pane, const String& path);
52         CDirDoc* GetDirDoc() const override { return m_pDirDoc; };
53         void SetDirDoc(CDirDoc * pDirDoc) override;
54         void UpdateResources();
55         void RefreshOptions();
56         bool CloseNow() override;
57         void DirDocClosing(CDirDoc * pDirDoc) override { m_pDirDoc = nullptr; }
58         void UpdateLastCompareResult();
59         void UpdateAutoPaneResize();
60         void UpdateSplitter();
61         bool GenerateReport(const String& sFileName) const override;
62         bool GenerateReport(const String& sFileName, bool allPages) const;
63         const PackingInfo* GetUnpacker() const override { return &m_infoUnpacker; };
64         void SetUnpacker(const PackingInfo* infoUnpacker) override { if (infoUnpacker) m_infoUnpacker = *infoUnpacker; };
65         const PrediffingInfo* GetPrediffer() const override { return nullptr; };
66         int GetFileCount() const override { return m_filePaths.GetSize(); }
67         String GetPath(int pane) const override { return m_filePaths[pane]; }
68         bool GetReadOnly(int pane) const override { return m_bRO[pane]; }
69         CString GetTooltipString() const override;
70         void DoAutoMerge(int dstPane);
71         bool IsModified() const;
72         IMergeDoc::FileChange IsFileChangedOnDisk(int pane) const;
73         void CheckFileChanged(void) override;
74         String GetDescription(int pane) const override { return m_strDesc[pane]; }
75         static bool IsLoadable();
76
77 // Attributes
78 protected:
79         CEditorFilePathBar m_wndFilePathBar;
80         CStatusBar m_wndStatusBar[3];
81 // Overrides
82 public:
83         // ClassWizard generated virtual function overrides
84         //{{AFX_VIRTUAL(CImgMergeFrame)
85         public:
86         virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);
87         virtual BOOL DestroyWindow();
88         virtual BOOL PreTranslateMessage(MSG *);
89         static CMenu menu;
90
91         protected:
92         //}}AFX_VIRTUAL
93
94 // Implementation
95 private:
96         bool EnsureValidDockState(CDockState& state);
97         void LoadOptions();
98         void SaveOptions();
99         void SavePosition();
100         void SaveActivePane();
101         virtual ~CImgMergeFrame();
102         void CreateImgWndStatusBar(CStatusBar &, CWnd *);
103 private:
104         bool OpenImages();
105         int UpdateDiffItem(CDirDoc * pDirDoc);
106         void UpdateHeaderSizes();
107         void UpdateHeaderPath(int pane);
108         void SetTitle(LPCTSTR lpszTitle);
109         bool DoFileSave(int pane);
110         bool DoFileSaveAs(int pane, bool packing = true);
111         bool PromptAndSaveIfNeeded(bool bAllowCancel);
112         bool MergeModeKeyDown(MSG* pMsg);
113         static void OnChildPaneEvent(const IImgMergeWindow::Event& evt);
114         void OnDropFiles(int pane, const std::vector<String>& files);
115         static void TranslateLocationPane(int id, const wchar_t *org, size_t dstbufsize, wchar_t *dst);
116         CLocationBar m_wndLocationBar;
117         IImgMergeWindow *m_pImgMergeWindow;
118         IImgToolWindow *m_pImgToolWindow;
119         PathContext m_filePaths;
120         String m_strDesc[3];
121         BUFFERTYPE m_nBufferType[3];
122         DiffFileInfo m_fileInfo[3];
123         bool m_bRO[3];
124         bool m_bAutoMerged;
125         CDirDoc *m_pDirDoc;
126         int m_nActivePane;
127         PackingInfo m_infoUnpacker;
128         std::vector<int> m_unpackerSubcodes[3];
129 // Generated message map functions
130 protected:
131         //{{AFX_MSG(CImgMergeFrame)
132         afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
133         afx_msg void OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd);
134         afx_msg void OnClose();
135         afx_msg void OnDestroy();
136         afx_msg void OnFileSave();
137         afx_msg void OnUpdateFileSave(CCmdUI* pCmdUI);
138         afx_msg void OnFileSaveLeft();
139         afx_msg void OnFileSaveMiddle();
140         afx_msg void OnUpdateFileSaveMiddle(CCmdUI* pCmdUI);
141         afx_msg void OnFileSaveRight();
142         afx_msg void OnFileSaveAsLeft();
143         afx_msg void OnFileSaveAsMiddle();
144         afx_msg void OnUpdateFileSaveAsMiddle(CCmdUI* pCmdUI);
145         afx_msg void OnFileSaveAsRight();
146         afx_msg void OnFileReadOnlyLeft();
147         afx_msg void OnUpdateFileReadOnlyLeft(CCmdUI* pCmdUI);
148         afx_msg void OnFileReadOnlyMiddle();
149         afx_msg void OnUpdateFileReadOnlyMiddle(CCmdUI* pCmdUI);
150         afx_msg void OnFileReadOnlyRight();
151         afx_msg void OnUpdateFileReadOnlyRight(CCmdUI* pCmdUI);
152         afx_msg void OnFileReload();
153         afx_msg void OnFileClose();
154         afx_msg void OnFileRecompareAs(UINT nID);
155         afx_msg void OnUpdateFileRecompareAs(CCmdUI* pCmdUI);
156         afx_msg void OnOpenWithUnpacker();
157         afx_msg void OnWindowChangePane(UINT nID);
158         afx_msg void OnSize(UINT nType, int cx, int cy);
159         afx_msg void OnIdleUpdateCmdUI();
160         afx_msg void OnUpdateStatusNum(CCmdUI* pCmdUI);
161         afx_msg LRESULT OnStorePaneSizes(WPARAM wParam, LPARAM lParam);
162         afx_msg void OnEditUndo();
163         afx_msg void OnUpdateEditUndo(CCmdUI* pCmdUI);
164         afx_msg void OnEditRedo();
165         afx_msg void OnUpdateEditRedo(CCmdUI* pCmdUI);
166         afx_msg void OnEditCut();
167         afx_msg void OnUpdateEditCut(CCmdUI* pCmdUI);
168         afx_msg void OnEditCopy();
169         afx_msg void OnUpdateEditCopy(CCmdUI* pCmdUI);
170         afx_msg void OnEditPaste();
171         afx_msg void OnUpdateEditPaste(CCmdUI* pCmdUI);
172         afx_msg void OnEditSelectAll();
173         afx_msg void OnViewZoomIn();
174         afx_msg void OnViewZoomOut();
175         afx_msg void OnViewZoomNormal();
176         afx_msg void OnViewSplitVertically();
177         afx_msg void OnUpdateViewSplitVertically(CCmdUI* pCmdUI);
178         afx_msg void OnFirstdiff();
179         afx_msg void OnUpdateFirstdiff(CCmdUI* pCmdUI);
180         afx_msg void OnLastdiff();
181         afx_msg void OnUpdateLastdiff(CCmdUI* pCmdUI);
182         afx_msg void OnNextdiff();
183         afx_msg void OnUpdateNextdiff(CCmdUI* pCmdUI);
184         afx_msg void OnPrevdiff();
185         afx_msg void OnUpdatePrevdiff(CCmdUI* pCmdUI);
186         afx_msg void OnNextConflict();
187         afx_msg void OnUpdateNextConflict(CCmdUI* pCmdUI);
188         afx_msg void OnPrevConflict();
189         afx_msg void OnUpdatePrevConflict(CCmdUI* pCmdUI);
190         afx_msg void OnX2Y(int srcPane, int dstPane);
191         afx_msg void OnUpdateX2Y(CCmdUI* pCmdUI);
192         afx_msg void OnL2r();
193         afx_msg void OnUpdateL2r(CCmdUI* pCmdUI);
194         afx_msg void OnR2l();
195         afx_msg void OnUpdateR2l(CCmdUI* pCmdUI);
196         afx_msg void OnUpdateL2RNext(CCmdUI* pCmdUI);
197         afx_msg void OnUpdateR2LNext(CCmdUI* pCmdUI);
198         afx_msg void OnCopyFromLeft();
199         afx_msg void OnUpdateCopyFromLeft(CCmdUI* pCmdUI);
200         afx_msg void OnCopyFromRight();
201         afx_msg void OnUpdateCopyFromRight(CCmdUI* pCmdUI);
202         afx_msg void OnAllLeft();
203         afx_msg void OnUpdateAllLeft(CCmdUI* pCmdUI);
204         afx_msg void OnAllRight();
205         afx_msg void OnUpdateAllRight(CCmdUI* pCmdUI);
206         afx_msg void OnCopyX2Y(UINT nID);
207         afx_msg void OnUpdateCopyFromXToY(CCmdUI *pCmdUI);
208         afx_msg void OnAutoMerge();
209         afx_msg void OnUpdateAutoMerge(CCmdUI* pCmdUI);
210         afx_msg void OnImgViewDifferences();
211         afx_msg void OnUpdateImgViewDifferences(CCmdUI* pCmdUI);
212         afx_msg void OnImgZoom(UINT nId);
213         afx_msg void OnUpdateImgZoom(CCmdUI* pCmdUI);
214         afx_msg void OnImgOverlayMode(UINT nId);
215         afx_msg void OnUpdateImgOverlayMode(CCmdUI* pCmdUI);
216         afx_msg void OnImgDraggingMode(UINT nId);
217         afx_msg void OnUpdateImgDraggingMode(CCmdUI* pCmdUI);
218         afx_msg void OnImgDiffBlockSize(UINT nId);
219         afx_msg void OnUpdateImgDiffBlockSize(CCmdUI* pCmdUI);
220         afx_msg void OnImgThreshold(UINT nId);
221         afx_msg void OnUpdateImgThreshold(CCmdUI* pCmdUI);
222         afx_msg void OnImgInsertionDeletionDetectionMode(UINT nId);
223         afx_msg void OnUpdateImgInsertionDeletionDetectionMode(CCmdUI* pCmdUI);
224         afx_msg void OnImgPrevPage();
225         afx_msg void OnUpdateImgPrevPage(CCmdUI* pCmdUI);
226         afx_msg void OnImgNextPage();
227         afx_msg void OnUpdateImgNextPage(CCmdUI* pCmdUI);
228         afx_msg void OnImgCurPaneRotateRight90();
229         afx_msg void OnImgCurPaneRotateLeft90();
230         afx_msg void OnImgCurPaneFlipVertically();
231         afx_msg void OnImgCurPaneFlipHorizontally();
232         afx_msg void OnImgCurPanePrevPage();
233         afx_msg void OnUpdateImgCurPanePrevPage(CCmdUI* pCmdUI);
234         afx_msg void OnImgCurPaneNextPage();
235         afx_msg void OnUpdateImgCurPaneNextPage(CCmdUI* pCmdUI);
236         afx_msg void OnImgUseBackColor();
237         afx_msg void OnImgVectorImageScaling(UINT nId);
238         afx_msg void OnUpdateImgVectorImageScaling(CCmdUI* pCmdUI);
239         afx_msg void OnUpdateImgUseBackColor(CCmdUI* pCmdUI);
240         afx_msg void OnImgCompareExtractedText();
241         afx_msg void OnToolsGenerateReport();
242         afx_msg void OnRefresh();
243         afx_msg void OnSetFocus(CWnd *pNewWnd);
244         afx_msg void OnHelp();
245         //}}AFX_MSG
246         DECLARE_MESSAGE_MAP()
247 };