#include "SyncDlg.h"\r
#include "progressdlg.h"\r
#include "MessageBox.h"\r
-\r
+#include "ImportPatchDlg.h"\r
// CSyncDlg dialog\r
\r
IMPLEMENT_DYNAMIC(CSyncDlg, CResizableStandAloneDialog)\r
void CSyncDlg::OnBnClickedButtonApply()\r
{\r
// TODO: Add your control notification handler code here\r
+ CString oldhash;\r
+ oldhash=g_Git.GetHash(CString(_T("HEAD")));\r
+ \r
+ CImportPatchDlg dlg;\r
+ CString cmd,output;\r
+\r
+ if(dlg.DoModal() == IDOK)\r
+ {\r
+ int err=0;\r
+ for(int i=0;i<dlg.m_PathList.GetCount();i++)\r
+ { \r
+ cmd.Format(_T("git.exe am \"%s\""),dlg.m_PathList[i].GetGitPathString());\r
+ \r
+ if(g_Git.Run(cmd,&output,CP_ACP))\r
+ {\r
+ CMessageBox::Show(NULL,output,_T("TortoiseGit"),MB_OK);\r
+\r
+ err=1;\r
+ break;\r
+ }\r
+ }\r
+ this->m_ctrlCmdOut.SetSel(-1,-1);\r
+ this->m_ctrlCmdOut.ReplaceSel(output);\r
+\r
+ CString newhash=g_Git.GetHash(CString(_T("HEAD"))); \r
+\r
+ this->m_InLogList.Clear();\r
+ this->m_InChangeFileList.Clear();\r
+\r
+ if(newhash == oldhash)\r
+ {\r
+ this->m_ctrlTabCtrl.ShowTab(IDC_IN_CHANGELIST-1,false);\r
+ this->m_InLogList.ShowText(_T("No commits get from patch"));\r
+ this->m_ctrlTabCtrl.ShowTab(IDC_IN_LOGLIST-1,true);\r
+\r
+ }else\r
+ {\r
+ this->m_ctrlTabCtrl.ShowTab(IDC_IN_CHANGELIST-1,true);\r
+ this->m_ctrlTabCtrl.ShowTab(IDC_IN_LOGLIST-1,true);\r
+ \r
+ this->AddDiffFileList(&m_InChangeFileList,&m_arInChangeList,newhash,oldhash);\r
+ }\r
+\r
+ if(err)\r
+ {\r
+ this->ShowTab(IDC_CMD_LOG);\r
+\r
+ }else\r
+ {\r
+ this->ShowTab(IDC_IN_LOGLIST);\r
+ }\r
+ }\r
}\r
\r
void CSyncDlg::OnBnClickedButtonEmail()\r
\r
//m_ctrlCmdOut.ReplaceSel(_T("Hello"));\r
\r
+ //---------- Create in coming list ctrl -----------\r
+ dwStyle =LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_OWNERDATA | WS_BORDER | WS_TABSTOP | WS_CHILD | WS_VISIBLE;;\r
+\r
+ if( !m_InLogList.Create(dwStyle,rectDummy,&m_ctrlTabCtrl,IDC_IN_LOGLIST))\r
+ {\r
+ TRACE0("Failed to create output commits window\n");\r
+ return FALSE; // fail to create\r
+\r
+ }\r
+\r
+ m_ctrlTabCtrl.InsertTab(&m_InLogList,_T("In Commits"),-1);\r
+\r
+ m_InLogList.InsertGitColumn();\r
+\r
+ //----------- Create In Change file list -----------\r
+ dwStyle = LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP |LVS_SINGLESEL |WS_CHILD | WS_VISIBLE;\r
+ \r
+ if( !m_InChangeFileList.Create(dwStyle,rectDummy,&m_ctrlTabCtrl,IDC_IN_CHANGELIST))\r
+ {\r
+ TRACE0("Failed to create output change files window\n");\r
+ return FALSE; // fail to create\r
+ }\r
+ m_ctrlTabCtrl.InsertTab(&m_InChangeFileList,_T("Out ChangeList"),-1);\r
+\r
+ m_InChangeFileList.Init(SVNSLC_COLEXT | SVNSLC_COLSTATUS |SVNSLC_COLADD|SVNSLC_COLDEL , _T("OutSyncDlg"),\r
+ (CGitStatusListCtrl::GetContextMenuBit(CGitStatusListCtrl::IDSVNLC_COMPARETWO)|\r
+ CGitStatusListCtrl::GetContextMenuBit(CGitStatusListCtrl::IDSVNLC_GNUDIFF2)),false);\r
+\r
+\r
//---------- Create Commit List Ctrl---------------\r
\r
dwStyle =LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_OWNERDATA | WS_BORDER | WS_TABSTOP | WS_CHILD | WS_VISIBLE;;\r
FetchOutList();\r
\r
m_ctrlTabCtrl.ShowTab(IDC_CMD_LOG-1,false);\r
-\r
+ m_ctrlTabCtrl.ShowTab(IDC_IN_LOGLIST-1,false);\r
+ m_ctrlTabCtrl.ShowTab(IDC_IN_CHANGELIST-1,false);\r
+ \r
return TRUE; // return TRUE unless you set the focus to a control\r
// EXCEPTION: OCX Property Pages should return FALSE\r
}\r
{\r
str.Format(_T("%d commits ahead \"%s\""),m_OutLogList.GetItemCount(),remotebranch);\r
this->m_ctrlStatus.SetWindowText(str);\r
- g_Git.GetCommitDiffList(localbranch,remotebranch,m_arOutChangeList);\r
- m_OutChangeFileList.m_Rev1=localbranch;\r
- m_OutChangeFileList.m_Rev2=remotebranch;\r
- m_OutChangeFileList.Show(0,this->m_arOutChangeList);\r
- m_OutChangeFileList.SetEmptyString(CString(_T("No changed file")));\r
+\r
+ AddDiffFileList(&m_OutChangeFileList,&m_arOutChangeList,localbranch,remotebranch);\r
+ \r
this->m_ctrlTabCtrl.ShowTab(m_OutChangeFileList.GetDlgCtrlID()-1,TRUE);\r
this->GetDlgItem(IDC_BUTTON_EMAIL)->EnableWindow(TRUE);\r
}\r
#include "GitLoglist.h"\r
// CSyncDlg dialog\r
#define IDC_SYNC_TAB 0x1000000\r
-#define IDC_CMD_LOG 0x1\r
-#define IDC_OUT_LOGLIST 0x2\r
-#define IDC_OUT_CHANGELIST 0x3\r
+\r
+#define IDC_CMD_LOG 0x1\r
+#define IDC_IN_LOGLIST 0x2\r
+#define IDC_IN_CHANGELIST 0x3\r
+#define IDC_OUT_LOGLIST 0x4\r
+#define IDC_OUT_CHANGELIST 0x5\r
+\r
class CSyncDlg : public CResizableStandAloneDialog,public CBranchCombox\r
{\r
DECLARE_DYNAMIC(CSyncDlg)\r
CRichEditCtrl m_ctrlCmdOut;\r
\r
CTGitPathList m_arOutChangeList;\r
+ CTGitPathList m_arInChangeList;\r
+\r
int m_CmdOutCurrentPos;\r
\r
CWinThread* m_pThread; \r
void ShowInputCtrl(bool bShow=true);\r
void SwitchToRun(){ShowProgressCtrl(true);ShowInputCtrl(false);EnableControlButton(false);}\r
void SwitchToInput(){ShowProgressCtrl(false);ShowInputCtrl(true);}\r
+ \r
LRESULT OnProgressUpdateUI(WPARAM wParam,LPARAM lParam);\r
\r
+ void AddDiffFileList(CGitStatusListCtrl *pCtrlList, CTGitPathList *pGitList,\r
+ CString &rev1,CString &rev2)\r
+ {\r
+ g_Git.GetCommitDiffList(rev1,rev2,*pGitList);\r
+ pCtrlList->m_Rev1=rev1;\r
+ pCtrlList->m_Rev2=rev2;\r
+ pCtrlList->Show(0,*pGitList);\r
+ pCtrlList->SetEmptyString(CString(_T("No changed file")));\r
+ return;\r
+ }\r
\r
DECLARE_MESSAGE_MAP()\r
public:\r