Commit 4c4fa2c5 authored by Aurélien's avatar Aurélien
Browse files

debut affichage menu avec des items

parent 8440be68
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
,LAPTOP-GJS36RRU/aurel,LAPTOP-GJS36RRU,02.06.2022 21:50,file:///C:/Users/aurel/AppData/Roaming/LibreOffice/4;
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ LevelsPlanarTreeToBinaryTree = Enum("Levels", [
    ("Lvl3", Tree(BinaryNode(BinaryNode(Leaf(), BinaryNode(Leaf(), Leaf())), BinaryNode(Leaf(), Leaf()))))])

LevelsBinaryTreeToPlanarTree = Enum("Levels", [
    ("Lvl1", Tree(BinaryNode(Leaf(), BinaryNode(Leaf(), BinaryNode(Leaf(), Leaf()))))),
    ("Lvl1", Tree(BinaryNode(BinaryNode(Leaf(), Leaf()), BinaryNode(Leaf(), BinaryNode(Leaf(), Leaf()))))),
    ("Lvl2", Tree(BinaryNode(BinaryNode(Leaf(), Leaf()), BinaryNode(Leaf(), Leaf())))),
    ("Lvl3", Tree(BinaryNode(BinaryNode(Leaf(), BinaryNode(Leaf(), Leaf())), BinaryNode(Leaf(), Leaf()))))])

+6 −3
Original line number Diff line number Diff line
@@ -111,9 +111,9 @@ class Menu:
    def displayGames(self):
        self.removeCentralLayout()
        self.gamesWidget = QWidget()
        self.gamesLayout = QGridLayout()
        self.gamesLayout = QHBoxLayout()

        binary_tree_widget = BinaryTreeWidget()
        """binary_tree_widget = BinaryTreeWidget()
        self.gamesLayout.addWidget(binary_tree_widget, 0, 2)
        arrowBinaryTreeToPlanarTree = ArrowWidget(10, 10, 10, GameEnum.BINARY_TREE_TO_PLANAR_TREE)
        self.gameButtons.append(arrowBinaryTreeToPlanarTree)
@@ -122,7 +122,10 @@ class Menu:
        planar_tree_widget = PlanarTreeWidget()
        self.gamesLayout.addWidget(planar_tree_widget, 2, 0)
        dyck_word_widget = DyckWordWidget()
        self.gamesLayout.addWidget(dyck_word_widget, 2, 4)
        self.gamesLayout.addWidget(dyck_word_widget, 2, 4)"""
        arrowBinaryTreeToPlanarTree = ArrowWidget(10, 10, 10, GameEnum.BINARY_TREE_TO_PLANAR_TREE)
        self.gameButtons.append(arrowBinaryTreeToPlanarTree)
        self.gamesLayout.addWidget(arrowBinaryTreeToPlanarTree)

        self.gamesWidget.setLayout(self.gamesLayout)
        self.centralLayout.addWidget(self.gamesWidget)
+65 −10
Original line number Diff line number Diff line
from PyQt5.QtGui import QFont
from PyQt5.QtGui import QFont, QPen, QColor
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt


from model.GameEnum import GameEnum
from model.node import Leaf, BinaryNode, binaryTreeToPlanarTree
@@ -38,13 +40,13 @@ class ArrowWidget(QWidget):

    def createArrowView(self, xSize: float, ySize: float, angle: float):
        self.treeScene = QGraphicsScene()
        self.arrowView = ArrowView(self.treeScene, xSize=xSize, ySize=ySize, angle=angle)
        self.arrowView = MenuView(self.treeScene, xSize=xSize, ySize=ySize, angle=angle)

    def mousePressEvent(self, QMouseEvent):
        self.clicked.trigger()


class ArrowView(QGraphicsView):
class MenuView(QGraphicsView):
    """
    class which contains a level of a game and which is used to draw the BinaryTree of the level
    """
@@ -55,17 +57,70 @@ class ArrowView(QGraphicsView):
        self.ySize = ySize
        self.angle = angle

        self.arrowItemsGroup = QGraphicsItemGroup()
        self.drawArrow()
        self.scene().addItem(self.arrowItemsGroup)
        self.itemsGroup = QGraphicsItemGroup()
        self.scene().addItem(self.itemsGroup)
        self.drawGames()

    def drawGames(self):
        self.scene().removeItem(self.itemsGroup)
        self.itemsGroup = QGraphicsItemGroup()
        h = self.height()
        w = self.width()
        circleSize = 0.5 * min(h, w)
        self.drawCircles(w, h, circleSize)
        self.drawTree(circleSize, w, h)

        self.scene().addItem(self.itemsGroup)
        self.scene().setSceneRect(self.itemsGroup.sceneBoundingRect())

    def drawCircles(self, w: float, h: float, circleSize: float):
        circle1 = QGraphicsEllipseItem(0.5 * w - circleSize, 0.25 * h - circleSize, circleSize, circleSize)
        circle2 = QGraphicsEllipseItem(0.25 * w - circleSize, 0.65 * h - circleSize, circleSize, circleSize)
        circle3 = QGraphicsEllipseItem(0.75 * w - circleSize, 0.65 * h - circleSize, circleSize, circleSize)
        self.itemsGroup.addToGroup(circle1)
        self.itemsGroup.addToGroup(circle2)
        self.itemsGroup.addToGroup(circle3)

    def drawTree(self, circleSize: float, w: float, h: float):
        nodePen = QPen(QColor(21, 67, 96))
        branchPen = QPen(QColor(21, 67, 96))
        nodeColor = QColor(169, 204, 227)
        lineWidth = 0.01 * circleSize
        nodeWidth = 0.12 * circleSize
        branchPen.setWidth(lineWidth)
        branchPen.setCapStyle(Qt.RoundCap)
        nodePen.setWidth(0.1 * nodeWidth)

        leftLine = QGraphicsLineItem()
        rightLine = QGraphicsLineItem()
        x1 = 0.5 * w - circleSize / 2
        y1 = 0.1 * h - 0.5 * circleSize
        x2 = x1 - 0.25 * circleSize
        y2 = y1 + 0.3 * circleSize
        x3 = x1 + 0.25 * circleSize
        y3 = y2
        leftLine.setLine(x1, y1, x2, y2)
        leftLine.setPen(branchPen)
        rightLine.setLine(x1, y1, x3, y3)
        rightLine.setPen(branchPen)
        self.itemsGroup.addToGroup(leftLine)
        self.itemsGroup.addToGroup(rightLine)
        node = QGraphicsEllipseItem()
        node.setRect(x1 - nodeWidth / 2, y1 - nodeWidth / 2, nodeWidth, nodeWidth)
        node.setPen(nodePen)
        node.setBrush(nodeColor)
        self.itemsGroup.addToGroup(node)

        """leaf = QGraphicsRectItem()
        leaf.setRect(tree.x * widthRatio - nodeWidth / 2, tree.y * heightRatio, nodeWidth, nodeWidth)
        leaf.setPen(nodePen)
        self.itemsGroup.addToGroup(leaf)"""


    def drawArrow(self):
        rectangle = QGraphicsRectItem(0, 0, 20, 100)
        self.arrowItemsGroup.addToGroup(rectangle)

    def resizeEvent(self, e):
        e.accept()
        self.drawArrow()
        self.drawGames()


class DyckWordWidget(QWidget):
+0 −2
Original line number Diff line number Diff line
import math

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt, QObject, pyqtSignal