|
45 | 45 | from . import qt4_circular_render as crender |
46 | 46 | from . import qt4_rect_render as rrender |
47 | 47 | from .main import _leaf, NodeStyle, _FaceAreas, tracktime, TreeStyle |
48 | | -from ..treeview.faces import CircleFace |
| 48 | +from ..treeview.faces import CircleFace, RectFace |
49 | 49 | from .node_gui_actions import _NodeActions as _ActionDelegator |
50 | 50 | from .qt4_face_render import update_node_faces, _FaceGroupItem, _TextFaceItem |
51 | 51 | from .templates import _DEFAULT_STYLE, apply_template |
@@ -609,6 +609,25 @@ def add_y_scale(img, mainRect, parent, root): |
609 | 609 | alter_internal_nodes(root) |
610 | 610 |
|
611 | 611 |
|
| 612 | +def alter_internal_nodes(t): |
| 613 | + """ |
| 614 | + The function changes the internal nodes of the tree to zero size, to make sure that the y scale is correct. |
| 615 | + Making sure not to lose information the internal nodes are added as half opaque faces on top of the tree. |
| 616 | + :param t: root node |
| 617 | + :return: |
| 618 | + """ |
| 619 | + for node in t.traverse(): |
| 620 | + if not node.is_leaf(): |
| 621 | + if node.img_style['shape'] == 'square': |
| 622 | + C = RectFace(width=node.img_style['size'], height=node.img_style['size'], |
| 623 | + fgcolor=node.img_style['fgcolor'], bgcolor=node.img_style['fgcolor']) |
| 624 | + else: |
| 625 | + C = CircleFace(radius=node.img_style['size'], color=node.img_style['fgcolor'], style="sphere") |
| 626 | + C.opacity = 0.6 |
| 627 | + node.add_face(C, 0, position="float-behind") |
| 628 | + node.img_style['size'] = 0 |
| 629 | + |
| 630 | + |
612 | 631 | def rotate_inverted_faces(n2i, n2f, img): |
613 | 632 | for node, faceblock in six.iteritems(n2f): |
614 | 633 | item = n2i[node] |
|
0 commit comments