OSDN Git Service

Git Blame Show File
[tortoisegit/TortoiseGitJp.git] / src / TortoiseGitBlame / TortoiseGitBlameDoc.cpp
1 \r
2 // TortoiseGitBlameDoc.cpp : implementation of the CTortoiseGitBlameDoc class\r
3 //\r
4 \r
5 #include "stdafx.h"\r
6 #include "TortoiseGitBlame.h"\r
7 \r
8 #include "TortoiseGitBlameDoc.h"\r
9 #include "GitAdminDir.h"\r
10 #include "MessageBox.h"\r
11 #include "Git.h"\r
12 #include "MainFrm.h"\r
13 #include "TGitPath.h"\r
14 #include "TortoiseGitBlameView.h"\r
15 \r
16 #ifdef _DEBUG\r
17 #define new DEBUG_NEW\r
18 #endif\r
19 \r
20 \r
21 // CTortoiseGitBlameDoc\r
22 \r
23 IMPLEMENT_DYNCREATE(CTortoiseGitBlameDoc, CDocument)\r
24 \r
25 BEGIN_MESSAGE_MAP(CTortoiseGitBlameDoc, CDocument)\r
26 END_MESSAGE_MAP()\r
27 \r
28 \r
29 // CTortoiseGitBlameDoc construction/destruction\r
30 \r
31 CTortoiseGitBlameDoc::CTortoiseGitBlameDoc()\r
32 {\r
33         // TODO: add one-time construction code here\r
34 \r
35 }\r
36 \r
37 CTortoiseGitBlameDoc::~CTortoiseGitBlameDoc()\r
38 {\r
39 }\r
40 \r
41 BOOL CTortoiseGitBlameDoc::OnNewDocument()\r
42 {\r
43         if (!CDocument::OnNewDocument())\r
44                 return FALSE;\r
45 \r
46         // TODO: add reinitialization code here\r
47         // (SDI documents will reuse this document)\r
48 \r
49         return TRUE;\r
50 }\r
51 \r
52 BOOL CTortoiseGitBlameDoc::OnOpenDocument(LPCTSTR lpszPathName)\r
53 {\r
54         if (!CDocument::OnOpenDocument(lpszPathName))\r
55                 return FALSE;\r
56 \r
57         m_CurrentFileName=lpszPathName;\r
58 \r
59         // TODO: add reinitialization code here\r
60         // (SDI documents will reuse this document)\r
61         if(!CGit::CheckMsysGitDir())\r
62         {\r
63                 CMessageBox::Show(NULL,_T("MsysGit have not install or config fail"),_T("TortoiseGitBlame"),MB_OK);\r
64                 return FALSE;\r
65         }\r
66 \r
67         GitAdminDir admindir;\r
68         CString topdir;\r
69         if(!admindir.HasAdminDir(lpszPathName,&topdir))\r
70         {\r
71                 CMessageBox::Show(NULL,CString(lpszPathName)+_T(" is not controled by git\nJust Show File Context"),_T("TortoiseGitBlame"),MB_OK);\r
72         }else\r
73         {\r
74                 m_IsGitFile=TRUE;\r
75                 g_Git.m_CurrentDir=topdir;\r
76                 GetMainFrame()->m_wndOutput.LoadHistory(lpszPathName);\r
77                 \r
78                 CString cmd;\r
79                 CTGitPath path;\r
80                 path.SetFromWin(lpszPathName);\r
81                 cmd.Format(_T("git.exe blame -s -l -- \"%s\""),path.GetGitPathString());\r
82                 m_BlameData.Empty();\r
83                 if(g_Git.Run(cmd,&m_BlameData))\r
84                 {\r
85                         CMessageBox::Show(NULL,CString(_T("Blame Error"))+m_BlameData,_T("TortoiseGitBlame"),MB_OK);\r
86 \r
87                 }\r
88                 CTortoiseGitBlameView *pView=DYNAMIC_DOWNCAST(CTortoiseGitBlameView,GetMainFrame()->GetActiveView());\r
89                 pView->UpdateInfo();\r
90                 \r
91         }\r
92 \r
93         return TRUE;\r
94 }\r
95 \r
96 \r
97 // CTortoiseGitBlameDoc serialization\r
98 \r
99 void CTortoiseGitBlameDoc::Serialize(CArchive& ar)\r
100 {\r
101         if (ar.IsStoring())\r
102         {\r
103                 // TODO: add storing code here\r
104         }\r
105         else\r
106         {\r
107                 // TODO: add loading code here\r
108         }\r
109 }\r
110 \r
111 \r
112 // CTortoiseGitBlameDoc diagnostics\r
113 \r
114 #ifdef _DEBUG\r
115 void CTortoiseGitBlameDoc::AssertValid() const\r
116 {\r
117         CDocument::AssertValid();\r
118 }\r
119 \r
120 void CTortoiseGitBlameDoc::Dump(CDumpContext& dc) const\r
121 {\r
122         CDocument::Dump(dc);\r
123 }\r
124 #endif //_DEBUG\r
125 \r
126 \r
127 // CTortoiseGitBlameDoc commands\r