DDX_Control(pDX, IDC_DATETO, m_DateTo);\r
DDX_Control(pDX, IDC_HIDEPATHS, m_cHidePaths);\r
DDX_Control(pDX, IDC_GETALL, m_btnShow);\r
+ DDX_Control(pDX, IDC_SHOWWHOLEPROJECT,m_btnShowWholeProject);\r
DDX_Text(pDX, IDC_LOGINFO, m_sLogInfo);\r
DDX_Check(pDX, IDC_INCLUDEMERGE, m_bIncludeMerges);\r
DDX_Control(pDX, IDC_SEARCHEDIT, m_cFilter);\r
ON_WM_TIMER()\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_BN_CLICKED(IDC_SHOWWHOLEPROJECT, OnBnClickShowWholeProject)\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
\r
BOOL CLogDlg::OnInitDialog()\r
{\r
+ CString temp;\r
CResizableStandAloneDialog::OnInitDialog();\r
\r
m_hAccel = LoadAccelerators(AfxGetResourceHandle(),MAKEINTRESOURCE(IDR_ACC_LOGDLG));\r
if (!m_bStrict)\r
m_bStrict = m_regLastStrict;\r
UpdateData(FALSE);\r
- CString temp;\r
- if (m_limit)\r
- temp.Format(IDS_LOG_SHOWNEXT, m_limit);\r
- else\r
- temp.Format(IDS_LOG_SHOWNEXT, (int)(DWORD)CRegDWORD(_T("Software\\TortoiseGit\\NumberOfLogs"), 100));\r
-\r
- SetDlgItemText(IDC_NEXTHUNDRED, temp);\r
-\r
+ \r
// set the font to use in the log message view, configured in the settings dialog\r
CAppUtils::CreateFontForLogs(m_logFont);\r
GetDlgItem(IDC_MSGVIEW)->SetFont(&m_logFont);\r
AddAnchor(IDC_CHECK_STOPONCOPY, BOTTOM_LEFT);\r
AddAnchor(IDC_INCLUDEMERGE, BOTTOM_LEFT);\r
AddAnchor(IDC_GETALL, BOTTOM_LEFT);\r
- AddAnchor(IDC_NEXTHUNDRED, BOTTOM_LEFT);\r
+ AddAnchor(IDC_SHOWWHOLEPROJECT, BOTTOM_LEFT);\r
AddAnchor(IDC_REFRESH, BOTTOM_LEFT);\r
AddAnchor(IDC_STATBUTTON, BOTTOM_RIGHT);\r
AddAnchor(IDC_PROGRESS, BOTTOM_LEFT, BOTTOM_RIGHT);\r
// set the choices for the "Show All" button\r
temp.LoadString(IDS_LOG_SHOWALL);\r
m_btnShow.AddEntry(temp);\r
- temp.LoadString(IDS_LOG_SHOW_WHOLE);\r
+ CString format;\r
+ format.LoadString(IDS_LOG_SHOW_CURRENT_BRANCH);\r
+ temp.Format(format,g_Git.GetCurrentBranch());\r
m_btnShow.AddEntry(temp);\r
m_btnShow.SetCurrentEntry((LONG)CRegDWORD(_T("Software\\TortoiseGit\\ShowAllEntry")));\r
\r
+ temp.LoadString(IDS_LOG_SHOW_WHOLE);\r
+ this->m_btnShowWholeProject.AddEntry(temp);\r
+ format.LoadString(IDS_LOG_SHOW_CURRENT_PATH);\r
+ temp.Format(format,m_path.GetGitPathString());\r
+ if(!m_path.IsEmpty())\r
+ {\r
+ this->m_btnShowWholeProject.AddEntry(temp);\r
+ this->m_btnShowWholeProject.SetCurrentEntry((LONG)CRegDWORD(_T("Software\\TortoiseGit\\ShowWholeProject")));\r
+ }\r
+\r
+\r
m_mergedRevs.clear();\r
\r
// first start a thread to obtain the log messages without\r
GetDlgItem(IDC_PROGRESS)->ShowWindow(TRUE);\r
\r
//DialogEnableWindow(IDC_GETALL, FALSE);\r
- DialogEnableWindow(IDC_NEXTHUNDRED, FALSE);\r
+ //DialogEnableWindow(IDC_SHOWWHOLEPROJECT, FALSE);\r
DialogEnableWindow(IDC_CHECK_STOPONCOPY, FALSE);\r
DialogEnableWindow(IDC_INCLUDEMERGE, FALSE);\r
DialogEnableWindow(IDC_STATBUTTON, FALSE);\r
if( cur == GITLOG_END)\r
{\r
\r
- if (!m_bShowedAll)\r
- DialogEnableWindow(IDC_NEXTHUNDRED, TRUE);\r
+ //if (!m_bShowedAll)\r
+ DialogEnableWindow(IDC_SHOWWHOLEPROJECT, TRUE);\r
\r
DialogEnableWindow(IDC_GETALL, TRUE);\r
//DialogEnableWindow(IDC_INCLUDEMERGE, TRUE);\r
GetAll();\r
}\r
\r
-void CLogDlg::GetAll(bool bForceAll /* = false */)\r
+void CLogDlg::GetAll(bool bIsShowProjectOrBranch)\r
{\r
\r
// fetch all requested log messages, either the specified range or\r
// really *all* available log messages.\r
///UpdateData();\r
- INT_PTR entry = m_btnShow.GetCurrentEntry();\r
- if (bForceAll)\r
- entry = 0;\r
+ if(bIsShowProjectOrBranch)\r
+ {\r
+ INT_PTR entry = this->m_btnShowWholeProject.GetCurrentEntry();\r
+ switch (entry)\r
+ {\r
+ case 0: // show whole Project\r
+ m_LogList.m_Path.Reset();\r
+ SetWindowText(m_sTitle + _T(" - ")+_T("whole project"));\r
+ break;\r
+ case 1: // show whole project\r
+ m_LogList.m_Path=this->m_path;\r
+ SetWindowText(m_sTitle + _T(" - ")+this->m_path.GetGitPathString());\r
+ break;\r
+ }\r
\r
- switch (entry)\r
+ }else\r
{\r
- case 0: // show all branch;\r
- m_LogList.m_bAllBranch=true;\r
- break;\r
- case 1: // show whole project\r
- m_LogList.m_Path.Reset();\r
- SetWindowText(m_sTitle + _T(" - "));\r
- break;\r
+ INT_PTR entry = m_btnShow.GetCurrentEntry();\r
+ switch (entry)\r
+ {\r
+ case 0: // show all branch\r
+ m_LogList.m_bAllBranch=true;\r
+ break;\r
+ case 1: // show current branch\r
+ m_LogList.m_bAllBranch=false;\r
+ \r
+ break;\r
+ }\r
}\r
+\r
m_LogList.m_bExitThread=TRUE;\r
DWORD ret =::WaitForSingleObject(m_LogList.m_LoadingThread->m_hThread,20000);\r
if(ret == WAIT_TIMEOUT)\r
m_LogList.Refresh();\r
}\r
\r
-void CLogDlg::OnBnClickedNexthundred()\r
+void CLogDlg::OnBnClickShowWholeProject()\r
{\r
-#if 0\r
- UpdateData();\r
- // we have to fetch the next X log messages.\r
- if (m_logEntries.size() < 1)\r
- {\r
- // since there weren't any log messages fetched before, just\r
- // fetch all since we don't have an 'anchor' to fetch the 'next'\r
- // messages from.\r
- return GetAll(true);\r
- }\r
- git_revnum_t rev = m_logEntries[m_logEntries.size()-1]->Rev;\r
-\r
- if (rev < 1)\r
- return; // do nothing! No more revisions to get\r
-\r
- m_startrev = rev;\r
- m_endrev = 0;\r
- m_bCancelled = FALSE;\r
-\r
- // rev is is revision we already have and we will receive it again\r
- // -> fetch one extra revision to get NumberOfLogs *new* revisions\r
-\r
- m_limit = (int)(DWORD)CRegDWORD(_T("Software\\TortoiseGit\\NumberOfLogs"), 100) +1;\r
- InterlockedExchange(&m_bNoDispUpdates, TRUE);\r
- SetSortArrow(&m_LogList, -1, true);\r
- InterlockedExchange(&m_bThreadRunning, TRUE);\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
-\r
- // since we fetch the log from the last revision we already have,\r
- // we have to remove that revision entry to avoid getting it twice\r
- m_logEntries.pop_back();\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
- InterlockedExchange(&m_bNoDispUpdates, TRUE);\r
- GetDlgItem(IDC_LOGLIST)->UpdateData(FALSE);\r
-#endif\r
+ GetAll(true);\r
}\r
\r
BOOL CLogDlg::Cancel()\r
UpdateData();\r
if (m_bSaveStrict)\r
m_regLastStrict = m_bStrict;\r
+ \r
CRegDWORD reg = CRegDWORD(_T("Software\\TortoiseGit\\ShowAllEntry"));\r
reg = m_btnShow.GetCurrentEntry();\r
+\r
+ reg = CRegDWORD(_T("Software\\TortoiseGit\\ShowWholeProject"));\r
+ reg = m_btnShowWholeProject.GetCurrentEntry();\r
+\r
SaveSplitterPos();\r
__super::OnCancel();\r
}\r
SortShownListArray();\r
m_LogList.Invalidate();\r
UpdateLogInfoLabel();\r
- // the "next 100" button only makes sense if the log messages\r
- // are sorted by revision in descending order\r
- if ((m_nSortColumn)||(m_bAscending))\r
- {\r
- DialogEnableWindow(IDC_NEXTHUNDRED, false);\r
- }\r
- else\r
- {\r
- DialogEnableWindow(IDC_NEXTHUNDRED, true);\r
- }\r
+ \r
*pResult = 0;\r
}\r
\r