OSDN Git Service

Add Show Whole Project Checkbox at log dialog
authorFrank Li <lznuaa@gmail.com>
Sun, 1 Feb 2009 16:30:08 +0000 (00:30 +0800)
committerFrank Li <lznuaa@gmail.com>
Sun, 1 Feb 2009 16:30:08 +0000 (00:30 +0800)
Remove show all & show whole project push menu button

Signed-off-by: Frank Li <lznuaa@gmail.com>
src/Resources/TortoiseProcENG.rc
src/TortoiseProc/GitLogListBase.cpp
src/TortoiseProc/LogDlg.cpp
src/TortoiseProc/LogDlg.h

index db83f8c..4414cf7 100644 (file)
Binary files a/src/Resources/TortoiseProcENG.rc and b/src/Resources/TortoiseProcENG.rc differ
index a805e59..ad59337 100644 (file)
@@ -1466,7 +1466,11 @@ UINT CGitLogListBase::LogThread()
        FillGitShortLog();\r
        \r
        if(this->m_bExitThread)\r
+       {\r
+               InterlockedExchange(&m_bThreadRunning, FALSE);\r
+               InterlockedExchange(&m_bNoDispUpdates, FALSE);\r
                return 0;\r
+       }\r
 #if 0\r
        RedrawItems(0, m_arShownList.GetCount());\r
 //     SetRedraw(false);\r
@@ -1518,7 +1522,11 @@ UINT CGitLogListBase::LogThread()
                        ::PostMessage(m_hWnd,MSG_LOADED,(WPARAM)i,0);\r
 \r
                        if(m_bExitThread)\r
+                       {\r
+                               InterlockedExchange(&m_bThreadRunning, FALSE);\r
+                               InterlockedExchange(&m_bNoDispUpdates, FALSE);\r
                                return 0;\r
+                       }\r
 \r
                        percent=updated*98/m_logEntries.size() + GITLOG_START+1;\r
                        if(percent == GITLOG_END)\r
@@ -1551,8 +1559,9 @@ void CGitLogListBase::Refresh()
                TerminateThread();\r
 \r
        this->Clear();\r
-\r
-       if(!m_bThreadRunning)\r
+       \r
+       //Assume Thread have exited\r
+       //if(!m_bThreadRunning)\r
        {\r
                this->SetItemCountEx(0);\r
                m_logEntries.clear();\r
index 90d96f2..f7b9068 100644 (file)
@@ -82,6 +82,7 @@ CLogDlg::CLogDlg(CWnd* pParent /*=NULL*/)
        m_bFilterWithRegex = !!CRegDWORD(_T("Software\\TortoiseGit\\UseRegexFilter"), TRUE);\r
        m_bAllBranch=FALSE;\r
        m_bFirstParent=FALSE;\r
+       m_bWholeProject=FALSE;\r
 }\r
 \r
 CLogDlg::~CLogDlg()\r
@@ -103,17 +104,16 @@ void CLogDlg::DoDataExchange(CDataExchange* pDX)
        DDX_Control(pDX, IDC_DATEFROM, m_DateFrom);\r
        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_LOG_FIRSTPARENT, m_bFirstParent);\r
        DDX_Check(pDX, IDC_LOG_ALLBRANCH,m_bAllBranch);\r
+       DDX_Check(pDX, IDC_SHOWWHOLEPROJECT,m_bWholeProject);\r
        DDX_Control(pDX, IDC_SEARCHEDIT, m_cFilter);\r
 }\r
 \r
 BEGIN_MESSAGE_MAP(CLogDlg, CResizableStandAloneDialog)\r
        ON_REGISTERED_MESSAGE(m_FindDialogMessage, OnFindDialogMessage) \r
-       ON_BN_CLICKED(IDC_GETALL, OnBnClickedGetall)\r
+       //ON_BN_CLICKED(IDC_GETALL, OnBnClickedGetall)\r
        //ON_NOTIFY(NM_DBLCLK, IDC_LOGMSG, OnNMDblclkChangedFileList)\r
        ON_WM_CONTEXTMENU()\r
        ON_WM_SETCURSOR()\r
@@ -261,7 +261,7 @@ BOOL CLogDlg::OnInitDialog()
        AddAnchor(IDC_HIDEPATHS, BOTTOM_LEFT);  \r
        AddAnchor(IDC_LOG_ALLBRANCH,BOTTOM_LEFT);\r
        AddAnchor(IDC_LOG_FIRSTPARENT, BOTTOM_LEFT);\r
-       AddAnchor(IDC_GETALL, BOTTOM_LEFT);\r
+       //AddAnchor(IDC_GETALL, BOTTOM_LEFT);\r
        AddAnchor(IDC_SHOWWHOLEPROJECT, BOTTOM_LEFT);\r
        AddAnchor(IDC_REFRESH, BOTTOM_LEFT);\r
        AddAnchor(IDC_STATBUTTON, BOTTOM_RIGHT);\r
@@ -328,30 +328,6 @@ BOOL CLogDlg::OnInitDialog()
                GetDlgItem(IDOK)->ShowWindow(SW_HIDE);\r
        }\r
        \r
-       // set the choices for the "Show All" button\r
-       temp.LoadString(IDS_LOG_SHOWALL);\r
-       m_btnShow.AddEntry(temp);\r
-       CString format;\r
-       format.LoadString(IDS_LOG_SHOW_CURRENT_BRANCH);\r
-       temp.Format(format,g_Git.GetCurrentBranch());\r
-       m_btnShow.AddEntry(temp);\r
-       temp.LoadString(IDS_LOG_SHOW_FIRST_PARENT);\r
-       m_btnShow.AddEntry(temp);\r
-       temp.LoadString(IDS_LOG_SHOW_NO_MERGE);\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
@@ -404,7 +380,7 @@ LRESULT CLogDlg::OnLogListLoading(WPARAM wParam, LPARAM lParam)
                //if (!m_bShowedAll)\r
                DialogEnableWindow(IDC_SHOWWHOLEPROJECT, TRUE);\r
 \r
-               DialogEnableWindow(IDC_GETALL, TRUE);\r
+               //DialogEnableWindow(IDC_GETALL, TRUE);\r
                DialogEnableWindow(IDC_LOG_FIRSTPARENT, TRUE);\r
                DialogEnableWindow(IDC_STATBUTTON, TRUE);\r
                DialogEnableWindow(IDC_REFRESH, TRUE);\r
@@ -556,6 +532,9 @@ void CLogDlg::FillLogMessageCtrl(bool bShow /* = true*/)
 \r
                        for(int i=0;i<pLogEntry->m_Files.GetCount() && (!matchpath.IsEmpty());i++)\r
                        {\r
+                               if( m_bWholeProject )\r
+                                       break;\r
+\r
                                ((CTGitPath&)pLogEntry->m_Files[i]).m_Action &= ~(CTGitPath::LOGACTIONS_HIDE|CTGitPath::LOGACTIONS_GRAY);\r
                                \r
                                if(pLogEntry->m_Files[i].GetGitPathString().Left(matchpath.GetLength()) != matchpath)\r
@@ -612,62 +591,6 @@ void CLogDlg::FillLogMessageCtrl(bool bShow /* = true*/)
 \r
 }\r
 \r
-void CLogDlg::OnBnClickedGetall()\r
-{\r
-       GetAll();\r
-}\r
-\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
-       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
-       }else\r
-       {\r
-               INT_PTR entry = m_btnShow.GetCurrentEntry();\r
-               switch (entry)\r
-               {\r
-                       case 0: // show all branch\r
-                               m_LogList.m_ShowMask=CGit::LOG_INFO_ALL_BRANCH;\r
-                               break;\r
-                       case 1: // show current branch\r
-                               m_LogList.m_ShowMask=0;\r
-                               break;\r
-                       case 2: // first parent\r
-                               m_LogList.m_ShowMask=CGit::LOG_INFO_FIRST_PARENT;\r
-                               break;\r
-                       case 3: // no merge\r
-                               m_LogList.m_ShowMask=CGit::LOG_INFO_NO_MERGE;\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.TerminateThread();\r
-       \r
-       m_LogList.Clear();\r
-       m_LogList.FetchLogAsync(this);\r
-\r
-}\r
-\r
 void CLogDlg::OnBnClickedRefresh()\r
 {\r
        m_limit = 0;\r
@@ -679,10 +602,7 @@ void CLogDlg::Refresh (bool autoGoOnline)
        m_LogList.Refresh();\r
 }\r
 \r
-void CLogDlg::OnBnClickShowWholeProject()\r
-{\r
-       GetAll(true);\r
-}\r
+\r
 \r
 BOOL CLogDlg::Cancel()\r
 {\r
@@ -729,12 +649,6 @@ void CLogDlg::OnCancel()
        }\r
        UpdateData();\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
@@ -3255,9 +3169,11 @@ void CLogDlg::OnSize(UINT nType, int cx, int cy)
 \r
 void CLogDlg::OnRefresh()\r
 {\r
-       if (GetDlgItem(IDC_GETALL)->IsWindowEnabled())\r
+       //if (GetDlgItem(IDC_GETALL)->IsWindowEnabled())\r
        {\r
                m_limit = 0;\r
+               this->m_LogProgress.SetPos(0);\r
+               \r
                Refresh (true);\r
        }\r
 }\r
@@ -3368,7 +3284,7 @@ void CLogDlg::OnBnClickedAllBranch()
        else\r
                m_LogList.m_ShowMask&=~CGit::LOG_INFO_ALL_BRANCH;\r
 \r
-       m_LogList.Refresh();\r
+       OnRefresh();\r
 \r
        FillLogMessageCtrl(false);\r
 }\r
@@ -3383,7 +3299,29 @@ void CLogDlg::OnBnClickedFirstParent()
        else\r
                m_LogList.m_ShowMask&=~CGit::LOG_INFO_FIRST_PARENT;\r
 \r
-       m_LogList.Refresh();\r
+       OnRefresh();\r
+\r
+       FillLogMessageCtrl(false);\r
+\r
+}\r
+\r
+void CLogDlg::OnBnClickShowWholeProject()\r
+{\r
+       this->UpdateData();\r
+\r
+       if(this->m_bWholeProject)\r
+       {\r
+               m_LogList.m_Path.Reset();\r
+               SetWindowText(m_sTitle + _T(" - ") + CString(_T("Whole Project")));\r
+       }\r
+       else\r
+       {\r
+               m_LogList.m_Path=m_path;\r
+               if(!m_path.IsEmpty())\r
+                       SetWindowText(m_sTitle + _T(" - ") + m_path.GetGitPathString());\r
+       }\r
+       \r
+       OnRefresh();\r
 \r
        FillLogMessageCtrl(false);\r
 \r
index ae6081d..715d7f7 100644 (file)
@@ -234,6 +234,7 @@ private:
        BOOL                            m_bIncludeMerges;\r
        BOOL                            m_bFirstParent;\r
        BOOL                            m_bAllBranch;\r
+       BOOL                            m_bWholeProject;\r
 \r
        git_revnum_t            m_lowestRev;\r
        CTGitPathList   *   m_currentChangedArray;\r