#include "StdAfx.h"\r
#include "GitStatusListCtrl.h"\r
#include "resource.h"\r
+#include "..\\TortoiseShell\resource.h"\r
#include "MessageBox.h"\r
#include "MyMemDC.h"\r
#include "UnicodeUtils.h"\r
//SetItemCount(listIndex);\r
SetRedraw(FALSE);\r
DeleteAllItems();\r
+ m_nSelected = 0;\r
\r
for(int i=0;i<this->m_arStatusArray.size();i++)\r
{\r
pApp->DoWaitCursor(-1);\r
\r
Invalidate();\r
+\r
#if 0\r
\r
CWinApp * pApp = AfxGetApp();\r
pApp->DoWaitCursor(1);\r
m_dwShow = dwShow;\r
m_bShowFolders = bShowFolders;\r
- m_nSelected = 0;\r
+ \r
int nTopIndex = GetTopIndex();\r
POSITION posSelectedEntry = GetFirstSelectedItemPosition();\r
int nSelectedEntry = 0;\r
m_bBlock = TRUE;\r
// was the item checked?\r
\r
- CTGitPath *gitpath=(CTGitPath*)GetItemData(pNMLV->iItem);\r
- gitpath->m_Checked=GetCheck(pNMLV->iItem);\r
-#if 0\r
+ //CTGitPath *gitpath=(CTGitPath*)GetItemData(pNMLV->iItem);\r
+ //gitpath->m_Checked=GetCheck(pNMLV->iItem);\r
+\r
if (GetCheck(pNMLV->iItem))\r
{\r
CheckEntry(pNMLV->iItem, nListItems);\r
}\r
}\r
}\r
-#endif\r
+\r
GetStatisticsString();\r
m_bBlock = FALSE;\r
NotifyCheck();\r
void CGitStatusListCtrl::CheckEntry(int index, int nListItems)\r
{\r
Locker lock(m_critSec);\r
- FileEntry * entry = GetListEntry(index);\r
- ASSERT(entry != NULL);\r
- if (entry == NULL)\r
+ //FileEntry * entry = GetListEntry(index);\r
+ CTGitPath *path=(CTGitPath*)GetItemData(index);\r
+ ASSERT(path != NULL);\r
+ if (path == NULL)\r
return;\r
SetCheck(index, TRUE);\r
- entry = GetListEntry(index);\r
+ //entry = GetListEntry(index);\r
// if an unversioned item was checked, then we need to check if\r
// the parent folders are unversioned too. If the parent folders actually\r
// are unversioned, then check those too.\r
+#if 0\r
if (entry->status == git_wc_status_unversioned)\r
{\r
// we need to check the parent folder too\r
}\r
}\r
}\r
-\r
- if ( !entry->checked )\r
+#endif\r
+ if ( !path->m_Checked )\r
{\r
- entry->checked = TRUE;\r
+ path->m_Checked = TRUE;\r
m_nSelected++;\r
}\r
}\r
void CGitStatusListCtrl::UncheckEntry(int index, int nListItems)\r
{\r
Locker lock(m_critSec);\r
- FileEntry * entry = GetListEntry(index);\r
- ASSERT(entry != NULL);\r
- if (entry == NULL)\r
+ CTGitPath *path=(CTGitPath*)GetItemData(index);\r
+ ASSERT(path != NULL);\r
+ if (path == NULL)\r
return;\r
SetCheck(index, FALSE);\r
- entry = GetListEntry(index);\r
+ //entry = GetListEntry(index);\r
// item was unchecked\r
+#if 0\r
if (entry->path.IsDirectory())\r
{\r
// disable all files within an unselected folder, except when unchecking a folder with property changes\r
}\r
}\r
}\r
-\r
- if ( entry->checked )\r
+#endif\r
+ if ( path->m_Checked )\r
{\r
- entry->checked = FALSE;\r
+ path->m_Checked = FALSE;\r
m_nSelected--;\r
}\r
}\r
if (entry)\r
{\r
bool bOldCheck = !!GetCheck(i);\r
- SetEntryCheck(entry, i, bCheck);\r
+ //SetEntryCheck(entry, i, bCheck);\r
if (bCheck != bOldCheck)\r
{\r
if (bCheck)\r
\r
void CGitStatusListCtrl::OnContextMenuList(CWnd * pWnd, CPoint point)\r
{\r
-#if 0\r
+\r
WORD langID = (WORD)CRegStdWORD(_T("Software\\TortoiseGit\\LanguageID"), GetUserDefaultLangID());\r
\r
bool XPorLater = false;\r
}\r
else if (selIndex >= 0)\r
{\r
- FileEntry * entry = GetListEntry(selIndex);\r
- ASSERT(entry != NULL);\r
- if (entry == NULL)\r
+ //FileEntry * entry = GetListEntry(selIndex);\r
+\r
+ CTGitPath * filepath = (CTGitPath * )GetItemData(selIndex);\r
+\r
+ ASSERT(filepath != NULL);\r
+ if (filepath == NULL)\r
return;\r
- const CTGitPath& filepath = entry->path;\r
- git_wc_status_kind wcStatus = entry->status;\r
+\r
+ //const CTGitPath& filepath = entry->path;\r
+ int wcStatus = filepath->m_Action;\r
// entry is selected, now show the popup menu\r
Locker lock(m_critSec);\r
CIconMenu popup;\r
CMenu ignoreSubMenu;\r
if (popup.CreatePopupMenu())\r
{\r
- if (wcStatus >= git_wc_status_normal)\r
+ //Add Menu for verion controled file\r
+ if (!(wcStatus &CTGitPath::LOGACTIONS_UNVER))\r
{\r
if (m_dwContextMenus & SVNSLC_POPCOMPAREWITHBASE)\r
{\r
popup.AppendMenuIcon(IDSVNLC_COMPARE, IDS_LOG_COMPAREWITHBASE, IDI_DIFF);\r
popup.SetDefaultItem(IDSVNLC_COMPARE, FALSE);\r
}\r
-\r
+ //Select one items\r
if (GetSelectedCount() == 1)\r
{\r
bool bEntryAdded = false;\r
- if (entry->remotestatus <= git_wc_status_normal)\r
- {\r
- if (wcStatus > git_wc_status_normal)\r
- {\r
- if ((m_dwContextMenus & SVNSLC_POPGNUDIFF)&&(wcStatus != git_wc_status_deleted)&&(wcStatus != git_wc_status_missing))\r
- {\r
- popup.AppendMenuIcon(IDSVNLC_GNUDIFF1, IDS_LOG_POPUP_GNUDIFF, IDI_DIFF);\r
- bEntryAdded = true;\r
- }\r
- }\r
- if (wcStatus > git_wc_status_normal)\r
- {\r
- if (m_dwContextMenus & SVNSLC_POPCOMMIT)\r
- {\r
- popup.AppendMenuIcon(IDSVNLC_COMMIT, IDS_STATUSLIST_CONTEXT_COMMIT, IDI_COMMIT);\r
- popup.SetDefaultItem(IDSVNLC_COMPARE, FALSE);\r
- bEntryAdded = true;\r
- }\r
- }\r
- }\r
- else if (wcStatus != git_wc_status_deleted)\r
- {\r
- if (m_dwContextMenus & SVNSLC_POPCOMPARE)\r
- {\r
- popup.AppendMenuIcon(IDSVNLC_COMPAREWC, IDS_LOG_POPUP_COMPARE, IDI_DIFF);\r
- popup.SetDefaultItem(IDSVNLC_COMPARE, FALSE);\r
- bEntryAdded = true;\r
- }\r
- if (m_dwContextMenus & SVNSLC_POPGNUDIFF)\r
- {\r
- popup.AppendMenuIcon(IDSVNLC_GNUDIFF1, IDS_LOG_POPUP_GNUDIFF, IDI_DIFF);\r
- bEntryAdded = true;\r
- }\r
- }\r
+ //if (entry->remotestatus <= git_wc_status_normal)\r
+ //{\r
+ // if (wcStatus > git_wc_status_normal)\r
+ // {\r
+ // if ((m_dwContextMenus & SVNSLC_POPGNUDIFF)&&(wcStatus != git_wc_status_deleted)&&(wcStatus != git_wc_status_missing))\r
+ // {\r
+ popup.AppendMenuIcon(IDSVNLC_GNUDIFF1, IDS_LOG_POPUP_GNUDIFF, IDI_DIFF);\r
+ bEntryAdded = true;\r
+ // }\r
+ // }\r
+ //\r
+ //}\r
+ //else if (wcStatus != git_wc_status_deleted)\r
+ //{\r
+ // if (m_dwContextMenus & SVNSLC_POPCOMPARE)\r
+ // {\r
+ // popup.AppendMenuIcon(IDSVNLC_COMPAREWC, IDS_LOG_POPUP_COMPARE, IDI_DIFF);\r
+ // popup.SetDefaultItem(IDSVNLC_COMPARE, FALSE);\r
+ // bEntryAdded = true;\r
+ // }\r
+ // if (m_dwContextMenus & SVNSLC_POPGNUDIFF)\r
+ // {\r
+ // popup.AppendMenuIcon(IDSVNLC_GNUDIFF1, IDS_LOG_POPUP_GNUDIFF, IDI_DIFF);\r
+ // bEntryAdded = true;\r
+ // }\r
+ //}\r
if (bEntryAdded)\r
popup.AppendMenu(MF_SEPARATOR);\r
}\r
- else if (GetSelectedCount() > 1)\r
- {\r
- if (m_dwContextMenus & SVNSLC_POPCOMMIT)\r
- {\r
- popup.AppendMenuIcon(IDSVNLC_COMMIT, IDS_STATUSLIST_CONTEXT_COMMIT, IDI_COMMIT);\r
- popup.SetDefaultItem(IDSVNLC_COMPARE, FALSE);\r
- }\r
- }\r
- }\r
- if (GetSelectedCount() > 0)\r
- {\r
- if ((GetSelectedCount() == 2)&&(m_dwContextMenus & SVNSLC_POPREPAIRMOVE))\r
- {\r
- POSITION pos = GetFirstSelectedItemPosition();\r
- int index = GetNextSelectedItem(pos);\r
- if (index >= 0)\r
- {\r
- FileEntry * entry = GetListEntry(index);\r
- git_wc_status_kind status1 = git_wc_status_none;\r
- git_wc_status_kind status2 = git_wc_status_none;\r
- if (entry)\r
- status1 = entry->status;\r
- index = GetNextSelectedItem(pos);\r
- if (index >= 0)\r
- {\r
- entry = GetListEntry(index);\r
- if (entry)\r
- status2 = entry->status;\r
- if ((status1 == git_wc_status_missing && status2 == git_wc_status_unversioned) ||\r
- (status2 == git_wc_status_missing && status1 == git_wc_status_unversioned))\r
- {\r
- popup.AppendMenuIcon(IDSVNLC_REPAIRMOVE, IDS_STATUSLIST_CONTEXT_REPAIRMOVE);\r
- }\r
- }\r
- }\r
- }\r
- if (wcStatus > git_wc_status_normal)\r
- {\r
- if (m_dwContextMenus & SVNSLC_POPREVERT)\r
- {\r
- // reverting missing folders is not possible\r
- if (!entry->IsFolder() || (wcStatus != git_wc_status_missing))\r
- {\r
- popup.AppendMenuIcon(IDSVNLC_REVERT, IDS_MENUREVERT, IDI_REVERT);\r
- }\r
- }\r
- }\r
- if (entry->remotestatus > git_wc_status_normal)\r
- {\r
- if (m_dwContextMenus & SVNSLC_POPUPDATE)\r
- {\r
- popup.AppendMenuIcon(IDSVNLC_UPDATE, IDS_MENUUPDATE, IDI_UPDATE);\r
- }\r
- }\r
+ //else if (GetSelectedCount() > 1) \r
+ //{\r
+ // if (m_dwContextMenus & SVNSLC_POPCOMMIT)\r
+ // {\r
+ // popup.AppendMenuIcon(IDSVNLC_COMMIT, IDS_STATUSLIST_CONTEXT_COMMIT, IDI_COMMIT);\r
+ // popup.SetDefaultItem(IDSVNLC_COMPARE, FALSE);\r
+ // }\r
+ //}\r
}\r
- if ((GetSelectedCount() == 1)&&(wcStatus >= git_wc_status_normal)\r
- &&(wcStatus != git_wc_status_ignored))\r
+ \r
+ ///Select Multi item\r
+ //if (GetSelectedCount() > 0)\r
+ //{\r
+ // if ((GetSelectedCount() == 2)&&(m_dwContextMenus & SVNSLC_POPREPAIRMOVE))\r
+ // {\r
+ // POSITION pos = GetFirstSelectedItemPosition();\r
+ // int index = GetNextSelectedItem(pos);\r
+ // if (index >= 0)\r
+ // {\r
+ // FileEntry * entry = GetListEntry(index);\r
+ // git_wc_status_kind status1 = git_wc_status_none;\r
+ // git_wc_status_kind status2 = git_wc_status_none;\r
+ // if (entry)\r
+ // status1 = entry->status;\r
+ // index = GetNextSelectedItem(pos);\r
+ // if (index >= 0)\r
+ // {\r
+ // entry = GetListEntry(index);\r
+ // if (entry)\r
+ // status2 = entry->status;\r
+ // if ((status1 == git_wc_status_missing && status2 == git_wc_status_unversioned) ||\r
+ // (status2 == git_wc_status_missing && status1 == git_wc_status_unversioned))\r
+ // {\r
+ // popup.AppendMenuIcon(IDSVNLC_REPAIRMOVE, IDS_STATUSLIST_CONTEXT_REPAIRMOVE);\r
+ // }\r
+ // }\r
+ // }\r
+ // }\r
+ // if (wcStatus > git_wc_status_normal)\r
+ // {\r
+ // if (m_dwContextMenus & SVNSLC_POPREVERT)\r
+ // {\r
+ // // reverting missing folders is not possible\r
+ // if (!entry->IsFolder() || (wcStatus != git_wc_status_missing))\r
+ // {\r
+ // popup.AppendMenuIcon(IDSVNLC_REVERT, IDS_MENUREVERT, IDI_REVERT);\r
+ // }\r
+ // }\r
+ // }\r
+ // if (entry->remotestatus > git_wc_status_normal)\r
+ // {\r
+ // if (m_dwContextMenus & SVNSLC_POPUPDATE)\r
+ // {\r
+ // popup.AppendMenuIcon(IDSVNLC_UPDATE, IDS_MENUUPDATE, IDI_UPDATE);\r
+ // }\r
+ // }\r
+ //}\r
+ if ((GetSelectedCount() == 1)&&(!wcStatus & CTGitPath::LOGACTIONS_UNVER)\r
+ &&(!wcStatus & CTGitPath::LOGACTIONS_IGNORE))\r
{\r
if (m_dwContextMenus & SVNSLC_POPSHOWLOG)\r
{\r
popup.AppendMenuIcon(IDSVNLC_LOG, IDS_REPOBROWSE_SHOWLOG, IDI_LOG);\r
}\r
- if (m_dwContextMenus & SVNSLC_POPBLAME)\r
- {\r
- popup.AppendMenuIcon(IDSVNLC_BLAME, IDS_MENUBLAME, IDI_BLAME);\r
- }\r
+// if (m_dwContextMenus & SVNSLC_POPBLAME)\r
+// {\r
+// popup.AppendMenuIcon(IDSVNLC_BLAME, IDS_MENUBLAME, IDI_BLAME);\r
+// }\r
}\r
- if ((wcStatus != git_wc_status_deleted)&&(wcStatus != git_wc_status_missing) && (GetSelectedCount() == 1))\r
- {\r
+// if ((wcStatus != git_wc_status_deleted)&&(wcStatus != git_wc_status_missing) && (GetSelectedCount() == 1))\r
+// {\r
if (m_dwContextMenus & SVNSLC_POPOPEN)\r
{\r
popup.AppendMenuIcon(IDSVNLC_OPEN, IDS_REPOBROWSE_OPEN, IDI_OPEN);\r
{\r
popup.AppendMenuIcon(IDSVNLC_EXPLORE, IDS_STATUSLIST_CONTEXT_EXPLORE, IDI_EXPLORER);\r
}\r
- }\r
+// }\r
if (GetSelectedCount() > 0)\r
{\r
- if (((wcStatus == git_wc_status_unversioned)||(wcStatus == git_wc_status_ignored))&&(m_dwContextMenus & SVNSLC_POPDELETE))\r
- {\r
- popup.AppendMenuIcon(IDGitLC_DELETE, IDS_MENUREMOVE, IDI_DELETE);\r
- }\r
- if ((wcStatus != Git_wc_status_unversioned)&&(wcStatus != git_wc_status_ignored)&&(wcStatus != Git_wc_status_deleted)&&(wcStatus != Git_wc_status_added)&&(m_dwContextMenus & GitSLC_POPDELETE))\r
- {\r
- if (bShift)\r
- popup.AppendMenuIcon(IDGitLC_REMOVE, IDS_MENUREMOVEKEEP, IDI_DELETE);\r
- else\r
- popup.AppendMenuIcon(IDGitLC_REMOVE, IDS_MENUREMOVE, IDI_DELETE);\r
- }\r
- if ((wcStatus == git_wc_status_unversioned)||(wcStatus == git_wc_status_deleted))\r
+// if (((wcStatus == git_wc_status_unversioned)||(wcStatus == git_wc_status_ignored))&&(m_dwContextMenus & SVNSLC_POPDELETE))\r
+// {\r
+// popup.AppendMenuIcon(IDSVNLC_DELETE, IDS_MENUREMOVE, IDI_DELETE);\r
+// }\r
+// if ((wcStatus != Git_wc_status_unversioned)&&(wcStatus != git_wc_status_ignored)&&(wcStatus != Git_wc_status_deleted)&&(wcStatus != Git_wc_status_added)&&(m_dwContextMenus & GitSLC_POPDELETE))\r
+// {\r
+// if (bShift)\r
+// popup.AppendMenuIcon(IDGitLC_REMOVE, IDS_MENUREMOVEKEEP, IDI_DELETE);\r
+// else\r
+// popup.AppendMenuIcon(IDGitLC_REMOVE, IDS_MENUREMOVE, IDI_DELETE);\r
+// }\r
+ if ((wcStatus & CTGitPath::LOGACTIONS_UNVER)/*||(wcStatus == git_wc_status_deleted)*/)\r
{\r
if (m_dwContextMenus & SVNSLC_POPADD)\r
{\r
- if ( entry->IsFolder() )\r
- {\r
- popup.AppendMenuIcon(IDSVNLC_ADD_RECURSIVE, IDS_STATUSLIST_CONTEXT_ADD_RECURSIVE, IDI_ADD);\r
- }\r
- else\r
+ //if ( entry->IsFolder() )\r
+ //{\r
+ // popup.AppendMenuIcon(IDSVNLC_ADD_RECURSIVE, IDS_STATUSLIST_CONTEXT_ADD_RECURSIVE, IDI_ADD);\r
+ //}\r
+ //else\r
{\r
popup.AppendMenuIcon(IDSVNLC_ADD, IDS_STATUSLIST_CONTEXT_ADD, IDI_ADD);\r
}\r
}\r
- }\r
- if ( (wcStatus == git_wc_status_unversioned) || (wcStatus == git_wc_status_deleted) )\r
- {\r
+ //}\r
+ //if ( (wcStatus == git_wc_status_unversioned) || (wcStatus == git_wc_status_deleted) )\r
+ //{\r
if (m_dwContextMenus & SVNSLC_POPIGNORE)\r
{\r
+#if 0\r
CTSVNPathList ignorelist;\r
FillListOfSelectedItemPaths(ignorelist);\r
- // check if all selected entries have the same extension\r
+ //check if all selected entries have the same extension\r
bool bSameExt = true;\r
CString sExt;\r
for (int i=0; i<ignorelist.GetCount(); ++i)\r
}\r
popup.AppendMenuIcon(IDSVNLC_IGNORE, temp, IDI_IGNORE);\r
}\r
+#endif\r
}\r
}\r
}\r
+#if 0\r
if (((wcStatus == git_wc_status_conflicted)||(entry->isConflicted)))\r
{\r
if ((m_dwContextMenus & SVNSLC_POPCONFLICT)||(m_dwContextMenus & SVNSLC_POPRESOLVE))\r
popup.AppendMenuIcon(IDSVNLC_RESOLVEMINE, IDS_SVNPROGRESS_MENUUSEMINE, IDI_RESOLVE);\r
}\r
}\r
+#endif\r
+#if 0 \r
if (GetSelectedCount() > 0)\r
{\r
+\r
if ((!entry->IsFolder())&&(wcStatus >= git_wc_status_normal)\r
&&(wcStatus!=git_wc_status_missing)&&(wcStatus!=git_wc_status_deleted)\r
&&(wcStatus!=git_wc_status_added))\r
}\r
}\r
}\r
+\r
if ((!entry->IsFolder())&&((!entry->lock_token.IsEmpty())||(!entry->lock_remotetoken.IsEmpty())))\r
{\r
if (m_dwContextMenus & SVNSLC_POPUNLOCKFORCE)\r
}\r
}\r
}\r
-\r
+#endif\r
int cmd = popup.TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_NONOTIFY, point.x, point.y, this, 0);\r
+\r
m_bBlock = TRUE;\r
AfxGetApp()->DoWaitCursor(1);\r
int iItemCountBeforeMenuCmd = GetItemCount();\r
bool bForce = false;\r
switch (cmd)\r
{\r
+ case IDSVNLC_OPEN:\r
+ {\r
+ int ret = (int)ShellExecute(this->m_hWnd, NULL, filepath->GetWinPath(), NULL, NULL, SW_SHOW);\r
+ if (ret <= HINSTANCE_ERROR)\r
+ {\r
+ CString cmd = _T("RUNDLL32 Shell32,OpenAs_RunDLL ");\r
+ cmd += filepath->GetWinPath();\r
+ CAppUtils::LaunchApplication(cmd, NULL, false);\r
+ }\r
+ }\r
+ break;\r
+ case IDSVNLC_OPENWITH:\r
+ {\r
+ CString cmd = _T("RUNDLL32 Shell32,OpenAs_RunDLL ");\r
+ cmd += filepath->GetWinPathString() + _T(" ");\r
+ CAppUtils::LaunchApplication(cmd, NULL, false);\r
+ }\r
+ break;\r
+ case IDSVNLC_EXPLORE:\r
+ {\r
+ ShellExecute(this->m_hWnd, _T("explore"), filepath->GetWinPath(), NULL, NULL, SW_SHOW);\r
+ }\r
+ break;\r
+ case IDSVNLC_COMPARE:\r
+ {\r
+ POSITION pos = GetFirstSelectedItemPosition();\r
+ while ( pos )\r
+ {\r
+ int index = GetNextSelectedItem(pos);\r
+ StartDiff(index);\r
+ }\r
+ }\r
+ break;\r
+\r
+#if 0\r
case IDSVNLC_COPY:\r
CopySelectedEntriesToClipboard(0);\r
break;\r
SetRedraw(TRUE);\r
}\r
break;\r
+#endif\r
+\r
} // switch (cmd)\r
m_bBlock = FALSE;\r
AfxGetApp()->DoWaitCursor(-1);\r
GetStatisticsString();\r
int iItemCountAfterMenuCmd = GetItemCount();\r
- if (iItemCountAfterMenuCmd != iItemCountBeforeMenuCmd)\r
- {\r
- CWnd* pParent = GetParent();\r
- if (NULL != pParent && NULL != pParent->GetSafeHwnd())\r
- {\r
- pParent->SendMessage(SVNSLNM_ITEMCOUNTCHANGED);\r
- }\r
- }\r
+ //if (iItemCountAfterMenuCmd != iItemCountBeforeMenuCmd)\r
+ //{\r
+ // CWnd* pParent = GetParent();\r
+ // if (NULL != pParent && NULL != pParent->GetSafeHwnd())\r
+ // {\r
+ // pParent->SendMessage(SVNSLNM_ITEMCOUNTCHANGED);\r
+ // }\r
+ //}\r
} // if (popup.CreatePopupMenu())\r
} // if (selIndex >= 0)\r
-#endif\r
+\r
}\r
\r
void CGitStatusListCtrl::OnContextMenuHeader(CWnd * pWnd, CPoint point)\r
\r
CString CGitStatusListCtrl::GetStatisticsString()\r
{\r
-#if 0\r
+\r
CString sNormal, sAdded, sDeleted, sModified, sConflicted, sUnversioned;\r
WORD langID = (WORD)(DWORD)CRegStdWORD(_T("Software\\TortoiseGit\\LanguageID"), GetUserDefaultLangID());\r
TCHAR buf[MAX_STATUS_STRING_LENGTH];\r
}\r
\r
return sToolTip;\r
-#endif\r
- return _T("");\r
+\r
+\r
}\r
\r
CTGitPath CGitStatusListCtrl::GetCommonDirectory(bool bStrict)\r
m_nSelected = nListItems;\r
else\r
m_nSelected = 0;\r
+\r
for (int i=0; i<nListItems; ++i)\r
{\r
- FileEntry * entry = GetListEntry(i);\r
- ASSERT(entry != NULL);\r
- if (entry == NULL)\r
+ //FileEntry * entry = GetListEntry(i);\r
+ //ASSERT(entry != NULL);\r
+ CTGitPath *path = (CTGitPath *) GetItemData(i);\r
+ if (path == NULL)\r
continue;\r
- if ((bIncludeNoCommits)||(entry->GetChangeList().Compare(SVNSLC_IGNORECHANGELIST)))\r
- SetEntryCheck(entry,i,bSelect);\r
+ //if ((bIncludeNoCommits)||(entry->GetChangeList().Compare(SVNSLC_IGNORECHANGELIST)))\r
+ SetEntryCheck(path,i,bSelect);\r
}\r
+\r
// unblock before redrawing\r
m_bBlock = FALSE;\r
SetRedraw(TRUE);\r
\r
///< Set a checkbox on an entry in the listbox\r
// NEVER, EVER call SetCheck directly, because you'll end-up with the checkboxes and the 'checked' flag getting out of sync\r
-void CGitStatusListCtrl::SetEntryCheck(FileEntry* pEntry, int listboxIndex, bool bCheck)\r
+void CGitStatusListCtrl::SetEntryCheck(CTGitPath* pEntry, int listboxIndex, bool bCheck)\r
{\r
- pEntry->checked = bCheck;\r
+ pEntry->m_Checked = bCheck;\r
SetCheck(listboxIndex, bCheck);\r
}\r
\r
\r
void CGitStatusListCtrl::SetCheckOnAllDescendentsOf(const FileEntry* parentEntry, bool bCheck)\r
{\r
+#if 0\r
int nListItems = GetItemCount();\r
for (int j=0; j< nListItems ; ++j)\r
{\r
}\r
}\r
}\r
+#endif\r
}\r
\r
void CGitStatusListCtrl::WriteCheckedNamesToPathList(CTGitPathList& pathList)\r
// ON_BN_CLICKED(IDC_HISTORY, OnBnClickedHistory)\r
ON_BN_CLICKED(IDC_BUGTRAQBUTTON, OnBnClickedBugtraqbutton)\r
ON_EN_CHANGE(IDC_LOGMESSAGE, OnEnChangeLogmessage)\r
-// ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_ITEMCOUNTCHANGED, OnGitStatusListCtrlItemCountChanged)\r
-// ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_NEEDSREFRESH, OnGitStatusListCtrlNeedsRefresh)\r
-// ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_ADDFILE, OnFileDropped)\r
-// ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_CHECKCHANGED, &CCommitDlg::OnGitStatusListCtrlCheckChanged)\r
+ ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_ITEMCOUNTCHANGED, OnGitStatusListCtrlItemCountChanged)\r
+ ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_NEEDSREFRESH, OnGitStatusListCtrlNeedsRefresh)\r
+ ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_ADDFILE, OnFileDropped)\r
+ ON_REGISTERED_MESSAGE(CGitStatusListCtrl::SVNSLNM_CHECKCHANGED, &CCommitDlg::OnGitStatusListCtrlCheckChanged)\r
ON_REGISTERED_MESSAGE(WM_AUTOLISTREADY, OnAutoListReady) \r
ON_WM_TIMER()\r
ON_WM_SIZE()\r
CTGitPathList itemsToRemove;\r
bool bCheckedInExternal = false;\r
bool bHasConflicted = false;\r
- std::set<CString> checkedLists;\r
- std::set<CString> uncheckedLists;\r
-#if 0\r
+ //std::set<CString> checkedLists;\r
+ //std::set<CString> uncheckedLists;\r
+\r
+ CString checkedfiles;\r
+ CString uncheckedfiles;\r
+\r
for (int j=0; j<nListItems; j++)\r
{\r
- const CGitStatusListCtrl::FileEntry * entry = m_ListCtrl.GetListEntry(j);\r
- if (entry->IsChecked())\r
+ //const CGitStatusListCtrl::FileEntry * entry = m_ListCtrl.GetListEntry(j);\r
+ CTGitPath *entry = (CTGitPath*)m_ListCtrl.GetItemData(j);\r
+ if (entry->m_Checked)\r
{\r
+#if 0\r
if (entry->status == Git_wc_status_unversioned)\r
{\r
itemsToAdd.AddPath(entry->GetPath());\r
{\r
bCheckedInExternal = true;\r
}\r
- checkedLists.insert(entry->GetChangeList());\r
+#endif\r
+ //checkedLists.insert(entry->GetGitPathString());\r
+ checkedfiles += _T("\"")+entry->GetGitPathString()+_T("\" ");\r
}\r
else\r
{\r
+ //uncheckedLists.insert(entry->GetGitPathString());\r
+ uncheckedfiles += _T("\"")+entry->GetGitPathString()+_T("\" ");\r
+#if 0\r
if ((entry->status != Git_wc_status_unversioned) &&\r
(entry->status != Git_wc_status_ignored))\r
{\r
}\r
}\r
}\r
+#endif\r
}\r
}\r
-#endif\r
+\r
+ CString cmd;\r
+ CString out;\r
+ if(uncheckedfiles.GetLength()>0)\r
+ {\r
+ cmd.Format(_T("git.cmd reset -- %s"),uncheckedfiles);\r
+ g_Git.Run(cmd,&out);\r
+ }\r
+\r
+ if(checkedfiles.GetLength()>0)\r
+ {\r
+ cmd.Format(_T("git.cmd update-index -- %s"),checkedfiles);\r
+ g_Git.Run(cmd,&out);\r
+ }\r
+\r
+ cmd.Format(_T("git.cmd commit -m \"%s\""), m_sLogMessage);\r
+ g_Git.Run(cmd,&out);\r
\r
#if 0\r
if (m_pathwatcher.GetNumberOfChangedPaths() && m_bRecursive)\r
state = BST_UNCHECKED;\r
m_SelectAll.SetCheck(state);\r
}\r
-// m_ListCtrl.SelectAll(state == BST_CHECKED);\r
+ m_ListCtrl.SelectAll(state == BST_CHECKED);\r
}\r
\r
BOOL CCommitDlg::PreTranslateMessage(MSG* pMsg)\r
if ((!m_bRunThread) || (GetTickCount() - starttime > timeoutvalue))\r
return;\r
\r
+ CTGitPath *path = (CTGitPath*)m_ListCtrl.GetItemData(i);\r
+\r
+ CString sPartPath =path->GetGitPathString();\r
+ m_autolist.insert(sPartPath);\r
+\r
// const CGitStatusListCtrl::FileEntry * entry = m_ListCtrl.GetListEntry(i);\r
// if (!entry)\r
// continue;\r
// CString sPartPath = entry->GetRelativeGitPath();\r
// m_autolist.insert(sPartPath);\r
\r
-#if 0\r
+\r
int pos = 0;\r
int lastPos = 0;\r
while ((pos = sPartPath.Find('/', pos)) >= 0)\r
if ((dotPos >= 0) && (dotPos > lastPos))\r
m_autolist.insert(sPartPath.Mid(lastPos, dotPos - lastPos));\r
}\r
-\r
+#if 0\r
if ((entry->status <= Git_wc_status_normal)||(entry->status == Git_wc_status_ignored))\r
continue;\r
\r