GrepView.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:6k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // GrepView.h : interface of the CGrepView class
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #if !defined(AFX_GREPVIEW_H__841CCA0D_0740_40E5_810B_7A57EBDD46B7__INCLUDED_)
  21. #define AFX_GREPVIEW_H__841CCA0D_0740_40E5_810B_7A57EBDD46B7__INCLUDED_
  22. #if _MSC_VER > 1000
  23. #pragma once
  24. #endif // _MSC_VER > 1000
  25. class CGrepRecordPreview : public CXTPReportRecordItemPreview
  26. {
  27. public:
  28. CGrepRecordPreview(CString strFindLine, CString strReplaceLine)
  29. :CXTPReportRecordItemPreview(0)
  30. {
  31. m_strFindLine = strFindLine;
  32. m_strReplaceLine = strReplaceLine;
  33. m_bChanged = strFindLine != strReplaceLine;
  34. REPLACE_S(m_strFindLine, _T("t"), _T(" "));
  35. REPLACE_S(m_strReplaceLine, _T("t"), _T(" "));
  36. }
  37. CString m_strFindLine;
  38. CString m_strReplaceLine;
  39. BOOL m_bChanged;
  40. protected:
  41. int GetPreviewHeight(CDC* pDC, CXTPReportRow* pRow, int nWidth)
  42. {
  43. CXTPReportControl* pControl = pRow->GetControl();
  44. int nIndentWidth = pControl->GetHeaderIndent();
  45. CRect& rcIndent = pControl->GetPaintManager()->m_rcPreviewIndent;
  46. CRect rcPreviewItem(nIndentWidth + rcIndent.left, 0, nWidth - rcIndent.right, 0);
  47. CXTPFontDC font(pDC, &pControl->GetPaintManager()->m_fontPreview);
  48. CRect rcFind(rcPreviewItem.left, 0, rcPreviewItem.right, 0);
  49. pDC->DrawText(m_strFindLine, rcFind, DT_WORDBREAK|DT_CALCRECT|DT_NOPREFIX);
  50. CRect rcReplace(rcPreviewItem.left, 0, rcPreviewItem.right, 0);
  51. pDC->DrawText(m_strReplaceLine, rcReplace, DT_WORDBREAK|DT_CALCRECT|DT_NOPREFIX);
  52. return rcFind.Height() + rcReplace.Height() + rcIndent.top + rcIndent.bottom;
  53. }
  54. void OnDrawCaption(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* /*pMetrics*/)
  55. {
  56. CRect rcItem(pDrawArgs->rcItem);
  57. CDC* pDC = pDrawArgs->pDC;
  58. CRect& rcIndent = pDrawArgs->pControl->GetPaintManager()->m_rcPreviewIndent;
  59. rcItem.DeflateRect(rcIndent.left, rcIndent.top, rcIndent.right, rcIndent.bottom);
  60. CRect rcFind(rcItem);
  61. pDC->DrawText(m_strFindLine, rcFind, DT_WORDBREAK|DT_LEFT|DT_NOPREFIX);
  62. rcFind.bottom = rcFind.top;
  63. pDC->DrawText(m_strFindLine, rcFind, DT_WORDBREAK|DT_LEFT|DT_NOPREFIX|DT_CALCRECT);
  64. CRect rcReplace(rcItem);
  65. rcReplace.top += rcFind.Height();
  66. if (m_bChanged) if (pDC->GetTextColor() == 0xFF0000) pDC->SetTextColor(0xFF);
  67. pDC->DrawText(m_strReplaceLine, rcReplace, DT_WORDBREAK|DT_LEFT|DT_NOPREFIX);
  68. }
  69. };
  70. class CGrepRecord : public CXTPReportRecord
  71. {
  72. public:
  73. CGrepRecord(CString strPath, CString strDirectory, CString strName,
  74. CString strFind, long nLine, CString strFindLine, CString strReplaceLine, long nIndex, long nLength, CString strReplace )
  75. {
  76. AddItem(new CXTPReportRecordItemText(strName));
  77. AddItem(new CXTPReportRecordItemText(strDirectory));
  78. AddItem(new CXTPReportRecordItemText(strFind));
  79. AddItem(new CXTPReportRecordItemNumber(nLine));
  80. CXTPReportRecordItem* pItem = AddItem(new CXTPReportRecordItem());
  81. pItem->HasCheckbox(TRUE);
  82. pItem->SetChecked(strFindLine != strReplaceLine);
  83. pItem->SetSortPriority(strFindLine != strReplaceLine? 1: 0);
  84. pItem->SetGroupPriority(strFindLine != strReplaceLine? 1: 0);
  85. CString strExt;
  86. int nExt = strName.ReverseFind(_T('.'));
  87. if (nExt > 0) strExt = strName.Mid(nExt + 1);
  88. AddItem(new CXTPReportRecordItemText(strExt));
  89. SetPreviewItem(new CGrepRecordPreview(strFindLine, strReplaceLine));
  90. m_strPath = strPath;
  91. m_nIndex = nIndex;
  92. m_nLength = nLength;
  93. m_strReplace = strReplace;
  94. }
  95. BOOL IsChecked()
  96. {
  97. return GetItem(4)->IsChecked();
  98. }
  99. void SetChecked(BOOL bChecked)
  100. {
  101. GetItem(4)->SetChecked(bChecked);
  102. }
  103. BOOL IsChanged()
  104. {
  105. return ((CGrepRecordPreview*)GetItemPreview())->m_bChanged;
  106. }
  107. public:
  108. CString m_strPath;
  109. int m_nIndex;
  110. int m_nLength;
  111. CString m_strReplace;
  112. };
  113. class CGrepDoc;
  114. class CGrepView : public CXTPReportView
  115. {
  116. protected: // create from serialization only
  117. CGrepView();
  118. DECLARE_DYNCREATE(CGrepView)
  119. // Attributes
  120. public:
  121. CGrepDoc* GetDocument();
  122. // Operations
  123. public:
  124. // Overrides
  125. // ClassWizard generated virtual function overrides
  126. //{{AFX_VIRTUAL(CGrepView)
  127. public:
  128. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  129. protected:
  130. //}}AFX_VIRTUAL
  131. // Implementation
  132. public:
  133. virtual ~CGrepView();
  134. #ifdef _DEBUG
  135. virtual void AssertValid() const;
  136. virtual void Dump(CDumpContext& dc) const;
  137. #endif
  138. protected:
  139. void OnReportItemDblClick(NMHDR * pNotifyStruct, LRESULT * /*result*/);
  140. void OnReportKeyDown(NMHDR * pNotifyStruct, LRESULT * /*result*/);
  141. void OnReportLButtonDown(NMHDR * pNotifyStruct, LRESULT * /*result*/);
  142. void CheckSelected(BOOL bChecked);
  143. // Generated message map functions
  144. protected:
  145. //{{AFX_MSG(CGrepView)
  146. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  147. //}}AFX_MSG
  148. DECLARE_MESSAGE_MAP()
  149. };
  150. #ifndef _DEBUG  // debug version in GrepView.cpp
  151. inline CGrepDoc* CGrepView::GetDocument()
  152. { return (CGrepDoc*)m_pDocument; }
  153. #endif
  154. /////////////////////////////////////////////////////////////////////////////
  155. //{{AFX_INSERT_LOCATION}}
  156. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  157. #endif // !defined(AFX_GREPVIEW_H__841CCA0D_0740_40E5_810B_7A57EBDD46B7__INCLUDED_)