X-Git-Url: http://git.sourceforge.jp/view?p=tortoisegit%2FTortoiseGitJp.git;a=blobdiff_plain;f=src%2FTortoiseProc%2FCommitDlg.cpp;h=ca21f2718521c81f7ef8bfd2d6fe82af3fe9e778;hp=da34bf90046d9f1cfb191f0ba72c5acba6c3176e;hb=3409aae88491bb3600b87235ceacfd87f17d725e;hpb=04b65c53373cd80e02d084097b7d477587162a58 diff --git a/src/TortoiseProc/CommitDlg.cpp b/src/TortoiseProc/CommitDlg.cpp index da34bf9..ca21f27 100644 --- a/src/TortoiseProc/CommitDlg.cpp +++ b/src/TortoiseProc/CommitDlg.cpp @@ -33,6 +33,7 @@ #include "CommonResource.h" #include "UnicodeUtils.h" #include "ProgressDlg.h" +#include "ShellUpdater.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -51,11 +52,12 @@ CCommitDlg::CCommitDlg(CWnd* pParent /*=NULL*/) , m_bThreadRunning(FALSE) , m_bRunThread(FALSE) , m_pThread(NULL) - , m_bKeepLocks(FALSE) + , m_bWholeProject(FALSE) , m_bKeepChangeList(TRUE) , m_itemsCount(0) , m_bSelectFilesForCommit(TRUE) { + this->m_bCommitAmend=FALSE; } CCommitDlg::~CCommitDlg() @@ -74,7 +76,7 @@ void CCommitDlg::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_SHOWUNVERSIONED, m_bShowUnversioned); DDX_Control(pDX, IDC_SELECTALL, m_SelectAll); DDX_Text(pDX, IDC_BUGID, m_sBugID); - DDX_Check(pDX, IDC_KEEPLOCK, m_bKeepLocks); + DDX_Check(pDX, IDC_WHOLE_PROJECT, m_bWholeProject); DDX_Control(pDX, IDC_SPLITTER, m_wndSplitter); DDX_Check(pDX, IDC_KEEPLISTS, m_bKeepChangeList); DDX_Check(pDX,IDC_COMMIT_AMEND,m_bCommitAmend); @@ -98,6 +100,7 @@ BEGIN_MESSAGE_MAP(CCommitDlg, CResizableStandAloneDialog) ON_BN_CLICKED(IDC_SIGNOFF, &CCommitDlg::OnBnClickedSignOff) ON_STN_CLICKED(IDC_COMMITLABEL, &CCommitDlg::OnStnClickedCommitlabel) ON_BN_CLICKED(IDC_COMMIT_AMEND, &CCommitDlg::OnBnClickedCommitAmend) + ON_BN_CLICKED(IDC_WHOLE_PROJECT, &CCommitDlg::OnBnClickedWholeProject) END_MESSAGE_MAP() BOOL CCommitDlg::OnInitDialog() @@ -113,7 +116,7 @@ BOOL CCommitDlg::OnInitDialog() m_bKeepChangeList = m_regKeepChangelists; // GitConfig config; -// m_bKeepLocks = config.KeepLocks(); +// m_bWholeProject = config.KeepLocks(); UpdateData(FALSE); @@ -199,7 +202,7 @@ BOOL CCommitDlg::OnInitDialog() AdjustControlSize(IDC_SHOWUNVERSIONED); AdjustControlSize(IDC_SELECTALL); - AdjustControlSize(IDC_KEEPLOCK); + AdjustControlSize(IDC_WHOLE_PROJECT); GetClientRect(m_DlgOrigRect); m_cLogMessage.GetClientRect(m_LogMsgOrigRect); @@ -220,7 +223,7 @@ BOOL CCommitDlg::OnInitDialog() AddAnchor(IDC_SELECTALL, BOTTOM_LEFT); AddAnchor(IDC_EXTERNALWARNING, BOTTOM_RIGHT); AddAnchor(IDC_STATISTICS, BOTTOM_LEFT, BOTTOM_RIGHT); - AddAnchor(IDC_KEEPLOCK, BOTTOM_LEFT); + AddAnchor(IDC_WHOLE_PROJECT, BOTTOM_LEFT); AddAnchor(IDC_KEEPLISTS, BOTTOM_LEFT); AddAnchor(IDOK, BOTTOM_RIGHT); AddAnchor(IDCANCEL, BOTTOM_RIGHT); @@ -282,9 +285,9 @@ BOOL CCommitDlg::OnInitDialog() } err = FALSE; - this->UpdateData(TRUE); - this->m_bCommitAmend=FALSE; - this->UpdateData(FALSE); + //this->UpdateData(TRUE); + //this->m_bCommitAmend=FALSE; + //this->UpdateData(FALSE); return FALSE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE @@ -405,6 +408,7 @@ void CCommitDlg::OnOK() g_Git.Run(cmd,&out,CP_OEMCP); nchecked++; + //checkedLists.insert(entry->GetGitPathString()); // checkedfiles += _T("\"")+entry->GetGitPathString()+_T("\" "); } @@ -448,6 +452,8 @@ void CCommitDlg::OnOK() } #endif } + + CShellUpdater::Instance().AddPathForUpdate(*entry); } //if(uncheckedfiles.GetLength()>0) @@ -601,8 +607,8 @@ void CCommitDlg::OnOK() #endif UpdateData(); m_regAddBeforeCommit = m_bShowUnversioned; - if (!GetDlgItem(IDC_KEEPLOCK)->IsWindowEnabled()) - m_bKeepLocks = FALSE; + if (!GetDlgItem(IDC_WHOLE_PROJECT)->IsWindowEnabled()) + m_bWholeProject = FALSE; m_regKeepChangelists = m_bKeepChangeList; if (!GetDlgItem(IDC_KEEPLISTS)->IsWindowEnabled()) m_bKeepChangeList = FALSE; @@ -625,6 +631,8 @@ void CCommitDlg::OnOK() SaveSplitterPos(); CResizableStandAloneDialog::OnOK(); + + CShellUpdater::Instance().Flush(); } void CCommitDlg::SaveSplitterPos() @@ -656,6 +664,7 @@ UINT CCommitDlg::StatusThread() DialogEnableWindow(IDOK, false); DialogEnableWindow(IDC_SHOWUNVERSIONED, false); + DialogEnableWindow(IDC_WHOLE_PROJECT, false); DialogEnableWindow(IDC_SELECTALL, false); GetDlgItem(IDC_EXTERNALWARNING)->ShowWindow(SW_HIDE); DialogEnableWindow(IDC_EXTERNALWARNING, false); @@ -677,7 +686,11 @@ UINT CCommitDlg::StatusThread() #endif // Initialise the list control with the status of the files/folders below us m_ListCtrl.Clear(); - BOOL success = m_ListCtrl.GetStatus(m_pathList); + BOOL success; + if(m_bWholeProject) + success=m_ListCtrl.GetStatus(NULL); + else + success=m_ListCtrl.GetStatus(&m_pathList); //m_ListCtrl.UpdateFileList(git_revnum_t(GIT_REV_ZERO)); if(this->m_bShowUnversioned) @@ -730,7 +743,11 @@ UINT CCommitDlg::StatusThread() } CTGitPath commonDir = m_ListCtrl.GetCommonDirectory(false); - SetWindowText(m_sWindowTitle + _T(" - ") + commonDir.GetWinPathString()); + + if(this->m_bWholeProject) + SetWindowText(m_sWindowTitle + _T(" - ") + CString(_T("Whole Project"))); + else + SetWindowText(m_sWindowTitle + _T(" - ") + commonDir.GetWinPathString()); m_autolist.clear(); // we don't have to block the commit dialog while we fetch the @@ -746,11 +763,12 @@ UINT CCommitDlg::StatusThread() if (m_bRunThread) { DialogEnableWindow(IDC_SHOWUNVERSIONED, true); + DialogEnableWindow(IDC_WHOLE_PROJECT, true); DialogEnableWindow(IDC_SELECTALL, true); if (m_ListCtrl.HasChangeLists()) DialogEnableWindow(IDC_KEEPLISTS, true); if (m_ListCtrl.HasLocks()) - DialogEnableWindow(IDC_KEEPLOCK, true); + DialogEnableWindow(IDC_WHOLE_PROJECT, true); // we have the list, now signal the main thread about it SendMessage(WM_AUTOLISTREADY); // only send the message if the thread wasn't told to quit! } @@ -894,7 +912,10 @@ void CCommitDlg::OnBnClickedShowunversioned() dwShow &= ~SVNSLC_SHOWUNVERSIONED; if(dwShow & SVNSLC_SHOWUNVERSIONED) { - m_ListCtrl.GetStatus(this->m_pathList,false,false,true); + if(m_bWholeProject) + m_ListCtrl.GetStatus(NULL,false,false,true); + else + m_ListCtrl.GetStatus(&this->m_pathList,false,false,true); } m_ListCtrl.Show(dwShow); } @@ -1214,9 +1235,9 @@ void CCommitDlg::InsertMenuItems(CMenu& mPopup, int& nCmd) mPopup.AppendMenu(MF_STRING | MF_ENABLED, m_nPopupPasteListCmd, sMenuItemText); } -bool CCommitDlg::HandleMenuItemClick(int /*cmd*/, CSciEdit * /*pSciEdit*/) +bool CCommitDlg::HandleMenuItemClick(int cmd, CSciEdit * pSciEdit) { -#if 0 + if (m_bBlock) return false; if (cmd == m_nPopupPasteListCmd) @@ -1226,27 +1247,27 @@ bool CCommitDlg::HandleMenuItemClick(int /*cmd*/, CSciEdit * /*pSciEdit*/) int nListItems = m_ListCtrl.GetItemCount(); for (int i=0; iIsChecked()) + CTGitPath * entry = (CTGitPath*)m_ListCtrl.GetItemData(i); + if (entry&&entry->m_Checked) { CString line; - Git_wc_status_kind status = entry->status; - if (status == Git_wc_status_unversioned) - status = Git_wc_status_added; - if (status == Git_wc_status_missing) - status = Git_wc_status_deleted; + CString status = entry->GetActionName(); + if(entry->m_Action & CTGitPath::LOGACTIONS_UNVER) + status = _T("Add"); + + //git_wc_status_kind status = entry->status; WORD langID = (WORD)CRegStdWORD(_T("Software\\TortoiseGit\\LanguageID"), GetUserDefaultLangID()); if (m_ProjectProperties.bFileListInEnglish) langID = 1033; - GitStatus::GetStatusString(AfxGetResourceHandle(), status, buf, sizeof(buf)/sizeof(TCHAR), langID); - line.Format(_T("%-10s %s\r\n"), buf, (LPCTSTR)m_ListCtrl.GetItemText(i,0)); + + line.Format(_T("%-10s %s\r\n"),status , (LPCTSTR)m_ListCtrl.GetItemText(i,0)); logmsg += line; } } pSciEdit->InsertText(logmsg); return true; } -#endif + return false; } @@ -1510,3 +1531,28 @@ void CCommitDlg::OnBnClickedCommitAmend() } } + +void CCommitDlg::OnBnClickedWholeProject() +{ + // TODO: Add your control notification handler code here + m_tooltips.Pop(); // hide the tooltips + UpdateData(); + m_ListCtrl.Clear(); + if (!m_bBlock) + { + if(m_bWholeProject) + m_ListCtrl.GetStatus(NULL,true,false,true); + else + m_ListCtrl.GetStatus(&this->m_pathList,true,false,true); + + m_ListCtrl.Show(m_ListCtrl.GetShowFlags()); + } + + CTGitPath commonDir = m_ListCtrl.GetCommonDirectory(false); + + if(this->m_bWholeProject) + SetWindowText(m_sWindowTitle + _T(" - ") + CString(_T("Whole Project"))); + else + SetWindowText(m_sWindowTitle + _T(" - ") + commonDir.GetWinPathString()); + +}