OSDN Git Service

Git Blame Find okay
authorFrank Li <lznuaa@gmail.com>
Thu, 15 Jan 2009 14:33:16 +0000 (22:33 +0800)
committerFrank Li <lznuaa@gmail.com>
Thu, 15 Jan 2009 14:33:16 +0000 (22:33 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/TortoiseGit.sln
src/TortoiseGitBlame/TortoiseGitBlame.vcproj
src/TortoiseGitBlame/TortoiseGitBlameView.cpp
src/TortoiseGitBlame/TortoiseGitBlameView.h

index 5506657..964a25a 100644 (file)
@@ -40,6 +40,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TortoisePlink", "TortoisePl
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CustomActions", "TortoiseGitSetup\CustomActions\CustomActions.vcproj", "{454D5FCC-E25A-4B45-9CA2-01ABB0FA5181}"\r
 EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IBugTraqProvider", "IBugTraqProvider\IBugTraqProvider.vcproj", "{2C879469-DB8F-4BF0-B016-AE864D2A7BBC}"\r
+EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TortoiseGitBlame", "TortoiseGitBlame\TortoiseGitBlame.vcproj", "{62507C2F-9290-4342-910F-BFC44DF99B01}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {A2C38606-3D96-4A2C-B5C5-22CEAC523B37} = {A2C38606-3D96-4A2C-B5C5-22CEAC523B37}\r
@@ -47,10 +49,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TortoiseGitBlame", "Tortois
                {A5498556-CE09-4095-8335-08FC8370552D} = {A5498556-CE09-4095-8335-08FC8370552D}\r
                {12E5B4AE-D7EF-4A57-A22D-6F9F9D8CE1FB} = {12E5B4AE-D7EF-4A57-A22D-6F9F9D8CE1FB}\r
                {7CA5B1EB-8CC9-40A6-96D8-83649C1A870B} = {7CA5B1EB-8CC9-40A6-96D8-83649C1A870B}\r
+               {4BE529FB-C2F2-49F7-A897-054B955564CF} = {4BE529FB-C2F2-49F7-A897-054B955564CF}\r
        EndProjectSection\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IBugTraqProvider", "IBugTraqProvider\IBugTraqProvider.vcproj", "{2C879469-DB8F-4BF0-B016-AE864D2A7BBC}"\r
-EndProject\r
 Global\r
        GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
                debug_static|Mixed Platforms = debug_static|Mixed Platforms\r
@@ -462,30 +463,6 @@ Global
                {454D5FCC-E25A-4B45-9CA2-01ABB0FA5181}.Release|x64.ActiveCfg = Release|x64\r
                {454D5FCC-E25A-4B45-9CA2-01ABB0FA5181}.Release|x64.Build.0 = Release|x64\r
                {454D5FCC-E25A-4B45-9CA2-01ABB0FA5181}.Release|x86.ActiveCfg = Release|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.debug_static|Mixed Platforms.ActiveCfg = Debug|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.debug_static|Mixed Platforms.Build.0 = Debug|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.debug_static|Win32.ActiveCfg = Debug|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.debug_static|Win32.Build.0 = Debug|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.debug_static|x64.ActiveCfg = Debug|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.debug_static|x86.ActiveCfg = Debug|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.Debug|Mixed Platforms.Build.0 = Debug|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.Debug|Win32.ActiveCfg = Debug|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.Debug|Win32.Build.0 = Debug|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.Debug|x64.ActiveCfg = Debug|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.Debug|x86.ActiveCfg = Debug|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.release_static|Mixed Platforms.ActiveCfg = Release|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.release_static|Mixed Platforms.Build.0 = Release|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.release_static|Win32.ActiveCfg = Release|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.release_static|Win32.Build.0 = Release|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.release_static|x64.ActiveCfg = Release|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.release_static|x86.ActiveCfg = Release|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.Release|Mixed Platforms.ActiveCfg = Release|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.Release|Mixed Platforms.Build.0 = Release|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.Release|Win32.ActiveCfg = Release|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.Release|Win32.Build.0 = Release|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.Release|x64.ActiveCfg = Release|Win32\r
-               {62507C2F-9290-4342-910F-BFC44DF99B01}.Release|x86.ActiveCfg = Release|Win32\r
                {2C879469-DB8F-4BF0-B016-AE864D2A7BBC}.debug_static|Mixed Platforms.ActiveCfg = Debug|Win32\r
                {2C879469-DB8F-4BF0-B016-AE864D2A7BBC}.debug_static|Mixed Platforms.Build.0 = Debug|Win32\r
                {2C879469-DB8F-4BF0-B016-AE864D2A7BBC}.debug_static|Win32.ActiveCfg = Debug|Win32\r
@@ -510,6 +487,30 @@ Global
                {2C879469-DB8F-4BF0-B016-AE864D2A7BBC}.Release|Win32.Build.0 = Release|Win32\r
                {2C879469-DB8F-4BF0-B016-AE864D2A7BBC}.Release|x64.ActiveCfg = Release|Win32\r
                {2C879469-DB8F-4BF0-B016-AE864D2A7BBC}.Release|x86.ActiveCfg = Release|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.debug_static|Mixed Platforms.ActiveCfg = Debug|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.debug_static|Mixed Platforms.Build.0 = Debug|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.debug_static|Win32.ActiveCfg = Debug|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.debug_static|Win32.Build.0 = Debug|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.debug_static|x64.ActiveCfg = Debug|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.debug_static|x86.ActiveCfg = Debug|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.Debug|Mixed Platforms.Build.0 = Debug|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.Debug|Win32.Build.0 = Debug|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.Debug|x64.ActiveCfg = Debug|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.Debug|x86.ActiveCfg = Debug|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.release_static|Mixed Platforms.ActiveCfg = Release|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.release_static|Mixed Platforms.Build.0 = Release|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.release_static|Win32.ActiveCfg = Release|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.release_static|Win32.Build.0 = Release|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.release_static|x64.ActiveCfg = Release|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.release_static|x86.ActiveCfg = Release|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.Release|Mixed Platforms.ActiveCfg = Release|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.Release|Mixed Platforms.Build.0 = Release|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.Release|Win32.ActiveCfg = Release|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.Release|Win32.Build.0 = Release|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.Release|x64.ActiveCfg = Release|Win32\r
+               {62507C2F-9290-4342-910F-BFC44DF99B01}.Release|x86.ActiveCfg = Release|Win32\r
        EndGlobalSection\r
        GlobalSection(SolutionProperties) = preSolution\r
                HideSolutionNode = FALSE\r
index 075564a..8e8c0f9 100644 (file)
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\res\output_wnd.ico"\r
+                               RelativePath="..\Resources\blameres\output_wnd.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\blameres\output_wnd.ico"\r
+                               RelativePath=".\res\output_wnd.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\res\output_wnd_hc.ico"\r
+                               RelativePath="..\Resources\blameres\output_wnd_hc.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\blameres\output_wnd_hc.ico"\r
+                               RelativePath=".\res\output_wnd_hc.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\blameres\properties_hc.bmp"\r
+                               RelativePath=".\res\properties_hc.bmp"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\res\properties_hc.bmp"\r
+                               RelativePath="..\Resources\blameres\properties_hc.bmp"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\blameres\properties_wnd.ico"\r
+                               RelativePath=".\res\properties_wnd.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\res\properties_wnd.ico"\r
+                               RelativePath="..\Resources\blameres\properties_wnd.ico"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\blameres\Toolbar.bmp"\r
+                               RelativePath=".\res\Toolbar.bmp"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\res\Toolbar.bmp"\r
+                               RelativePath="..\Resources\blameres\Toolbar.bmp"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\blameres\Toolbar256.bmp"\r
+                               RelativePath=".\res\Toolbar256.bmp"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\res\Toolbar256.bmp"\r
+                               RelativePath="..\Resources\blameres\Toolbar256.bmp"\r
                                >\r
                        </File>\r
                        <File\r
                                </FileConfiguration>\r
                        </File>\r
                        <File\r
-                               RelativePath="..\Resources\blameres\TortoiseGitBlameDoc.ico"\r
+                               RelativePath=".\res\TortoiseGitBlameDoc.ico"\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath=".\res\TortoiseGitBlameDoc.ico"\r
+                               RelativePath="..\Resources\blameres\TortoiseGitBlameDoc.ico"\r
                                >\r
                        </File>\r
                        <File\r
index 98283f2..782a7f1 100644 (file)
@@ -104,6 +104,7 @@ CTortoiseGitBlameView::CTortoiseGitBlameView()
        m_bShowDate=false;\r
 \r
     m_FindDialogMessage   =   ::RegisterWindowMessage(FINDMSGSTRING);   \r
+       m_pFindDialog = NULL;\r
 }\r
 \r
 CTortoiseGitBlameView::~CTortoiseGitBlameView()\r
@@ -593,7 +594,7 @@ void CTortoiseGitBlameView::InitialiseEditor()
 \r
 void CTortoiseGitBlameView::StartSearch()\r
 {\r
-       if (currentDialog)\r
+       if (m_pFindDialog)\r
                return;\r
        bool bCase = false;\r
        // Initialize FINDREPLACE\r
@@ -610,87 +611,53 @@ void CTortoiseGitBlameView::StartSearch()
        currentDialog = FindText(&fr);\r
 }\r
 \r
-bool CTortoiseGitBlameView::DoSearch(LPSTR what, DWORD flags)\r
+bool CTortoiseGitBlameView::DoSearch(CString what, DWORD flags)\r
 {\r
-#if 0\r
-       TCHAR szWhat[80];\r
+\r
+       //char szWhat[80];\r
        int pos = SendEditor(SCI_GETCURRENTPOS);\r
        int line = SendEditor(SCI_LINEFROMPOSITION, pos);\r
        bool bFound = false;\r
        bool bCaseSensitive = !!(flags & FR_MATCHCASE);\r
 \r
-       strcpy_s(szWhat, sizeof(szWhat), what);\r
+       //strcpy_s(szWhat, sizeof(szWhat), what);\r
 \r
        if(!bCaseSensitive)\r
        {\r
-               char *p;\r
-               size_t len = strlen(szWhat);\r
-               for (p = szWhat; p < szWhat + len; p++)\r
-               {\r
-                       if (isupper(*p)&&__isascii(*p))\r
-                               *p = _tolower(*p);\r
-               }\r
+               what=what.MakeLower();\r
        }\r
 \r
-       CString sWhat = CString(szWhat);\r
+       //CString sWhat = CString(szWhat);\r
        \r
-       char buf[20];\r
-       int i=0;\r
-       for (i=line; (i<(int)authors.size())&&(!bFound); ++i)\r
+       //char buf[20];\r
+       //int i=0;\r
+       int i=line;\r
+       do\r
        {\r
                int bufsize = SendEditor(SCI_GETLINE, i);\r
                char * linebuf = new char[bufsize+1];\r
                SecureZeroMemory(linebuf, bufsize+1);\r
                SendEditor(SCI_GETLINE, i, (LPARAM)linebuf);\r
+               CString oneline=this->m_TextView.StringFromControl(linebuf);\r
                if (!bCaseSensitive)\r
                {\r
-                       char *p;\r
-                       for (p = linebuf; p < linebuf + bufsize; p++)\r
-                       {\r
-                               if (isupper(*p)&&__isascii(*p))\r
-                                       *p = _tolower(*p);\r
-                       }\r
+                       oneline=oneline.MakeLower();\r
                }\r
-               _stprintf_s(buf, 20, _T("%ld"), revs[i]);\r
-               if (authors[i].compare(sWhat)==0)\r
+               //_stprintf_s(buf, 20, _T("%ld"), revs[i]);\r
+               if (this->m_Authors[i].Find(what)>=0)\r
                        bFound = true;\r
-               else if ((!bCaseSensitive)&&(_stricmp(authors[i].c_str(), szWhat)==0))\r
+               else if ((!bCaseSensitive)&&(this->m_Authors[i].MakeLower().Find(what)>=0))\r
                        bFound = true;\r
-               else if (strcmp(buf, szWhat) == 0)\r
-                       bFound = true;\r
-               else if (strstr(linebuf, szWhat))\r
+               else if (oneline.Find(what) >=0)\r
                        bFound = true;\r
+               \r
                delete [] linebuf;\r
-       }\r
-       if (!bFound)\r
-       {\r
-               for (i=0; (i<line)&&(!bFound); ++i)\r
-               {\r
-                       int bufsize = SendEditor(SCI_GETLINE, i);\r
-                       char * linebuf = new char[bufsize+1];\r
-                       SecureZeroMemory(linebuf, bufsize+1);\r
-                       SendEditor(SCI_GETLINE, i, (LPARAM)linebuf);\r
-                       if (!bCaseSensitive)\r
-                       {\r
-                               char *p;\r
-                               for (p = linebuf; p < linebuf + bufsize; p++)\r
-                               {\r
-                                       if (isupper(*p)&&__isascii(*p))\r
-                                               *p = _tolower(*p);\r
-                               }\r
-                       }\r
-                       _stprintf_s(buf, 20, _T("%ld"), revs[i]);\r
-                       if (authors[i].compare(sWhat)==0)\r
-                               bFound = true;\r
-                       else if ((!bCaseSensitive)&&(_stricmp(authors[i].c_str(), szWhat)==0))\r
-                               bFound = true;\r
-                       else if (strcmp(buf, szWhat) == 0)\r
-                               bFound = true;\r
-                       else if (strstr(linebuf, szWhat))\r
-                               bFound = true;\r
-                       delete [] linebuf;\r
-               }\r
-       }\r
+\r
+               i++;\r
+               if(i>=m_CommitHash.size())\r
+                       i=0;\r
+       }while(i!=line &&(!bFound));\r
+\r
        if (bFound)\r
        {\r
                GotoLine(i);\r
@@ -702,9 +669,9 @@ bool CTortoiseGitBlameView::DoSearch(LPSTR what, DWORD flags)
        }\r
        else\r
        {\r
-               ::MessageBox(wMain, searchstringnotfound, "CTortoiseGitBlameView", MB_ICONINFORMATION);\r
+               ::MessageBox(wMain, what+_T(" not found"), _T("CTortoiseGitBlameView"), MB_ICONINFORMATION);\r
        }\r
-#endif\r
+\r
        return true;\r
 }\r
 \r
@@ -1201,7 +1168,7 @@ void CTortoiseGitBlameView::DrawBlame(HDC hDC)
                                Left += m_authorwidth;\r
                        }\r
 #endif\r
-                       if ((i==m_SelectedLine)&&(currentDialog))\r
+                       if ((i==m_SelectedLine)&&(m_pFindDialog))\r
                        {\r
                                LOGBRUSH brush;\r
                                brush.lbColor = m_textcolor;\r
@@ -2705,6 +2672,7 @@ BOOL CTortoiseGitBlameView::PreTranslateMessage(MSG* pMsg)
 void CTortoiseGitBlameView::OnEditFind()\r
 {\r
     m_pFindDialog=new CFindReplaceDialog();\r
+       \r
     m_pFindDialog->Create(TRUE,_T(""),NULL,FR_DOWN,this);  \r
 }\r
 \r
@@ -2739,7 +2707,8 @@ LRESULT CTortoiseGitBlameView::OnFindDialogMessage(WPARAM   wParam,   LPARAM   l
         bool   bMatchCase   =   m_pFindDialog->MatchCase()   ==   TRUE;   \r
         bool   bMatchWholeWord   =   m_pFindDialog->MatchWholeWord()   ==   TRUE;   \r
         bool   bSearchDown   =   m_pFindDialog->SearchDown()   ==   TRUE;   \r
-\r
+               \r
+               DoSearch(FindName,m_pFindDialog->m_fr.Flags);\r
             //with   given   name   do   search   \r
     //        *FindWhatYouNeed(FindName,   bMatchCase,   bMatchWholeWord,   bSearchDown);   \r
     }   \r
index b68be6c..fd5f837 100644 (file)
@@ -139,7 +139,7 @@ public:
        void BlamePreviousRevision();\r
        void DiffPreviousRevision();\r
        void ShowLog();\r
-       bool DoSearch(LPSTR what, DWORD flags);\r
+       bool DoSearch(CString what, DWORD flags);\r
        bool GotoLine(long line);\r
        bool ScrollToLine(long line);\r
        void GotoLineDlg();\r