#include "Hooks.h"\r
#include "CommonResource.h"\r
#include "UnicodeUtils.h"\r
+#include "ProgressDlg.h"\r
+#include "ShellUpdater.h"\r
\r
#ifdef _DEBUG\r
#define new DEBUG_NEW\r
, m_bThreadRunning(FALSE)\r
, m_bRunThread(FALSE)\r
, m_pThread(NULL)\r
- , m_bKeepLocks(FALSE)\r
+ , m_bWholeProject(FALSE)\r
, m_bKeepChangeList(TRUE)\r
, m_itemsCount(0)\r
, m_bSelectFilesForCommit(TRUE)\r
{\r
+ this->m_bCommitAmend=FALSE;\r
}\r
\r
CCommitDlg::~CCommitDlg()\r
DDX_Check(pDX, IDC_SHOWUNVERSIONED, m_bShowUnversioned);\r
DDX_Control(pDX, IDC_SELECTALL, m_SelectAll);\r
DDX_Text(pDX, IDC_BUGID, m_sBugID);\r
- DDX_Check(pDX, IDC_KEEPLOCK, m_bKeepLocks);\r
+ DDX_Check(pDX, IDC_WHOLE_PROJECT, m_bWholeProject);\r
DDX_Control(pDX, IDC_SPLITTER, m_wndSplitter);\r
DDX_Check(pDX, IDC_KEEPLISTS, m_bKeepChangeList);\r
DDX_Check(pDX,IDC_COMMIT_AMEND,m_bCommitAmend);\r
ON_BN_CLICKED(IDC_SIGNOFF, &CCommitDlg::OnBnClickedSignOff)\r
ON_STN_CLICKED(IDC_COMMITLABEL, &CCommitDlg::OnStnClickedCommitlabel)\r
ON_BN_CLICKED(IDC_COMMIT_AMEND, &CCommitDlg::OnBnClickedCommitAmend)\r
+ ON_BN_CLICKED(IDC_WHOLE_PROJECT, &CCommitDlg::OnBnClickedWholeProject)\r
END_MESSAGE_MAP()\r
\r
BOOL CCommitDlg::OnInitDialog()\r
m_bKeepChangeList = m_regKeepChangelists;\r
\r
// GitConfig config;\r
-// m_bKeepLocks = config.KeepLocks();\r
+// m_bWholeProject = config.KeepLocks();\r
\r
UpdateData(FALSE);\r
\r
\r
AdjustControlSize(IDC_SHOWUNVERSIONED);\r
AdjustControlSize(IDC_SELECTALL);\r
- AdjustControlSize(IDC_KEEPLOCK);\r
+ AdjustControlSize(IDC_WHOLE_PROJECT);\r
\r
GetClientRect(m_DlgOrigRect);\r
m_cLogMessage.GetClientRect(m_LogMsgOrigRect);\r
AddAnchor(IDC_SELECTALL, BOTTOM_LEFT);\r
AddAnchor(IDC_EXTERNALWARNING, BOTTOM_RIGHT);\r
AddAnchor(IDC_STATISTICS, BOTTOM_LEFT, BOTTOM_RIGHT);\r
- AddAnchor(IDC_KEEPLOCK, BOTTOM_LEFT);\r
+ AddAnchor(IDC_WHOLE_PROJECT, BOTTOM_LEFT);\r
AddAnchor(IDC_KEEPLISTS, BOTTOM_LEFT);\r
AddAnchor(IDOK, BOTTOM_RIGHT);\r
AddAnchor(IDCANCEL, BOTTOM_RIGHT);\r
}\r
err = FALSE;\r
\r
- this->UpdateData(TRUE);\r
- this->m_bCommitAmend=FALSE;\r
- this->UpdateData(FALSE);\r
+ //this->UpdateData(TRUE);\r
+ //this->m_bCommitAmend=FALSE;\r
+ //this->UpdateData(FALSE);\r
\r
return FALSE; // return TRUE unless you set the focus to a control\r
// EXCEPTION: OCX Property Pages should return FALSE\r
return;\r
}\r
m_sLogMessage = m_cLogMessage.GetText();\r
+ if ( m_sLogMessage.IsEmpty() )\r
+ {\r
+ // no message entered, go round again\r
+ CMessageBox::Show(this->m_hWnd, IDS_COMMITDLG_NOMESSAGE, IDS_APPNAME, MB_OK | MB_ICONERROR);\r
+ return;\r
+ }\r
if ((m_ProjectProperties.bWarnIfNoIssue) && (id.IsEmpty() && !m_ProjectProperties.HasBugID(m_sLogMessage)))\r
{\r
if (CMessageBox::Show(this->m_hWnd, IDS_COMMITDLG_NOISSUEWARNING, IDS_APPNAME, MB_YESNO | MB_ICONWARNING)!=IDYES)\r
bCheckedInExternal = true;\r
}\r
#endif\r
- cmd.Format(_T("git.exe update-index -- \"%s\""),entry->GetGitPathString());\r
+ if( entry->m_Action & CTGitPath::LOGACTIONS_UNVER)\r
+ cmd.Format(_T("git.exe add -f -- \"%s\""),entry->GetGitPathString());\r
+ else if ( entry->m_Action & CTGitPath::LOGACTIONS_DELETED)\r
+ cmd.Format(_T("git.exe update-index --remove -- \"%s\""),entry->GetGitPathString());\r
+ else\r
+ cmd.Format(_T("git.exe update-index -- \"%s\""),entry->GetGitPathString());\r
+\r
g_Git.Run(cmd,&out,CP_OEMCP);\r
nchecked++;\r
+\r
//checkedLists.insert(entry->GetGitPathString());\r
// checkedfiles += _T("\"")+entry->GetGitPathString()+_T("\" ");\r
}\r
}\r
#endif\r
}\r
+\r
+ CShellUpdater::Instance().AddPathForUpdate(*entry);\r
}\r
\r
//if(uncheckedfiles.GetLength()>0)\r
amend=_T("--amend");\r
}\r
cmd.Format(_T("git.exe commit %s -F \"%s\""),amend, tempfile);\r
- g_Git.Run(cmd,&out,CP_OEMCP);\r
+ \r
+ CProgressDlg progress;\r
+ progress.m_GitCmd=cmd;\r
+ progress.m_bShowCommand = FALSE; // don't show the commit command\r
+ progress.m_PreText = out; // show any output already generated in log window\r
+ progress.DoModal();\r
\r
CFile::Remove(tempfile);\r
-\r
- CMessageBox::Show(this->m_hWnd, out, _T("Commit Finish"), MB_OK | MB_ICONINFORMATION);\r
}else\r
CMessageBox::Show(this->m_hWnd, _T("Nothing Commit"), _T("Commit Finish"), MB_OK | MB_ICONINFORMATION);\r
#if 0\r
#endif\r
UpdateData();\r
m_regAddBeforeCommit = m_bShowUnversioned;\r
- if (!GetDlgItem(IDC_KEEPLOCK)->IsWindowEnabled())\r
- m_bKeepLocks = FALSE;\r
+ if (!GetDlgItem(IDC_WHOLE_PROJECT)->IsWindowEnabled())\r
+ m_bWholeProject = FALSE;\r
m_regKeepChangelists = m_bKeepChangeList;\r
if (!GetDlgItem(IDC_KEEPLISTS)->IsWindowEnabled())\r
m_bKeepChangeList = FALSE;\r
SaveSplitterPos();\r
\r
CResizableStandAloneDialog::OnOK();\r
+\r
+ CShellUpdater::Instance().Flush();\r
}\r
\r
void CCommitDlg::SaveSplitterPos()\r
\r
DialogEnableWindow(IDOK, false);\r
DialogEnableWindow(IDC_SHOWUNVERSIONED, false);\r
+ DialogEnableWindow(IDC_WHOLE_PROJECT, false);\r
DialogEnableWindow(IDC_SELECTALL, false);\r
GetDlgItem(IDC_EXTERNALWARNING)->ShowWindow(SW_HIDE);\r
DialogEnableWindow(IDC_EXTERNALWARNING, false);\r
#endif\r
// Initialise the list control with the status of the files/folders below us\r
m_ListCtrl.Clear();\r
- BOOL success = m_ListCtrl.GetStatus(m_pathList);\r
+ BOOL success;\r
+ if(m_bWholeProject)\r
+ success=m_ListCtrl.GetStatus(NULL);\r
+ else\r
+ success=m_ListCtrl.GetStatus(&m_pathList);\r
\r
//m_ListCtrl.UpdateFileList(git_revnum_t(GIT_REV_ZERO));\r
if(this->m_bShowUnversioned)\r
- m_ListCtrl.UpdateFileList(CGitStatusListCtrl::FILELIST_UNVER);\r
+ m_ListCtrl.UpdateFileList(CGitStatusListCtrl::FILELIST_UNVER,true,&m_pathList);\r
\r
m_ListCtrl.CheckIfChangelistsArePresent(false);\r
\r
else\r
{\r
DWORD dwCheck = m_bSelectFilesForCommit ? dwShow : 0;\r
+ dwCheck &=~(CTGitPath::LOGACTIONS_UNVER); //don't check unversion file default. \r
m_ListCtrl.Show(dwShow, dwCheck);\r
m_bSelectFilesForCommit = true;\r
}\r
{\r
m_bShowUnversioned = TRUE;\r
GetDlgItem(IDC_SHOWUNVERSIONED)->SendMessage(BM_SETCHECK, BST_CHECKED);\r
- DWORD dwShow = SVNSLC_SHOWVERSIONEDBUTNORMALANDEXTERNALSFROMDIFFERENTREPOS | SVNSLC_SHOWUNVERSIONED | SVNSLC_SHOWLOCKS;\r
- m_ListCtrl.Show(dwShow);\r
+ DWORD dwShow = (DWORD)(SVNSLC_SHOWVERSIONEDBUTNORMALANDEXTERNALSFROMDIFFERENTREPOS | SVNSLC_SHOWUNVERSIONED | SVNSLC_SHOWLOCKS);\r
+ m_ListCtrl.UpdateFileList(CGitStatusListCtrl::FILELIST_UNVER);\r
+ m_ListCtrl.Show(dwShow,dwShow&(~CTGitPath::LOGACTIONS_UNVER));\r
}\r
}\r
\r
CTGitPath commonDir = m_ListCtrl.GetCommonDirectory(false);\r
- SetWindowText(m_sWindowTitle + _T(" - ") + commonDir.GetWinPathString());\r
+\r
+ if(this->m_bWholeProject) \r
+ SetWindowText(m_sWindowTitle + _T(" - ") + CString(_T("Whole Project")));\r
+ else\r
+ SetWindowText(m_sWindowTitle + _T(" - ") + commonDir.GetWinPathString());\r
\r
m_autolist.clear();\r
// we don't have to block the commit dialog while we fetch the\r
if (m_bRunThread)\r
{\r
DialogEnableWindow(IDC_SHOWUNVERSIONED, true);\r
+ DialogEnableWindow(IDC_WHOLE_PROJECT, true);\r
DialogEnableWindow(IDC_SELECTALL, true);\r
if (m_ListCtrl.HasChangeLists())\r
DialogEnableWindow(IDC_KEEPLISTS, true);\r
if (m_ListCtrl.HasLocks())\r
- DialogEnableWindow(IDC_KEEPLOCK, true);\r
+ DialogEnableWindow(IDC_WHOLE_PROJECT, true);\r
// we have the list, now signal the main thread about it\r
SendMessage(WM_AUTOLISTREADY); // only send the message if the thread wasn't told to quit!\r
}\r
dwShow &= ~SVNSLC_SHOWUNVERSIONED;\r
if(dwShow & SVNSLC_SHOWUNVERSIONED)\r
{\r
- m_ListCtrl.GetStatus(this->m_pathList,false,false,true);\r
+ if(m_bWholeProject)\r
+ m_ListCtrl.GetStatus(NULL,false,false,true);\r
+ else\r
+ m_ListCtrl.GetStatus(&this->m_pathList,false,false,true);\r
}\r
m_ListCtrl.Show(dwShow);\r
}\r
return 0;\r
}\r
\r
-LRESULT CCommitDlg::OnFileDropped(WPARAM, LPARAM lParam)\r
+LRESULT CCommitDlg::OnFileDropped(WPARAM, LPARAM /*lParam*/)\r
{\r
#if 0\r
BringWindowToTop();\r
mPopup.AppendMenu(MF_STRING | MF_ENABLED, m_nPopupPasteListCmd, sMenuItemText);\r
}\r
\r
-bool CCommitDlg::HandleMenuItemClick(int cmd, CSciEdit * pSciEdit)\r
+bool CCommitDlg::HandleMenuItemClick(int /*cmd*/, CSciEdit * /*pSciEdit*/)\r
{\r
#if 0\r
if (m_bBlock)\r
}\r
\r
}\r
+\r
+void CCommitDlg::OnBnClickedWholeProject()\r
+{\r
+ // TODO: Add your control notification handler code here\r
+ m_tooltips.Pop(); // hide the tooltips\r
+ UpdateData();\r
+ m_ListCtrl.Clear();\r
+ if (!m_bBlock)\r
+ {\r
+ if(m_bWholeProject)\r
+ m_ListCtrl.GetStatus(NULL,true,false,true);\r
+ else\r
+ m_ListCtrl.GetStatus(&this->m_pathList,true,false,true);\r
+ \r
+ m_ListCtrl.Show(m_ListCtrl.GetShowFlags());\r
+ }\r
+\r
+ CTGitPath commonDir = m_ListCtrl.GetCommonDirectory(false);\r
+\r
+ if(this->m_bWholeProject) \r
+ SetWindowText(m_sWindowTitle + _T(" - ") + CString(_T("Whole Project")));\r
+ else\r
+ SetWindowText(m_sWindowTitle + _T(" - ") + commonDir.GetWinPathString());\r
+\r
+}\r