Example #1
0
def initScores(container: QWidget):
    container.removeWidget(state["scoreWidget"])
    state["scoreWidget"].deleteLater()
    newScoreWidget = QWidget()
    newScoreWidget.hide()
    scoreLayout = QGridLayout()
    scoreLayout.setAlignment(Qt.AlignTop)
    diff1 = QLabel("Easy")
    scoreLayout.addWidget(diff1, 0, 1)
    for i, el in enumerate(state["highScores"]["easy"]):
        text = "{} {}".format(el[0], el[1])
        topPlayer = QLabel(text)
        scoreLayout.addWidget(topPlayer, i + 1, 1)
    diff2 = QLabel("Normal")
    scoreLayout.addWidget(diff2, 0, 2)
    for i, el in enumerate(state["highScores"]["normal"]):
        text = "{} {}".format(el[0], el[1])
        topPlayer = QLabel(text)
        scoreLayout.addWidget(topPlayer, i + 1, 2)
    diff3 = QLabel("Hard")
    scoreLayout.addWidget(diff3, 0, 3)
    for i, el in enumerate(state["highScores"]["hard"]):
        text = "{} {}".format(el[0], el[1])
        topPlayer = QLabel(text)
        scoreLayout.addWidget(topPlayer, i + 1, 3)
    newScoreWidget.setLayout(scoreLayout)
    state["scoreWidget"] = newScoreWidget
    container.addWidget(newScoreWidget)
Example #2
0
def changeDifficulty(
    container: QWidget,
    horizontalButtonCount: int,
    verticalButtonCount: int,
    numberOfMines: int,
    stateInfo: dict,
):
    """
    Basically restarts game with wanted dimensions and how many mines wanted. This function
    is used in this app to change difficulty and/or restart the game.
    """
    container.removeWidget(stateInfo["mineFieldWidget"])
    container.removeWidget(stateInfo["scoreForm"])
    stateInfo["mineFieldWidget"].deleteLater()
    stateInfo["scoreForm"].deleteLater()
    stateInfo["mineInfo"] = numberOfMines
    newscoreForm = scoreForm()
    container.addWidget(newscoreForm)
    newscoreForm.hide()
    stateInfo["scoreForm"] = newscoreForm
    newMineField = QWidget()
    setState(horizontalButtonCount, verticalButtonCount, numberOfMines)
    newField = initField(stateInfo, BUTTONWIDTH, BUTTONHEIGHT)
    stateInfo["mineFieldWidget"] = newMineField
    newMineField.setLayout(newField)
    container.addWidget(newMineField)
Example #3
0
def initStats(container: QWidget, stateInfo: dict):
    container.removeWidget(stateInfo["statsWidget"])
    stateInfo["statsWidget"].deleteLater()
    newstatsWidget = QWidget()
    newstatsWidget.hide()
    statsLayout = QVBoxLayout()
    for el in stateInfo["statistics"]:
        infoLabel = QLabel(el)
        statsLayout.addWidget(infoLabel)
    newstatsWidget.setLayout(statsLayout)
    container.addWidget(newstatsWidget)
    stateInfo["statsWidget"] = newstatsWidget
Example #4
0
 def _drawElement(self, element: Element, parent: QtWidgets.QWidget) -> None:
     self._logger.info("Draw element: %s to %s", element.clazz, parent)
     if issubclass(element.clazz, PluginWidgetMixin) and "config" in inspect.signature(
             element.clazz.__init__).parameters.keys():
         widget = gg(element.clazz)(element.config)
     else:
         widget = element.clazz()
     if isinstance(widget, QtWidgets.QSplitter) and element.vertical:
         widget.setOrientation(QtCore.Qt.Orientation.Vertical)
     if isinstance(parent, QtWidgets.QMainWindow):
         self._logger.info("Parent is main window")
         parent.setCentralWidget(widget)
     elif isinstance(parent, QtWidgets.QSplitter):
         self._logger.info("Parent is splitter")
         parent.addWidget(widget)
         parent.setProperty("iceSizes", (parent.property("iceSizes") or ()) + (element.weight * 2 ** 16,))
         parent.setSizes(parent.property("iceSizes"))
     else:
         raise AssertionError("Unsupported parent: %s" % type(parent))
     for child in element.children:
         self._drawElement(child, widget)
    def _gui_setup(self):
        layout = QHBoxLayout()

        splitter = QSplitter(Qt.Horizontal)
        panel_right = QWidget(self)
        layout.addWidget(splitter)

        annotation = Annotation()
        self.annotation = annotation

        transcripts = Transcripts(annotation, self)
        transcripts.setDisabled(True)
        splitter.addWidget(transcripts)
        self.transcripts = transcripts
        splitter.addWidget(panel_right)
        l = QVBoxLayout()
        l.setContentsMargins(0, 0, 0, 0)
        panel_right.setLayout(l)
        panel_right = l

        minutes = Minutes(annotation, self)
        minutes.setDisabled(True)
        self.minutes = minutes

        problems = Problems(self)
        problems.setEnabled(False)
        problems.problem_selected.connect(self.annotation.set_problem)
        problems.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.problems = problems

        splitter_right = QSplitter(Qt.Vertical)
        splitter_right.addWidget(minutes)
        splitter_right.addWidget(problems)
        panel_right.addWidget(splitter_right)

        player = Player(self)
        player.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.player = player
        panel_right.addWidget(player)

        evaluation = Evaluation(self)
        evaluation.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.evaluation = evaluation
        panel_right.addWidget(evaluation)

        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)

        menu = self.menuBar()
        file_menu = menu.addMenu('&File')

        a = file_menu.addAction('&New')
        a.setShortcut('Ctrl+n')
        a.triggered.connect(self.new)

        a = file_menu.addAction('&Open existing')
        a.setShortcut('Ctrl+o')
        a.triggered.connect(self.open_existing)

        a = file_menu.addAction('&Open repository')
        a.setShortcut('Ctrl+g')
        a.triggered.connect(self.open_repository)

        file_menu.addSeparator()

        a = file_menu.addAction('Evaluation mode')
        a.setCheckable(True)
        a.setShortcut('Ctrl+e')
        a.triggered.connect(self.set_evaluation_mode)

        file_menu.addSeparator()

        a = file_menu.addAction('&Save')
        a.setShortcut('Ctrl+s')
        a.triggered.connect(self.save)
        file_menu.addSeparator()

        a = file_menu.addAction('S&ettings')
        a.setShortcut('Ctrl++')
        a.triggered.connect(lambda: Settings(self).exec_())
        file_menu.addSeparator()

        a = file_menu.addAction('&Close')
        a.setShortcut('Alt+c')
        a.triggered.connect(self.close)

        playback_menu = menu.addMenu('&Playback')
        a = playback_menu.addAction('&Open audio')
        a.triggered.connect(self._open_audio)
        playback_menu.addSeparator()
        playback_menu.addActions(player.playback_actions)

        s = QSettings(self)
        self.splitter = splitter
        self.splitter_righ = splitter_right
        splitter.restoreState(s.value('splitter'))
        splitter_right.restoreState(s.value('splitter_righ'))
        self.restoreGeometry(s.value('window_geometry'))
        self.restoreState(s.value('window_state'))

        splitter_right.setStretchFactor(0, 10)
        splitter_right.setStretchFactor(1, 1)