def updateSessionForPrunedGraftedTree( session, updatedNextBackValues, prunedNodeRow ): treeState = session.TreeViewer.treeState[ session.TreeViewer.treeType ][ session.TreeViewer.treeId ] leaveLoop = False for index in range( len( treeState.columns ) ): if leaveLoop: break column = treeState.columns[ index ] for ( collapsedNodeId, collapsedNodeData ) in column.collapsedNodeStorage.items(): if( ( collapsedNodeId == prunedNodeRow.id ) or ( util.isDescendant( collapsedNodeData, prunedNodeRow ) ) ): del column.collapsedNodeStorage[ collapsedNodeId ] if( ( index < ( len( treeState.columns ) - 1 ) ) and ( collapsedNodeId == treeState.columns[ index + 1 ].rootNodeId ) ): while( ( len( treeState.columns ) - 1 ) > index ): treeState.columns.pop() leaveLoop = True else: collapsedNodeData[ 'next' ] = updatedNextBackValues[ collapsedNodeId ].next collapsedNodeData[ 'back' ] = updatedNextBackValues[ collapsedNodeId ].back
def determineCollapsedNodes(tipsToCollapse, keepVisibleNodeIds, renderInfo, collapsedNodeInfo): for id in reversed(renderInfo.collapseOrder.ids): nodeInfo = renderInfo.nodeInfo[id] if (id not in keepVisibleNodeIds): toCollapse = True for colNode in collapsedNodeInfo: if (colNode['nodeId'] == id): toCollapse = False break if (util.isAncestor( Storage(next=colNode['next'], back=colNode['back']), Storage(next=nodeInfo['next'], back=nodeInfo['back']))): toCollapse = False break if (toCollapse): tipsAlreadyCollapsedByDescendants = 0 for colNode in collapsedNodeInfo: if (util.isDescendant( Storage(next=colNode['next'], back=colNode['back']), Storage(next=nodeInfo['next'], back=nodeInfo['back']))): tipsAlreadyCollapsedByDescendants += colNode[ 'descendantTipCount'] collapsedNodeInfo.remove(colNode) tipsToCollapse = tipsToCollapse - nodeInfo[ 'descendantTipCount'] + tipsAlreadyCollapsedByDescendants collapsedNodeInfo.append(nodeInfo) if (tipsAlreadyCollapsedByDescendants == 0): tipsToCollapse += 1 if (tipsToCollapse <= 0): break
def determineCollapsedNodes( tipsToCollapse, keepVisibleNodeIds, renderInfo, collapsedNodeInfo ): for id in reversed( renderInfo.collapseOrder.ids ): nodeInfo = renderInfo.nodeInfo[id] if( id not in keepVisibleNodeIds ): toCollapse = True for colNode in collapsedNodeInfo: if( colNode['nodeId'] == id ): toCollapse = False break if( util.isAncestor( Storage( next = colNode['next'], back = colNode['back'] ), Storage( next = nodeInfo['next'], back = nodeInfo['back'] ) ) ): toCollapse = False break if( toCollapse ): tipsAlreadyCollapsedByDescendants = 0 for colNode in collapsedNodeInfo: if( util.isDescendant( Storage( next = colNode['next'], back = colNode['back'] ), Storage( next = nodeInfo['next'], back = nodeInfo['back'] ) ) ): tipsAlreadyCollapsedByDescendants += colNode['descendantTipCount'] collapsedNodeInfo.remove( colNode ) tipsToCollapse = tipsToCollapse - nodeInfo['descendantTipCount'] + tipsAlreadyCollapsedByDescendants collapsedNodeInfo.append( nodeInfo ) if( tipsAlreadyCollapsedByDescendants == 0 ): tipsToCollapse += 1 if( tipsToCollapse <= 0 ): break;
def determineCollapsedNodes(session, renderInfo, tipsToCollapse, columnInfo): formerlyCollapsedNodeStorage = session.TreeViewer.treeState[ session.TreeViewer.treeType][ session.TreeViewer.treeId].formerlyCollapsedNodeStorage nodesToCollapseStorage = Storage() for id in reversed(renderInfo.collapseOrder.ids): nodeInfo = renderInfo.nodeInfo[id] if (id not in columnInfo.keepVisibleNodeStorage): toCollapse = True combined = dict(columnInfo.collapsedNodeStorage.items() + nodesToCollapseStorage.items()) for (nodeId, collapsedNodeData) in combined.items(): if (nodeId == id): toCollapse = False break if (util.isAncestor(collapsedNodeData, nodeInfo)): toCollapse = False break if (toCollapse): tipsAlreadyCollapsedByDescendants = 0 for (nodeId, collapsedNodeData ) in columnInfo.collapsedNodeStorage.items(): if (util.isDescendant( Storage(next=collapsedNodeData['next'], back=collapsedNodeData['back']), Storage(next=nodeInfo['next'], back=nodeInfo['back']))): tipsAlreadyCollapsedByDescendants += collapsedNodeData[ 'descendantTipCount'] if nodeId not in formerlyCollapsedNodeStorage: formerlyCollapsedNodeStorage[ nodeId] = columnInfo.collapsedNodeStorage[ nodeId] del columnInfo.collapsedNodeStorage[nodeId] tipsToCollapse = tipsToCollapse - nodeInfo[ 'descendantTipCount'] + tipsAlreadyCollapsedByDescendants for (nodeId, collapsedNodeData) in nodesToCollapseStorage.items(): if (util.isDescendant( Storage(next=collapsedNodeData['next'], back=collapsedNodeData['back']), Storage(next=nodeInfo['next'], back=nodeInfo['back']))): del nodesToCollapseStorage[nodeId] nodesToCollapseStorage[id] = nodeInfo if (tipsAlreadyCollapsedByDescendants == 0): tipsToCollapse += 1 if (tipsToCollapse <= 0): break return nodesToCollapseStorage
def determineCollapsedNodes( session, renderInfo, tipsToCollapse, columnInfo ): formerlyCollapsedNodeStorage = session.TreeViewer.treeState[ session.TreeViewer.treeType ][ session.TreeViewer.treeId ].formerlyCollapsedNodeStorage nodesToCollapseStorage = Storage() for id in reversed( renderInfo.collapseOrder.ids ): nodeInfo = renderInfo.nodeInfo[id] if( id not in columnInfo.keepVisibleNodeStorage ): toCollapse = True combined = dict( columnInfo.collapsedNodeStorage.items() + nodesToCollapseStorage.items() ) for ( nodeId, collapsedNodeData ) in combined.items(): if( nodeId == id ): toCollapse = False break if( util.isAncestor( collapsedNodeData, nodeInfo ) ): toCollapse = False break if( toCollapse ): tipsAlreadyCollapsedByDescendants = 0 for ( nodeId, collapsedNodeData ) in columnInfo.collapsedNodeStorage.items(): if( util.isDescendant( Storage( next = collapsedNodeData['next'], back = collapsedNodeData['back'] ), Storage( next = nodeInfo['next'], back = nodeInfo['back'] ) ) ): tipsAlreadyCollapsedByDescendants += collapsedNodeData['descendantTipCount'] if nodeId not in formerlyCollapsedNodeStorage: formerlyCollapsedNodeStorage[ nodeId ] = columnInfo.collapsedNodeStorage[ nodeId ] del columnInfo.collapsedNodeStorage[ nodeId ] tipsToCollapse = tipsToCollapse - nodeInfo['descendantTipCount'] + tipsAlreadyCollapsedByDescendants for ( nodeId, collapsedNodeData ) in nodesToCollapseStorage.items(): if( util.isDescendant( Storage( next = collapsedNodeData['next'], back = collapsedNodeData['back'] ), Storage( next = nodeInfo['next'], back = nodeInfo['back'] ) ) ): del nodesToCollapseStorage[ nodeId ] nodesToCollapseStorage[ id ] = nodeInfo if( tipsAlreadyCollapsedByDescendants == 0 ): tipsToCollapse += 1 if( tipsToCollapse <= 0 ): break; return nodesToCollapseStorage