'Add a single edge to the ChartView:
- Call analyze_edge to recalculate display parameters
- Find an available level
- Call _draw_edge'

def _add_edge(self, edge, minlvl=0):

    if isinstance(edge, LeafEdge):
        return
    if (edge in self._edgetags):
        return
    self._analyze_edge(edge)
    self._grow()
    if (not self._compact):
        self._edgelevels.append([edge])
        lvl = (len(self._edgelevels) - 1)
        self._draw_edge(edge, lvl)
        self._resize()
        return
    lvl = 0
    while True:
        while (lvl >= len(self._edgelevels)):
            self._edgelevels.append([])
            self._resize()
        if ((lvl >= minlvl) and (not self._edge_conflict(edge, lvl))):
            self._edgelevels[lvl].append(edge)
            break
        lvl += 1
    self._draw_edge(edge, lvl)
