//-----------------------------------------------------------------------------// // pCurNode Tree 에서 nId 값의 Tree를 찾는다. //-----------------------------------------------------------------------------// C3dNode* FindTree( C3dNode *pCurNode, int nId ) { if( !pCurNode ) return NULL; if( pCurNode->GetId() == nId ) return pCurNode; C3dNode *pNode = NULL; pNode = FindTree( pCurNode->m_pNext, nId ); if( pNode ) return pNode; pNode = FindTree( pCurNode->m_pChild, nId ); if( pNode ) return pNode; return NULL; }
void CSpiderTaskTree::ShowContextMenu() { HTREEITEM hItem = GetSelectedItem (); if (hItem == NULL) return; int iItem = FindTree (hItem); if (iItem == -1) return; CMenu menu; menu.LoadMenu (IDM_SPIDER_TREE); CMenu *pPopup = menu.GetSubMenu (0); CString str = LS (L_DONTDOWNLOADANDDEL); str += "\tDel"; menu.ModifyMenu (ID_DONTDOWNLOADANDDEL, MF_BYCOMMAND|MF_STRING, ID_DONTDOWNLOADANDDEL, str); fsDLWebPage *wp = m_vConfs [iItem].wptree->GetData (); if (wp->dld == NULL || wp->dld->pMgr->IsDone ()) pPopup->EnableMenuItem (ID_DONTDOWNLOADANDDEL, MF_BYCOMMAND | MF_GRAYED); ClientToScreen (&m_rbPt); pPopup->TrackPopupMenu (TPM_RIGHTBUTTON | TPM_TOPALIGN | TPM_LEFTALIGN, m_rbPt.x, m_rbPt.y, this); menu.DestroyMenu (); }
// Return a root with variable v. // If root does not exist, create it. void ForceTree(const Variable & v,SFSGNode *& result) { if(!FindTree(v,result)) { result = new SFSGNode(v); pair<const Variable,SFSGNode *> pr(v,result); d_tree_map.insert(pr); }; };
//-----------------------------------------------------------------------------// // Tree 삭제 (메모리는 삭제하지않는다.) //-----------------------------------------------------------------------------// BOOL DelTree( C3dNode *pCurTree, int nId ) { C3dNode *pNode = FindTree( pCurTree, nId ); if( !pNode ) return FALSE; C3dNode *pPrevNode = pNode->m_pPrev; C3dNode *pNextNode = pNode->m_pNext; C3dNode *pParentNode = pNode->m_pParent; if( pPrevNode ) pPrevNode->m_pNext = pNextNode; if( pNextNode ) pNextNode->m_pPrev = pPrevNode; if( !pPrevNode ) // root 일때 { if( pParentNode ) { pParentNode->m_pChild = pNextNode; if( pNextNode ) pNextNode->m_pPrev = NULL; } } return TRUE; }
void CSpiderTaskTree::OnFileAdded(fsDLWebPageTree root, fsDLWebPageTree child) { int iIndex = FindTree (root); if (iIndex == -1) return; AddTree (child, m_vConfs [iIndex].hItem); Expand (m_vConfs [iIndex].hItem, TVE_EXPAND); }
void CSpiderTaskTree::OnWebPageWillBeDeleted(fsDLWebPage *wp) { if (m_wpd == NULL) return; fsDLWebPageTree wptree = m_wpd->FindWebPageTree (wp->dld); if (wptree == NULL) return; int iItem = FindTree (wptree); if (iItem == -1) return; DeleteItem (m_vConfs [iItem].hItem); m_vConfs.del (iItem); }
void CSpiderTaskTree::OnDontdownloadanddel() { HTREEITEM hItem = GetSelectedItem (); if (hItem == NULL) return; if (_App.Deleted_ConfirmDeletion ()) if (IDNO == MessageBox (LS (L_AREYOUSURE), LS (L_CONFIRMATION), MB_YESNO|MB_ICONQUESTION)) { SetFocus (); return; } hItem = GetSelectedItem (); SetFocus (); int iItem = FindTree (hItem); if (iItem == -1) return; _pwndDownloads->DeleteDownload (m_vConfs [iItem].wptree->GetData ()->dld, TRUE); }