return CAppUtils::SetListCtrlBackgroundImage(GetSafeHwnd(), nID);\r
}\r
\r
-BOOL CGitStatusListCtrl::GetStatus ( const CTGitPathList& pathList\r
+BOOL CGitStatusListCtrl::GetStatus ( const CTGitPathList* pathList\r
, bool bUpdate /* = FALSE */\r
, bool bShowIgnores /* = false */\r
, bool bShowUnRev\r
mask|= CGitStatusListCtrl::FILELIST_IGNORE;\r
if(bShowUnRev)\r
mask|= CGitStatusListCtrl::FILELIST_UNVER;\r
- this->UpdateFileList(mask,bUpdate,(CTGitPathList*)&pathList);\r
+ this->UpdateFileList(mask,bUpdate,(CTGitPathList*)pathList);\r
\r
\r
#if 0\r
// }\r
// }\r
//}\r
+\r
+ if ( (GetSelectedCount() >0 ) && (!(wcStatus & CTGitPath::LOGACTIONS_UNVER)))\r
+ {\r
+ if (m_dwContextMenus & SVNSLC_POPREVERT)\r
+ {\r
+ popup.AppendMenuIcon(IDSVNLC_REVERT, IDS_MENUREVERT, IDI_REVERT);\r
+ }\r
+ }\r
+\r
if ((GetSelectedCount() == 1)&&(!(wcStatus & CTGitPath::LOGACTIONS_UNVER))\r
&&(!(wcStatus & CTGitPath::LOGACTIONS_IGNORE)))\r
{\r
#endif\r
break;\r
\r
-#if 0\r
- case IDSVNLC_COPY:\r
- CopySelectedEntriesToClipboard(0);\r
- break;\r
- case IDSVNLC_COPYEXT:\r
- CopySelectedEntriesToClipboard((DWORD)-1);\r
- break;\r
- case IDSVNLC_PROPERTIES:\r
- {\r
- CTSVNPathList targetList;\r
- FillListOfSelectedItemPaths(targetList);\r
- CEditPropertiesDlg dlg;\r
- dlg.SetPathList(targetList);\r
- dlg.DoModal();\r
- if (dlg.HasChanged())\r
- {\r
- // since the user might have changed/removed/added\r
- // properties recursively, we don't really know\r
- // which items have changed their status.\r
- // So tell the parent to do a refresh.\r
- CWnd* pParent = GetParent();\r
- if (NULL != pParent && NULL != pParent->GetSafeHwnd())\r
- {\r
- pParent->SendMessage(SVNSLNM_NEEDSREFRESH);\r
- }\r
- }\r
- }\r
- break;\r
- case IDSVNLC_COMMIT:\r
- {\r
- CTSVNPathList targetList;\r
- FillListOfSelectedItemPaths(targetList);\r
- CTSVNPath tempFile = CTempFiles::Instance().GetTempFilePath(false);\r
- VERIFY(targetList.WriteToFile(tempFile.GetWinPathString()));\r
- CString commandline = CPathUtils::GetAppDirectory();\r
- commandline += _T("TortoiseProc.exe /command:commit /pathfile:\"");\r
- commandline += tempFile.GetWinPathString();\r
- commandline += _T("\"");\r
- commandline += _T(" /deletepathfile");\r
- CAppUtils::LaunchApplication(commandline, NULL, false);\r
- }\r
- break;\r
- case IDSVNLC_REVERT:\r
+ case IDSVNLC_REVERT:\r
{\r
// If at least one item is not in the status "added"\r
// we ask for a confirmation\r
int index;\r
while ((index = GetNextSelectedItem(pos)) >= 0)\r
{\r
- FileEntry * fentry = GetListEntry(index);\r
- if (fentry->textstatus != git_wc_status_added)\r
+ //FileEntry * fentry = GetListEntry(index);\r
+ CTGitPath *fentry=(CTGitPath*)GetItemData(index);\r
+ if(fentry && fentry->m_Action &CTGitPath::LOGACTIONS_MODIFIED )\r
{\r
bConfirm = TRUE;\r
break;\r
\r
if (!bConfirm || CMessageBox::Show(this->m_hWnd, str, _T("TortoiseSVN"), MB_YESNO | MB_ICONQUESTION)==IDYES)\r
{\r
- CTSVNPathList targetList;\r
+ CTGitPathList targetList;\r
FillListOfSelectedItemPaths(targetList);\r
\r
// make sure that the list is reverse sorted, so that\r
// children are removed before any parents\r
targetList.SortByPathname(true);\r
\r
- SVN git;\r
-\r
// put all reverted files in the trashbin, except the ones with 'added'\r
// status because they are not restored by the revert.\r
- CTSVNPathList delList;\r
+ CTGitPathList delList;\r
POSITION pos = GetFirstSelectedItemPosition();\r
int index;\r
while ((index = GetNextSelectedItem(pos)) >= 0)\r
{\r
- FileEntry * entry = GetListEntry(index);\r
- if (entry->status != git_wc_status_added)\r
- delList.AddPath(entry->GetPath());\r
+ CTGitPath *entry=(CTGitPath *)GetItemData(index);\r
+ if (entry&&(!(entry->m_Action& CTGitPath::LOGACTIONS_ADDED)))\r
+ delList.AddPath(*entry);\r
}\r
if (DWORD(CRegDWORD(_T("Software\\TortoiseGit\\RevertWithRecycleBin"), TRUE)))\r
delList.DeleteAllFiles(true);\r
\r
- if (!git.Revert(targetList, CStringArray(), FALSE))\r
+ if (g_Git.Revert(targetList))\r
{\r
- CMessageBox::Show(this->m_hWnd, git.GetLastErrorMessage(), _T("TortoiseSVN"), MB_ICONERROR);\r
+ CMessageBox::Show(this->m_hWnd, _T("Revert Fail"), _T("TortoiseSVN"), MB_ICONERROR);\r
}\r
else\r
{\r
- // since the entries got reverted we need to remove\r
- // them from the list too, if no remote changes are shown,\r
- // if the unmodified files are not shown\r
- // and if the item is not part of a changelist\r
- POSITION pos;\r
- SetRedraw(FALSE);\r
- while ((pos = GetFirstSelectedItemPosition())!=0)\r
- {\r
- int index;\r
- index = GetNextSelectedItem(pos);\r
- FileEntry * fentry = m_arStatusArray[m_arListArray[index]];\r
- if ( fentry->IsFolder() )\r
- {\r
- // refresh!\r
- CWnd* pParent = GetParent();\r
- if (NULL != pParent && NULL != pParent->GetSafeHwnd())\r
- {\r
- pParent->SendMessage(SVNSLNM_NEEDSREFRESH);\r
- }\r
- break;\r
- }\r
-\r
- BOOL bAdded = (fentry->textstatus == git_wc_status_added);\r
- fentry->status = git_wc_status_normal;\r
- fentry->propstatus = git_wc_status_normal;\r
- fentry->textstatus = git_wc_status_normal;\r
- fentry->copied = false;\r
- fentry->isConflicted = false;\r
- if ((fentry->GetChangeList().IsEmpty()&&(fentry->remotestatus <= git_wc_status_normal))||(m_dwShow & SVNSLC_SHOWNORMAL))\r
+ for(int i=0;i<targetList.GetCount();i++)\r
+ { \r
+ int nListboxEntries = GetItemCount();\r
+ for (int nItem=0; nItem<nListboxEntries; ++nItem)\r
{\r
- if ( bAdded )\r
- {\r
- // reverting added items makes them unversioned, not 'normal'\r
- if (fentry->IsFolder())\r
- fentry->propstatus = git_wc_status_none;\r
- else\r
- fentry->propstatus = git_wc_status_unversioned;\r
- fentry->status = git_wc_status_unversioned;\r
- fentry->textstatus = git_wc_status_unversioned;\r
- SetItemState(index, 0, LVIS_SELECTED);\r
- SetEntryCheck(fentry, index, false);\r
- }\r
- else if ((fentry->switched)||(m_dwShow & SVNSLC_SHOWNORMAL))\r
- {\r
- SetItemState(index, 0, LVIS_SELECTED);\r
- }\r
- else\r
+ CTGitPath *path=(CTGitPath*)GetItemData(nItem);\r
+ if (path->GetGitPathString()==targetList[i].GetGitPathString())\r
{\r
- m_nTotal--;\r
- if (GetCheck(index))\r
- m_nSelected--;\r
- RemoveListEntry(index);\r
- Invalidate();\r
+ RemoveListEntry(nItem);\r
+ break;\r
}\r
}\r
- else\r
- {\r
- SetItemState(index, 0, LVIS_SELECTED);\r
- }\r
}\r
SetRedraw(TRUE);\r
SaveColumnWidths();\r
}\r
}\r
break;\r
+#if 0\r
+ case IDSVNLC_COPY:\r
+ CopySelectedEntriesToClipboard(0);\r
+ break;\r
+ case IDSVNLC_COPYEXT:\r
+ CopySelectedEntriesToClipboard((DWORD)-1);\r
+ break;\r
+ case IDSVNLC_PROPERTIES:\r
+ {\r
+ CTSVNPathList targetList;\r
+ FillListOfSelectedItemPaths(targetList);\r
+ CEditPropertiesDlg dlg;\r
+ dlg.SetPathList(targetList);\r
+ dlg.DoModal();\r
+ if (dlg.HasChanged())\r
+ {\r
+ // since the user might have changed/removed/added\r
+ // properties recursively, we don't really know\r
+ // which items have changed their status.\r
+ // So tell the parent to do a refresh.\r
+ CWnd* pParent = GetParent();\r
+ if (NULL != pParent && NULL != pParent->GetSafeHwnd())\r
+ {\r
+ pParent->SendMessage(SVNSLNM_NEEDSREFRESH);\r
+ }\r
+ }\r
+ }\r
+ break;\r
+ case IDSVNLC_COMMIT:\r
+ {\r
+ CTSVNPathList targetList;\r
+ FillListOfSelectedItemPaths(targetList);\r
+ CTSVNPath tempFile = CTempFiles::Instance().GetTempFilePath(false);\r
+ VERIFY(targetList.WriteToFile(tempFile.GetWinPathString()));\r
+ CString commandline = CPathUtils::GetAppDirectory();\r
+ commandline += _T("TortoiseProc.exe /command:commit /pathfile:\"");\r
+ commandline += tempFile.GetWinPathString();\r
+ commandline += _T("\"");\r
+ commandline += _T(" /deletepathfile");\r
+ CAppUtils::LaunchApplication(commandline, NULL, false);\r
+ }\r
+ break;\r
+ \r
case IDSVNLC_COMPARE:\r
{\r
POSITION pos = GetFirstSelectedItemPosition();\r