亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? codezbankdoc.cpp

?? CodezBank is just a small application that stores source code snippets organized in a hierarhichal m
?? CPP
字號:
////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2008  
// 
// The following code is supplied "as-is" and 
// is given without warranty of any kind. 
// It may be freely distributed and used. 
// The user holds author blameless from any complications or 
// problems that may arise from the use of this code.
// 
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
//  $Workfile: $   created: 04/05/2008 11:25
////////////////////////////////////////////////////////////////////////////////
//  $Revision: $  $Modtime: $
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// Author: steveb
//
// History:
//
////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "CodezBank.h"
#include "CodezBankDoc.h"
#include "MainFrm.h"
#include "FileProperties.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

using namespace Document;

IMPLEMENT_DYNCREATE(CCodezBankDoc, COleDocument)

BEGIN_MESSAGE_MAP(CCodezBankDoc, COleDocument)
   ON_UPDATE_COMMAND_UI(ID_TITLE_MOD, OnUpdateMod)
   ON_COMMAND(ID_CODE_NEWFOLDER, &CCodezBankDoc::OnCodeNewfolder)
   ON_COMMAND(ID_VIEW_UPONELEVEL, &CCodezBankDoc::OnViewUponelevel)
   ON_COMMAND(ID_CODE_NEWTOPMOSTFOLDER, &CCodezBankDoc::OnCodeNewtopmostfolder)
   ON_COMMAND(ID_CODE_NEWCODESNIPPET, &CCodezBankDoc::OnCodeNewcodesnippet)
   ON_COMMAND(ID_FILE_SEND_MAIL, OnFileSendMail)
   ON_UPDATE_COMMAND_UI(ID_FILE_SEND_MAIL, OnUpdateFileSendMail)
   ON_UPDATE_COMMAND_UI(ID_INDICATOR_SNIP_COUNT, OnUpdateSnipCount)
   ON_COMMAND(ID_EDIT_UNDO, &CCodezBankDoc::OnEditUndo)
   ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, &CCodezBankDoc::OnUpdateEditUndo)
   ON_COMMAND(ID_EDIT_REDO, &CCodezBankDoc::OnEditRedo)
   ON_UPDATE_COMMAND_UI(ID_EDIT_REDO, &CCodezBankDoc::OnUpdateEditRedo)
END_MESSAGE_MAP()

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
CCodezBankDoc::CCodezBankDoc()://:CUndo(100)
  m_bBeginSearch(false)
, m_bFoundMatch(false)
{
   EnableCompoundFile(TRUE);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
CCodezBankDoc::~CCodezBankDoc()
{
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
//CRichEditCntrItem* CCodezBankDoc::CreateClientItem(REOBJECT* preo) const
//{
//	return new CRichEditCntrItem(preo, const_cast<CCodezBankDoc*>(this));
//}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
BOOL CCodezBankDoc::OnNewDocument()
{
	if (!COleDocument::OnNewDocument())
		return FALSE;

	SetCheckpoint();

	return TRUE;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
	}
	else
	{
	}

   m_lstNodes.Serialize(ar);
}

#ifdef _DEBUG
///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankDoc::AssertValid() const
{
	COleDocument::AssertValid();
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankDoc::Dump(CDumpContext& dc) const
{
	COleDocument::Dump(dc);
}
#endif //_DEBUG

///////////////////////////////////////////////
/// Append '*' to the title if dec was
/// modified
///////////////////////////////////////////////
void CCodezBankDoc::OnUpdateMod(CCmdUI* pCmdUI)
{
   pCmdUI->SetText(CDocument::IsModified() ? "*" : "");
   pCmdUI->m_bContinueRouting = TRUE;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Document::CCodezBankDoc::DeleteContents()
{
   UpdateAllViews(NULL, hintClearDocument);
   EMPTY_PTR_LIST(m_lstNodes);
   COleDocument::DeleteContents();
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Document::CCodezBankDoc::OnCodeNewfolder()
{
   CCodeNode* pNode = new CCodeNode;
   SetModifiedFlag();
   UpdateAllViews(NULL, hintNewFolder, pNode);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Document::CCodezBankDoc::OnViewUponelevel()
{
   UpdateAllViews(NULL, hintUpOneLevel);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Document::CCodezBankDoc::OnCodeNewtopmostfolder()
{
   CCodeNode* pNode = new CCodeNode;
   SetModifiedFlag();
   UpdateAllViews(NULL, hintNewRootFolder, pNode);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Document::CCodezBankDoc::OnCodeNewcodesnippet()
{
   CCodeNode* pNode = new CCodeNode;
   pNode->m_nFolderType = nodeCode,
   SetModifiedFlag();
   UpdateAllViews(NULL, hintNewSnippet, pNode);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Document::CCodezBankDoc::DeleteNode(CCodeNode* ptr, bool bDeletePtr)
{
   SetCheckpoint();
   DeleteNodeRecursive(m_lstNodes, ptr, bDeletePtr);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Document::CCodezBankDoc::DeleteNodeRecursive(CCodeNodeList& list, 
                                                  CCodeNode* ptr, bool bDeletePtr)
{
   POSITION pos2 = NULL;
   for(POSITION pos = list.GetHeadPosition(); (pos2 = pos) != NULL; )
   {  
      CCodeNode* pNode = list.GetNext(pos);

      if(pNode == ptr)
      {
         list.RemoveAt(pos2);

         if(bDeletePtr)
            delete pNode;

         SetModifiedFlag();
         return;
      }

      if(pNode->m_lstChildren.GetCount() > 0)
         DeleteNodeRecursive(pNode->m_lstChildren, ptr, bDeletePtr);
   }   
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankDoc::FindString(CCodeNode* pFrom, LPCTSTR lpString, BOOL bDown, BOOL bCaseSensitve, BOOL bWholeWord)
{
   m_bFoundMatch = false;
   if(pFrom == NULL)
      m_bBeginSearch = true;
   else
      m_bBeginSearch = false;

   SearchNodeRecursive(m_lstNodes, pFrom, lpString, bDown, bCaseSensitve, bWholeWord);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankDoc::SearchNodeRecursive(CCodeNodeList& list, 
                                        CCodeNode* ptr, 
                                        LPCTSTR lpString, 
                                        BOOL bDown, 
                                        BOOL bCaseSensitve, 
                                        BOOL bWholeWord)
{
   if(m_bFoundMatch)
      return;

   if(bDown)
   {
      for(POSITION pos = list.GetHeadPosition(); pos != NULL; )
      {
         CCodeNode* pNode = list.GetNext(pos);

         if(Match(pNode, lpString, bCaseSensitve, bWholeWord))
         {
            m_bFoundMatch = true;
            return;
         }
   
         if(pNode->m_lstChildren.GetCount() > 0)
            SearchNodeRecursive(pNode->m_lstChildren, ptr, lpString, bDown, bCaseSensitve, bWholeWord);
      }
   }
   else
   {
      for(POSITION pos = list.GetTailPosition(); pos != NULL; )
      {
         CCodeNode* pNode = list.GetPrev(pos);

         if(Match(pNode, lpString, bCaseSensitve, bWholeWord))
         {
            m_bFoundMatch = true;
            return;
         }

         if(pNode->m_lstChildren.GetCount() > 0)
            SearchNodeRecursive(pNode->m_lstChildren, ptr, lpString, bDown, bCaseSensitve, bWholeWord);
      }
   }
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
bool CCodezBankDoc::Match(CCodeNode* ptr, LPCTSTR lpString, 
                          BOOL bCaseSensitve, BOOL bWholeWord)
{
   if(ptr->m_nFolderType == nodeFolder)
   {
      if(bCaseSensitve == FALSE && bWholeWord == TRUE)
      {
         if(ptr->m_strName.CompareNoCase(lpString) == 0)
         {
            UpdateAllViews(NULL, hintSelFoundTreeItem, ptr);
            return true;
         }
      }
      else if(bCaseSensitve == TRUE && bWholeWord == TRUE)
      {
         if(ptr->m_strName.Compare(lpString) == 0)
         {
            UpdateAllViews(NULL, hintSelFoundTreeItem, ptr);
            return true;
         }
      }
      else if(bCaseSensitve == FALSE && bWholeWord == FALSE)
      {
         CString strCompareTo = lpString;
         CString strThis = ptr->m_strName;
         strCompareTo.MakeLower();
         strThis.MakeLower();

         if(strThis.Find(strCompareTo, 0) > -1)
         {
            UpdateAllViews(NULL, hintSelFoundTreeItem, ptr);
            return true;
         }
      }
      else if(bCaseSensitve == TRUE && bWholeWord == FALSE)
      {
         CString strCompareTo = lpString;
         CString strThis = ptr->m_strName;
   
         if(strThis.Find(strCompareTo, 0) > -1)
         {
            UpdateAllViews(NULL, hintSelFoundTreeItem, ptr);
            return true;
         }
      }
   }
   else
   {
      if(bCaseSensitve == FALSE && bWholeWord == TRUE)
      {
         if(ptr->m_strName.CompareNoCase(lpString) == 0)
         {
            UpdateAllViews(NULL, hintSelFoundTreeItem, ptr);
            return true;
         }
      }
      else if(bCaseSensitve == TRUE && bWholeWord == TRUE)
      {
         if(ptr->m_strName.Compare(lpString) == 0)
         {
            UpdateAllViews(NULL, hintSelFoundTreeItem, ptr);
            return true;
         }
      }
      else if(bCaseSensitve == FALSE && bWholeWord == FALSE)
      {
         CString strCompareTo = lpString;
         CString strThis = ptr->m_strName;
         strCompareTo.MakeLower();
         strThis.MakeLower();

         if(strThis.Find(strCompareTo, 0) > -1)
         {
            UpdateAllViews(NULL, hintSelFoundTreeItem, ptr);
            return true;
         }
      }
      else if(bCaseSensitve == TRUE && bWholeWord == FALSE)
      {
         CString strCompareTo = lpString;
         CString strThis = ptr->m_strName;
   
         if(strThis.Find(strCompareTo, 0) > -1)
         {
            UpdateAllViews(NULL, hintSelFoundTreeItem, ptr);
            return true;
         }
      }
      if(bCaseSensitve == FALSE)
      {
         CString strThis = ptr->m_strCode;
         CString strFind = lpString;

         strThis.MakeLower();
         strFind.MakeLower();

         if(strThis.Find(strFind, 0) > -1)
         {
            ptr->m_strFound = lpString;
            ptr->m_bMatchCase = bCaseSensitve;
            ptr->m_bWholeWord = bWholeWord;
            UpdateAllViews(NULL, hintSelFoundTreeItem, ptr);
            UpdateAllViews(NULL, hintSelFoundCodeItem, ptr);
            return true;
         }
      }
      else if(bCaseSensitve == TRUE)
      {
         CString strThis = ptr->m_strCode;
         CString strFind = lpString;

         if(strThis.Find(strFind, 0) > -1)
         {
            ptr->m_strFound = lpString;
            ptr->m_bMatchCase = bCaseSensitve;
            ptr->m_bWholeWord = bWholeWord;
            UpdateAllViews(NULL, hintSelFoundTreeItem, ptr);
            UpdateAllViews(NULL, hintSelFoundCodeItem, ptr);
            return true;
         }
      }
   }

   return false;
}

///////////////////////////////////////////////
/// do not allow call to CDocument
///  because we dont care
///////////////////////////////////////////////
void CCodezBankDoc::SetModifiedFlag(BOOL bModified /*= TRUE*/)
{
   CDocument::SetModifiedFlag(bModified);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
INT_PTR CCodezBankDoc::CountSnippets(void)
{
   INT_PTR nCount = 0;
   CountSnippetsRecursive(m_lstNodes, nCount);
   return nCount;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankDoc::CountSnippetsRecursive(CCodeNodeList& list, INT_PTR& nCount)
{
   for(POSITION pos = list.GetHeadPosition(); pos != NULL; )
   {  
      CCodeNode* pNode = list.GetNext(pos);

      if(pNode->m_nFolderType == nodeCode)
         nCount++;

      if(pNode->m_lstChildren.GetCount() > 0)
         CountSnippetsRecursive(pNode->m_lstChildren, nCount);
   }
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankDoc::OnUpdateSnipCount(CCmdUI* pCmdUI)
{
   INT_PTR nCount = CountSnippets();
   Frame()->UpdateIndSnipCount(pCmdUI, nCount);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void CCodezBankDoc::SetCheckpoint(void)
{
//   CheckPoint();
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
BOOL Document::CCodezBankDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
   if(!COleDocument::OnOpenDocument(lpszPathName))
      return FALSE;

   //SetCheckpoint();

   return TRUE;
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Document::CCodezBankDoc::OnEditUndo()
{
//   Undo();
//   UpdateAllViews(NULL, hintReloadTree);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Document::CCodezBankDoc::OnUpdateEditUndo(CCmdUI *pCmdUI)
{
   pCmdUI->Enable(FALSE);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Document::CCodezBankDoc::OnEditRedo()
{
   //Redo();
   //UpdateAllViews(NULL, hintReloadTree);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
void Document::CCodezBankDoc::OnUpdateEditRedo(CCmdUI *pCmdUI)
{
   pCmdUI->Enable(FALSE);
}

///////////////////////////////////////////////
///
/// 
///////////////////////////////////////////////
BOOL Document::CCodezBankDoc::OnSaveDocument(LPCTSTR lpszPathName)
{
   //CFileProps propFile(lpszPathName, false);

   return COleDocument::OnSaveDocument(lpszPathName);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情第一区| 337p日本欧洲亚洲大胆色噜噜| 国产精品第四页| 懂色av一区二区三区免费看| 中文av字幕一区| aa级大片欧美| 亚洲最新视频在线播放| 欧美精品三级日韩久久| 九九视频精品免费| 亚洲一区二区三区在线播放| 欧美日韩国产综合一区二区| 免费高清视频精品| 日本一区二区电影| 在线视频国产一区| 激情综合色丁香一区二区| 欧美激情综合网| 欧美中文字幕一区| 精品一区二区综合| 亚洲欧洲日韩在线| 69堂国产成人免费视频| 国产成人在线观看免费网站| 亚洲狼人国产精品| 日韩一二三区不卡| av亚洲产国偷v产偷v自拍| 午夜日韩在线观看| 国产午夜精品在线观看| 欧洲国内综合视频| 国内精品久久久久影院薰衣草| 亚洲少妇屁股交4| 日韩欧美国产一区在线观看| 成人性生交大片免费看视频在线| 一区二区日韩av| 久久久久久**毛片大全| 在线观看一区日韩| 国产精品羞羞答答xxdd| 亚洲午夜久久久久中文字幕久| 欧美精品一区二区精品网| 色欧美乱欧美15图片| 精品一区二区三区久久久| 亚洲视频免费观看| 国产日韩视频一区二区三区| 欧美日韩久久久久久| av午夜一区麻豆| 国产在线精品免费av| 亚洲大片在线观看| 亚洲欧美自拍偷拍色图| 亚洲成在人线在线播放| 日本一区二区三区国色天香 | 成人欧美一区二区三区| 精品免费国产二区三区| 欧美揉bbbbb揉bbbbb| 91视频国产观看| 福利91精品一区二区三区| 日韩制服丝袜av| 亚洲中国最大av网站| 国产精品理论片在线观看| 国产亚洲婷婷免费| 精品少妇一区二区三区日产乱码 | 欧美激情综合网| 日韩一区二区三区四区五区六区| 不卡的av网站| 粉嫩一区二区三区在线看| 美女性感视频久久| 日本在线不卡视频一二三区| 亚洲综合色视频| 亚洲视频精选在线| 日韩理论片在线| 中文字幕字幕中文在线中不卡视频| 久久综合九色综合97婷婷 | 捆绑变态av一区二区三区| 香蕉加勒比综合久久| 亚洲资源在线观看| 一区二区三区四区高清精品免费观看| 国产人伦精品一区二区| 久久久久久久一区| 国产色91在线| 中文字幕乱码日本亚洲一区二区| 26uuu亚洲| 久久奇米777| 国产亚洲短视频| 中文字幕av一区二区三区免费看| 久久久精品国产免费观看同学| 欧美精品一区二区精品网| 国产亚洲自拍一区| 国产欧美日本一区视频| 欧美激情一区二区三区在线| 久久久99久久精品欧美| 中文字幕欧美日韩一区| 中文字幕一区二区三区视频| 亚洲欧美日韩国产一区二区三区| 国产精品护士白丝一区av| 中文字幕中文乱码欧美一区二区| 亚洲丝袜另类动漫二区| 亚洲精品成a人| 三级亚洲高清视频| 极品少妇一区二区| 成人a级免费电影| 91香蕉视频mp4| 欧美精品久久久久久久多人混战 | 日韩精品一二三四| 久久成人久久爱| 成人在线视频首页| 欧美性视频一区二区三区| 日韩一级片网址| 日本一区二区三区四区在线视频| 亚洲人成亚洲人成在线观看图片 | 中文字幕av资源一区| 亚洲欧美视频在线观看视频| 亚洲成人av电影| 国内国产精品久久| 在线欧美日韩国产| 欧美一区二区免费视频| 国产精品理论片在线观看| 亚洲高清中文字幕| 国产尤物一区二区| 在线看日本不卡| 精品国产1区二区| 一区二区三区久久| 国产在线播精品第三| 色噜噜久久综合| 精品国产污网站| 亚洲黄色尤物视频| 国产一区二区看久久| 欧美在线影院一区二区| 久久久亚洲精华液精华液精华液 | 久草精品在线观看| 欧洲视频一区二区| 国产精品天干天干在线综合| 亚洲国产精品久久不卡毛片| 高清成人在线观看| 中文字幕一区二区三区色视频| 亚洲国产另类av| 福利视频网站一区二区三区| 91精品国产综合久久精品图片| 日本一区二区成人在线| 青青草原综合久久大伊人精品优势| 成人av在线播放网站| 日韩精品一区二区三区在线 | www国产精品av| 亚洲成a人片综合在线| 成人动漫av在线| 欧美精品一区二区三区蜜桃视频 | 欧美激情综合网| 久久国产人妖系列| 欧美精品丝袜中出| 亚洲免费观看视频| 99久久久久久99| 国产视频一区不卡| 久久99精品国产麻豆婷婷洗澡| 欧美日韩亚洲国产综合| 亚洲人亚洲人成电影网站色| 国产+成+人+亚洲欧洲自线| 精品久久久久久久人人人人传媒| 亚洲成av人综合在线观看| 色综合天天在线| 亚洲欧美影音先锋| 成人av综合在线| 国产精品免费视频观看| 国产盗摄视频一区二区三区| 日韩精品一区二区三区三区免费| 午夜精品成人在线| 欧美日韩国产美女| 日日噜噜夜夜狠狠视频欧美人| 91国偷自产一区二区三区观看 | 欧美精品日日鲁夜夜添| 亚洲成人三级小说| 欧美三级在线播放| 亚洲一区二区精品久久av| 中文字幕不卡三区| 成人在线视频首页| 国产精品久久久久久久久快鸭 | 99视频在线观看一区三区| 中文一区一区三区高中清不卡| 国产成人日日夜夜| 国产精品麻豆一区二区 | 99精品视频在线观看免费| 亚洲欧洲韩国日本视频| 97久久超碰国产精品| 亚洲另类中文字| 在线观看不卡视频| 日本视频在线一区| 亚洲精品在线电影| 国产成人aaa| 亚洲色图在线看| 欧美体内she精高潮| 日本美女视频一区二区| 亚洲精品在线观看视频| youjizz国产精品| 一区二区三区四区蜜桃| 欧美日韩在线亚洲一区蜜芽| 五月天久久比比资源色| 精品国产伦一区二区三区观看体验 | 欧美日韩一二三区| 久久99精品久久久久婷婷| 国产色91在线| 欧美性生活影院| 国内久久精品视频| 亚洲六月丁香色婷婷综合久久 | 国产一区二区美女| 亚洲日本中文字幕区|