DDX_Control(pDX, IDC_STATIC_STATUS, m_ctrlStatus);\r
DDX_Control(pDX, IDC_PROGRESS_SYNC, m_ctrlProgress);\r
DDX_Control(pDX, IDC_ANIMATE_SYNC, m_ctrlAnimate);\r
-\r
+ DDX_Control(pDX, IDC_BUTTON_SUBMODULE,m_ctrlSubmodule);\r
BRANCH_COMBOX_DDX;\r
}\r
\r
ON_CBN_EDITCHANGE(IDC_COMBOBOXEX_URL, &CSyncDlg::OnCbnEditchangeComboboxexUrl)\r
ON_MESSAGE(MSG_PROGRESSDLG_UPDATE_UI, OnProgressUpdateUI)\r
ON_BN_CLICKED(IDC_BUTTON_COMMIT, &CSyncDlg::OnBnClickedButtonCommit)\r
+ ON_BN_CLICKED(IDC_BUTTON_SUBMODULE, &CSyncDlg::OnBnClickedButtonSubmodule)\r
END_MESSAGE_MAP()\r
\r
\r
GetDlgItem(IDC_BUTTON_APPLY)->EnableWindow(bEnabled);\r
GetDlgItem(IDC_BUTTON_EMAIL)->EnableWindow(bEnabled);\r
GetDlgItem(IDOK)->EnableWindow(bEnabled);\r
+ GetDlgItem(IDC_BUTTON_SUBMODULE)->EnableWindow(bEnabled);\r
}\r
// CSyncDlg message handlers\r
\r
}\r
}\r
\r
+ ///Remote Update\r
+ if(CurrentEntry == 3)\r
+ {\r
+ m_CurrentCmd = GIT_COMMAND_REMOTE;\r
+ cmd=_T("git.exe remote update");\r
+ m_GitCmdList.push_back(cmd);\r
\r
+ m_pThread = AfxBeginThread(ProgressThreadEntry, this, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED);\r
+ if (m_pThread==NULL)\r
+ {\r
+ // ReportError(CString(MAKEINTRESOURCE(IDS_ERR_THREADSTARTFAILED)));\r
+ }\r
+ else\r
+ {\r
+ m_pThread->m_bAutoDelete = TRUE;\r
+ m_pThread->ResumeThread();\r
+ }\r
+ }\r
\r
}\r
\r
if( (!this->m_GitCmdStatus) && this->m_CurrentCmd == GIT_COMMAND_FETCHANDREBASE)\r
{\r
CRebaseDlg dlg;\r
- dlg.m_PostButtonText=_T("Email &Patch...");\r
+ dlg.m_PostButtonTexts.Add(_T("Email &Patch..."));\r
int response = dlg.DoModal();\r
if(response == IDOK)\r
{\r
{\r
// TODO: Add your control notification handler code here\r
this->UpdateData();\r
+ UpdateCombox();\r
\r
if(this->m_strURL.IsEmpty())\r
{\r
CString force;\r
CString all;\r
\r
- UpdateCombox();\r
+\r
\r
switch (m_ctrlPush.GetCurrentEntry())\r
{\r
AddAnchor(IDC_BUTTON_MANAGE,TOP_RIGHT);\r
AddAnchor(IDC_BUTTON_PULL,BOTTOM_LEFT);\r
AddAnchor(IDC_BUTTON_PUSH,BOTTOM_LEFT);\r
- AddAnchor(IDC_BUTTON_APPLY,BOTTOM_LEFT);\r
- AddAnchor(IDC_BUTTON_EMAIL,BOTTOM_LEFT);\r
+ AddAnchor(IDC_BUTTON_SUBMODULE,BOTTOM_LEFT);\r
+ AddAnchor(IDC_BUTTON_APPLY,BOTTOM_RIGHT);\r
+ AddAnchor(IDC_BUTTON_EMAIL,BOTTOM_RIGHT);\r
AddAnchor(IDC_PROGRESS_SYNC,TOP_LEFT,TOP_RIGHT);\r
AddAnchor(IDOK,BOTTOM_RIGHT);\r
AddAnchor(IDHELP,BOTTOM_RIGHT);\r
AddAnchor(IDC_STATIC_STATUS,BOTTOM_LEFT);\r
AddAnchor(IDC_ANIMATE_SYNC,TOP_LEFT);\r
AddAnchor(IDC_BUTTON_COMMIT,BOTTOM_LEFT);\r
- \r
+\r
BRANCH_COMBOX_ADD_ANCHOR();\r
\r
this->GetDlgItem(IDC_BUTTON_COMMIT)->ShowWindow(SW_HIDE);\r
this->m_ctrlPull.AddEntry(CString(_T("&Pull")));\r
this->m_ctrlPull.AddEntry(CString(_T("Fetc&h")));\r
this->m_ctrlPull.AddEntry(CString(_T("Fetch&&Re&base")));\r
+ this->m_ctrlPull.AddEntry(CString(_T("Remote Update")));\r
\r
+ this->m_ctrlSubmodule.AddEntry(CString(_T("Submodule Update")));\r
+ this->m_ctrlSubmodule.AddEntry(CString(_T("Submodule Init")));\r
+ this->m_ctrlSubmodule.AddEntry(CString(_T("Submodule Sync")));\r
\r
WorkingDir.Replace(_T(':'),_T('_'));\r
\r
\r
this->m_regPullButton = CRegDWORD(regkey+_T("\\Pull"),0);\r
this->m_regPushButton = CRegDWORD(regkey+_T("\\Push"),0);\r
+ this->m_regSubmoduleButton = CRegDWORD(regkey+_T("\\Submodule"));\r
\r
this->m_ctrlPull.SetCurrentEntry(this->m_regPullButton);\r
this->m_ctrlPush.SetCurrentEntry(this->m_regPushButton);\r
+ this->m_ctrlSubmodule.SetCurrentEntry(this->m_regSubmoduleButton);\r
\r
CString str;\r
this->GetWindowText(str);\r
EnableSaveRestore(_T("SyncDlg"));\r
\r
this->m_ctrlURL.LoadHistory(CString(_T("Software\\TortoiseGit\\History\\SyncURL\\"))+WorkingDir, _T("url"));\r
- \r
+\r
+ STRING_VECTOR list;\r
+ \r
+ if(!g_Git.GetRemoteList(list))\r
+ { \r
+ for(unsigned int i=0;i<list.size();i++)\r
+ {\r
+ m_ctrlURL.AddString(list[i]);\r
+ }\r
+ } \r
m_ctrlURL.SetCurSel(0);\r
m_ctrlRemoteBranch.SetCurSel(0);\r
-\r
+ m_ctrlURL.SetURLHistory(true);\r
+ \r
this->LoadBranchInfo();\r
\r
this->m_bInited=true;\r
{\r
FetchComplete();\r
}\r
+ if(this->m_CurrentCmd == GIT_COMMAND_SUBMODULE)\r
+ {\r
+ //this->m_ctrlCmdOut.SetSel(-1,-1);\r
+ //this->m_ctrlCmdOut.ReplaceSel(_T("Done\r\n"));\r
+ //this->m_ctrlCmdOut.SetSel(-1,-1);\r
+ EnableControlButton(true);\r
+ SwitchToInput();\r
+ }\r
+ if(this->m_CurrentCmd == GIT_COMMAND_REMOTE)\r
+ {\r
+ this->FetchOutList(true);\r
+ EnableControlButton(true);\r
+ SwitchToInput();\r
+ }\r
}\r
\r
if(lParam != 0)\r
\r
void CSyncDlg::ParserCmdOutput(TCHAR ch)\r
{\r
- //TRACE(_T("%c"),ch);\r
- int linenum;\r
- int index;\r
- linenum = this->m_ctrlCmdOut.GetLineCount();\r
-\r
- if( ch == _T('\r') )\r
- {\r
- if(linenum>0)\r
- m_CmdOutCurrentPos = this->m_ctrlCmdOut.LineIndex(linenum-1);\r
- else\r
- m_CmdOutCurrentPos = 0;\r
-\r
- //TRACE(_T("line %d - %d\n"),index,m_ctrlCmdOut.GetTextLength());\r
- }else\r
- m_CmdOutCurrentPos++;\r
- \r
- this->m_ctrlCmdOut.SetSel(m_CmdOutCurrentPos,m_CmdOutCurrentPos+1);\r
- \r
- if( ch != _T('\r') )\r
- this->m_ctrlCmdOut.ReplaceSel(CString(ch));\r
- \r
- int firstline = m_ctrlCmdOut.GetFirstVisibleLine();\r
- if( linenum - firstline > 4 )\r
- this->m_ctrlCmdOut.LineScroll(linenum - firstline -4);\r
-\r
- if( ch == _T('\r') || ch == _T('\n') )\r
- {\r
- int s1=m_LogText.Find(_T(':'));\r
- int s2=m_LogText.Find(_T('%'));\r
- if(s1>0 && s2>0)\r
- {\r
- // this->m_CurrentWork.SetWindowTextW(m_LogText.Left(s1));\r
- int pos=CProgressDlg::FindPercentage(m_LogText);\r
- TRACE(_T("Pos %d\r\n"),pos);\r
- if(pos>0)\r
- this->m_ctrlProgress.SetPos(pos);\r
- }\r
- m_LogText=_T(""); \r
- }\r
- m_LogText+=ch;\r
-\r
+ CProgressDlg::ParserCmdOutput(m_ctrlCmdOut,m_ctrlProgress,m_LogText,ch);\r
}\r
void CSyncDlg::OnBnClickedButtonCommit()\r
{\r
SaveHistory();\r
__super::OnOK();\r
}\r
+\r
+void CSyncDlg::OnBnClickedButtonSubmodule()\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ // TODO: Add your control notification handler code here\r
+ this->UpdateData();\r
+ UpdateCombox();\r
+\r
+ this->m_regSubmoduleButton = this->m_ctrlSubmodule.GetCurrentEntry();\r
+\r
+ this->SwitchToRun();\r
+ \r
+ this->m_bAbort=false;\r
+ this->m_GitCmdList.clear();\r
+\r
+ ShowTab(IDC_CMD_LOG);\r
+\r
+ CString cmd;\r
+\r
+ switch (m_ctrlSubmodule.GetCurrentEntry())\r
+ {\r
+ case 0:\r
+ cmd=_T("git.exe submodule update");\r
+ break;\r
+ case 1:\r
+ cmd=_T("git.exe submodule init");\r
+ break;\r
+ case 2:\r
+ cmd=_T("git.exe submodule sync");\r
+ break;\r
+ }\r
+\r
+ \r
+ m_GitCmdList.push_back(cmd);\r
+\r
+ m_CurrentCmd = GIT_COMMAND_SUBMODULE;\r
+\r
+ m_pThread = AfxBeginThread(ProgressThreadEntry, this, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED);\r
+ if (m_pThread==NULL)\r
+ {\r
+// ReportError(CString(MAKEINTRESOURCE(IDS_ERR_THREADSTARTFAILED)));\r
+ }\r
+ else\r
+ {\r
+ m_pThread->m_bAutoDelete = TRUE;\r
+ m_pThread->ResumeThread();\r
+ }\r
+\r
+}\r