basetextbuffer.h

来自「用bcg库编写的java IDE 源码」· C头文件 代码 · 共 116 行

H
116
字号
// BaseTextBuffer.h: interface for the CBaseTextBuffer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_BASETEXTBUFFER_H__CB08D8E0_F161_424D_A200_E573D871B2D1__INCLUDED_)
#define AFX_BASETEXTBUFFER_H__CB08D8E0_F161_424D_A200_E573D871B2D1__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "editlibExp.h"
#include "CCrystalTextBuffer.h"

class CDeclManager;
struct __DeclBound;
class CBlockDecl;
class __CBaseDecl;

class EDITPADC_CLASS CBaseTextBuffer : public CCrystalTextBuffer  
{
//protected:
	
public:
    //DECLARE_DYNCREATE (CBaseTextBuffer)
    CDeclManager* m_pDeclManager;
	CBaseTextBuffer();
	virtual ~CBaseTextBuffer();

    struct SLineInfoExt : public CCrystalTextBuffer::SLineInfo
	{
	    BOOL  m_bExpanded;
		struct
		{
		  TCHAR* m_lszpHiddenText;
		  int    length;
		}m_hiddenInfo;
		CList<CBlockDecl*,CBlockDecl*> *m_lpNodes;
		CList<__CBaseDecl*,__CBaseDecl*> m_lDecls;

        SLineInfoExt()
        {
          memset(this, 0, sizeof (SLineInfoExt));
		  m_lpNodes = new CList<CBlockDecl*,CBlockDecl*>;
        }
		~SLineInfoExt()
		{
          delete m_lpNodes;
		}


        void SetText(LPCTSTR pszText)
		{
           m_hiddenInfo.m_lszpHiddenText = NULL;
           if (pszText != NULL && pszText[0] != _T ('\0'))
		   {
              int nLength = _tcslen (pszText);
              m_hiddenInfo.length = nLength;
              if(nLength > 1)
			  {
                m_hiddenInfo.m_lszpHiddenText
					= new TCHAR[(nLength + 1) * sizeof (TCHAR)];
                _tcscpy (m_hiddenInfo.m_lszpHiddenText, pszText);
			  }
              else
              m_hiddenInfo.m_lszpHiddenText[0] = pszText[0];
		  }
		}

        void FreeText()
		{
          if(HIWORD((DWORD)m_hiddenInfo.m_lszpHiddenText) != 0)
          delete m_hiddenInfo.m_lszpHiddenText;
		}
	};

	virtual SLineInfo* __newline()
	{
       return new SLineInfoExt;
	}

    SLineInfoExt* __line(int i){return (SLineInfoExt*)m_aLines[i];}
	//custom
	void  addNode(CBlockDecl*);	
	void  removeNode(CBlockDecl*);

	void  _toggle(int nLine,int nKeyIndex,CCrystalTextView* = NULL);
	void  _expand(int nLine,int nKeyIndex);
	void  _colapse(int nLine,int nKeyIndex);
	BOOL  isExpanded(int nLine,int nKeyIndex);
	BOOL  isColapsed(int nLine,int nKeyIndex);
	int   nodeIndexAt(int nLine,int nIndex);
	int   nodeCount(int nLine);
	CBlockDecl* nodeDeclAt(int nLine,int nIndex);
	CBlockDecl* nodeAtKey(int nLine,int nKeyIndex);

	CCrystalTextView * getHeadView()
	{
		return m_lpViews.IsEmpty()?NULL:m_lpViews.GetHead();
	}

	int AlignBuf(int nLength);

    void HideBlockDecls(CBlockDecl*);
	void ShowBlockDecls(CBlockDecl*);
    void UpdateParents(CBlockDecl*,int);

    void HideBlockText(CCrystalTextView * pSource,CBlockDecl*);
	void ShowBlockText(CCrystalTextView * pSource,CBlockDecl*);

	void AddDeclToLine(int nLine,__CBaseDecl*);
	void RemoveDeclFromLine(int nLine,__CBaseDecl*);

};

#endif // !defined(AFX_BASETEXTBUFFER_H__CB08D8E0_F161_424D_A200_E573D871B2D1__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?