| 82 | |
| 83 | |
| 84 | class TreeNode: |
| 85 | |
| 86 | dy = 0 |
| 87 | |
| 88 | def __init__(self, canvas, parent, item): |
| 89 | self.canvas = canvas |
| 90 | self.parent = parent |
| 91 | self.item = item |
| 92 | self.state = 'collapsed' |
| 93 | self.selected = False |
| 94 | self.children = [] |
| 95 | self.x = self.y = None |
| 96 | self.iconimages = {} # cache of PhotoImage instances for icons |
| 97 | |
| 98 | def destroy(self): |
| 99 | for c in self.children[:]: |
| 100 | self.children.remove(c) |
| 101 | c.destroy() |
| 102 | self.parent = None |
| 103 | |
| 104 | def geticonimage(self, name): |
| 105 | try: |
| 106 | return self.iconimages[name] |
| 107 | except KeyError: |
| 108 | pass |
| 109 | file, ext = os.path.splitext(name) |
| 110 | ext = ext or ".gif" |
| 111 | fullname = os.path.join(ICONDIR, file + ext) |
| 112 | image = PhotoImage(master=self.canvas, file=fullname) |
| 113 | self.iconimages[name] = image |
| 114 | return image |
| 115 | |
| 116 | def select(self, event=None): |
| 117 | if self.selected: |
| 118 | return |
| 119 | self.deselectall() |
| 120 | self.selected = True |
| 121 | self.canvas.delete(self.image_id) |
| 122 | self.drawicon() |
| 123 | self.drawtext() |
| 124 | |
| 125 | def deselect(self, event=None): |
| 126 | if not self.selected: |
| 127 | return |
| 128 | self.selected = False |
| 129 | self.canvas.delete(self.image_id) |
| 130 | self.drawicon() |
| 131 | self.drawtext() |
| 132 | |
| 133 | def deselectall(self): |
| 134 | if self.parent: |
| 135 | self.parent.deselectall() |
| 136 | else: |
| 137 | self.deselecttree() |
| 138 | |
| 139 | def deselecttree(self): |
| 140 | if self.selected: |
| 141 | self.deselect() |
no outgoing calls
no test coverage detected
searching dependent graphs…