Esempio n. 1
0
    def __init__(self, parent=None, numStages=1):
        QDialog.__init__(self, parent)

        self.threadRouter = ThreadRouter(self)
        self.currentStep = 0
        self.progress = None

        l = QVBoxLayout()
        self.setLayout(l)

        self.overallProgress = QProgressBar()
        self.overallProgress.setRange(0, numStages)
        self.overallProgress.setFormat("step %v of " + str(numStages))

        self.currentStepProgress = QProgressBar()
        self.currentStepProgress.setRange(0, 100)
        self.currentStepProgress.setFormat("%p %")

        self.overallLabel = QLabel("Overall progress")
        self.currentStepLabel = QLabel("Current step")

        l.addWidget(self.overallLabel)
        l.addWidget(self.overallProgress)
        l.addWidget(self.currentStepLabel)
        l.addWidget(self.currentStepProgress)
        l.maximumSize()

        self.update()
Esempio n. 2
0
    def __init__(self, parent=None, numStages=1):
        QDialog.__init__(self, parent)

        self.threadRouter = ThreadRouter(self)
        self.currentStep = 0
        self.progress = None

        l = QVBoxLayout()
        self.setLayout(l)

        self.overallProgress = QProgressBar()
        self.overallProgress.setRange(0, numStages)
        self.overallProgress.setFormat("step %v of "+str(numStages))

        self.currentStepProgress = QProgressBar()
        self.currentStepProgress.setRange(0, 100)
        self.currentStepProgress.setFormat("%p %")

        self.overallLabel = QLabel("Overall progress")
        self.currentStepLabel = QLabel("Current step")

        l.addWidget(self.overallLabel)
        l.addWidget(self.overallProgress)
        l.addWidget(self.currentStepLabel)
        l.addWidget(self.currentStepProgress)
        l.maximumSize()

        self.update()
Esempio n. 3
0
 def maximumSize(self):
     """Reimplemented from `QBoxLayout.maximumSize`."""
     msize = QVBoxLayout.maximumSize(self)
     # Allow the contents to grow horizontally (expand within the
     # containing scroll area - joining the tab buttons to the
     # right edge), but have a suitable maximum height (displaying an
     # empty area on the bottom if the contents are smaller then the
     # viewport).
     msize.setWidth(QWIDGETSIZE_MAX)
     return msize
Esempio n. 4
0
class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setWindowTitle("Map of the tree")

        self.main_widget = QWidget()
        self.appBox = QVBoxLayout()
        self.appBox.maximumSize()
        self.main_widget.setLayout(self.appBox)

        self.page = QWidget()
        self.page.setObjectName(u"page")
        self.map = MapView(self.page)
        self.appBox.addWidget(self.map)

        self._scene = QGraphicsScene()
        self.map.setScene(self._scene)
        self.map.setRenderHint(QPainter.Antialiasing)

        self.setCentralWidget(self.main_widget)

    def _get_width(self, height: int) -> int:
        return (2**(height - 1)) - 1

    def _draw_node(self, node: Node, x: float, y: float):
        """
        Drawing the Node on the map.
        """
        text_item = QGraphicsSimpleTextItem()

        font = text_item.font()
        font.setPointSize(font.pointSize() - 2)
        font.setPixelSize(self._font_size)

        text_item.setText(str(node.value()))
        text_item.setPos(x, y)
        text_item.setFont(font)

        self._scene.addItem(text_item)

    def _draw_line(self, x1: float, y1: float, x2: float, y2: float):
        """
        Drawing line from (x1, y1) point to (x2, y2) point.
        """
        self._scene.addLine(x1, y1, x2, y2)

    def draw_tree(self, tree, font_size=20):
        """
        Drawing tree.
        """
        self._font_size = font_size
        height = tree.height()
        width = self._get_width(height) * 2
        top = tree.top()
        if top == None:
            return
        distance = 75
        start = y = 0
        x = -width * 2
        deep = top.deep()
        sons = [top]
        while (sons != []) and (Node in [type(x) for x in sons]):
            son = sons.pop(0)
            if type(son) == int:
                sons += [son + 1, son + 1]
                if son != deep:
                    deep = son
                    width /= 2
                    start -= width
                    x = start
                    y += 1
                    continue
                else:
                    x += width * 2
            else:
                if son.deep() != deep:
                    deep = son.deep()
                    width /= 2
                    start -= width
                    x = start
                    y += 1
                    son.set_x(x * distance)
                    son.set_y(y * distance)
                    self._draw_node(son, x * distance, y * distance)
                    if son.parent() != None:
                        self._draw_line(son.x(), son.y(),
                                        son.parent().x(),
                                        son.parent().y())
                else:
                    x += width * 2
                    son.set_x(x * distance)
                    son.set_y(y * distance)
                    self._draw_node(son, x * distance, y * distance)
                    if son.parent() != None:
                        self._draw_line(son.x(), son.y(),
                                        son.parent().x(),
                                        son.parent().y())
                if son.left_son() == None:
                    sons.append(deep + 1)
                else:
                    sons.append(son.left_son())
                if son.right_son() == None:
                    sons.append(deep + 1)
                else:
                    sons.append(son.right_son())