OSDN Git Service

Update version number to 1.2.1.0
[tortoisegit/TortoiseGitJp.git] / src / TortoiseMerge / FilePatchesDlg.h
1 // TortoiseMerge - a Diff/Patch program\r
2 \r
3 // Copyright (C) 2006, 2008 - Stefan Kueng\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 #pragma once\r
20 \r
21 class CPatch;\r
22 \r
23 /**\r
24  * \ingroup TortoiseMerge\r
25  * Virtual class providing the callback interface which\r
26  * is used by CFilePatchesDlg.\r
27  */\r
28 class CPatchFilesDlgCallBack\r
29 {\r
30 public:\r
31         /**\r
32          * Callback function. Called when the user double clicks on a\r
33          * specific file to patch. The framework then has to process\r
34          * the patching/viewing.\r
35          * \param sFilePath the full path to the file to patch\r
36          * \param sVersion the revision number of the file to patch\r
37          * \return TRUE if patching was successful\r
38          */\r
39         virtual BOOL PatchFile(CString sFilePath, CString sVersion, BOOL bAutoPatch = FALSE,BOOL bIsReview=FALSE) = 0;\r
40         \r
41         /**\r
42          * Callback function. Called when the user double clicks on a\r
43          * specific file to diff. The framework then has to fetch the two\r
44          * files from the URL's and revisions specified in the callback function and\r
45          * show them in the diff viewer.\r
46          * \param sURL1 the URL of the first file to diff\r
47          * \param sURL2 the URL of the second file to diff\r
48          * \param sRev1 the revision of the first file\r
49          * \param sRev2 the revision of the second file\r
50          */\r
51         virtual BOOL DiffFiles(CString sURL1, CString sRev1, CString sURL2, CString sRev2) = 0;\r
52 };\r
53 \r
54 #define FPDLG_FILESTATE_GOOD            0x0000\r
55 #define FPDLG_FILESTATE_CONFLICTED      0x0001\r
56 #define FPDLG_FILESTATE_PATCHED         0x0002\r
57 \r
58 #define ID_PATCHALL                                     1\r
59 #define ID_PATCHSELECTED                        2\r
60 #define ID_PATCHPREVIEW                         3\r
61 #define ID_PATCH_REVIEW                         4\r
62 /**\r
63  * \ingroup TortoiseMerge\r
64  *\r
65  * Dialog class, showing all files to patch from a unified diff file.\r
66  */\r
67 class CFilePatchesDlg : public CDialog\r
68 {\r
69         DECLARE_DYNAMIC(CFilePatchesDlg)\r
70 \r
71 public:\r
72         CFilePatchesDlg(CWnd* pParent = NULL);   // standard constructor\r
73         virtual ~CFilePatchesDlg();\r
74 \r
75         /**\r
76          * Call this method to initialize the dialog.\r
77          * \param pPatch The CPatch object used to get the filenames from the unified diff file\r
78          * \param pCallBack The Object providing the callback interface (CPatchFilesDlgCallBack)\r
79          * \param sPath The path to the "parent" folder where the patch gets applied to\r
80          * \return TRUE if successful\r
81          */\r
82         BOOL    Init(CPatch * pPatch, CPatchFilesDlgCallBack * pCallBack, CString sPath, CWnd * pParent);\r
83 \r
84         BOOL    SetFileStatusAsPatched(CString sPath);\r
85         bool    HasFiles() {return m_cFileList.GetItemCount()>0;}\r
86         enum { IDD = IDD_FILEPATCHES };\r
87 protected:\r
88         CPatch *                                        m_pPatch;\r
89         CPatchFilesDlgCallBack *        m_pCallBack;\r
90         CString                                         m_sPath;\r
91         CListCtrl                                       m_cFileList;\r
92         CDWordArray                                     m_arFileStates;\r
93         CImageList                                      m_ImgList;\r
94         BOOL                                            m_bMinimized;\r
95         int                                                     m_nWindowHeight;\r
96         CWnd *                                          m_pMainFrame;\r
97 protected:\r
98         virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support\r
99         virtual void OnOK();\r
100         afx_msg void OnSize(UINT nType, int cx, int cy);\r
101         afx_msg void OnLvnGetInfoTipFilelist(NMHDR *pNMHDR, LRESULT *pResult);\r
102         afx_msg void OnNMDblclkFilelist(NMHDR *pNMHDR, LRESULT *pResult);\r
103         afx_msg void OnNMCustomdrawFilelist(NMHDR *pNMHDR, LRESULT *pResult);\r
104         afx_msg void OnNMRclickFilelist(NMHDR *pNMHDR, LRESULT *pResult);\r
105         afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);\r
106         afx_msg void OnMoving(UINT fwSide, LPRECT pRect);\r
107 \r
108         DECLARE_MESSAGE_MAP()\r
109 \r
110         CString GetFullPath(int nIndex);\r
111 };\r