BEGIN_MESSAGE_MAP(CLogDlg, CResizableStandAloneDialog)\r
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_LOGMSG, OnNMDblclkChangedFileList)\r
ON_WM_CONTEXTMENU()\r
ON_WM_SETCURSOR()\r
ON_BN_CLICKED(IDHELP, OnBnClickedHelp)\r
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETO, OnDtnDatetimechangeDateto)\r
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATEFROM, OnDtnDatetimechangeDatefrom)\r
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(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_LOGMSG, OnLvnColumnclickChangedFileList)\r
+ //ON_NOTIFY(LVN_COLUMNCLICK, IDC_LOGMSG, OnLvnColumnclickChangedFileList)\r
ON_BN_CLICKED(IDC_HIDEPATHS, OnBnClickedHidepaths)\r
\r
ON_BN_CLICKED(IDC_CHECK_STOPONCOPY, &CLogDlg::OnBnClickedCheckStoponcopy)\r
m_bShowBugtraqColumn = true;\r
\r
//theme.SetWindowTheme(m_LogList.GetSafeHwnd(), L"Explorer", NULL);\r
- theme.SetWindowTheme(m_ChangedFileListCtrl.GetSafeHwnd(), L"Explorer", NULL);\r
+ //theme.SetWindowTheme(m_ChangedFileListCtrl.GetSafeHwnd(), L"Explorer", NULL);\r
\r
// set up the columns\r
m_LogList.DeleteAllItems();\r
m_LogList.InsertGitColumn();\r
\r
- m_ChangedFileListCtrl.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER );\r
- m_ChangedFileListCtrl.DeleteAllItems();\r
- int c = ((CHeaderCtrl*)(m_ChangedFileListCtrl.GetDlgItem(0)))->GetItemCount()-1;\r
- while (c>=0)\r
- m_ChangedFileListCtrl.DeleteColumn(c--);\r
- temp.LoadString(IDS_PROGRS_ACTION);\r
- m_ChangedFileListCtrl.InsertColumn(this->FILELIST_ACTION, temp);\r
- temp.LoadString(IDS_LOG_FILE_LINE_ADD);\r
- m_ChangedFileListCtrl.InsertColumn(this->FILELIST_ADD, temp);\r
- temp.LoadString(IDS_LOG_FILE_LINE_DEL);\r
- m_ChangedFileListCtrl.InsertColumn(this->FILELIST_DEL, temp);\r
- temp.LoadString(IDS_PROGRS_PATH);\r
- m_ChangedFileListCtrl.InsertColumn(this->FILELIST_PATH, temp);\r
- \r
- m_ChangedFileListCtrl.SetRedraw(false);\r
- CAppUtils::ResizeAllListCtrlCols(&m_ChangedFileListCtrl);\r
- m_ChangedFileListCtrl.SetRedraw(true);\r
-\r
+ m_ChangedFileListCtrl.Init(SVNSLC_COLEXT | SVNSLC_COLSTATUS |IDS_STATUSLIST_COLADD|IDS_STATUSLIST_COLDEL , _T("LogDlg"));\r
\r
GetDlgItem(IDC_LOGLIST)->UpdateData(FALSE);\r
\r
}\r
\r
// We use a progress bar while getting the logs \r
- //m_LogProgress.SetRange32(0, 100);\r
- //m_LogProgress.SetPos(0);\r
+ m_LogProgress.SetRange32(0, 100);\r
+ m_LogProgress.SetPos(0);\r
\r
GetDlgItem(IDC_PROGRESS)->ShowWindow(TRUE);\r
\r
PostMessage(WM_TIMER, LOGFILTER_TIMER);\r
\r
}\r
+\r
+ m_LogProgress.SetPos(cur);\r
}\r
void CLogDlg::SetDlgTitle(bool bOffline)\r
{\r
m_ChangedFileListCtrl.SetRedraw(FALSE);\r
// InterlockedExchange(&m_bNoDispUpdates, TRUE);\r
m_currentChangedArray = NULL;\r
- m_ChangedFileListCtrl.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER );\r
+ //m_ChangedFileListCtrl.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER );\r
m_ChangedFileListCtrl.DeleteAllItems();\r
- m_ChangedFileListCtrl.SetItemCountEx(0);\r
-\r
+ \r
// if we're not here to really show a selected revision, just\r
// get out of here after clearing the views, which is what is intended\r
// if that flag is not set.\r
GitRev* pLogEntry = reinterpret_cast<GitRev *>(m_LogList.m_arShownList.GetAt(selIndex));\r
\r
// set the log message text\r
- pMsgView->SetWindowText(_T("*")+pLogEntry->m_Subject+_T("\n\n")+pLogEntry->m_Body);\r
+ pMsgView->SetWindowText(_T("Commit:")+pLogEntry->m_CommitHash+_T("\r\n\r\n*")+pLogEntry->m_Subject+_T("\n\n")+pLogEntry->m_Body);\r
// turn bug ID's into links if the bugtraq: properties have been set\r
// and we can find a match of those in the log message\r
m_ProjectProperties.FindBugID(pLogEntry->m_Body, pMsgView);\r
CAppUtils::FormatTextInRichEditControl(pMsgView);\r
- m_currentChangedArray = &(pLogEntry->m_Files);\r
- if (m_currentChangedArray == NULL)\r
- {\r
-// InterlockedExchange(&m_bNoDispUpdates, FALSE);\r
- m_ChangedFileListCtrl.SetRedraw(TRUE);\r
- return;\r
- }\r
+\r
+ m_ChangedFileListCtrl.UpdateWithGitPathList(pLogEntry->m_Files);\r
+ m_ChangedFileListCtrl.Show(0);\r
+\r
+ m_ChangedFileListCtrl.SetRedraw(TRUE);\r
+ return;\r
#if 0\r
// fill in the changed files list control\r
if ((m_cHidePaths.GetState() & 0x0003)==BST_CHECKED)\r
\r
void CLogDlg::Refresh (bool autoGoOnline)\r
{\r
-#if 0\r
- // refreshing means re-downloading the already shown log messages\r
- UpdateData();\r
- m_maxChild = 0;\r
- m_childCounter = 0;\r
-\r
- if ((m_limit == 0)||(m_bStrict)||(int(m_logEntries.size()-1) > m_limit))\r
- {\r
- if (m_logEntries.size() != 0)\r
- {\r
- m_endrev = m_logEntries[m_logEntries.size()-1]->Rev;\r
- }\r
- }\r
- m_startrev = -1;\r
- m_bCancelled = FALSE;\r
-\r
- // We need to create CStoreSelection on the heap or else\r
- // the variable will run out of the scope before the\r
- // thread ends. Therefore we let the thread delete\r
- // the instance.\r
- m_pStoreSelection = new CStoreSelection(this);\r
- m_ChangedFileListCtrl.SetItemCountEx(0);\r
- m_ChangedFileListCtrl.Invalidate();\r
- m_LogList.SetItemCountEx(0);\r
- m_LogList.Invalidate();\r
- InterlockedExchange(&m_bNoDispUpdates, TRUE);\r
- CWnd * pMsgView = GetDlgItem(IDC_MSGVIEW);\r
- pMsgView->SetWindowText(_T(""));\r
-\r
- SetSortArrow(&m_LogList, -1, true);\r
-\r
- m_LogList.DeleteAllItems();\r
- m_arShownList.RemoveAll();\r
- m_logEntries.ClearAll();\r
-\r
- // reset the cached HEAD property & go on-line\r
-\r
- if (autoGoOnline)\r
- {\r
- SetDlgTitle (false);\r
- logCachePool.GetRepositoryInfo().ResetHeadRevision (m_sUUID, m_sRepositoryRoot);\r
- }\r
-\r
- InterlockedExchange(&m_bThreadRunning, TRUE);\r
- if (AfxBeginThread(LogThreadEntry, this)==NULL)\r
- {\r
- InterlockedExchange(&m_bThreadRunning, FALSE);\r
- CMessageBox::Show(NULL, IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR);\r
- }\r
- GetDlgItem(IDC_LOGLIST)->UpdateData(FALSE);\r
- InterlockedExchange(&m_bNoDispUpdates, FALSE);\r
-#endif\r
+ m_LogList.Refresh();\r
}\r
\r
void CLogDlg::OnBnClickedNexthundred()\r
}\r
else if (pWnd == &m_ChangedFileListCtrl)\r
{\r
- ShowContextMenuForChangedpaths(pWnd, point);\r
+ //ShowContextMenuForChangedpaths(pWnd, point);\r
}\r
else if ((selCount == 1)&&(pWnd == GetDlgItem(IDC_MSGVIEW)))\r
{\r
sMenuItemText.LoadString(IDS_SCIEDIT_SELECTALL);\r
popup.AppendMenu(MF_STRING | MF_ENABLED, EM_SETSEL, sMenuItemText);\r
\r
- if (selIndex >= 0)\r
- {\r
- popup.AppendMenu(MF_SEPARATOR);\r
- sMenuItemText.LoadString(IDS_LOG_POPUP_EDITLOG);\r
- popup.AppendMenu(MF_STRING | MF_ENABLED, CGitLogList::ID_EDITAUTHOR, sMenuItemText);\r
- }\r
+ //if (selIndex >= 0)\r
+ //{\r
+ // popup.AppendMenu(MF_SEPARATOR);\r
+ // sMenuItemText.LoadString(IDS_LOG_POPUP_EDITLOG);\r
+ // popup.AppendMenu(MF_STRING | MF_ENABLED, CGitLogList::ID_EDITAUTHOR, sMenuItemText);\r
+ //}\r
\r
int cmd = popup.TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_NONOTIFY, point.x, point.y, this, 0);\r
switch (cmd)\r
\r
CString cmd;\r
\r
- cmd.Format(_T("git.cmd cat-file -p %s:%s"),rev1->m_CommitHash,(*m_currentChangedArray)[selIndex].GetGitPathString());\r
+ cmd.Format(_T("git.exe cat-file -p %s:%s"),rev1->m_CommitHash,(*m_currentChangedArray)[selIndex].GetGitPathString());\r
g_Git.RunLogFile(cmd,file1);\r
- cmd.Format(_T("git.cmd cat-file -p %s:%s"),rev2->m_CommitHash,(*m_currentChangedArray)[selIndex].GetGitPathString());\r
+ cmd.Format(_T("git.exe cat-file -p %s:%s"),rev2->m_CommitHash,(*m_currentChangedArray)[selIndex].GetGitPathString());\r
g_Git.RunLogFile(cmd,file2);\r
\r
CAppUtils::DiffFlags flags;\r
\r
BOOL CLogDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)\r
{\r
- if (this->IsThreadRunning())\r
+ //if (this->IsThreadRunning())\r
+ if(m_LogList.m_bNoDispUpdates)\r
{\r
// only show the wait cursor over the list control\r
if ((pWnd)&&\r
{\r
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);\r
*pResult = 0;\r
- if (this->IsThreadRunning())\r
+ //if (this->IsThreadRunning())\r
+ if(m_LogList.m_bNoDispUpdates)\r
return;\r
if (pNMLV->iItem >= 0)\r
{\r
\r
// now start filter the log list\r
// InterlockedExchange(&m_bNoDispUpdates, TRUE);\r
- RecalculateShownList(&m_LogList.m_arShownList);\r
+// RecalculateShownList(&m_LogList.m_arShownList);\r
// InterlockedExchange(&m_bNoDispUpdates, FALSE);\r
\r
\r
- m_LogList.DeleteAllItems();\r
- m_LogList.SetItemCountEx(m_LogList.ShownCountWithStopped());\r
- m_LogList.RedrawItems(0, m_LogList.ShownCountWithStopped());\r
- m_LogList.SetRedraw(false);\r
- m_LogList.ResizeAllListCtrlCols();\r
- m_LogList.SetRedraw(true);\r
- m_LogList.Invalidate();\r
- if ( m_LogList.GetItemCount()==1 )\r
- {\r
- m_LogList.SetSelectionMark(0);\r
- m_LogList.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED);\r
- }\r
+// m_LogList.DeleteAllItems();\r
+// m_LogList.SetItemCountEx(m_LogList.ShownCountWithStopped());\r
+// m_LogList.RedrawItems(0, m_LogList.ShownCountWithStopped());\r
+// m_LogList.SetRedraw(false);\r
+// m_LogList.ResizeAllListCtrlCols();\r
+// m_LogList.SetRedraw(true);\r
+// m_LogList.Invalidate();\r
+// if ( m_LogList.GetItemCount()==1 )\r
+// {\r
+// m_LogList.SetSelectionMark(0);\r
+// m_LogList.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED);\r
+// }\r
theApp.DoWaitCursor(-1);\r
GetDlgItem(IDC_SEARCHEDIT)->ShowWindow(SW_HIDE);\r
GetDlgItem(IDC_SEARCHEDIT)->ShowWindow(SW_SHOW);\r
}\r
void CLogDlg::OnLvnColumnclickChangedFileList(NMHDR *pNMHDR, LRESULT *pResult)\r
{\r
+#if 0\r
if (this->IsThreadRunning())\r
return; //no sorting while the arrays are filled\r
if (m_currentChangedArray == NULL)\r
SetSortArrow(&m_ChangedFileListCtrl, m_nSortColumnPathList, m_bAscendingPathList);\r
m_ChangedFileListCtrl.Invalidate();\r
*pResult = 0;\r
+#endif\r
}\r
\r
int CLogDlg::m_nSortColumnPathList = 0;\r
\r
void CLogDlg::UpdateLogInfoLabel()\r
{\r
-#if 0\r
- git_revnum_t rev1 = 0;\r
- git_revnum_t rev2 = 0;\r
- long selectedrevs = 0;\r
- if (m_arShownList.GetCount())\r
- {\r
- PLOGENTRYDATA pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(0));\r
- rev1 = pLogEntry->Rev;\r
- pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(m_arShownList.GetCount()-1));\r
- rev2 = pLogEntry->Rev;\r
+\r
+ git_revnum_t rev1 ;\r
+ git_revnum_t rev2 ;\r
+ long selectedrevs ;\r
+ int count =m_LogList.m_arShownList.GetCount();\r
+ if (count)\r
+ {\r
+ rev1 = (reinterpret_cast<GitRev*>(m_LogList.m_arShownList.GetAt(0)))->m_CommitHash;\r
+ //pLogEntry = reinterpret_cast<PLOGENTRYDATA>(m_arShownList.GetAt(m_arShownList.GetCount()-1));\r
+ rev2 = (reinterpret_cast<GitRev*>(m_LogList.m_arShownList.GetAt(count-1)))->m_CommitHash;\r
selectedrevs = m_LogList.GetSelectedCount();\r
}\r
CString sTemp;\r
- sTemp.Format(IDS_LOG_LOGINFOSTRING, m_arShownList.GetCount(), rev2, rev1, selectedrevs);\r
+ sTemp.Format(_T("Showing %ld revision(s), from revision %s to revision %s - %ld revision(s) selected"), count, rev2.Left(6), rev1.Left(6), selectedrevs);\r
m_sLogInfo = sTemp;\r
-#endif\r
+\r
UpdateData(FALSE);\r
}\r
\r
+#if 0\r
void CLogDlg::ShowContextMenuForChangedpaths(CWnd* /*pWnd*/, CPoint point)\r
{\r
\r
\r
} // if (popup.CreatePopupMenu())\r
}\r
+#endif\r
\r
void CLogDlg::OnDtnDropdownDatefrom(NMHDR * /*pNMHDR*/, LRESULT *pResult)\r
{\r
}\r
\r
\r
-int CLogDataVector::ParserFromLog()\r
-{\r
- CString log;\r
- GitRev rev;\r
- g_Git.GetLog(log);\r
-\r
- CString begin;\r
- begin.Format(_T("#<%c>"),LOG_REV_ITEM_BEGIN);\r
- \r
- if(log.GetLength()==0)\r
- return 0;\r
- \r
- int start=4;\r
- int length;\r
- int next =1;\r
- while( next>0 )\r
- {\r
- next=log.Find(begin,start);\r
- if(next >0 )\r
- length = next - start+4;\r
- else\r
- length = log.GetLength()-start+4;\r
-\r
- CString onelog =log;\r
- onelog=log.Mid(start -4,length);\r
- rev.ParserFromLog(onelog);\r
- this->push_back(rev);\r
- start = next +4;\r
- }\r
-\r
- return 0;\r
-}\r