예제 #1
0
    def setup_ui(self):
        layout = QGridLayout()

        table = QTreeWidget()
        table.setHeaderLabels(['name', 'width', 'height', 'ratio'])
        table.setSortingEnabled(True)
        items = []
        for size in self.manager.project.sizes:
            i = ComparingTreeWidgetItem(None, [
                f'{size.width}x{size.height}',
                str(size.width),
                str(size.height),
                str(size.ratio())
            ])
            i.__data__ = size
            items.append(i)
        table.addTopLevelItems(items)

        @table.currentItemChanged.connect
        def _(item, prev):
            del_btn.setEnabled(item is not None)

        layout.addWidget(table, 0, 0, 1, 2)

        add_btn = QPushButton('add new')

        @add_btn.clicked.connect
        def _(*args):
            diag = SizeInput(self.manager.project.sizes, self)
            if diag.exec_() != QDialog.Accepted:
                return
            size = diag.value
            self.manager.add_size(size)
            item = ComparingTreeWidgetItem(None, [
                f'{size.width}x{size.height}',
                str(size.width),
                str(size.height),
                str(size.ratio())
            ])
            table.addTopLevelItem(item)

        layout.addWidget(add_btn, 1, 0)

        del_btn = QPushButton('delete')
        del_btn.setEnabled(False)

        @del_btn.clicked.connect
        def _(*args):
            item = table.currentItem()
            size = item.__data__
            self.manager.del_size(size)
            shiboken2.delete(item)

        layout.addWidget(del_btn, 1, 1)

        self.setLayout(layout)
예제 #2
0
def update_hint_locations(game: RandovaniaGame,
                          hint_tree_widget: QtWidgets.QTreeWidget):
    game_description = default_database.game_description_for(game)

    number_for_hint_type = {
        hint_type: i + 1
        for i, hint_type in enumerate(LoreType)
    }
    used_hint_types = set()

    hint_tree_widget.clear()
    hint_tree_widget.setSortingEnabled(False)

    # TODO: This ignores the Dark World names. But there's currently no logbook nodes in Dark World.
    for world in game_description.world_list.worlds:

        world_item = QtWidgets.QTreeWidgetItem(hint_tree_widget)
        world_item.setText(0, world.name)
        world_item.setExpanded(True)

        for area in world.areas:
            hint_types = {}

            for node in area.nodes:
                if isinstance(node, LogbookNode):
                    if node.required_translator is not None:
                        hint_types[
                            node.
                            lore_type] = node.required_translator.short_name
                    else:
                        hint_types[node.lore_type] = "✓"

            if hint_types:
                area_item = QtWidgets.QTreeWidgetItem(world_item)
                area_item.setText(0, area.name)

                for hint_type, text in hint_types.items():
                    area_item.setText(number_for_hint_type[hint_type], text)
                    used_hint_types.add(hint_type)

    hint_tree_widget.resizeColumnToContents(0)
    hint_tree_widget.setSortingEnabled(True)
    hint_tree_widget.sortByColumn(0, QtCore.Qt.AscendingOrder)

    for hint_type in used_hint_types:
        hint_tree_widget.headerItem().setText(number_for_hint_type[hint_type],
                                              hint_type.long_name)
예제 #3
0
    def add_tree_with_header(self, parent):
        tw = QTreeWidget()
        parent.addWidget(tw)
        tw.setHeaderLabels(['Type', 'Legs', 'Has Hair/Fur'])
        tw.setSortingEnabled(True)
        tw.setAlternatingRowColors(True)
        i1 = QTreeWidgetItem(tw, ['Mammal'])
        i2 = QTreeWidgetItem(i1, ['Rodent'])
        i3 = QTreeWidgetItem(i2, ['Rat', '4', 'True'])
        i3 = QTreeWidgetItem(i2, ['Beaver', '2', 'True'])
        i2 = QTreeWidgetItem(i1, ['Primate'])
        i3 = QTreeWidgetItem(i2, ['Baboon', '2', 'True'])
        i3 = QTreeWidgetItem(i2, ['Human', '2', 'True'])
        i1 = QTreeWidgetItem(tw, ['Reptile'])
        i2 = QTreeWidgetItem(i1, ['Snake', '0', 'False'])
        i3 = QTreeWidgetItem(i1, ['Crocodile', '4', 'False'])

        self.add_expand_collapse_buttons(parent, tw)
예제 #4
0
    def setup_ui(self):
        layout = QGridLayout()

        table = QTreeWidget()
        table.setHeaderLabels(['name', 'type', 'width', 'height'])
        table.setSortingEnabled(True)
        items = []
        for photo in self.manager.project.photos:
            if not photo.is_available():
                w = h = 'N/A!'
            else:
                w, h = photo.raw_size()
            i = ComparingTreeWidgetItem(
                None,
                [str(photo), type(photo).__name__,
                 str(w), str(h)])
            i.__data__ = photo
            items.append(i)
        table.addTopLevelItems(items)

        @table.currentItemChanged.connect
        def _(item, prev):
            del_btn.setEnabled(item is not None)

        layout.addWidget(table, 0, 0)

        del_btn = QPushButton('delete')
        del_btn.setEnabled(False)

        @del_btn.clicked.connect
        def _(*args):
            item = table.currentItem()
            size = item.__data__
            self.manager.del_photo(size)
            shiboken2.delete(item)

        layout.addWidget(del_btn, 1, 0)

        self.setLayout(layout)