1 // PathListCtrl.cpp : implementation file
5 #include "TortoiseProc.h"
6 #include "PatchListCtrl.h"
10 #include "PathUtils.h"
14 IMPLEMENT_DYNAMIC(CPatchListCtrl
, CListCtrl
)
16 CPatchListCtrl::CPatchListCtrl()
18 m_ContextMenuMask
=0xFFFFFFFF;
21 CPatchListCtrl::~CPatchListCtrl()
26 BEGIN_MESSAGE_MAP(CPatchListCtrl
, CListCtrl
)
27 ON_NOTIFY_REFLECT(NM_DBLCLK
, &CPatchListCtrl::OnNMDblclk
)
33 // CPatchListCtrl message handlers
37 void CPatchListCtrl::OnNMDblclk(NMHDR
*pNMHDR
, LRESULT
*pResult
)
39 LPNMITEMACTIVATE pNMItemActivate
= reinterpret_cast<LPNMITEMACTIVATE
>(pNMHDR
);
40 // TODO: Add your control notification handler code here
41 CString path
=GetItemText(pNMItemActivate
->iItem
,0);
43 gitpath
.SetFromWin(path
);
45 CAppUtils::StartUnifiedDiffViewer(path
,gitpath
.GetFilename());
51 void CPatchListCtrl::OnContextMenu(CWnd
* /*pWnd*/, CPoint point
)
53 // TODO: Add your message handler code here
54 int selected
=this->GetSelectedCount();
56 POSITION pos
=this->GetFirstSelectedItemPosition();
57 index
=this->GetNextSelectedItem(pos
);
60 if (popup
.CreatePopupMenu())
64 if( m_ContextMenuMask
&GetMenuMask(MENU_VIEWPATCH
))
65 popup
.AppendMenuIcon(MENU_VIEWPATCH
, IDS_MENU_VIEWPATCH
, 0);
67 if( m_ContextMenuMask
&GetMenuMask(MENU_VIEWWITHMERGE
))
68 popup
.AppendMenuIcon(MENU_VIEWWITHMERGE
, IDS_MENU_VIEWWITHMERGE
, 0);
70 popup
.SetDefaultItem(MENU_VIEWPATCH
, FALSE
);
74 if( m_ContextMenuMask
&GetMenuMask(MENU_SENDMAIL
))
75 popup
.AppendMenuIcon(MENU_SENDMAIL
, IDS_MENU_SENDMAIL
, IDI_MENUSENDMAIL
);
77 if( m_ContextMenuMask
&GetMenuMask(MENU_APPLY
))
78 popup
.AppendMenuIcon(MENU_APPLY
, IDS_MENU_APPLY
, 0);
81 int cmd
= popup
.TrackPopupMenu(TPM_RETURNCMD
| TPM_LEFTALIGN
| TPM_NONOTIFY
, point
.x
, point
.y
, this, 0);
88 CString path
=GetItemText(index
,0);
90 gitpath
.SetFromWin(path
);
92 CAppUtils::StartUnifiedDiffViewer(path
,gitpath
.GetFilename());
95 case MENU_VIEWWITHMERGE
:
97 CString path
=GetItemText(index
,0);
99 gitpath
.SetFromWin(path
);
102 dir
.SetFromGit(g_Git
.m_CurrentDir
);
104 CAppUtils::StartExtPatch(gitpath
,dir
);
109 LaunchProc(CString(_T("sendmail")));
114 LaunchProc(CString(_T("importpatch")));
124 int CPatchListCtrl::LaunchProc(CString
& command
)
126 CString tempfile
=GetTempFile();
127 POSITION pos
=this->GetFirstSelectedItemPosition();
129 file
.Open(tempfile
,CFile::modeWrite
|CFile::modeCreate
);
133 int index
= this->GetNextSelectedItem(pos
);
134 CString one
=this->GetItemText(index
,0);
135 file
.Write(one
.GetBuffer(),sizeof(TCHAR
)*one
.GetLength());
136 file
.Write(_T("\n"),sizeof(TCHAR
)*1);
142 cmd
= CPathUtils::GetAppDirectory();
143 cmd
+= _T("TortoiseProc.exe /command:");
145 cmd
+=_T(" /pathfile:\"");
147 cmd
+= _T("\" /deletepathfile");
148 CAppUtils::LaunchApplication(cmd
, IDS_ERR_PROC
,false);