def _create_pickup_spoilers(self, game_description: GameDescription): if game_description == self._pickup_spoiler_current_game: return for groups in self._pickup_spoiler_world_to_group.values(): groups.deleteLater() self._pickup_spoiler_current_game = game_description self.pickup_spoiler_show_all_button.currently_show_all = True self.pickup_spoiler_buttons.clear() self._pickup_spoiler_world_to_group = {} nodes_in_world = collections.defaultdict(list) for world, area, node in game_description.world_list.all_worlds_areas_nodes: if isinstance(node, PickupNode): world_name = world.correct_name(area.in_dark_aether) nodes_in_world[world_name].append( (f"{area.name} - {node.name}", node.pickup_index)) continue for world_name in sorted(nodes_in_world.keys()): group_box = QGroupBox(self.pickup_spoiler_scroll_contents) group_box.setTitle(world_name) vertical_layout = QVBoxLayout(group_box) vertical_layout.setContentsMargins(8, 4, 8, 4) vertical_layout.setSpacing(2) group_box.vertical_layout = vertical_layout vertical_layout.horizontal_layouts = [] self._pickup_spoiler_world_to_group[world_name] = group_box self.pickup_spoiler_scroll_content_layout.addWidget(group_box) for area_name, pickup_index in sorted(nodes_in_world[world_name], key=lambda it: it[0]): horizontal_layout = QHBoxLayout() horizontal_layout.setSpacing(2) label = QLabel(group_box) label.setText(area_name) horizontal_layout.addWidget(label) horizontal_layout.label = label push_button = QPushButton(group_box) push_button.setFlat(True) push_button.setText("Hidden") push_button.item_is_hidden = True push_button.pickup_index = pickup_index push_button.clicked.connect( partial(self._toggle_pickup_spoiler, push_button)) push_button.item_name = "Nothing was Set, ohno" push_button.row = horizontal_layout horizontal_layout.addWidget(push_button) horizontal_layout.button = push_button self.pickup_spoiler_buttons.append(push_button) group_box.vertical_layout.addLayout(horizontal_layout) group_box.vertical_layout.horizontal_layouts.append( horizontal_layout)
def _create_pickup_spoilers(self): self.pickup_spoiler_show_all_button.clicked.connect( self._toggle_show_all_pickup_spoiler) self.pickup_spoiler_show_all_button.currently_show_all = True self._create_pickup_spoiler_combobox() game_description = default_prime2_game_description() world_to_group = {} for world in game_description.world_list.worlds: for is_dark_world in [False, True]: group_box = QGroupBox(self.pickup_spoiler_scroll_contents) group_box.setTitle(world.correct_name(is_dark_world)) vertical_layout = QVBoxLayout(group_box) vertical_layout.setContentsMargins(8, 4, 8, 4) vertical_layout.setSpacing(2) group_box.vertical_layout = vertical_layout vertical_layout.horizontal_layouts = [] world_to_group[world.correct_name(is_dark_world)] = group_box self.pickup_spoiler_scroll_content_layout.addWidget(group_box) for world, area, node in game_description.world_list.all_worlds_areas_nodes: if not isinstance(node, PickupNode): continue group_box = world_to_group[world.correct_name(area.in_dark_aether)] horizontal_layout = QHBoxLayout() horizontal_layout.setSpacing(2) label = QLabel(group_box) label.setText(game_description.world_list.node_name(node)) horizontal_layout.addWidget(label) horizontal_layout.label = label push_button = QPushButton(group_box) push_button.setFlat(True) push_button.setText("Hidden") push_button.item_is_hidden = True push_button.pickup_index = node.pickup_index push_button.clicked.connect( partial(self._toggle_pickup_spoiler, push_button)) push_button.item_name = "Nothing was Set, ohno" push_button.row = horizontal_layout horizontal_layout.addWidget(push_button) horizontal_layout.button = push_button self.pickup_spoiler_buttons.append(push_button) group_box.vertical_layout.addLayout(horizontal_layout) group_box.vertical_layout.horizontal_layouts.append( horizontal_layout)