Example #1
0
    def createPage(self):
        # Clear previous widgets
        self.clearLayout()

        # Get question
        try:
            element = next(self.iterator)
        except StopIteration:
            self.showResults()
            return

        # Check if we should exclude this question

        doExclude = True
        includeIf = element.get("includeIf")
        if includeIf != None:
            for tag in includeIf.split():
                try:
                    self.tags[tag]
                    doExclude = False
                    break
                except KeyError:
                    pass
        else:
            doExclude = False

        excludeIf = element.get("excludeIf")
        if excludeIf != None and not doExclude:
            for tag in excludeIf.split():
                try:
                    self.tags[tag]
                    doExclude = True
                    break
                except KeyError:
                    pass

        if doExclude: return self.createPage()

        # Create page
        self.nameLabel.setText(element.find("title").text)

        # Create answers
        self.buttonGroup = QButtonGroup()
        answers = element.findall("answer")

        if len(answers) == 0:
            self.showResults()
            return

        for answer in answers:
            isBreaking = True
            if answer.get("breaking") == None:
                isBreaking = False

            radio = QRadioButton(answer.find("title").text)
            tags = {}
            for tag in answer.findall("tag"):
                tags.update({tag.text: None})
            radio.setProperty("tags", tags)
            radio.setProperty("isBreaking", isBreaking)
            self.buttonGroup.addButton(radio)
            self.sLayout.addWidget(radio)
        self.sLayout.itemAt(0).widget().setChecked(True)
        self.sLayout.addStretch()