Exemple #1
0
void
OptimiseBoolTree (bool_tree_node * parse_tree, TermList * tl, int type)
{
  switch (type)
    {
    case 1:
      /* --- sorts for and of or-terms --- */
      PermeateNots (parse_tree);
      TF_Idempotent (parse_tree);
      CollapseTree (parse_tree);
      DiffTree (parse_tree);
      MarkOrTerms (parse_tree, tl);
      AndOrSort (parse_tree, tl);
      break;
    case 2:
      /* --- put into DNF --- */
      PermeateNots (parse_tree);
      TF_Idempotent (parse_tree);
      DNF_Distribute (parse_tree);
      CollapseTree (parse_tree);
      AndSortDNF (parse_tree, tl);
      DiffDNF (parse_tree);
      break;
    default:
      /* --- do nothing --- */
      break;
    }				/*switch */
}				/*OptimiseBoolTree */
Exemple #2
0
void CMultiSelTreeCtrl::OnItemExpanding(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	
	HTREEITEM parent=m_LastParent;

	while( 1 )
	{
		//		If expanding/collapsing node is a parent of selected items, 
		//		unselect all.
		//		No need to check pNMTreeView->action, since no items will 
		//		be selected under parent if expanding, and all must be 
		//		cleared while deleting
		//
		if(pNMTreeView->itemNew.hItem == parent)
		{
			UnselectAll();
			break;
		}
		
		if(parent == NULL || parent == TVI_ROOT)
			break;

		parent=GetParentItem(parent);
	}

	//		whenever we expand a folder, we have to call both p4 dirs 
	//		and p4 fstat for that subdirectory. ExpandTree is a 
	//		virtual function in depotview that does this.
	//
	if ( pNMTreeView->action == TVE_EXPAND )
		ExpandTree( pNMTreeView->itemNew.hItem );
	else if ( pNMTreeView->action == TVE_COLLAPSE )
		CollapseTree( pNMTreeView->itemNew.hItem );

	// wait at least 20 secs before autopolling for updates
	MainFrame()->WaitAWhileToPoll();

	*pResult = 0;
}
Exemple #3
0
static void
CollapseTree (bool_tree_node * tree)
{
  if (!tree)
    return;

  if ((BOOL_TAG (tree) == N_and) || (BOOL_TAG (tree) == N_or))
    {
      bool_tree_node *child = BOOL_CHILD (tree);
      while (child)
	{
	  while (BOOL_TAG (child) == BOOL_TAG (tree))
	    {
	      ReplaceWithChildren (child);
	    }
	  CollapseTree (child);
	  child = BOOL_SIBLING (child);
	}
    }

  /* assume "not"s permeated */
  return;
}