Exemple #1
0
//-----------------------------------------------------------------------------//
// 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 ();
}
Exemple #3
0
   // 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);
   };
 }; 
Exemple #4
0
//-----------------------------------------------------------------------------//
// 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);
}