OSDN Git Service

Add work dir copy at log dialog
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / ImportPatchDlg.cpp
1 // ImportPatchDlg.cpp : implementation file\r
2 //\r
3 \r
4 #include "stdafx.h"\r
5 #include "TortoiseProc.h"\r
6 #include "ImportPatchDlg.h"\r
7 #include "git.h"\r
8 \r
9 // CImportPatchDlg dialog\r
10 \r
11 IMPLEMENT_DYNAMIC(CImportPatchDlg, CResizableStandAloneDialog)\r
12 \r
13 CImportPatchDlg::CImportPatchDlg(CWnd* pParent /*=NULL*/)\r
14         : CResizableStandAloneDialog(CImportPatchDlg::IDD, pParent)\r
15 {\r
16         m_cList.m_ContextMenuMask &=~ m_cList.GetMenuMask(CPatchListCtrl::MENU_APPLY);\r
17 }\r
18 \r
19 CImportPatchDlg::~CImportPatchDlg()\r
20 {\r
21 \r
22 }\r
23 \r
24 void CImportPatchDlg::DoDataExchange(CDataExchange* pDX)\r
25 {\r
26         CDialog::DoDataExchange(pDX);\r
27         DDX_Control(pDX, IDC_LIST_PATCH,m_cList);\r
28 }\r
29 \r
30 BOOL CImportPatchDlg::OnInitDialog()\r
31 {\r
32         CResizableStandAloneDialog::OnInitDialog();\r
33 \r
34         AddAnchor(IDC_LIST_PATCH, TOP_LEFT, BOTTOM_RIGHT);\r
35         AddAnchor(IDC_BUTTON_ADD, TOP_RIGHT);\r
36         AddAnchor(IDC_BUTTON_UP, TOP_RIGHT);\r
37         AddAnchor(IDC_BUTTON_DOWN, TOP_RIGHT);\r
38         AddAnchor(IDC_BUTTON_REMOVE, TOP_RIGHT);\r
39 \r
40         AddAnchor(IDOK,BOTTOM_RIGHT);\r
41         AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
42         AddAnchor(IDHELP, BOTTOM_RIGHT);\r
43 \r
44         this->AddOthersToAnchor();\r
45 \r
46         m_PathList.SortByPathname(true);\r
47         m_cList.SetExtendedStyle( m_cList.GetExtendedStyle()| LVS_EX_CHECKBOXES );\r
48 \r
49         for(int i=0;i<m_PathList.GetCount();i++)\r
50         {\r
51                 m_cList.InsertItem(0,m_PathList[i].GetWinPath());\r
52                 m_cList.SetCheck(0,true);\r
53         }\r
54 \r
55         \r
56 \r
57         //CAppUtils::SetListCtrlBackgroundImage(m_cList.GetSafeHwnd(), nID);\r
58 \r
59         CString title;\r
60         this->GetWindowText(title);\r
61         this->SetWindowText(title+_T(" - ")+g_Git.m_CurrentDir);\r
62         EnableSaveRestore(_T("ImportDlg"));\r
63 \r
64         return TRUE;\r
65 }\r
66 \r
67 BEGIN_MESSAGE_MAP(CImportPatchDlg, CResizableStandAloneDialog)\r
68         ON_LBN_SELCHANGE(IDC_LIST_PATCH, &CImportPatchDlg::OnLbnSelchangeListPatch)\r
69         ON_BN_CLICKED(IDC_BUTTON_ADD, &CImportPatchDlg::OnBnClickedButtonAdd)\r
70         ON_BN_CLICKED(IDC_BUTTON_UP, &CImportPatchDlg::OnBnClickedButtonUp)\r
71         ON_BN_CLICKED(IDC_BUTTON_DOWN, &CImportPatchDlg::OnBnClickedButtonDown)\r
72         ON_BN_CLICKED(IDC_BUTTON_REMOVE, &CImportPatchDlg::OnBnClickedButtonRemove)\r
73         ON_BN_CLICKED(IDOK, &CImportPatchDlg::OnBnClickedOk)\r
74 END_MESSAGE_MAP()\r
75 \r
76 \r
77 // CImportPatchDlg message handlers\r
78 \r
79 void CImportPatchDlg::OnLbnSelchangeListPatch()\r
80 {\r
81         // TODO: Add your control notification handler code here\r
82         if(m_cList.GetSelectedCount() == 0)\r
83         {\r
84                 this->GetDlgItem(IDC_BUTTON_UP)->EnableWindow(FALSE);\r
85                 this->GetDlgItem(IDC_BUTTON_DOWN)->EnableWindow(FALSE);\r
86                 this->GetDlgItem(IDC_BUTTON_REMOVE)->EnableWindow(FALSE);\r
87         }else\r
88         {\r
89                 this->GetDlgItem(IDC_BUTTON_UP)->EnableWindow(TRUE);\r
90                 this->GetDlgItem(IDC_BUTTON_DOWN)->EnableWindow(TRUE);\r
91                 this->GetDlgItem(IDC_BUTTON_REMOVE)->EnableWindow(TRUE);\r
92 \r
93         }\r
94 \r
95 }\r
96 \r
97 void CImportPatchDlg::OnBnClickedButtonAdd()\r
98 {\r
99         \r
100         CFileDialog dlg(TRUE,NULL,\r
101                                         NULL,\r
102                                         OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,\r
103                                         _T("Patch Files(*.patch)|*.patch|Diff Files(*.diff)|*.diff|All Files(*.*)|*.*||"));\r
104         if(dlg.DoModal()==IDOK)\r
105         {\r
106                 POSITION pos;\r
107                 pos=dlg.GetStartPosition();\r
108                 while(pos)\r
109                 {\r
110                         CString file=dlg.GetNextPathName(pos);\r
111                         file.Trim();\r
112                         if(!file.IsEmpty())\r
113                         {\r
114                                 m_cList.InsertItem(0,file);\r
115                                 m_cList.SetCheck(0,true);\r
116                         }\r
117                 }\r
118         }\r
119 \r
120         // TODO: Add your control notification handler code here\r
121 }\r
122 \r
123 void CImportPatchDlg::OnBnClickedButtonUp()\r
124 {\r
125         // TODO: Add your control notification handler code here\r
126         POSITION pos;\r
127         pos=m_cList.GetFirstSelectedItemPosition();\r
128         while(pos)\r
129         {\r
130                 int index=m_cList.GetNextSelectedItem(pos);\r
131                 if(index>1)\r
132                 {\r
133                         CString old=m_cList.GetItemText(index,0);\r
134                         m_cList.DeleteItem(index);\r
135 \r
136                         m_cList.InsertItem(index-1,old);\r
137                 }\r
138         }\r
139 \r
140 }\r
141 \r
142 void CImportPatchDlg::OnBnClickedButtonDown()\r
143 {\r
144         // TODO: Add your control notification handler code here\r
145         POSITION pos;\r
146         pos=m_cList.GetFirstSelectedItemPosition();\r
147         while(pos)\r
148         {\r
149                 int index=m_cList.GetNextSelectedItem(pos);\r
150                 \r
151                 CString old=m_cList.GetItemText(index,0);\r
152                 m_cList.DeleteItem(index);\r
153 \r
154                 m_cList.InsertItem(index+1,old);\r
155                 \r
156         }\r
157 }\r
158 \r
159 void CImportPatchDlg::OnBnClickedButtonRemove()\r
160 {\r
161         // TODO: Add your control notification handler code here\r
162         POSITION pos;\r
163         pos=m_cList.GetFirstSelectedItemPosition();\r
164         while(pos)\r
165         {\r
166                 int index=m_cList.GetNextSelectedItem(pos);\r
167                 m_cList.DeleteItem(index);\r
168                 pos=m_cList.GetFirstSelectedItemPosition();\r
169         }\r
170 }\r
171 \r
172 void CImportPatchDlg::OnBnClickedOk()\r
173 {\r
174         m_PathList.Clear();\r
175 \r
176         for(int i=0;i<m_cList.GetItemCount();i++)\r
177         {\r
178                 if(m_cList.GetCheck(i))\r
179                 {\r
180                         CTGitPath path;\r
181                         path.SetFromWin(m_cList.GetItemText(i,0));\r
182                         m_PathList.AddPath(path);\r
183                 }\r
184         }\r
185         OnOK();\r
186 }\r