OSDN Git Service

reorg loglist
authorFrank Li <lznuaa@gmail.com>
Thu, 25 Dec 2008 15:21:20 +0000 (23:21 +0800)
committerFrank Li <lznuaa@gmail.com>
Thu, 25 Dec 2008 15:21:20 +0000 (23:21 +0800)
src/Resources/TortoiseProcENG.rc
src/TortoiseProc/LogDlg.cpp
src/TortoiseProc/LogDlg.h
src/TortoiseProc/TortoiseProc.vcproj
src/TortoiseProc/resource.h

index 6b9d03b..fab9ac5 100644 (file)
Binary files a/src/Resources/TortoiseProcENG.rc and b/src/Resources/TortoiseProcENG.rc differ
index 149cc42..9cf6a02 100644 (file)
 //#include "EditPropertiesDlg.h"\r
 #include "FileDiffDlg.h"\r
 \r
-#if (NTDDI_VERSION < NTDDI_LONGHORN)\r
-\r
-enum LISTITEMSTATES_MINE {\r
-       LISS_NORMAL = 1,\r
-       LISS_HOT = 2,\r
-       LISS_SELECTED = 3,\r
-       LISS_DISABLED = 4,\r
-       LISS_SELECTEDNOTFOCUS = 5,\r
-       LISS_HOTSELECTED = 6,\r
-};\r
-\r
-#define MCS_NOTRAILINGDATES  0x0040\r
-#define MCS_SHORTDAYSOFWEEK  0x0080\r
-#define MCS_NOSELCHANGEONNAV 0x0100\r
-\r
-#define DTM_SETMCSTYLE    (DTM_FIRST + 11)\r
-\r
-#endif\r
-\r
-#define ICONITEMBORDER 5\r
 \r
 const UINT CLogDlg::m_FindDialogMessage = RegisterWindowMessage(FINDMSGSTRING);\r
 \r
 \r
-enum LogDlgContextMenuCommands\r
-{\r
-       // needs to start with 1, since 0 is the return value if *nothing* is clicked on in the context menu\r
-       ID_COMPARE = 1,\r
-       ID_SAVEAS,\r
-       ID_COMPARETWO,\r
-       ID_UPDATE,\r
-       ID_COPY,\r
-       ID_REVERTREV,\r
-       ID_MERGEREV,\r
-       ID_GNUDIFF1,\r
-       ID_GNUDIFF2,\r
-       ID_FINDENTRY,\r
-       ID_OPEN,\r
-       ID_BLAME,\r
-       ID_REPOBROWSE,\r
-       ID_LOG,\r
-       ID_POPPROPS,\r
-       ID_EDITAUTHOR,\r
-       ID_EDITLOG,\r
-       ID_DIFF,\r
-       ID_OPENWITH,\r
-       ID_COPYCLIPBOARD,\r
-       ID_CHECKOUT,\r
-       ID_REVERTTOREV,\r
-       ID_BLAMECOMPARE,\r
-       ID_BLAMETWO,\r
-       ID_BLAMEDIFF,\r
-       ID_VIEWREV,\r
-       ID_VIEWPATHREV,\r
-       ID_EXPORT,\r
-       ID_COMPAREWITHPREVIOUS,\r
-       ID_BLAMEWITHPREVIOUS,\r
-       ID_GETMERGELOGS,\r
-       ID_REVPROPS\r
-};\r
 \r
 \r
 IMPLEMENT_DYNAMIC(CLogDlg, CResizableStandAloneDialog)\r
@@ -159,10 +103,7 @@ CLogDlg::~CLogDlg()
        InterlockedExchange(&m_bNoDispUpdates, TRUE);\r
     m_CurrentFilteredChangedArray.RemoveAll();\r
        m_logEntries.ClearAll();\r
-       DestroyIcon(m_hModifiedIcon);\r
-       DestroyIcon(m_hReplacedIcon);\r
-       DestroyIcon(m_hAddedIcon);\r
-       DestroyIcon(m_hDeletedIcon);\r
+\r
        if ( m_pStoreSelection )\r
        {\r
                delete m_pStoreSelection;\r
@@ -195,17 +136,16 @@ BEGIN_MESSAGE_MAP(CLogDlg, CResizableStandAloneDialog)
        ON_REGISTERED_MESSAGE(m_FindDialogMessage, OnFindDialogMessage) \r
        ON_BN_CLICKED(IDC_GETALL, OnBnClickedGetall)\r
        ON_NOTIFY(NM_DBLCLK, IDC_LOGMSG, OnNMDblclkChangedFileList)\r
-       ON_NOTIFY(NM_DBLCLK, IDC_LOGLIST, OnNMDblclkLoglist)\r
        ON_WM_CONTEXTMENU()\r
        ON_WM_SETCURSOR()\r
        ON_BN_CLICKED(IDHELP, OnBnClickedHelp)\r
        ON_NOTIFY(LVN_ITEMCHANGED, IDC_LOGLIST, OnLvnItemchangedLoglist)\r
        ON_NOTIFY(EN_LINK, IDC_MSGVIEW, OnEnLinkMsgview)\r
        ON_BN_CLICKED(IDC_STATBUTTON, OnBnClickedStatbutton)\r
-       ON_NOTIFY(NM_CUSTOMDRAW, IDC_LOGLIST, OnNMCustomdrawLoglist)\r
+       //ON_NOTIFY(NM_CUSTOMDRAW, IDC_LOGLIST, OnNMCustomdrawLoglist)\r
        ON_MESSAGE(WM_FILTEREDIT_INFOCLICKED, OnClickedInfoIcon)\r
        ON_MESSAGE(WM_FILTEREDIT_CANCELCLICKED, OnClickedCancelFilter)\r
-       ON_NOTIFY(LVN_GETDISPINFO, IDC_LOGLIST, OnLvnGetdispinfoLoglist)\r
+       //ON_NOTIFY(LVN_GETDISPINFO, IDC_LOGLIST, OnLvnGetdispinfoLoglist)\r
        ON_EN_CHANGE(IDC_SEARCHEDIT, OnEnChangeSearchedit)\r
        ON_WM_TIMER()\r
        ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETO, OnDtnDatetimechangeDateto)\r
@@ -213,10 +153,10 @@ BEGIN_MESSAGE_MAP(CLogDlg, CResizableStandAloneDialog)
        ON_BN_CLICKED(IDC_NEXTHUNDRED, OnBnClickedNexthundred)\r
        ON_NOTIFY(NM_CUSTOMDRAW, IDC_LOGMSG, OnNMCustomdrawChangedFileList)\r
        ON_NOTIFY(LVN_GETDISPINFO, IDC_LOGMSG, OnLvnGetdispinfoChangedFileList)\r
-       ON_NOTIFY(LVN_COLUMNCLICK, IDC_LOGLIST, OnLvnColumnclick)\r
+       ON_NOTIFY(LVN_COLUMNCLICK,IDC_LOGLIST   , OnLvnColumnclick)\r
        ON_NOTIFY(LVN_COLUMNCLICK, IDC_LOGMSG, OnLvnColumnclickChangedFileList)\r
        ON_BN_CLICKED(IDC_HIDEPATHS, OnBnClickedHidepaths)\r
-       ON_NOTIFY(LVN_ODFINDITEM, IDC_LOGLIST, OnLvnOdfinditemLoglist)\r
+       \r
        ON_BN_CLICKED(IDC_CHECK_STOPONCOPY, &CLogDlg::OnBnClickedCheckStoponcopy)\r
        ON_NOTIFY(DTN_DROPDOWN, IDC_DATEFROM, &CLogDlg::OnDtnDropdownDatefrom)\r
        ON_NOTIFY(DTN_DROPDOWN, IDC_DATETO, &CLogDlg::OnDtnDropdownDateto)\r
@@ -276,16 +216,11 @@ BOOL CLogDlg::OnInitDialog()
        GetDlgItem(IDC_MSGVIEW)->SendMessage(EM_AUTOURLDETECT, TRUE, NULL);\r
        // make the log message rich edit control send a message when the mouse pointer is over a link\r
        GetDlgItem(IDC_MSGVIEW)->SendMessage(EM_SETEVENTMASK, NULL, ENM_LINK);\r
-       m_LogList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_SUBITEMIMAGES);\r
+       //m_LogList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_SUBITEMIMAGES);\r
 \r
        // the "hide unrelated paths" checkbox should be indeterminate\r
        m_cHidePaths.SetCheck(BST_INDETERMINATE);\r
 \r
-       // load the icons for the action columns\r
-       m_hModifiedIcon = (HICON)LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ACTIONMODIFIED), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE);\r
-       m_hReplacedIcon = (HICON)LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ACTIONREPLACED), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE);\r
-       m_hAddedIcon = (HICON)LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ACTIONADDED), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE);\r
-       m_hDeletedIcon = (HICON)LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_ACTIONDELETED), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE);\r
        \r
        // if there is a working copy, load the project properties\r
        // to get information about the bugtraq: integration\r
@@ -301,6 +236,7 @@ BOOL CLogDlg::OnInitDialog()
 \r
        // set up the columns\r
        m_LogList.DeleteAllItems();\r
+#if 0\r
        int c = ((CHeaderCtrl*)(m_LogList.GetDlgItem(0)))->GetItemCount()-1;\r
        \r
        while (c>=0)\r
@@ -344,7 +280,7 @@ BOOL CLogDlg::OnInitDialog()
        m_LogList.SetRedraw(false);\r
        ResizeAllListCtrlCols();\r
        m_LogList.SetRedraw(true);\r
-\r
+#endif\r
        m_ChangedFileListCtrl.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER );\r
        m_ChangedFileListCtrl.DeleteAllItems();\r
        c = ((CHeaderCtrl*)(m_ChangedFileListCtrl.GetDlgItem(0)))->GetItemCount()-1;\r
@@ -1304,56 +1240,7 @@ UINT CLogDlg::LogThread()
        return 0;\r
 }\r
 \r
-void CLogDlg::CopySelectionToClipBoard()\r
-{\r
-#if 0\r
-       CString sClipdata;\r
-       POSITION pos = m_LogList.GetFirstSelectedItemPosition();\r
-       if (pos != NULL)\r
-       {\r
-               CString sRev;\r
-               sRev.LoadString(IDS_LOG_REVISION);\r
-               CString sAuthor;\r
-               sAuthor.LoadString(IDS_LOG_AUTHOR);\r
-               CString sDate;\r
-               sDate.LoadString(IDS_LOG_DATE);\r
-               CString sMessage;\r
-               sMessage.LoadString(IDS_LOG_MESSAGE);\r
-               while (pos)\r
-               {\r
-                       CString sLogCopyText;\r
-                       CString sPaths;\r
-                       PLOGENTRYDATA pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(m_LogList.GetNextSelectedItem(pos)));\r
-                       LogChangedPathArray * cpatharray = pLogEntry->pArChangedPaths;\r
-                       for (INT_PTR cpPathIndex = 0; cpPathIndex<cpatharray->GetCount(); ++cpPathIndex)\r
-                       {\r
-                               LogChangedPath * cpath = cpatharray->GetAt(cpPathIndex);\r
-                               sPaths += cpath->GetAction() + _T(" : ") + cpath->sPath;\r
-                               if (cpath->sCopyFromPath.IsEmpty())\r
-                                       sPaths += _T("\r\n");\r
-                               else\r
-                               {\r
-                                       CString sCopyFrom;\r
-                                       sCopyFrom.Format(_T(" (%s: %s, %s, %ld)\r\n"), CString(MAKEINTRESOURCE(IDS_LOG_COPYFROM)), \r
-                                               (LPCTSTR)cpath->sCopyFromPath, \r
-                                               (LPCTSTR)CString(MAKEINTRESOURCE(IDS_LOG_REVISION)), \r
-                                               (LPCTSTR)cpath->lCopyFromRev);\r
-                                       sPaths += sCopyFrom;\r
-                               }\r
-                       }\r
-                       sPaths.Trim();\r
-                       sLogCopyText.Format(_T("%s: %d\r\n%s: %s\r\n%s: %s\r\n%s:\r\n%s\r\n----\r\n%s\r\n\r\n"),\r
-                               (LPCTSTR)sRev, pLogEntry->Rev,\r
-                               (LPCTSTR)sAuthor, (LPCTSTR)pLogEntry->sAuthor,\r
-                               (LPCTSTR)sDate, (LPCTSTR)pLogEntry->sDate,\r
-                               (LPCTSTR)sMessage, (LPCTSTR)pLogEntry->sMessage,\r
-                               (LPCTSTR)sPaths);\r
-                       sClipdata +=  sLogCopyText;\r
-               }\r
-               CStringUtils::WriteAsciiStringToClipboard(sClipdata, GetSafeHwnd());\r
-       }\r
-#endif\r
-}\r
+\r
 \r
 void CLogDlg::CopyChangedSelectionToClipBoard()\r
 {\r
@@ -1493,33 +1380,6 @@ void CLogDlg::OnContextMenu(CWnd* pWnd, CPoint point)
        }\r
 }\r
 \r
-bool CLogDlg::IsSelectionContinuous()\r
-{\r
-       if ( m_LogList.GetSelectedCount()==1 )\r
-       {\r
-               // if only one revision is selected, the selection is of course\r
-               // continuous\r
-               return true;\r
-       }\r
-\r
-       POSITION pos = m_LogList.GetFirstSelectedItemPosition();\r
-       bool bContinuous = (m_arShownList.GetCount() == (INT_PTR)m_logEntries.size());\r
-       if (bContinuous)\r
-       {\r
-               int itemindex = m_LogList.GetNextSelectedItem(pos);\r
-               while (pos)\r
-               {\r
-                       int nextindex = m_LogList.GetNextSelectedItem(pos);\r
-                       if (nextindex - itemindex > 1)\r
-                       {\r
-                               bContinuous = false;\r
-                               break;\r
-                       }\r
-                       itemindex = nextindex;\r
-               }\r
-       }\r
-       return bContinuous;\r
-}\r
 \r
 LRESULT CLogDlg::OnFindDialogMessage(WPARAM /*wParam*/, LPARAM /*lParam*/)\r
 {\r
@@ -1887,77 +1747,6 @@ void CLogDlg::DiffSelectedFile()
 }\r
 \r
 \r
-void CLogDlg::OnNMDblclkLoglist(NMHDR * /*pNMHDR*/, LRESULT *pResult)\r
-{\r
-       // a double click on an entry in the revision list has happened\r
-       *pResult = 0;\r
-\r
-  if (CRegDWORD(_T("Software\\TortoiseGit\\DiffByDoubleClickInLog"), FALSE))\r
-         DiffSelectedRevWithPrevious();\r
-}\r
-\r
-void CLogDlg::DiffSelectedRevWithPrevious()\r
-{\r
-#if 0\r
-       if (m_bThreadRunning)\r
-               return;\r
-       UpdateLogInfoLabel();\r
-       int selIndex = m_LogList.GetSelectionMark();\r
-       if (selIndex < 0)\r
-               return;\r
-       int selCount = m_LogList.GetSelectedCount();\r
-       if (selCount != 1)\r
-               return;\r
-\r
-       // Find selected entry in the log list\r
-       POSITION pos = m_LogList.GetFirstSelectedItemPosition();\r
-       PLOGENTRYDATA pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(m_LogList.GetNextSelectedItem(pos)));\r
-       long rev1 = pLogEntry->Rev;\r
-       long rev2 = rev1-1;\r
-       CTGitPath path = m_path;\r
-\r
-       // See how many files under the relative root were changed in selected revision\r
-       int nChanged = 0;\r
-       LogChangedPath * changed = NULL;\r
-       for (INT_PTR c = 0; c < pLogEntry->pArChangedPaths->GetCount(); ++c)\r
-       {\r
-               LogChangedPath * cpath = pLogEntry->pArChangedPaths->GetAt(c);\r
-               if (cpath  &&  cpath -> sPath.Left(m_sRelativeRoot.GetLength()).Compare(m_sRelativeRoot)==0)\r
-               {\r
-                       ++nChanged;\r
-                       changed = cpath;\r
-               }\r
-       }\r
-\r
-       if (m_path.IsDirectory() && nChanged == 1) \r
-       {\r
-               // We're looking at the log for a directory and only one file under dir was changed in the revision\r
-               // Do diff on that file instead of whole directory\r
-               path.AppendPathString(changed->sPath.Mid(m_sRelativeRoot.GetLength()));\r
-       } \r
-\r
-       m_bCancelled = FALSE;\r
-       DialogEnableWindow(IDOK, FALSE);\r
-       SetPromptApp(&theApp);\r
-       theApp.DoWaitCursor(1);\r
-\r
-       if (PromptShown())\r
-       {\r
-               GitDiff diff(this, m_hWnd, true);\r
-               diff.SetAlternativeTool(!!(GetAsyncKeyState(VK_SHIFT) & 0x8000));\r
-               diff.SetHEADPeg(m_LogRevision);\r
-               diff.ShowCompare(path, rev2, path, rev1);\r
-       }\r
-       else\r
-       {\r
-               CAppUtils::StartShowCompare(m_hWnd, path, rev2, path, rev1, GitRev(), m_LogRevision, !!(GetAsyncKeyState(VK_SHIFT) & 0x8000));\r
-       }\r
-\r
-       theApp.DoWaitCursor(-1);\r
-       EnableOKButton();\r
-#endif\r
-}\r
-\r
 void CLogDlg::DoDiffFromLog(INT_PTR selIndex, GitRev* rev1, GitRev* rev2, bool blame, bool unified)\r
 {\r
        DialogEnableWindow(IDOK, FALSE);\r
@@ -2454,6 +2243,7 @@ void CLogDlg::OnBnClickedStatbutton()
 #endif\r
 }\r
 \r
+#if 0\r
 void CLogDlg::OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult)\r
 {\r
 \r
@@ -2638,6 +2428,8 @@ void CLogDlg::OnNMCustomdrawLoglist(NMHDR *pNMHDR, LRESULT *pResult)
        *pResult = CDRF_DODEFAULT;\r
 \r
 }\r
+#endif\r
+\r
 void CLogDlg::OnNMCustomdrawChangedFileList(NMHDR *pNMHDR, LRESULT *pResult)\r
 {\r
 \r
@@ -2925,7 +2717,7 @@ void CLogDlg::SetFilterCueText()
        temp = _T("   ")+temp;\r
        m_cFilter.SetCueBanner(temp);\r
 }\r
-\r
+#if 0\r
 void CLogDlg::OnLvnGetdispinfoLoglist(NMHDR *pNMHDR, LRESULT *pResult)\r
 {\r
        NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);\r
@@ -2982,7 +2774,7 @@ void CLogDlg::OnLvnGetdispinfoLoglist(NMHDR *pNMHDR, LRESULT *pResult)
                ASSERT(false);\r
        }\r
 }\r
-\r
+#endif\r
 void CLogDlg::OnLvnGetdispinfoChangedFileList(NMHDR *pNMHDR, LRESULT *pResult)\r
 {\r
 \r
@@ -3616,6 +3408,7 @@ int CLogDlg::SortCompare(const void * pElem1, const void * pElem2)
        return 0;\r
 }\r
 \r
+#if 0\r
 void CLogDlg::ResizeAllListCtrlCols()\r
 {\r
 \r
@@ -3696,6 +3489,7 @@ void CLogDlg::ResizeAllListCtrlCols()
        }\r
 \r
 }\r
+#endif\r
 \r
 void CLogDlg::OnBnClickedHidepaths()\r
 {\r
@@ -3704,68 +3498,6 @@ void CLogDlg::OnBnClickedHidepaths()
 }\r
 \r
 \r
-void CLogDlg::OnLvnOdfinditemLoglist(NMHDR *pNMHDR, LRESULT *pResult)\r
-{\r
-       LPNMLVFINDITEM pFindInfo = reinterpret_cast<LPNMLVFINDITEM>(pNMHDR);\r
-       *pResult = -1;\r
-       \r
-       if (pFindInfo->lvfi.flags & LVFI_PARAM)\r
-               return; \r
-       if ((pFindInfo->iStart < 0)||(pFindInfo->iStart >= m_arShownList.GetCount()))\r
-               return;\r
-       if (pFindInfo->lvfi.psz == 0)\r
-               return;\r
-#if 0\r
-       CString sCmp = pFindInfo->lvfi.psz;\r
-       CString sRev;   \r
-       for (int i=pFindInfo->iStart; i<m_arShownList.GetCount(); ++i)\r
-       {\r
-               GitRev * pLogEntry = reinterpret_cast<GitRev*>(m_arShownList.GetAt(i));\r
-               sRev.Format(_T("%ld"), pLogEntry->Rev);\r
-               if (pFindInfo->lvfi.flags & LVFI_PARTIAL)\r
-               {\r
-                       if (sCmp.Compare(sRev.Left(sCmp.GetLength()))==0)\r
-                       {\r
-                               *pResult = i;\r
-                               return;\r
-                       }\r
-               }\r
-               else\r
-               {\r
-                       if (sCmp.Compare(sRev)==0)\r
-                       {\r
-                               *pResult = i;\r
-                               return;\r
-                       }\r
-               }\r
-       }\r
-       if (pFindInfo->lvfi.flags & LVFI_WRAP)\r
-       {\r
-               for (int i=0; i<pFindInfo->iStart; ++i)\r
-               {\r
-                       PLOGENTRYDATA pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(i));\r
-                       sRev.Format(_T("%ld"), pLogEntry->Rev);\r
-                       if (pFindInfo->lvfi.flags & LVFI_PARTIAL)\r
-                       {\r
-                               if (sCmp.Compare(sRev.Left(sCmp.GetLength()))==0)\r
-                               {\r
-                                       *pResult = i;\r
-                                       return;\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               if (sCmp.Compare(sRev)==0)\r
-                               {\r
-                                       *pResult = i;\r
-                                       return;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-#endif\r
-       *pResult = -1;\r
-}\r
 \r
 void CLogDlg::OnBnClickedCheckStoponcopy()\r
 {\r
@@ -3817,713 +3549,6 @@ void CLogDlg::UpdateLogInfoLabel()
        UpdateData(FALSE);\r
 }\r
 \r
-void CLogDlg::ShowContextMenuForRevisions(CWnd* /*pWnd*/, CPoint point)\r
-{\r
-\r
-       int selIndex = m_LogList.GetSelectionMark();\r
-       if (selIndex < 0)\r
-               return; // nothing selected, nothing to do with a context menu\r
-\r
-       // if the user selected the info text telling about not all revisions shown due to\r
-       // the "stop on copy/rename" option, we also don't show the context menu\r
-       if ((m_bStrictStopped)&&(selIndex == m_arShownList.GetCount()))\r
-               return;\r
-\r
-       // if the context menu is invoked through the keyboard, we have to use\r
-       // a calculated position on where to anchor the menu on\r
-       if ((point.x == -1) && (point.y == -1))\r
-       {\r
-               CRect rect;\r
-               m_LogList.GetItemRect(selIndex, &rect, LVIR_LABEL);\r
-               m_LogList.ClientToScreen(&rect);\r
-               point = rect.CenterPoint();\r
-       }\r
-       m_nSearchIndex = selIndex;\r
-       m_bCancelled = FALSE;\r
-\r
-       // calculate some information the context menu commands can use\r
-//     CString pathURL = GetURLFromPath(m_path);\r
-\r
-       POSITION pos = m_LogList.GetFirstSelectedItemPosition();\r
-       int indexNext = m_LogList.GetNextSelectedItem(pos);\r
-       if (indexNext < 0)\r
-               return;\r
-\r
-       GitRev* pSelLogEntry = reinterpret_cast<GitRev*>(m_arShownList.GetAt(indexNext));\r
-#if 0\r
-       GitRev revSelected = pSelLogEntry->Rev;\r
-       GitRev revPrevious = git_revnum_t(revSelected)-1;\r
-       if ((pSelLogEntry->pArChangedPaths)&&(pSelLogEntry->pArChangedPaths->GetCount() <= 2))\r
-       {\r
-               for (int i=0; i<pSelLogEntry->pArChangedPaths->GetCount(); ++i)\r
-               {\r
-                       LogChangedPath * changedpath = (LogChangedPath *)pSelLogEntry->pArChangedPaths->GetAt(i);\r
-                       if (changedpath->lCopyFromRev)\r
-                               revPrevious = changedpath->lCopyFromRev;\r
-               }\r
-       }\r
-       GitRev revSelected2;\r
-       if (pos)\r
-       {\r
-               PLOGENTRYDATA pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(m_LogList.GetNextSelectedItem(pos)));\r
-               revSelected2 = pLogEntry->Rev;\r
-       }\r
-       bool bAllFromTheSameAuthor = true;\r
-       CString firstAuthor;\r
-       CLogDataVector selEntries;\r
-       GitRev revLowest, revHighest;\r
-       GitRevRangeArray revisionRanges;\r
-       {\r
-               POSITION pos = m_LogList.GetFirstSelectedItemPosition();\r
-               PLOGENTRYDATA pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(m_LogList.GetNextSelectedItem(pos)));\r
-               revisionRanges.AddRevision(pLogEntry->Rev);\r
-               selEntries.push_back(pLogEntry);\r
-               firstAuthor = pLogEntry->sAuthor;\r
-               revLowest = pLogEntry->Rev;\r
-               revHighest = pLogEntry->Rev;\r
-               while (pos)\r
-               {\r
-                       pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(m_LogList.GetNextSelectedItem(pos)));\r
-                       revisionRanges.AddRevision(pLogEntry->Rev);\r
-                       selEntries.push_back(pLogEntry);\r
-                       if (firstAuthor.Compare(pLogEntry->sAuthor))\r
-                               bAllFromTheSameAuthor = false;\r
-                       revLowest = (git_revnum_t(pLogEntry->Rev) > git_revnum_t(revLowest) ? revLowest : pLogEntry->Rev);\r
-                       revHighest = (git_revnum_t(pLogEntry->Rev) < git_revnum_t(revHighest) ? revHighest : pLogEntry->Rev);\r
-               }\r
-       }\r
-\r
-#endif\r
-\r
-       int FirstSelect=-1, LastSelect=-1;\r
-       pos = m_LogList.GetFirstSelectedItemPosition();\r
-       FirstSelect = m_LogList.GetNextSelectedItem(pos);\r
-       while(pos)\r
-       {\r
-               LastSelect = m_LogList.GetNextSelectedItem(pos);\r
-       }\r
-       //entry is selected, now show the popup menu\r
-       CIconMenu popup;\r
-       if (popup.CreatePopupMenu())\r
-       {\r
-               if (m_LogList.GetSelectedCount() == 1)\r
-               {\r
-#if 0\r
-                       if (!m_path.IsDirectory())\r
-                       {\r
-                               if (m_hasWC)\r
-                               {\r
-                                       popup.AppendMenuIcon(ID_COMPARE, IDS_LOG_POPUP_COMPARE, IDI_DIFF);\r
-                                       popup.AppendMenuIcon(ID_BLAMECOMPARE, IDS_LOG_POPUP_BLAMECOMPARE, IDI_BLAME);\r
-                               }\r
-                               popup.AppendMenuIcon(ID_GNUDIFF1, IDS_LOG_POPUP_GNUDIFF_CH, IDI_DIFF);\r
-                               popup.AppendMenuIcon(ID_COMPAREWITHPREVIOUS, IDS_LOG_POPUP_COMPAREWITHPREVIOUS, IDI_DIFF);\r
-                               popup.AppendMenu(MF_SEPARATOR, NULL);\r
-                               popup.AppendMenuIcon(ID_SAVEAS, IDS_LOG_POPUP_SAVE, IDI_SAVEAS);\r
-                               popup.AppendMenuIcon(ID_OPEN, IDS_LOG_POPUP_OPEN, IDI_OPEN);\r
-                               popup.AppendMenuIcon(ID_OPENWITH, IDS_LOG_POPUP_OPENWITH, IDI_OPEN);\r
-                               popup.AppendMenuIcon(ID_BLAME, IDS_LOG_POPUP_BLAME, IDI_BLAME);\r
-                               popup.AppendMenu(MF_SEPARATOR, NULL);\r
-                       }\r
-                       else\r
-#endif \r
-                       {\r
-                               if (m_hasWC)\r
-                               {\r
-                                       popup.AppendMenuIcon(ID_COMPARE, IDS_LOG_POPUP_COMPARE, IDI_DIFF);\r
-                                       // TODO:\r
-                                       // TortoiseMerge could be improved to take a /blame switch\r
-                                       // and then not 'cat' the files from a unified diff but\r
-                                       // blame then.\r
-                                       // But until that's implemented, the context menu entry for\r
-                                       // this feature is commented out.\r
-                                       //popup.AppendMenu(ID_BLAMECOMPARE, IDS_LOG_POPUP_BLAMECOMPARE, IDI_BLAME);\r
-                               }\r
-                               popup.AppendMenuIcon(ID_GNUDIFF1, IDS_LOG_POPUP_GNUDIFF_CH, IDI_DIFF);\r
-                               popup.AppendMenuIcon(ID_COMPAREWITHPREVIOUS, IDS_LOG_POPUP_COMPAREWITHPREVIOUS, IDI_DIFF);\r
-                               popup.AppendMenuIcon(ID_BLAMEWITHPREVIOUS, IDS_LOG_POPUP_BLAMEWITHPREVIOUS, IDI_BLAME);\r
-                               popup.AppendMenu(MF_SEPARATOR, NULL);\r
-                       }\r
-\r
-//                     if (!m_ProjectProperties.sWebViewerRev.IsEmpty())\r
-//                     {\r
-//                             popup.AppendMenuIcon(ID_VIEWREV, IDS_LOG_POPUP_VIEWREV);\r
-//                     }\r
-//                     if (!m_ProjectProperties.sWebViewerPathRev.IsEmpty())\r
-//                     {\r
-//                             popup.AppendMenuIcon(ID_VIEWPATHREV, IDS_LOG_POPUP_VIEWPATHREV);\r
-//                     }\r
-//                     if ((!m_ProjectProperties.sWebViewerPathRev.IsEmpty())||\r
-//                             (!m_ProjectProperties.sWebViewerRev.IsEmpty()))\r
-//                     {\r
-//                             popup.AppendMenu(MF_SEPARATOR, NULL);\r
-//                     }\r
-\r
-//                     popup.AppendMenuIcon(ID_REPOBROWSE, IDS_LOG_BROWSEREPO, IDI_REPOBROWSE);\r
-//                     popup.AppendMenuIcon(ID_COPY, IDS_LOG_POPUP_COPY);\r
-//                     if (m_hasWC)\r
-//                             popup.AppendMenuIcon(ID_UPDATE, IDS_LOG_POPUP_UPDATE, IDI_UPDATE);\r
-                       if (m_hasWC)\r
-                               popup.AppendMenuIcon(ID_REVERTTOREV, IDS_LOG_POPUP_REVERTTOREV, IDI_REVERT);\r
-                       if (m_hasWC)\r
-                               popup.AppendMenuIcon(ID_REVERTREV, IDS_LOG_POPUP_REVERTREV, IDI_REVERT);\r
-//                     if (m_hasWC)\r
-//                             popup.AppendMenuIcon(ID_MERGEREV, IDS_LOG_POPUP_MERGEREV, IDI_MERGE);\r
-                       popup.AppendMenuIcon(ID_CHECKOUT, IDS_MENUCHECKOUT, IDI_CHECKOUT);\r
-                       popup.AppendMenuIcon(ID_EXPORT, IDS_MENUEXPORT, IDI_EXPORT);\r
-                       popup.AppendMenu(MF_SEPARATOR, NULL);\r
-               }\r
-               else if (m_LogList.GetSelectedCount() >= 2)\r
-               {\r
-                       bool bAddSeparator = false;\r
-                       if (IsSelectionContinuous() || (m_LogList.GetSelectedCount() == 2))\r
-                       {\r
-                               popup.AppendMenuIcon(ID_COMPARETWO, IDS_LOG_POPUP_COMPARETWO, IDI_DIFF);\r
-                       }\r
-                       if (m_LogList.GetSelectedCount() == 2)\r
-                       {\r
-                               popup.AppendMenuIcon(ID_BLAMETWO, IDS_LOG_POPUP_BLAMEREVS, IDI_BLAME);\r
-                               popup.AppendMenuIcon(ID_GNUDIFF2, IDS_LOG_POPUP_GNUDIFF, IDI_DIFF);\r
-                               bAddSeparator = true;\r
-                       }\r
-                       if (m_hasWC)\r
-                       {\r
-                               popup.AppendMenuIcon(ID_REVERTREV, IDS_LOG_POPUP_REVERTREVS, IDI_REVERT);\r
-//                             if (m_hasWC)\r
-//                                     popup.AppendMenuIcon(ID_MERGEREV, IDS_LOG_POPUP_MERGEREVS, IDI_MERGE);\r
-                               bAddSeparator = true;\r
-                       }\r
-                       if (bAddSeparator)\r
-                               popup.AppendMenu(MF_SEPARATOR, NULL);\r
-               }\r
-#if 0\r
-//             if ((selEntries.size() > 0)&&(bAllFromTheSameAuthor))\r
-//             {\r
-//                     popup.AppendMenuIcon(ID_EDITAUTHOR, IDS_LOG_POPUP_EDITAUTHOR);\r
-//             }\r
-//             if (m_LogList.GetSelectedCount() == 1)\r
-//             {\r
-//                     popup.AppendMenuIcon(ID_EDITLOG, IDS_LOG_POPUP_EDITLOG);\r
-//                     popup.AppendMenuIcon(ID_REVPROPS, IDS_REPOBROWSE_SHOWREVPROP, IDI_PROPERTIES); // "Show Revision Properties"\r
-//                     popup.AppendMenu(MF_SEPARATOR, NULL);\r
-//             }\r
-#endif\r
-               if (m_LogList.GetSelectedCount() != 0)\r
-               {\r
-                       popup.AppendMenuIcon(ID_COPYCLIPBOARD, IDS_LOG_POPUP_COPYTOCLIPBOARD);\r
-               }\r
-               popup.AppendMenuIcon(ID_FINDENTRY, IDS_LOG_POPUP_FIND);\r
-\r
-               int cmd = popup.TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_NONOTIFY, point.x, point.y, this, 0);\r
-               DialogEnableWindow(IDOK, FALSE);\r
-//             SetPromptApp(&theApp);\r
-               theApp.DoWaitCursor(1);\r
-               bool bOpenWith = false;\r
-\r
-               switch (cmd)\r
-               {\r
-                       case ID_GNUDIFF1:\r
-                       {\r
-                               CString tempfile=GetTempFile();\r
-                               CString cmd;\r
-                               GitRev * r1 = reinterpret_cast<GitRev*>(m_arShownList.GetAt(FirstSelect));\r
-                               cmd.Format(_T("git.cmd diff-tree -r -p --stat %s"),r1->m_CommitHash);\r
-                               g_Git.RunLogFile(cmd,tempfile);\r
-                               CAppUtils::StartUnifiedDiffViewer(tempfile,r1->m_CommitHash.Left(6)+_T(":")+r1->m_Subject);\r
-                       }\r
-                       break;\r
-\r
-                       case ID_GNUDIFF2:\r
-                       {\r
-                               CString tempfile=GetTempFile();\r
-                               CString cmd;\r
-                               GitRev * r1 = reinterpret_cast<GitRev*>(m_arShownList.GetAt(FirstSelect));\r
-                               GitRev * r2 = reinterpret_cast<GitRev*>(m_arShownList.GetAt(LastSelect));\r
-                               cmd.Format(_T("git.cmd diff-tree -r -p --stat %s %s"),r1->m_CommitHash,r2->m_CommitHash);\r
-                               g_Git.RunLogFile(cmd,tempfile);\r
-                               CAppUtils::StartUnifiedDiffViewer(tempfile,r1->m_CommitHash.Left(6)+_T(":")+r2->m_CommitHash.Left(6));\r
-\r
-                       }\r
-                       break;\r
-\r
-               case ID_COMPARETWO:\r
-                       {\r
-                               GitRev * r1 = reinterpret_cast<GitRev*>(m_arShownList.GetAt(FirstSelect));\r
-                               GitRev * r2 = reinterpret_cast<GitRev*>(m_arShownList.GetAt(LastSelect));\r
-                               CFileDiffDlg dlg;\r
-                               dlg.SetDiff(NULL,*r1,*r2);\r
-                               dlg.DoModal();\r
-                               \r
-                       }\r
-                       break;\r
-\r
-#if 0\r
-               case ID_GNUDIFF1:\r
-                       {\r
-                               if (PromptShown())\r
-                               {\r
-                                       GitDiff diff(this, this->m_hWnd, true);\r
-                                       diff.SetHEADPeg(m_LogRevision);\r
-                                       diff.ShowUnifiedDiff(m_path, revPrevious, m_path, revSelected);\r
-                               }\r
-                               else\r
-                                       CAppUtils::StartShowUnifiedDiff(m_hWnd, m_path, revPrevious, m_path, revSelected, GitRev(), m_LogRevision);\r
-                       }\r
-                       break;\r
-\r
-               case ID_GNUDIFF2:\r
-                       {\r
-                               if (PromptShown())\r
-                               {\r
-                                       GitDiff diff(this, this->m_hWnd, true);\r
-                                       diff.SetHEADPeg(m_LogRevision);\r
-                                       diff.ShowUnifiedDiff(m_path, revSelected2, m_path, revSelected);\r
-                               }\r
-                               else\r
-                                       CAppUtils::StartShowUnifiedDiff(m_hWnd, m_path, revSelected2, m_path, revSelected, GitRev(), m_LogRevision);\r
-                       }\r
-                       break;\r
-               case ID_REVERTREV:\r
-                       {\r
-                               // we need an URL to complete this command, so error out if we can't get an URL\r
-                               if (pathURL.IsEmpty())\r
-                               {\r
-                                       CString strMessage;\r
-                                       strMessage.Format(IDS_ERR_NOURLOFFILE, (LPCTSTR)(m_path.GetUIPathString()));\r
-                                       CMessageBox::Show(this->m_hWnd, strMessage, _T("TortoiseGit"), MB_ICONERROR);\r
-                                       TRACE(_T("could not retrieve the URL of the folder!\n"));\r
-                                       break;          //exit\r
-                               }\r
-                               CString msg;\r
-                               msg.Format(IDS_LOG_REVERT_CONFIRM, m_path.GetWinPath());\r
-                               if (CMessageBox::Show(this->m_hWnd, msg, _T("TortoiseGit"), MB_YESNO | MB_ICONQUESTION) == IDYES)\r
-                               {\r
-                                       CGitProgressDlg dlg;\r
-                                       dlg.SetCommand(CGitProgressDlg::GitProgress_Merge);\r
-                                       dlg.SetPathList(CTGitPathList(m_path));\r
-                                       dlg.SetUrl(pathURL);\r
-                                       dlg.SetSecondUrl(pathURL);\r
-                                       revisionRanges.AdjustForMerge(true);\r
-                                       dlg.SetRevisionRanges(revisionRanges);\r
-                                       dlg.SetPegRevision(m_LogRevision);\r
-                                       dlg.DoModal();\r
-                               }\r
-                       }\r
-                       break;\r
-               case ID_MERGEREV:\r
-                       {\r
-                               // we need an URL to complete this command, so error out if we can't get an URL\r
-                               if (pathURL.IsEmpty())\r
-                               {\r
-                                       CString strMessage;\r
-                                       strMessage.Format(IDS_ERR_NOURLOFFILE, (LPCTSTR)(m_path.GetUIPathString()));\r
-                                       CMessageBox::Show(this->m_hWnd, strMessage, _T("TortoiseGit"), MB_ICONERROR);\r
-                                       TRACE(_T("could not retrieve the URL of the folder!\n"));\r
-                                       break;          //exit\r
-                               }\r
-\r
-                               CString path = m_path.GetWinPathString();\r
-                               bool bGotSavePath = false;\r
-                               if ((m_LogList.GetSelectedCount() == 1)&&(!m_path.IsDirectory()))\r
-                               {\r
-                                       bGotSavePath = CAppUtils::FileOpenSave(path, NULL, IDS_LOG_MERGETO, IDS_COMMONFILEFILTER, true, GetSafeHwnd());\r
-                               }\r
-                               else\r
-                               {\r
-                                       CBrowseFolder folderBrowser;\r
-                                       folderBrowser.SetInfo(CString(MAKEINTRESOURCE(IDS_LOG_MERGETO)));\r
-                                       bGotSavePath = (folderBrowser.Show(GetSafeHwnd(), path, path) == CBrowseFolder::OK);\r
-                               }\r
-                               if (bGotSavePath)\r
-                               {\r
-                                       CGitProgressDlg dlg;\r
-                                       dlg.SetCommand(CGitProgressDlg::GitProgress_Merge);\r
-                                       dlg.SetPathList(CTGitPathList(CTGitPath(path)));\r
-                                       dlg.SetUrl(pathURL);\r
-                                       dlg.SetSecondUrl(pathURL);\r
-                                       revisionRanges.AdjustForMerge(false);\r
-                                       dlg.SetRevisionRanges(revisionRanges);\r
-                                       dlg.SetPegRevision(m_LogRevision);\r
-                                       dlg.DoModal();\r
-                               }\r
-                       }\r
-                       break;\r
-               case ID_REVERTTOREV:\r
-                       {\r
-                               // we need an URL to complete this command, so error out if we can't get an URL\r
-                               if (pathURL.IsEmpty())\r
-                               {\r
-                                       CString strMessage;\r
-                                       strMessage.Format(IDS_ERR_NOURLOFFILE, (LPCTSTR)(m_path.GetUIPathString()));\r
-                                       CMessageBox::Show(this->m_hWnd, strMessage, _T("TortoiseGit"), MB_ICONERROR);\r
-                                       TRACE(_T("could not retrieve the URL of the folder!\n"));\r
-                                       break;          //exit\r
-                               }\r
-\r
-                               CString msg;\r
-                               msg.Format(IDS_LOG_REVERTTOREV_CONFIRM, m_path.GetWinPath());\r
-                               if (CMessageBox::Show(this->m_hWnd, msg, _T("TortoiseGit"), MB_YESNO | MB_ICONQUESTION) == IDYES)\r
-                               {\r
-                                       CGitProgressDlg dlg;\r
-                                       dlg.SetCommand(CGitProgressDlg::GitProgress_Merge);\r
-                                       dlg.SetPathList(CTGitPathList(m_path));\r
-                                       dlg.SetUrl(pathURL);\r
-                                       dlg.SetSecondUrl(pathURL);\r
-                                       GitRevRangeArray revarray;\r
-                                       revarray.AddRevRange(GitRev::REV_HEAD, revSelected);\r
-                                       dlg.SetRevisionRanges(revarray);\r
-                                       dlg.SetPegRevision(m_LogRevision);\r
-                                       dlg.DoModal();\r
-                               }\r
-                       }\r
-                       break;\r
-               case ID_COPY:\r
-                       {\r
-                               // we need an URL to complete this command, so error out if we can't get an URL\r
-                               if (pathURL.IsEmpty())\r
-                               {\r
-                                       CString strMessage;\r
-                                       strMessage.Format(IDS_ERR_NOURLOFFILE, (LPCTSTR)(m_path.GetUIPathString()));\r
-                                       CMessageBox::Show(this->m_hWnd, strMessage, _T("TortoiseGit"), MB_ICONERROR);\r
-                                       TRACE(_T("could not retrieve the URL of the folder!\n"));\r
-                                       break;          //exit\r
-                               }\r
-\r
-                               CCopyDlg dlg;\r
-                               dlg.m_URL = pathURL;\r
-                               dlg.m_path = m_path;\r
-                               dlg.m_CopyRev = revSelected;\r
-                               if (dlg.DoModal() == IDOK)\r
-                               {\r
-                                       // should we show a progress dialog here? Copies are done really fast\r
-                                       // and without much network traffic.\r
-                                       if (!Copy(CTGitPathList(CTGitPath(pathURL)), CTGitPath(dlg.m_URL), dlg.m_CopyRev, dlg.m_CopyRev, dlg.m_sLogMessage))\r
-                                               CMessageBox::Show(this->m_hWnd, GetLastErrorMessage(), _T("TortoiseGit"), MB_ICONERROR);\r
-                                       else\r
-                                               CMessageBox::Show(this->m_hWnd, IDS_LOG_COPY_SUCCESS, IDS_APPNAME, MB_ICONINFORMATION);\r
-                               }\r
-                       } \r
-                       break;\r
-               case ID_COMPARE:\r
-                       {\r
-                               //user clicked on the menu item "compare with working copy"\r
-                               if (PromptShown())\r
-                               {\r
-                                       GitDiff diff(this, m_hWnd, true);\r
-                                       diff.SetAlternativeTool(!!(GetAsyncKeyState(VK_SHIFT) & 0x8000));\r
-                                       diff.SetHEADPeg(m_LogRevision);\r
-                                       diff.ShowCompare(m_path, GitRev::REV_WC, m_path, revSelected);\r
-                               }\r
-                               else\r
-                                       CAppUtils::StartShowCompare(m_hWnd, m_path, GitRev::REV_WC, m_path, revSelected, GitRev(), m_LogRevision, !!(GetAsyncKeyState(VK_SHIFT) & 0x8000));\r
-                       }\r
-                       break;\r
-               case ID_COMPARETWO:\r
-                       {\r
-                               GitRev r1 = revSelected;\r
-                               GitRev r2 = revSelected2;\r
-                               if (m_LogList.GetSelectedCount() > 2)\r
-                               {\r
-                                       r1 = revHighest;\r
-                                       r2 = revLowest;\r
-                               }\r
-                               //user clicked on the menu item "compare revisions"\r
-                               if (PromptShown())\r
-                               {\r
-                                       GitDiff diff(this, m_hWnd, true);\r
-                                       diff.SetAlternativeTool(!!(GetAsyncKeyState(VK_SHIFT) & 0x8000));\r
-                                       diff.SetHEADPeg(m_LogRevision);\r
-                                       diff.ShowCompare(CTGitPath(pathURL), r2, CTGitPath(pathURL), r1);\r
-                               }\r
-                               else\r
-                                       CAppUtils::StartShowCompare(m_hWnd, CTGitPath(pathURL), r2, CTGitPath(pathURL), r1, GitRev(), m_LogRevision, !!(GetAsyncKeyState(VK_SHIFT) & 0x8000));\r
-                       }\r
-                       break;\r
-               case ID_COMPAREWITHPREVIOUS:\r
-                       {\r
-                               if (PromptShown())\r
-                               {\r
-                                       GitDiff diff(this, m_hWnd, true);\r
-                                       diff.SetAlternativeTool(!!(GetAsyncKeyState(VK_SHIFT) & 0x8000));\r
-                                       diff.SetHEADPeg(m_LogRevision);\r
-                                       diff.ShowCompare(CTGitPath(pathURL), revPrevious, CTGitPath(pathURL), revSelected);\r
-                               }\r
-                               else\r
-                                       CAppUtils::StartShowCompare(m_hWnd, CTGitPath(pathURL), revPrevious, CTGitPath(pathURL), revSelected, GitRev(), m_LogRevision, !!(GetAsyncKeyState(VK_SHIFT) & 0x8000));\r
-                       }\r
-                       break;\r
-               case ID_BLAMECOMPARE:\r
-                       {\r
-                               //user clicked on the menu item "compare with working copy"\r
-                               //now first get the revision which is selected\r
-                               if (PromptShown())\r
-                               {\r
-                                       GitDiff diff(this, this->m_hWnd, true);\r
-                                       diff.SetHEADPeg(m_LogRevision);\r
-                                       diff.ShowCompare(m_path, GitRev::REV_BASE, m_path, revSelected, GitRev(), false, true);\r
-                               }\r
-                               else\r
-                                       CAppUtils::StartShowCompare(m_hWnd, m_path, GitRev::REV_BASE, m_path, revSelected, GitRev(), m_LogRevision, false, false, true);\r
-                       }\r
-                       break;\r
-               case ID_BLAMETWO:\r
-                       {\r
-                               //user clicked on the menu item "compare and blame revisions"\r
-                               if (PromptShown())\r
-                               {\r
-                                       GitDiff diff(this, this->m_hWnd, true);\r
-                                       diff.SetHEADPeg(m_LogRevision);\r
-                                       diff.ShowCompare(CTGitPath(pathURL), revSelected2, CTGitPath(pathURL), revSelected, GitRev(), false, true);\r
-                               }\r
-                               else\r
-                                       CAppUtils::StartShowCompare(m_hWnd, CTGitPath(pathURL), revSelected2, CTGitPath(pathURL), revSelected, GitRev(), m_LogRevision, false, false, true);\r
-                       }\r
-                       break;\r
-               case ID_BLAMEWITHPREVIOUS:\r
-                       {\r
-                               //user clicked on the menu item "Compare and Blame with previous revision"\r
-                               if (PromptShown())\r
-                               {\r
-                                       GitDiff diff(this, this->m_hWnd, true);\r
-                                       diff.SetHEADPeg(m_LogRevision);\r
-                                       diff.ShowCompare(CTGitPath(pathURL), revPrevious, CTGitPath(pathURL), revSelected, GitRev(), false, true);\r
-                               }\r
-                               else\r
-                                       CAppUtils::StartShowCompare(m_hWnd, CTGitPath(pathURL), revPrevious, CTGitPath(pathURL), revSelected, GitRev(), m_LogRevision, false, false, true);\r
-                       }\r
-                       break;\r
-               case ID_SAVEAS:\r
-                       {\r
-                               //now first get the revision which is selected\r
-                               CString revFilename;\r
-                               if (m_hasWC)\r
-                               {\r
-                                       CString strWinPath = m_path.GetWinPathString();\r
-                                       int rfind = strWinPath.ReverseFind('.');\r
-                                       if (rfind > 0)\r
-                                               revFilename.Format(_T("%s-%ld%s"), (LPCTSTR)strWinPath.Left(rfind), (LONG)revSelected, (LPCTSTR)strWinPath.Mid(rfind));\r
-                                       else\r
-                                               revFilename.Format(_T("%s-%ld"), (LPCTSTR)strWinPath, revSelected);\r
-                               }\r
-                               if (CAppUtils::FileOpenSave(revFilename, NULL, IDS_LOG_POPUP_SAVE, IDS_COMMONFILEFILTER, false, m_hWnd))\r
-                               {\r
-                                       CTGitPath tempfile;\r
-                                       tempfile.SetFromWin(revFilename);\r
-                                       CProgressDlg progDlg;\r
-                                       progDlg.SetTitle(IDS_APPNAME);\r
-                                       progDlg.SetAnimation(IDR_DOWNLOAD);\r
-                                       CString sInfoLine;\r
-                                       sInfoLine.Format(IDS_PROGRESSGETFILEREVISION, m_path.GetWinPath(), (LPCTSTR)revSelected.ToString());\r
-                                       progDlg.SetLine(1, sInfoLine, true);\r
-                                       SetAndClearProgressInfo(&progDlg);\r
-                                       progDlg.ShowModeless(m_hWnd);\r
-                                       if (!Cat(m_path, GitRev(GitRev::REV_HEAD), revSelected, tempfile))\r
-                                       {\r
-                                               // try again with another peg revision\r
-                                               if (!Cat(m_path, revSelected, revSelected, tempfile))\r
-                                               {\r
-                                                       progDlg.Stop();\r
-                                                       SetAndClearProgressInfo((HWND)NULL);\r
-                                                       CMessageBox::Show(this->m_hWnd, GetLastErrorMessage(), _T("TortoiseGit"), MB_ICONERROR);\r
-                                                       EnableOKButton();\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                                       progDlg.Stop();\r
-                                       SetAndClearProgressInfo((HWND)NULL);\r
-                               }\r
-                       }\r
-                       break;\r
-               case ID_OPENWITH:\r
-                       bOpenWith = true;\r
-               case ID_OPEN:\r
-                       {\r
-                               CProgressDlg progDlg;\r
-                               progDlg.SetTitle(IDS_APPNAME);\r
-                               progDlg.SetAnimation(IDR_DOWNLOAD);\r
-                               CString sInfoLine;\r
-                               sInfoLine.Format(IDS_PROGRESSGETFILEREVISION, m_path.GetWinPath(), (LPCTSTR)revSelected.ToString());\r
-                               progDlg.SetLine(1, sInfoLine, true);\r
-                               SetAndClearProgressInfo(&progDlg);\r
-                               progDlg.ShowModeless(m_hWnd);\r
-                               CTGitPath tempfile = CTempFiles::Instance().GetTempFilePath(false, m_path, revSelected);\r
-                               bool bSuccess = true;\r
-                               if (!Cat(m_path, GitRev(GitRev::REV_HEAD), revSelected, tempfile))\r
-                               {\r
-                                       bSuccess = false;\r
-                                       // try again, but with the selected revision as the peg revision\r
-                                       if (!Cat(m_path, revSelected, revSelected, tempfile))\r
-                                       {\r
-                                               progDlg.Stop();\r
-                                               SetAndClearProgressInfo((HWND)NULL);\r
-                                               CMessageBox::Show(this->m_hWnd, GetLastErrorMessage(), _T("TortoiseGit"), MB_ICONERROR);\r
-                                               EnableOKButton();\r
-                                               break;\r
-                                       }\r
-                                       bSuccess = true;\r
-                               }\r
-                               if (bSuccess)\r
-                               {\r
-                                       progDlg.Stop();\r
-                                       SetAndClearProgressInfo((HWND)NULL);\r
-                                       SetFileAttributes(tempfile.GetWinPath(), FILE_ATTRIBUTE_READONLY);\r
-                                       int ret = 0;\r
-                                       if (!bOpenWith)\r
-                                               ret = (int)ShellExecute(this->m_hWnd, NULL, tempfile.GetWinPath(), NULL, NULL, SW_SHOWNORMAL);\r
-                                       if ((ret <= HINSTANCE_ERROR)||bOpenWith)\r
-                                       {\r
-                                               CString cmd = _T("RUNDLL32 Shell32,OpenAs_RunDLL ");\r
-                                               cmd += tempfile.GetWinPathString() + _T(" ");\r
-                                               CAppUtils::LaunchApplication(cmd, NULL, false);\r
-                                       }\r
-                               }\r
-                       }\r
-                       break;\r
-               case ID_BLAME:\r
-                       {\r
-                               CBlameDlg dlg;\r
-                               dlg.EndRev = revSelected;\r
-                               if (dlg.DoModal() == IDOK)\r
-                               {\r
-                                       CBlame blame;\r
-                                       CString tempfile;\r
-                                       CString logfile;\r
-                                       tempfile = blame.BlameToTempFile(m_path, dlg.StartRev, dlg.EndRev, dlg.EndRev, logfile, _T(""), dlg.m_bIncludeMerge, TRUE, TRUE);\r
-                                       if (!tempfile.IsEmpty())\r
-                                       {\r
-                                               if (dlg.m_bTextView)\r
-                                               {\r
-                                                       //open the default text editor for the result file\r
-                                                       CAppUtils::StartTextViewer(tempfile);\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       CString sParams = _T("/path:\"") + m_path.GetGitPathString() + _T("\" ");\r
-                                                       if(!CAppUtils::LaunchTortoiseBlame(tempfile, logfile, CPathUtils::GetFileNameFromPath(m_path.GetFileOrDirectoryName()),sParams))\r
-                                                       {\r
-                                                               break;\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               CMessageBox::Show(this->m_hWnd, blame.GetLastErrorMessage(), _T("TortoiseGit"), MB_ICONERROR);\r
-                                       }\r
-                               }\r
-                       }\r
-                       break;\r
-               case ID_UPDATE:\r
-                       {\r
-                               CString sCmd;\r
-                               CString url = _T("tgit:")+pathURL;\r
-                               sCmd.Format(_T("%s /command:update /path:\"%s\" /rev:%ld"),\r
-                                       (LPCTSTR)(CPathUtils::GetAppDirectory()+_T("TortoiseProc.exe")),\r
-                                       (LPCTSTR)m_path.GetWinPath(), (LONG)revSelected);\r
-                               CAppUtils::LaunchApplication(sCmd, NULL, false);\r
-                       }\r
-                       break;\r
-               case ID_FINDENTRY:\r
-                       {\r
-                               m_nSearchIndex = m_LogList.GetSelectionMark();\r
-                               if (m_nSearchIndex < 0)\r
-                                       m_nSearchIndex = 0;\r
-                               if (m_pFindDialog)\r
-                               {\r
-                                       break;\r
-                               }\r
-                               else\r
-                               {\r
-                                       m_pFindDialog = new CFindReplaceDialog();\r
-                                       m_pFindDialog->Create(TRUE, NULL, NULL, FR_HIDEUPDOWN | FR_HIDEWHOLEWORD, this);                                                                        \r
-                               }\r
-                       }\r
-                       break;\r
-               case ID_REPOBROWSE:\r
-                       {\r
-                               CString sCmd;\r
-                               sCmd.Format(_T("%s /command:repobrowser /path:\"%s\" /rev:%s"),\r
-                                       (LPCTSTR)(CPathUtils::GetAppDirectory()+_T("TortoiseProc.exe")),\r
-                                       (LPCTSTR)pathURL, (LPCTSTR)revSelected.ToString());\r
-\r
-                               CAppUtils::LaunchApplication(sCmd, NULL, false);\r
-                       }\r
-                       break;\r
-               case ID_EDITLOG:\r
-                       {\r
-                               EditLogMessage(selIndex);\r
-                       }\r
-                       break;\r
-               case ID_EDITAUTHOR:\r
-                       {\r
-                               EditAuthor(selEntries);\r
-                       }\r
-                       break;\r
-               case ID_REVPROPS:\r
-                       {\r
-                               CEditPropertiesDlg dlg;\r
-                               dlg.SetProjectProperties(&m_ProjectProperties);\r
-                               CTGitPathList escapedlist;\r
-                               dlg.SetPathList(CTGitPathList(CTGitPath(pathURL)));\r
-                               dlg.SetRevision(revSelected);\r
-                               dlg.RevProps(true);\r
-                               dlg.DoModal();\r
-                       }\r
-                       break;\r
-               case ID_COPYCLIPBOARD:\r
-                       {\r
-                               CopySelectionToClipBoard();\r
-                       }\r
-                       break;\r
-               case ID_EXPORT:\r
-                       {\r
-                               CString sCmd;\r
-                               sCmd.Format(_T("%s /command:export /path:\"%s\" /revision:%ld"),\r
-                                       (LPCTSTR)(CPathUtils::GetAppDirectory()+_T("TortoiseProc.exe")),\r
-                                       (LPCTSTR)pathURL, (LONG)revSelected);\r
-                               CAppUtils::LaunchApplication(sCmd, NULL, false);\r
-                       }\r
-                       break;\r
-               case ID_CHECKOUT:\r
-                       {\r
-                               CString sCmd;\r
-                               CString url = _T("tgit:")+pathURL;\r
-                               sCmd.Format(_T("%s /command:checkout /url:\"%s\" /revision:%ld"),\r
-                                       (LPCTSTR)(CPathUtils::GetAppDirectory()+_T("TortoiseProc.exe")),\r
-                                       (LPCTSTR)url, (LONG)revSelected);\r
-                               CAppUtils::LaunchApplication(sCmd, NULL, false);\r
-                       }\r
-                       break;\r
-               case ID_VIEWREV:\r
-                       {\r
-                               CString url = m_ProjectProperties.sWebViewerRev;\r
-                               url = GetAbsoluteUrlFromRelativeUrl(url);\r
-                               url.Replace(_T("%REVISION%"), revSelected.ToString());\r
-                               if (!url.IsEmpty())\r
-                                       ShellExecute(this->m_hWnd, _T("open"), url, NULL, NULL, SW_SHOWDEFAULT);                                        \r
-                       }\r
-                       break;\r
-               case ID_VIEWPATHREV:\r
-                       {\r
-                               CString relurl = pathURL;\r
-                               CString sRoot = GetRepositoryRoot(CTGitPath(relurl));\r
-                               relurl = relurl.Mid(sRoot.GetLength());\r
-                               CString url = m_ProjectProperties.sWebViewerPathRev;\r
-                               url = GetAbsoluteUrlFromRelativeUrl(url);\r
-                               url.Replace(_T("%REVISION%"), revSelected.ToString());\r
-                               url.Replace(_T("%PATH%"), relurl);\r
-                               if (!url.IsEmpty())\r
-                                       ShellExecute(this->m_hWnd, _T("open"), url, NULL, NULL, SW_SHOWDEFAULT);                                        \r
-                       }\r
-                       break;\r
-#endif\r
-               default:\r
-                       break;\r
-               } // switch (cmd)\r
-               theApp.DoWaitCursor(-1);\r
-               EnableOKButton();\r
-       } // if (popup.CreatePopupMenu())\r
-}\r
-\r
 void CLogDlg::ShowContextMenuForChangedpaths(CWnd* /*pWnd*/, CPoint point)\r
 {\r
 \r
index 91b1f0c..0055ab1 100644 (file)
@@ -32,6 +32,7 @@
 #include "GitRev.h"\r
 #include "Tooltip.h"\r
 #include "HintListCtrl.h"\r
+#include "GitLogList.h"\r
 \r
 #include <regex>\r
 using namespace std;\r
@@ -68,7 +69,7 @@ class CLogDlg : public CResizableStandAloneDialog, IFilterEditValidator
 public:\r
        CLogDlg(CWnd* pParent = NULL);   // standard constructor\r
        virtual ~CLogDlg();\r
-\r
+#if 0\r
        enum\r
        {\r
                LOGLIST_GRAPH,\r
@@ -79,7 +80,7 @@ public:
                LOGLIST_BUG,\r
                LOGLIST_MESSAGE_MAX=250\r
        };\r
-\r
+#endif\r
        enum\r
        {\r
                FILELIST_ACTION,\r
@@ -136,7 +137,7 @@ protected:
        afx_msg void OnBnClickedNexthundred();\r
        afx_msg void OnBnClickedHidepaths();\r
        afx_msg void OnBnClickedCheckStoponcopy();\r
-       afx_msg void OnLvnOdfinditemLoglist(NMHDR *pNMHDR, LRESULT *pResult);\r
+       \r
        afx_msg void OnDtnDropdownDatefrom(NMHDR *pNMHDR, LRESULT *pResult);\r
        afx_msg void OnDtnDropdownDateto(NMHDR *pNMHDR, LRESULT *pResult);\r
        afx_msg void OnSize(UINT nType, int cx, int cy);\r
@@ -178,7 +179,7 @@ private:
        void RecalculateShownList(CPtrArray * pShownlist);\r
     void SetSortArrow(CListCtrl * control, int nColumn, bool bAscending);\r
        void SortByColumn(int nSortColumn, bool bAscending);\r
-       bool IsSelectionContinuous();\r
+       \r
        void EnableOKButton();\r
        void GetAll(bool bForceAll = false);\r
        void UpdateLogInfoLabel();\r
@@ -195,7 +196,7 @@ private:
         * Extracts part of commit message suitable for displaying in revision list.\r
         */\r
        CString MakeShortMessage(const CString& message);\r
-       inline int ShownCountWithStopped() const { return (int)m_arShownList.GetCount() + (m_bStrictStopped ? 1 : 0); }\r
+//     inline int ShownCountWithStopped() const { return (int)m_arShownList.GetCount() + (m_bStrictStopped ? 1 : 0); }\r
 \r
 \r
        virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);\r
@@ -210,13 +211,13 @@ public:
        ProjectProperties       m_ProjectProperties;\r
        WORD                            m_wParam;\r
 private:\r
-       HFONT                           m_boldFont;\r
+       //HFONT                         m_boldFont;\r
        CString                         m_sRelativeRoot;\r
        CString                         m_sRepositoryRoot;\r
        CString                         m_sSelfRelativeURL;\r
        CString                         m_sURL;\r
        CString                         m_sUUID;    ///< empty if the log cache is not used\r
-       CHintListCtrl           m_LogList;\r
+       CGitLogList                     m_LogList;\r
        CListCtrl                       m_ChangedFileListCtrl;\r
        CFilterEdit                     m_cFilter;\r
        CProgressCtrl           m_LogProgress;\r
@@ -227,7 +228,7 @@ private:
        GitRev                          m_startrev;\r
        GitRev                          m_LogRevision;\r
        GitRev                          m_endrev;\r
-       GitRev                          m_wcRev;\r
+       //GitRev                                m_wcRev;\r
 //     GitRevRangeArray        m_selectedRevs;\r
 //     GitRevRangeArray        m_selectedRevsOneRange;\r
        bool                            m_bSelectionMustBeContinuous;\r
@@ -270,7 +271,7 @@ private:
        static int                      m_nSortColumnPathList;\r
        static bool                     m_bAscendingPathList;\r
        CRegDWORD                       m_regLastStrict;\r
-       CRegDWORD                       m_regMaxBugIDColWidth;\r
+       //CRegDWORD                     m_regMaxBugIDColWidth;\r
        CButton                         m_cHidePaths;\r
        bool                            m_bShowedAll;\r
        CString                         m_sTitle;\r
@@ -285,17 +286,19 @@ private:
        CTime                           m_timTo;\r
        CColors                         m_Colors;\r
        CImageList                      m_imgList;\r
+#if 0\r
        HICON                           m_hModifiedIcon;\r
        HICON                           m_hReplacedIcon;\r
        HICON                           m_hAddedIcon;\r
        HICON                           m_hDeletedIcon;\r
+#endif\r
 \r
        DWORD                           m_childCounter;\r
        DWORD                           m_maxChild;\r
        HACCEL                          m_hAccel;\r
 \r
        CStoreSelection*        m_pStoreSelection;\r
-    CLogDataVector             m_logEntries;\r
+    \r
        \r
        CXPTheme                        theme;\r
        bool                            m_bVista;\r
index f24f034..060df3f 100644 (file)
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\explorer.ico"\r
+                               RelativePath=".\explorer.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\explorer.ico"\r
+                               RelativePath="..\Resources\explorer.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\newfolder.ico"\r
+                               RelativePath=".\newfolder.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\newfolder.ico"\r
+                               RelativePath="..\Resources\newfolder.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\open.ico"\r
+                               RelativePath=".\open.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\open.ico"\r
+                               RelativePath="..\Resources\open.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\save.ico"\r
+                               RelativePath=".\save.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\save.ico"\r
+                               RelativePath="..\Resources\save.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\saveas.ico"\r
+                               RelativePath=".\saveas.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\saveas.ico"\r
+                               RelativePath="..\Resources\saveas.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\up.ico"\r
+                               RelativePath=".\up.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\up.ico"\r
+                               RelativePath="..\Resources\up.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                Name="Log"\r
                                >\r
                                <File\r
+                                       RelativePath=".\GitLogList.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\GitLogList.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
                                        RelativePath=".\Commands\LogCommand.cpp"\r
                                        >\r
                                </File>\r
                                        RelativePath=".\Commands\RenameCommand.h"\r
                                        >\r
                                </File>\r
+                               <File\r
+                                       RelativePath=".\RenameDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\RenameDlg.h"\r
+                                       >\r
+                               </File>\r
                        </Filter>\r
                        <Filter\r
                                Name="ReposStatus"\r
                                        RelativePath=".\Commands\RevertCommand.h"\r
                                        >\r
                                </File>\r
+                               <File\r
+                                       RelativePath=".\RevertDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\RevertDlg.h"\r
+                                       >\r
+                               </File>\r
                        </Filter>\r
                        <Filter\r
                                Name="Clean"\r
                                Name="Switch"\r
                                >\r
                                <File\r
+                                       RelativePath=".\GitSwitchDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\GitSwitchDlg.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
                                        RelativePath=".\Commands\SwitchCommand.cpp"\r
                                        >\r
                                </File>\r
                                        RelativePath=".\Commands\CloneCommand.h"\r
                                        >\r
                                </File>\r
+                               <File\r
+                                       RelativePath=".\CloneDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\CloneDlg.h"\r
+                                       >\r
+                               </File>\r
                        </Filter>\r
                        <Filter\r
                                Name="PullFetch"\r
                                        RelativePath=".\Commands\PullCommand.h"\r
                                        >\r
                                </File>\r
+                               <File\r
+                                       RelativePath=".\PullFetchDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\PullFetchDlg.h"\r
+                                       >\r
+                               </File>\r
                        </Filter>\r
                        <Filter\r
                                Name="push"\r
                                        RelativePath=".\Commands\PushCommand.h"\r
                                        >\r
                                </File>\r
+                               <File\r
+                                       RelativePath=".\PushDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\PushDlg.h"\r
+                                       >\r
+                               </File>\r
                        </Filter>\r
                        <Filter\r
                                Name="branch\tag"\r
                                        >\r
                                </File>\r
                                <File\r
+                                       RelativePath=".\CreateBranchTagDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\CreateBranchTagDlg.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
                                        RelativePath=".\Commands\TagCommand.cpp"\r
                                        >\r
                                </File>\r
                                        RelativePath=".\Commands\MergeCommand.h"\r
                                        >\r
                                </File>\r
+                               <File\r
+                                       RelativePath=".\MergeDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\MergeDlg.h"\r
+                                       >\r
+                               </File>\r
                        </Filter>\r
                        <Filter\r
                                Name="Export"\r
                                        RelativePath=".\Commands\ExportCommand.h"\r
                                        >\r
                                </File>\r
+                               <File\r
+                                       RelativePath=".\ExportDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\ExportDlg.h"\r
+                                       >\r
+                               </File>\r
                        </Filter>\r
                        <Filter\r
                                Name="Add"\r
                                        RelativePath=".\Commands\AddCommand.h"\r
                                        >\r
                                </File>\r
+                               <File\r
+                                       RelativePath=".\AddDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\AddDlg.h"\r
+                                       >\r
+                               </File>\r
                        </Filter>\r
                        <Filter\r
                                Name="Ignore"\r
                                        >\r
                                </File>\r
                                <File\r
+                                       RelativePath=".\FormatPatchDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\FormatPatchDlg.h"\r
+                                       >\r
+                               </File>\r
+                               <File\r
                                        RelativePath=".\Commands\ImportPatchCommand.cpp"\r
                                        >\r
                                </File>\r
                                        RelativePath=".\Commands\ImportPatchCommand.h"\r
                                        >\r
                                </File>\r
+                               <File\r
+                                       RelativePath=".\ImportPatchDlg.cpp"\r
+                                       >\r
+                               </File>\r
+                               <File\r
+                                       RelativePath=".\ImportPatchDlg.h"\r
+                                       >\r
+                               </File>\r
                        </Filter>\r
                </Filter>\r
                <Filter\r
                        Name="Utility Dialogs"\r
                        >\r
                        <File\r
-                               RelativePath=".\AddDlg.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\AddDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
                                RelativePath=".\ChangedDlg.cpp"\r
                                >\r
                        </File>\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\CloneDlg.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\CloneDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\CreateBranchTagDlg.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\CreateBranchTagDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\ExportDlg.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\ExportDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
                                RelativePath=".\FileDiffDlg.cpp"\r
                                >\r
                        </File>\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\FormatPatchDlg.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\FormatPatchDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\GitSwitchDlg.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\GitSwitchDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\ImportPatchDlg.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\ImportPatchDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\MergeDlg.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\MergeDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
                                RelativePath=".\ProgressDlg.cpp"\r
                                >\r
                        </File>\r
                                RelativePath=".\ProgressDlg.h"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath=".\PullFetchDlg.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\PullFetchDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\PushDlg.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\PushDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\RenameDlg.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\RenameDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\RevertDlg.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\RevertDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\SVNProgressDlg.h"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\SwitchLocalBranchPage.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\SwitchTagPage.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\SwitchTagPage.h"\r
-                               >\r
-                       </File>\r
                </Filter>\r
                <Filter\r
                        Name="Git"\r
                        </File>\r
                </Filter>\r
                <File\r
-                       RelativePath="..\..\..\..\tortoisegit\src\TortoiseProc\CloneDlg.htm"\r
-                       DeploymentContent="true"\r
-                       >\r
-               </File>\r
-               <File\r
                        RelativePath="Resource.h"\r
                        >\r
                </File>\r
index b5807ac..9e9906f 100644 (file)
Binary files a/src/TortoiseProc/resource.h and b/src/TortoiseProc/resource.h differ