OSDN Git Service

Git Blame Status Show at Properties Bar.
[tortoisegit/TortoiseGitJp.git] / src / TortoiseGitBlame / PropertiesWnd.cpp
index 595ad6a..cb56cc4 100644 (file)
@@ -160,22 +160,91 @@ void CPropertiesWnd::InitPropList()
        m_wndPropList.EnableDescriptionArea();\r
        m_wndPropList.SetVSDotNetLook();\r
        m_wndPropList.MarkModifiedProperties();\r
+       \r
+       CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("Basic Info"));\r
+\r
+       \r
+       m_CommitHash = new CMFCPropertyGridProperty(\r
+                               _T("Commit Hash"), \r
+                               _T(""),\r
+                               _T("Commit Hash")\r
+                               );\r
+       pGroup1->AddSubItem(m_CommitHash);\r
+\r
+       m_AuthorName = new CMFCPropertyGridProperty(\r
+                               _T("Author"), \r
+                               _T(""),\r
+                               _T("Author")\r
+                               );\r
+       pGroup1->AddSubItem(m_AuthorName);\r
+\r
+       m_AuthorDate = new CMFCPropertyGridProperty(\r
+                               _T("Author Date"), \r
+                               _T(""),\r
+                               _T("Author Date")\r
+                               );\r
+       pGroup1->AddSubItem(m_AuthorDate);\r
+\r
+       m_AuthorEmail= new CMFCPropertyGridProperty(\r
+                               _T("Author Email"), \r
+                               _T(""),\r
+                               _T("Author Email")\r
+                               );\r
+       pGroup1->AddSubItem(m_AuthorEmail);\r
+\r
+       m_CommitterName = new CMFCPropertyGridProperty(\r
+                               _T("Committer Name"), \r
+                               _T(""),\r
+                               _T("Committer Name")\r
+                               );\r
+       pGroup1->AddSubItem(m_CommitterName);\r
+\r
+       m_CommitterEmail =new CMFCPropertyGridProperty(\r
+                               _T("Committer Email"), \r
+                               _T(""),\r
+                               _T("Committer Email")\r
+                               );\r
+       pGroup1->AddSubItem(m_CommitterEmail);\r
+\r
+       m_CommitterDate = new CMFCPropertyGridProperty(\r
+                               _T("Committer Date"), \r
+                               _T(""),\r
+                               _T("Committer Date")\r
+                               );;\r
+       pGroup1->AddSubItem(m_CommitterDate);\r
+\r
+       m_Subject = new CMFCPropertyGridProperty(\r
+                               _T("Subject"), \r
+                               _T(""),\r
+                               _T("Subject")\r
+                               );;;\r
+       pGroup1->AddSubItem(m_Subject);\r
+\r
+       m_Body = new CMFCPropertyGridProperty(\r
+                               _T("Body"), \r
+                               _T(""),\r
+                               _T("Body")\r
+                               );;;;\r
+       pGroup1->AddSubItem(m_Body);\r
+\r
+       for(int i=0;i<pGroup1->GetSubItemsCount();i++)\r
+       {\r
+               pGroup1->GetSubItem(i)->AllowEdit(FALSE);\r
+       }\r
 \r
-       CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("Appearance"));\r
+       //std::vector<CMFCPropertyGridProperty*> m_ParentHash;\r
+       //std::vector<CMFCPropertyGridProperty*> m_ParentSubject;\r
 \r
-       pGroup1->AddSubItem(new CMFCPropertyGridProperty(_T("3D Look"), (_variant_t) false, _T("Specifies the window's font will be non-bold and controls will have a 3D border")));\r
+       m_wndPropList.AddProperty(pGroup1);\r
+       m_BaseInfoGroup=pGroup1;\r
 \r
-       CMFCPropertyGridProperty* pProp = new CMFCPropertyGridProperty(_T("Border"), _T("Dialog Frame"), _T("One of: None, Thin, Resizable, or Dialog Frame"));\r
-       pProp->AddOption(_T("None"));\r
-       pProp->AddOption(_T("Thin"));\r
-       pProp->AddOption(_T("Resizable"));\r
-       pProp->AddOption(_T("Dialog Frame"));\r
-       pProp->AllowEdit(FALSE);\r
+       m_ParentGroup=new CMFCPropertyGridProperty(_T("Parent"));\r
 \r
-       pGroup1->AddSubItem(pProp);\r
+       m_wndPropList.AddProperty(m_ParentGroup);\r
+#if 0\r
        pGroup1->AddSubItem(new CMFCPropertyGridProperty(_T("Caption"), (_variant_t) _T("About"), _T("Specifies the text that will be displayed in the window's title bar")));\r
 \r
-       m_wndPropList.AddProperty(pGroup1);\r
+       \r
 \r
        CMFCPropertyGridProperty* pSize = new CMFCPropertyGridProperty(_T("Window Size"), 0, TRUE);\r
 \r
@@ -233,6 +302,7 @@ void CPropertiesWnd::InitPropList()
 \r
        pGroup4->Expand(FALSE);\r
        m_wndPropList.AddProperty(pGroup4);\r
+#endif\r
 }\r
 \r
 void CPropertiesWnd::OnSetFocus(CWnd* pOldWnd)\r
@@ -267,3 +337,80 @@ void CPropertiesWnd::SetPropListFont()
 \r
        m_wndPropList.SetFont(&m_fntPropList);\r
 }\r
+void CPropertiesWnd::RemoveParent()\r
+{\r
+       for(int i=0;i<m_ParentGroup->GetSubItemsCount();i++)\r
+       {\r
+               CMFCPropertyGridProperty * p=m_ParentGroup->GetSubItem(0);\r
+               m_ParentGroup->RemoveSubItem(p);\r
+       }\r
+       \r
+}\r
+void CPropertiesWnd::UpdateProperties(GitRev *rev)\r
+{\r
+       if(rev)\r
+       {\r
+               m_CommitHash->SetValue(rev->m_CommitHash);\r
+               m_AuthorName->SetValue(rev->m_AuthorName);\r
+               m_AuthorDate->SetValue(rev->m_AuthorDate.Format(_T("%Y-%m-%d %H:%M")));\r
+               m_AuthorEmail->SetValue(rev->m_AuthorEmail);    \r
+\r
+               m_CommitterName->SetValue(rev->m_CommitterName);\r
+               m_CommitterEmail->SetValue(rev->m_CommitterEmail);\r
+               m_CommitterDate->SetValue(rev->m_CommitterDate.Format(_T("%Y-%m-%d %H:%M")));\r
+\r
+               m_Subject->SetValue(rev->m_Subject);\r
+               m_Body->SetValue(rev->m_Body);\r
+\r
+               RemoveParent();\r
+\r
+               m_ParentGroup;\r
+       \r
+               CLogDataVector          *pLogEntry = &((CMainFrame*)AfxGetApp()->GetMainWnd())->m_wndOutput.m_LogList.m_logEntries;\r
+\r
+               for(int i=0;i<rev->m_ParentHash.size();i++)\r
+               {\r
+                       CString str;\r
+                       CString parentsubject;\r
+                       int index=pLogEntry->m_HashMap[rev->m_ParentHash[i]];\r
+                       if(index>=0)\r
+                               parentsubject=pLogEntry->at(index).m_Subject;\r
+\r
+                       str.Format(_T("%d - %s \n %s"),i,rev->m_ParentHash[i],parentsubject);\r
+                       \r
+                       CMFCPropertyGridProperty*p=new CMFCPropertyGridProperty(\r
+                                                                                       rev->m_ParentHash[i].Left(8), \r
+                                                                                               parentsubject,\r
+                                                                                               str\r
+                                                                                       );\r
+                       m_ParentGroup->AddSubItem(p);\r
+                       m_ParentGroup->Expand();\r
+               }\r
+               for(int i=0;i<m_BaseInfoGroup->GetSubItemsCount();i++)\r
+                       m_BaseInfoGroup->GetSubItem(i)->SetDescription(m_BaseInfoGroup->GetSubItem(i)->GetValue());\r
+\r
+       }else\r
+       {\r
+               m_CommitHash->SetValue(_T(""));\r
+               m_AuthorName->SetValue(_T(""));\r
+               m_AuthorDate->SetValue(_T(""));\r
+               m_AuthorEmail->SetValue(_T(""));\r
+\r
+               m_CommitterName->SetValue(_T(""));\r
+               m_CommitterEmail->SetValue(_T(""));\r
+               m_CommitterDate->SetValue(_T(""));\r
+\r
+               m_Subject->SetValue(_T(""));\r
+               m_Body->SetValue(_T(""));\r
+\r
+               RemoveParent();\r
+               //m_ParentGroup;\r
+\r
+               //m_ParentHash->SetValue(_T(""));\r
+               //m_ParentSubject->SetValue(_T(""));            \r
+               for(int i=0;i<m_BaseInfoGroup->GetSubItemsCount();i++)\r
+                       m_BaseInfoGroup->GetSubItem(i)->SetDescription(_T(""));\r
+       }\r
+       this->Invalidate();\r
+       m_wndPropList.Invalidate();\r
+}
\ No newline at end of file