Loading view/gameButton.py +0 −5 Original line number Diff line number Diff line Loading @@ -21,11 +21,6 @@ class GameButton(QWidget): self.layout.addWidget(label, alignment=Qt.AlignCenter) self.setLayout(self.layout) def test(self): palette = QPalette() palette.setColor(self.backgroundRole(), QColor(215, 0, 255)) self.setPalette(palette) def mousePressEvent(self, QMouseEvent): self.clicked.trigger() view/menu.py +21 −1 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ from math import sqrt from PyQt5.QtWidgets import * from model.GameEnum import nbGames, GameEnum from view.gameButton import GameButton from view.menuWidget import BinaryTreeWidget, DyckWordWidget, PlanarTreeWidget, ArrowWidget class MyWindow(QMainWindow): Loading Loading @@ -77,7 +78,7 @@ class Menu: # function to put the central widget in the menu def displayGames(self): """def displayGames(self): self.removeCentralLayout() self.gamesWidget = QWidget() self.gamesLayout = QGridLayout() Loading @@ -104,6 +105,25 @@ class Menu: else: cptColumn += 1 self.gamesWidget.setLayout(self.gamesLayout) self.centralLayout.addWidget(self.gamesWidget)""" def displayGames(self): self.removeCentralLayout() self.gamesWidget = QWidget() self.gamesLayout = QGridLayout() 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) self.gamesLayout.addWidget(arrowBinaryTreeToPlanarTree, 1, 1) 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.gamesWidget.setLayout(self.gamesLayout) self.centralLayout.addWidget(self.gamesWidget) Loading view/menuWidget.py 0 → 100644 +135 −0 Original line number Diff line number Diff line from PyQt5.QtGui import QFont from PyQt5.QtWidgets import * from model.GameEnum import GameEnum from model.node import Leaf, BinaryNode, binaryTreeToPlanarTree from model.tree import Tree from view.treeView import TreeView def get_model_tree(): return Tree( BinaryNode( BinaryNode( Leaf(), Leaf() ), BinaryNode( Leaf(), BinaryNode( Leaf(), Leaf() ) ) )) class ArrowWidget(QWidget): def __init__(self, xSize: float, ySize: float, angle: float, game: GameEnum): super(QWidget, self).__init__() self.game = game self.clicked = QAction() self.layout = QHBoxLayout() self.createArrowView(xSize, ySize, angle) self.layout.addWidget(self.arrowView) self.setLayout(self.layout) def createArrowView(self, xSize: float, ySize: float, angle: float): self.treeScene = QGraphicsScene() self.arrowView = ArrowView(self.treeScene, xSize=xSize, ySize=ySize, angle=angle) def mousePressEvent(self, QMouseEvent): self.clicked.trigger() class ArrowView(QGraphicsView): """ class which contains a level of a game and which is used to draw the BinaryTree of the level """ def __init__(self, *args, xSize: float, ySize: float, angle: float, **kwargs): super(QGraphicsView, self).__init__(*args, **kwargs) self.xSize = xSize self.ySize = ySize self.angle = angle self.arrowItemsGroup = QGraphicsItemGroup() self.drawArrow() self.scene().addItem(self.arrowItemsGroup) def drawArrow(self): rectangle = QGraphicsRectItem(0, 0, 20, 100) self.arrowItemsGroup.addToGroup(rectangle) def resizeEvent(self, e): e.accept() self.drawArrow() class DyckWordWidget(QWidget): def __init__(self): super(QWidget, self).__init__() self.layout = QHBoxLayout() self.createDyckWordGroupBox() self.layout.addWidget(self.dyckWordGroupBox) self.setLayout(self.layout) def createDyckWordGroupBox(self): self.dyckWordGroupBox = QGroupBox() self.globalDyckWordLayout = QVBoxLayout() self.dyckWordLayout = QHBoxLayout() self.globalDyckWordLayout.addLayout(self.dyckWordLayout, 1) self.dyckWordGroupBox.setLayout(self.globalDyckWordLayout) word = get_model_tree().dyckWord newWord = "" for i in range(len(word)): newWord += word[i] if i != len(word) - 1: newWord += " " label = QLabel(newWord) label.setFont(QFont("Arial", 25)) self.dyckWordLayout.addStretch(1) self.dyckWordLayout.addWidget(label) self.dyckWordLayout.addStretch(1) class BinaryTreeWidget(QWidget): def __init__(self): super(QWidget, self).__init__() self.layout = QHBoxLayout() self.createTreeView() self.layout.addWidget(self.treeView) self.setLayout(self.layout) def createTreeView(self): tree = get_model_tree() self.treeScene = QGraphicsScene() self.treeView = TreeView(self.treeScene, tree=tree) self.treeView.drawTree() class PlanarTreeWidget(QWidget): def __init__(self): super(QWidget, self).__init__() self.layout = QHBoxLayout() self.createTreeView() self.layout.addWidget(self.treeView) self.setLayout(self.layout) def createTreeView(self): tree = Tree(binaryTreeToPlanarTree(get_model_tree().root)) self.treeScene = QGraphicsScene() self.treeView = TreeView(self.treeScene, tree=tree) self.treeView.drawTree() view/planarTreeToBinaryTreeGui.py +1 −3 Original line number Diff line number Diff line from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QWidget, QAction, QHBoxLayout, QMessageBox, QPushButton, QGroupBox, QVBoxLayout, QLabel, \ QGraphicsScene from PyQt5.QtWidgets import * from view.levelGui import LevelGui from view.treeView import TreeView Loading view/treeView.py +6 −3 Original line number Diff line number Diff line Loading @@ -13,17 +13,18 @@ class TreeView(QGraphicsView): class which contains a level of a game and which is used to draw the BinaryTree of the level """ def __init__(self, *args, controller=None, model=False, root=False, **kwargs): def __init__(self, *args, controller=None, model=False, root=False, tree=None, **kwargs): super(QGraphicsView, self).__init__(*args, **kwargs) assert(controller is not None) self.controller = controller self.tree = tree self.treeItemsGroup = QGraphicsItemGroup() self.scene().addItem(self.treeItemsGroup) self.indexChildButton = 0 self.buttons = [] self.root = root self.model = model if model: if self.controller is not None: if self.model: self.tree = self.controller.level.answer else: self.tree = self.controller.level.tree Loading @@ -37,10 +38,12 @@ class TreeView(QGraphicsView): this method is used to calculate the parameters of the function which draws the tree (dimensions of the tree) and to call it """ if self.controller is not None: if self.model: self.tree = self.controller.level.answer else: self.tree = self.controller.level.tree if self.root: if isinstance(self.tree.root, BinaryNode) or isinstance(self.tree.root, EmptyNode): tree = Tree(BinaryNode(self.tree.root, Leaf())) Loading Loading
view/gameButton.py +0 −5 Original line number Diff line number Diff line Loading @@ -21,11 +21,6 @@ class GameButton(QWidget): self.layout.addWidget(label, alignment=Qt.AlignCenter) self.setLayout(self.layout) def test(self): palette = QPalette() palette.setColor(self.backgroundRole(), QColor(215, 0, 255)) self.setPalette(palette) def mousePressEvent(self, QMouseEvent): self.clicked.trigger()
view/menu.py +21 −1 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ from math import sqrt from PyQt5.QtWidgets import * from model.GameEnum import nbGames, GameEnum from view.gameButton import GameButton from view.menuWidget import BinaryTreeWidget, DyckWordWidget, PlanarTreeWidget, ArrowWidget class MyWindow(QMainWindow): Loading Loading @@ -77,7 +78,7 @@ class Menu: # function to put the central widget in the menu def displayGames(self): """def displayGames(self): self.removeCentralLayout() self.gamesWidget = QWidget() self.gamesLayout = QGridLayout() Loading @@ -104,6 +105,25 @@ class Menu: else: cptColumn += 1 self.gamesWidget.setLayout(self.gamesLayout) self.centralLayout.addWidget(self.gamesWidget)""" def displayGames(self): self.removeCentralLayout() self.gamesWidget = QWidget() self.gamesLayout = QGridLayout() 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) self.gamesLayout.addWidget(arrowBinaryTreeToPlanarTree, 1, 1) 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.gamesWidget.setLayout(self.gamesLayout) self.centralLayout.addWidget(self.gamesWidget) Loading
view/menuWidget.py 0 → 100644 +135 −0 Original line number Diff line number Diff line from PyQt5.QtGui import QFont from PyQt5.QtWidgets import * from model.GameEnum import GameEnum from model.node import Leaf, BinaryNode, binaryTreeToPlanarTree from model.tree import Tree from view.treeView import TreeView def get_model_tree(): return Tree( BinaryNode( BinaryNode( Leaf(), Leaf() ), BinaryNode( Leaf(), BinaryNode( Leaf(), Leaf() ) ) )) class ArrowWidget(QWidget): def __init__(self, xSize: float, ySize: float, angle: float, game: GameEnum): super(QWidget, self).__init__() self.game = game self.clicked = QAction() self.layout = QHBoxLayout() self.createArrowView(xSize, ySize, angle) self.layout.addWidget(self.arrowView) self.setLayout(self.layout) def createArrowView(self, xSize: float, ySize: float, angle: float): self.treeScene = QGraphicsScene() self.arrowView = ArrowView(self.treeScene, xSize=xSize, ySize=ySize, angle=angle) def mousePressEvent(self, QMouseEvent): self.clicked.trigger() class ArrowView(QGraphicsView): """ class which contains a level of a game and which is used to draw the BinaryTree of the level """ def __init__(self, *args, xSize: float, ySize: float, angle: float, **kwargs): super(QGraphicsView, self).__init__(*args, **kwargs) self.xSize = xSize self.ySize = ySize self.angle = angle self.arrowItemsGroup = QGraphicsItemGroup() self.drawArrow() self.scene().addItem(self.arrowItemsGroup) def drawArrow(self): rectangle = QGraphicsRectItem(0, 0, 20, 100) self.arrowItemsGroup.addToGroup(rectangle) def resizeEvent(self, e): e.accept() self.drawArrow() class DyckWordWidget(QWidget): def __init__(self): super(QWidget, self).__init__() self.layout = QHBoxLayout() self.createDyckWordGroupBox() self.layout.addWidget(self.dyckWordGroupBox) self.setLayout(self.layout) def createDyckWordGroupBox(self): self.dyckWordGroupBox = QGroupBox() self.globalDyckWordLayout = QVBoxLayout() self.dyckWordLayout = QHBoxLayout() self.globalDyckWordLayout.addLayout(self.dyckWordLayout, 1) self.dyckWordGroupBox.setLayout(self.globalDyckWordLayout) word = get_model_tree().dyckWord newWord = "" for i in range(len(word)): newWord += word[i] if i != len(word) - 1: newWord += " " label = QLabel(newWord) label.setFont(QFont("Arial", 25)) self.dyckWordLayout.addStretch(1) self.dyckWordLayout.addWidget(label) self.dyckWordLayout.addStretch(1) class BinaryTreeWidget(QWidget): def __init__(self): super(QWidget, self).__init__() self.layout = QHBoxLayout() self.createTreeView() self.layout.addWidget(self.treeView) self.setLayout(self.layout) def createTreeView(self): tree = get_model_tree() self.treeScene = QGraphicsScene() self.treeView = TreeView(self.treeScene, tree=tree) self.treeView.drawTree() class PlanarTreeWidget(QWidget): def __init__(self): super(QWidget, self).__init__() self.layout = QHBoxLayout() self.createTreeView() self.layout.addWidget(self.treeView) self.setLayout(self.layout) def createTreeView(self): tree = Tree(binaryTreeToPlanarTree(get_model_tree().root)) self.treeScene = QGraphicsScene() self.treeView = TreeView(self.treeScene, tree=tree) self.treeView.drawTree()
view/planarTreeToBinaryTreeGui.py +1 −3 Original line number Diff line number Diff line from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QWidget, QAction, QHBoxLayout, QMessageBox, QPushButton, QGroupBox, QVBoxLayout, QLabel, \ QGraphicsScene from PyQt5.QtWidgets import * from view.levelGui import LevelGui from view.treeView import TreeView Loading
view/treeView.py +6 −3 Original line number Diff line number Diff line Loading @@ -13,17 +13,18 @@ class TreeView(QGraphicsView): class which contains a level of a game and which is used to draw the BinaryTree of the level """ def __init__(self, *args, controller=None, model=False, root=False, **kwargs): def __init__(self, *args, controller=None, model=False, root=False, tree=None, **kwargs): super(QGraphicsView, self).__init__(*args, **kwargs) assert(controller is not None) self.controller = controller self.tree = tree self.treeItemsGroup = QGraphicsItemGroup() self.scene().addItem(self.treeItemsGroup) self.indexChildButton = 0 self.buttons = [] self.root = root self.model = model if model: if self.controller is not None: if self.model: self.tree = self.controller.level.answer else: self.tree = self.controller.level.tree Loading @@ -37,10 +38,12 @@ class TreeView(QGraphicsView): this method is used to calculate the parameters of the function which draws the tree (dimensions of the tree) and to call it """ if self.controller is not None: if self.model: self.tree = self.controller.level.answer else: self.tree = self.controller.level.tree if self.root: if isinstance(self.tree.root, BinaryNode) or isinstance(self.tree.root, EmptyNode): tree = Tree(BinaryNode(self.tree.root, Leaf())) Loading