def generate_item(self, track_list): """ Generate an QListWidgetItem, enable checkboxes and append it to a QListWidget :param track_list: :param list_widget: :return: """ self._single_track_list.extend(track_list) for track in track_list: track_name = "N/A" track_type = track._track_type if track.track_name is not None: track_name = track.track_name track_item = QListWidgetItem("Track Name: " + track_name + " | " + "Type: " + track_type) track_item.setFlags( track_item.flags() | PySide2.QtCore.Qt.ItemFlag.ItemIsUserCheckable) track_item.setFlags(track_item.flags() | PySide2.QtCore.Qt.ItemFlag.ItemIsEnabled) track_item.setCheckState(PySide2.QtCore.Qt.CheckState.Unchecked) self.events.single_track_item_generated(track_item)
def generate_track_item(self, ref_num: int): """ Generate the track list for the two input directories with the first file in the list :return: """ if len(self._source_1_list) != 0 and ref_num == 1: self._tracks_1 = PymkvWrapper.process_file(self._source_1_list[0]) #TODO turn item generate into GUI helper for track in self._tracks_1: track_name = "N/A" track_type = track._track_type if track.track_name is not None: track_name = track.track_name track_item_1 = QListWidgetItem("Track Name: " + track_name + " | " + "Type: " + track_type) track_item_1.setFlags( track_item_1.flags() | PySide2.QtCore.Qt.ItemFlag.ItemIsUserCheckable) track_item_1.setFlags( track_item_1.flags() | PySide2.QtCore.Qt.ItemFlag.ItemIsEnabled) track_item_1.setCheckState( PySide2.QtCore.Qt.CheckState.Unchecked) self.events.ref_tracks_generated(self._source_1_list[0], track_item_1, 1) if len(self._source_2_list) != 0 and ref_num == 2: self._tracks_2 = PymkvWrapper.process_file(self._source_2_list[0]) # TODO turn item generate into GUI helper for track in self._tracks_2: track_name = "N/A" track_type = track._track_type if track.track_name is not None: track_name = track.track_name track_item_2 = QListWidgetItem("Track Name: " + track_name + " | " + "Type: " + track_type) track_item_2.setFlags( track_item_2.flags() | PySide2.QtCore.Qt.ItemFlag.ItemIsUserCheckable) track_item_2.setFlags( track_item_2.flags() | PySide2.QtCore.Qt.ItemFlag.ItemIsEnabled) track_item_2.setCheckState( PySide2.QtCore.Qt.CheckState.Unchecked) self.events.ref_tracks_generated(self._source_2_list[0], track_item_2, 2)
def updateScores(self): applied_scores = [] for score, score_box in self.score_map.items(): if score_box.checkState() == QtCore.Qt.CheckState.Checked: applied_scores.append(score) self.model.appliedScores = tuple(applied_scores) if not applied_scores: # if no scores are selected, enable all scores again for score, score_box in self.score_map.items(): sunits = _SCORE_UNITS.get(score, _REACTION_UNITS) empty_item = QListWidgetItem() score_box.setFlags(empty_item.flags() | QtCore.Qt.ItemIsUserCheckable) score_box.setFlags(empty_item.flags() & ~QtCore.Qt.ItemIsSelectable) elif 'total' in applied_scores: self.model.appliedScores = ('total',) # if total is selected, disable all other scores for score, score_box in self.score_map.items(): if score != 'total': score_box.setFlags(QtCore.Qt.ItemIsUserCheckable) score_box.setToolTip("De-select 'total' to enable other scores") else: # get units of applied scores selected_units = _SCORE_UNITS.get(applied_scores[0], _REACTION_UNITS) # disable scores with incompatible units for score, score_box in self.score_map.items(): sunits = _SCORE_UNITS.get(score, _REACTION_UNITS) if sunits != selected_units: score_box.setFlags(QtCore.Qt.ItemIsUserCheckable) score_box.setToolTip("Score is incompatible with currently selected scores") else: score_box.setFlags(score_box.flags() | QtCore.Qt.ItemIsUserCheckable) score_box.setFlags(score_box.flags() & ~QtCore.Qt.ItemIsSelectable)
def add_todo_btn_clicked(self): item = QListWidgetItem(f"Todo {self.todo_list_widget.count() + 1}") item.setFlags(item.flags() | Qt.ItemIsUserCheckable | Qt.ItemIsEditable) item.setCheckState(Qt.Unchecked) self.todo_list_widget.addItem(item) self.todo_list_widget.edit(self.todo_list_widget.indexFromItem(item))
def update_tables(self, tables): """ Update list of tables """ # create and delete mappings for tables if isinstance(tables, list): tables = {t: None for t in tables} for t_name, t_mapping in tables.items(): if t_name not in self.table_mappings: if t_mapping is None: t_mapping = ObjectClassMapping() else: # add table to selected if connector gave a mapping object # for the table self.selected_source_tables.add(t_name) self.table_mappings[t_name] = MappingListModel([t_mapping]) for k in list(self.table_mappings.keys()): if k not in tables: self.table_mappings.pop(k) if not tables: self._ui.source_list.clear() self._ui.source_list.clearSelection() return # current selected table selected = self._ui.source_list.selectedItems() self.selected_source_tables = set(tables.keys()).intersection( self.selected_source_tables) # empty tables list and add new tables self._ui.source_list.blockSignals(True) self._ui.source_list.currentItemChanged.disconnect(self.select_table) self._ui.source_list.clear() self._ui.source_list.clearSelection() for t in tables: item = QListWidgetItem() item.setText(t) item.setFlags(item.flags() | Qt.ItemIsUserCheckable) if t in self.selected_source_tables: item.setCheckState(Qt.Checked) else: item.setCheckState(Qt.Unchecked) self._ui.source_list.addItem(item) self._ui.source_list.currentItemChanged.connect(self.select_table) self._ui.source_list.blockSignals(False) # reselect table if existing otherwise select first table if selected and selected[0].text() in tables: table = selected[0].text() self._ui.source_list.setCurrentRow( tables.index(table), QItemSelectionModel.SelectCurrent) elif tables: # select first item self._ui.source_list.setCurrentRow( 0, QItemSelectionModel.SelectCurrent) if self._ui.source_list.selectedItems(): self.select_table(self._ui.source_list.selectedItems()[0]) self.tableChecked.emit()
def _create_c_list_item_widget(self, colleague): widget = QWidget(parent=self._colleagues_list) widget.colleague = colleague main_layout = QHBoxLayout(widget) main_layout.setSpacing(2) icon_label = QLabel(widget) icon_label.setPixmap( QIcon(":images/account.svg").pixmap( QSize(self.COLLEAGUES_LIST_WIDGET_HEIGHT - 17, self.COLLEAGUES_LIST_WIDGET_HEIGHT - 17))) main_layout.addWidget(icon_label) vertical_layout = QVBoxLayout() main_layout.addLayout(vertical_layout) text_label = QLabel(widget) widget.text_label = text_label text_label.setFont(QFont('Noto Sans', 10 * self._dp)) text_label.setAlignment(Qt.AlignTop | Qt.AlignLeft) text_label.setText(colleague.get_mail_text()) vertical_layout.addWidget(text_label) status_label = QLabel(widget) widget.status_label = status_label status_label.setFont(QFont('Noto Sans', 10 * self._dp)) status_label.setAlignment(Qt.AlignTop | Qt.AlignLeft) status_label.setText(colleague.get_status_text()) vertical_layout.addWidget(status_label) main_layout.addStretch() access_label = QLabel(widget) widget.access_label = access_label access_label.setFont(QFont('Noto Sans', 10 * self._dp)) access_label.setAlignment(Qt.AlignCenter | Qt.AlignLeft) access_label.setText(colleague.get_access_text()) main_layout.addWidget(access_label) def clicked(event, control): self._show_menu(widget.colleague, control.mapToGlobal(event.pos())) widget.mouseReleaseEvent = lambda e: clicked(e, widget) widget.text_label.mouseReleaseEvent = lambda e: clicked( e, widget.text_label) widget.status_label.mouseReleaseEvent = lambda e: clicked( e, widget.status_label) widget.access_label.mouseReleaseEvent = lambda e: clicked( e, widget.access_label) item = QListWidgetItem() item.setFlags(item.flags() & ~Qt.ItemIsSelectable) item.setSizeHint( QSize(self._colleagues_list.width(), self.COLLEAGUES_LIST_WIDGET_HEIGHT)) self._colleagues_list.addItem(item) self._items.append(widget) self._colleagues_list.setItemWidget(item, widget)
def addSpot(self, spot): self.spots.append(spot) item = QListWidgetItem("Spot " + str(self.count)) item.setFlags(item.flags() | Qt.ItemIsUserCheckable) item.setCheckState(Qt.Checked) self.addItem(item) self.count += 1
def AddItem(self, name): item = QListWidgetItem(name) item.setTextAlignment(Qt.AlignCenter) # item.setBackground(QColor(87, 195, 194)) item.setBackground(QColor(0, 0, 0, 0)) item.setSizeHint(QSize(90, 30)) item.setFlags(item.flags() & (~Qt.ItemIsSelectable)) self.addItem(item)
def add_to_list(self, file): if (self.list_items.get(file)): return False list_item = QListWidgetItem(file) list_item.setFlags(list_item.flags() | Qt.ItemIsUserCheckable) list_item.setCheckState(Qt.Checked) self.file_list.addItem(list_item) self.list_items[file] = list_item return True
def add_item(self, text): """add editable text item need to use item widget to make it editable :param text str: content of the item """ item = QListWidgetItem(text) item.setFlags(item.flags() | Qt.ItemIsEditable | Qt.ItemIsSelectable) self.addItem(item)
def fill_list(self, list_items): self.list_widget.clear() for column in list_items: item = QListWidgetItem(column) item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) item.setCheckState(Qt.Unchecked) self.list_widget.addItem(item) self.show()
def notify(self, updateType): self.itemSelectionChanged.disconnect(self.selectionSlot) if updateType == UpdateType.MATERIAL_SELECTION: self.clearSelection() else: self.itemChanged.disconnect(self.itemEditSlot) self.clear() for o in self.scene.getObjectIterator(): item = QListWidgetItem(o.name, self) item.setFlags(item.flags() | Qt.ItemIsEditable) item.setData(QtCore.Qt.UserRole, o) self.itemChanged.connect(self.itemEditSlot) self.itemSelectionChanged.connect(self.selectionSlot)
def update_watcherlist(self): self.watcherlist.clear() for n in range(0, len(self.workspace.cartprograph.watchers)): label = (", ".join( [str(r) for r in self.workspace.cartprograph.watchers[n][1]]) + " @ " + hex(self.workspace.cartprograph.watchers[n][0])) item = QListWidgetItem(label) item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) if self.workspace.cartprograph.watchers[n][2]: item.setCheckState(QtCore.Qt.Checked) else: item.setCheckState(QtCore.Qt.Unchecked) self.watcherlist.addItem(item)
def update_tables(self, tables): """ Update list of tables """ new_tables = list() for t_name, t_mapping in tables.items(): if t_name not in self.table_mappings: if t_mapping is None: t_mapping = ObjectClassMapping() self.table_mappings[t_name] = MappingListModel([t_mapping], t_name) new_tables.append(t_name) for k in list(self.table_mappings.keys()): if k not in tables: self.table_mappings.pop(k) if not tables: self._ui.source_list.clear() self._ui.source_list.clearSelection() return # current selected table selected = self._ui.source_list.selectedItems() # empty tables list and add new tables tables_to_select = set(self.checked_tables + new_tables) self._ui.source_list.blockSignals(True) self._ui.source_list.clear() self._ui.source_list.clearSelection() for t in tables: item = QListWidgetItem() item.setText(t) item.setFlags(item.flags() | Qt.ItemIsUserCheckable) if t in tables_to_select: item.setCheckState(Qt.Checked) else: item.setCheckState(Qt.Unchecked) self._ui.source_list.addItem(item) self._ui.source_list.blockSignals(False) # reselect table if existing otherwise select first table if selected and selected[0].text() in tables: table = selected[0].text() self._ui.source_list.setCurrentRow( tables.index(table), QItemSelectionModel.SelectCurrent) elif tables: # select first item self._ui.source_list.setCurrentRow( 0, QItemSelectionModel.SelectCurrent) self.tableChecked.emit()
def addLayerListItem(self, layer_name, z_level): layer_key_name = self.getLayerKeyName(layer_name) layer_item = QListWidgetItem(layer_name) layer_item.setFlags(layer_item.flags() | Qt.ItemIsUserCheckable) if self._tiles._layers[layer_key_name][LayerKeys.VISIBLE]: layer_item.setCheckState(Qt.Checked) else: layer_item.setCheckState(Qt.Unchecked) self._layers[layer_key_name][LayerKeys.LIST_ITEM] = layer_item self._tiles._layers[layer_key_name][LayerKeys.Z_LEVEL] = z_level self._tiles._layers[layer_key_name][LayerKeys.ITEM_GROUP].setZValue( z_level) if layer_name == self._layers[self._active_layer][LayerKeys.NAME]: layer_item.setText(layer_name + " (Selected)") self._layers_widget.addItem(layer_item)
def updateNuclides(self): applied_nuclides = [] for nuclide, nuclide_box in self.nuclide_map.items(): if nuclide_box.checkState() == QtCore.Qt.CheckState.Checked: applied_nuclides.append(nuclide) self.model.appliedNuclides = tuple(applied_nuclides) if 'total' in applied_nuclides: self.model.appliedNuclides = [ 'total', ] for nuclide, nuclide_box in self.nuclide_map.items(): if nuclide != 'total': nuclide_box.setFlags(QtCore.Qt.ItemIsUserCheckable) nuclide_box.setToolTip( "De-select 'total' to enable other nuclides") elif not applied_nuclides: # if no nuclides are selected, enable all nuclides again for nuclide, nuclide_box in self.nuclide_map.items(): empty_item = QListWidgetItem() nuclide_box.setFlags(empty_item.flags() | QtCore.Qt.ItemIsUserCheckable) nuclide_box.setFlags(empty_item.flags() & ~QtCore.Qt.ItemIsSelectable)
def _add_file_to_file_list(self, index, file_list, items_dict, obj_id, rel_path, created_time, was_updated, is_deleted, transfered, size=0, state=None, is_file=True): item = file_list.item(index) if item: item.setData(Qt.UserRole, [ rel_path, created_time, size, was_updated, is_deleted, transfered, state, is_file, obj_id ]) self._update_file_list_item_widget(file_list, item) items_dict[obj_id].append(item) return item = QListWidgetItem() item.setFlags(item.flags() & ~Qt.ItemIsSelectable) item.setSizeHint(QSize(file_list.width(), self.FILE_LIST_ITEM_SIZE)) item.setData(Qt.UserRole, [ rel_path, created_time, size, was_updated, is_deleted, transfered, state, is_file, obj_id ]) file_list.addItem(item) rect = file_list.viewport().contentsRect() top = file_list.indexAt(rect.topLeft()) if top.isValid(): bottom = file_list.indexAt(rect.bottomLeft()) if not bottom.isValid(): bottom = file_list.model().index(file_list.count() - 1) if top.row() <= file_list.row(item) <= bottom.row() + 1: widget = self._create_file_list_item_widget( file_list, [ rel_path, created_time, size, was_updated, is_deleted, transfered, state, is_file, obj_id ]) file_list.setItemWidget(item, widget) if item not in items_dict[obj_id]: items_dict[obj_id].append(item)
def _add_file_to_file_list(self, index, rel_path, created_time, was_updated, icon_info): item = self._ui.file_list.item(index) if not item: item = QListWidgetItem() item.setFlags(item.flags() & ~Qt.ItemIsSelectable) item.setSizeHint(QSize( self.FILE_LIST_ITEM_SIZE, self.FILE_LIST_ITEM_SIZE)) self._ui.file_list.insertItem(index, item) widget = self._ui.file_list.itemWidget(item) if not widget: widget = self._create_file_list_item_widget( rel_path, created_time, was_updated, icon_info) self._ui.file_list.setItemWidget(item, widget) else: self._update_file_list_item_widget( widget, rel_path, created_time, was_updated, icon_info) self._files[FilePath(rel_path)] = icon_info
def use_settings(self, settings): try: self.table_mappings = { table: MappingListModel([dict_to_map(m) for m in mappings], table) for table, mappings in settings.get("table_mappings", {}).items() } except ValueError as error: self._ui_error.showMessage(f"{error}") return table_types = { tn: { int(col): value_to_convert_spec(spec) for col, spec in cols.items() } for tn, cols in settings.get("table_types", {}).items() } table_row_types = { tn: { int(col): value_to_convert_spec(spec) for col, spec in cols.items() } for tn, cols in settings.get("table_row_types", {}).items() } self.connector.set_table_options(settings.get("table_options", {})) self.connector.set_table_types(table_types) self.connector.set_table_row_types(table_row_types) self._ui.source_list.blockSignals(True) self._ui.source_list.clear() selected_tables = settings.get("selected_tables") if selected_tables is None: selected_tables = set(self.table_mappings.keys()) for table_name in self.table_mappings: item = QListWidgetItem() item.setText(table_name) item.setFlags(item.flags() | Qt.ItemIsUserCheckable) item.setCheckState(Qt.Checked if table_name in selected_tables else Qt.Unchecked) self._ui.source_list.addItem(item) self._ui.source_list.blockSignals(False)
def add_crew_member(self): w = QDialog() w.setWindowTitle("Add New Crew Member") w.setLayout(QFormLayout()) crew_name = QLineEdit("New Crew Member") w.layout().addRow(QLabel("Crew Member Name:"), crew_name) specialization = QComboBox() specialization.addItems([ "Directing", "Cinematography", "Producing", "Production Design", "Editing", "Visual Effects" ]) w.layout().addRow(QLabel("Specialization:"), specialization) accept = QPushButton("Create") accept.clicked.connect(w.accept) reject = QPushButton("Cancel") reject.clicked.connect(w.reject) w.layout().addRow(accept, reject) if w.exec_() == QDialog.Accepted: new_crew_item = QListWidgetItem(crew_name.text()) new_crew_item.setFlags(new_crew_item.flags() | Qt.ItemIsEditable) self.crew_list_widget.addItem(new_crew_item)
def add_position(self): w = QDialog() w.setWindowTitle("Create New Position") w.setLayout(QFormLayout()) pos_name = QLineEdit("New Position") w.layout().addRow(QLabel("Position Name:"), pos_name) pre_pro_days = QSpinBox() post_pro_days = QSpinBox() w.layout().addRow(QLabel("Days of pre-production:"), pre_pro_days) w.layout().addRow(QLabel("Days of immediate post-production:"), post_pro_days) accept = QPushButton("Create") accept.clicked.connect(w.accept) reject = QPushButton("Cancel") reject.clicked.connect(w.reject) w.layout().addRow(accept, reject) if w.exec_() == QDialog.Accepted: print("Days of pre-production", pre_pro_days.value(), "Days of post-productions", post_pro_days.value()) new_pos_item = QListWidgetItem(pos_name.text()) new_pos_item.setFlags(new_pos_item.flags() | Qt.ItemIsEditable) self.pos_list_widget.addItem(new_pos_item)
def addNewLayerTab(self): if not self._list_change: self._add_tab_index = self.getNewTabIndex() layer_name = " ".join(["Layer", str(self._add_tab_index)]) layer_item = QListWidgetItem(layer_name) layer_item.setFlags(layer_item.flags() | Qt.ItemIsUserCheckable) layer_item.setCheckState(Qt.Checked) self._layers_widget.addItem(layer_item) self._layers[layer_name] = { LayerKeys.NAME: layer_name, LayerKeys.LIST_ITEM: layer_item, LayerKeys.REMOVABLE: True, LayerKeys.TAB_COLOR: self.DEFAULT_TAB_COLOR } # ADD LAYER TO TILES self._tiles.createNewLayer(layer_name) # ADD LAYER TAB INDEX TO TAB NAME KEYS tab_index = self._layer_tabs.addTab(layer_name) self.lockTabs()
def __init__(self, parent, tiles): self._parent = parent self._layer_tabs = LayerTabBar(parent, self) self._layer_tabs.setMovable(True) self._layer_tabs.setContentsMargins(0, 0, 0, 0) self._add_layer_button = QPushButton("+") self._add_layer_button.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding) self._add_layer_button.setFixedWidth(35) self._add_layer_button.clicked.connect(self.addNewLayerTab) self._layer_tabs_row = QWidget(parent) self._layer_tabs_layout = QHBoxLayout(self._layer_tabs_row) self._layer_tabs_layout.setSpacing(0) self._layer_tabs_layout.setContentsMargins(0, 0, 0, 0) self._layer_tabs_layout.addWidget(self._layer_tabs) self._layer_tabs_layout.addWidget(self._add_layer_button) self.DEFAULT_TAB_COLOR = "#EFEFEF" self._tiles = tiles self._layers_widget = LayerList(self) layer_1 = QListWidgetItem("Layer 1") layer_1.setFlags(layer_1.flags() | Qt.ItemIsUserCheckable) layer_1.setCheckState(Qt.Checked) layer_1.setText("Layer 1 (Selected)") self._layers_widget.addItem(layer_1) # Stores the Layer properties self._layers = { "Layer 1": { LayerKeys.NAME: "Layer 1", LayerKeys.LIST_ITEM: layer_1, LayerKeys.REMOVABLE: False, LayerKeys.TAB_COLOR: self.DEFAULT_TAB_COLOR } } self._layer_tabs.setStyleSheet(''' QTabBar::tab {{}} QTabBar::tab:selected {{background-color: {color}; border: 1px solid #777777; border-radius: 4px;}} '''.format(color=self._layers["Layer 1"][LayerKeys.TAB_COLOR])) self._tab_change = False self._list_change = False self._plus_button = QPushButton("+", parent) self._plus_button.setFixedSize(20, 20) first_layer = "Layer 1" self._active_layer = first_layer self._layer_tab_names = {} self._layer_tab_indexes = {} tab_index = self._layer_tabs.addTab(first_layer) self._add_tab_index = 2 self.lockTabs() # SIGNAL METHODS self._layers_widget.setSelectionMode(QAbstractItemView.NoSelection) self._layers_widget.itemDoubleClicked.connect( self.doubleClickLayerItem) self._layers_widget.itemChanged.connect(self.layerVisibility) self._plus_button.clicked.connect(self.addNewLayerTab) self._layer_tabs.currentChanged.connect(self.changeTabLayer) self._layer_tabs.tabMoved.connect(self.layerTabMoved) self.tabColors = { 0: 'green', 1: 'red', 2: 'yellow', 3: 'orange', 4: 'blue', }
class OutputWidget(QWidget): def __init__(self, parent=None): QWidget.__init__(self, None) self.layout = QGridLayout() self.label = QLabel("Files selected:") self.layout.addWidget(self.label, 0, 0, 1, 4) self.file_list = QListWidget() self.select_all = QListWidgetItem("(De)select all") self.select_all.setFlags(self.select_all.flags() | Qt.ItemIsUserCheckable) self.select_all.setCheckState(Qt.Unchecked) self.file_list.addItem(self.select_all) self.layout.addWidget(self.file_list, 1, 0, 1, 4) self.layout.addWidget(QLabel("First line:"), 2, 0) self.first_line = QLineEdit("", self) self.first_line.setValidator(QIntValidator(1, 100000)) self.layout.addWidget(self.first_line, 2, 1) self.layout.addWidget(QLabel("Last line:"), 2, 2) self.last_line = QLineEdit("", self) self.last_line.setValidator(QIntValidator(1, 100000)) self.layout.addWidget(self.last_line, 2, 3) self.convert_button = QPushButton("EXPORT") self.convert_button.clicked.connect(parent.on_convert) self.convert_button.setStyleSheet("background-color: green") self.layout.addWidget(self.convert_button, 3, 0, 1, 4) self.setLayout(self.layout) self.list_items = {} self.file_list.itemChanged.connect(self.on_item_changed) def add_to_list(self, file): if (self.list_items.get(file)): return False list_item = QListWidgetItem(file) list_item.setFlags(list_item.flags() | Qt.ItemIsUserCheckable) list_item.setCheckState(Qt.Checked) self.file_list.addItem(list_item) self.list_items[file] = list_item return True def remove_from_list(self, file): list_item = self.list_items.pop(file, None) if (not list_item): return False self.file_list.takeItem(self.file_list.row(list_item)) if (len(self.list_items) == 0): self.select_all.setCheckState(Qt.Unchecked) return True def output_info(self): res = { "files": self.files_selected(), "first_line": (0 if not self.last_line.text() else int(self.first_line.text())), "last_line": (0 if not self.last_line.text() else int(self.last_line.text())) } return res def on_item_changed(self, item): if (item is self.select_all): for list_item in self.list_items.values(): list_item.setCheckState(self.select_all.checkState()) def files_selected(self): res = [] for list_item in self.list_items.values(): if (list_item.checkState() == Qt.Checked): res.append(list_item.text()) return res
def selectTally(self, tally_label=None): # using active view to populate tally options live av = self.model.activeView # reset form layout for i in reversed(range(self.tallySelectorLayout.count())): self.tallySelectorLayout.itemAt(i).widget().setParent(None) # always re-add the tally selector to the layout self.tallySelectorLayout.addRow(self.tallySelector) self.tallySelectorLayout.addRow(HorizontalLine()) if tally_label is None or tally_label == "None" or tally_label == "": av.selectedTally = None self.score_map = None self.nuclide_map = None self.filter_map = None av.tallyValue = "Mean" else: # get the tally tally = self.model.statepoint.tallies[av.selectedTally] # populate filters filter_types = {type(f) for f in tally.filters} spatial_filters = bool(filter_types.intersection(_SPATIAL_FILTERS)) if not spatial_filters: self.filter_description = QLabel("(No Spatial Filters)") self.tallySelectorLayout.addRow(self.filter_description) self._createFilterTree(spatial_filters) self.tallySelectorLayout.addRow(self.treeExpander) self.tallySelectorLayout.addRow(HorizontalLine()) # value selection self.tallySelectorLayout.addRow(QLabel("Value:")) self.valueBox = QComboBox(self) self.values = tuple(_TALLY_VALUES.keys()) for value in self.values: self.valueBox.addItem(value) self.tallySelectorLayout.addRow(self.valueBox) self.valueBox.currentTextChanged[str].connect( self.main_window.editTallyValue) self.updateTallyValue() if not spatial_filters: self.valueBox.setEnabled(False) self.valueBox.setToolTip("Only tallies with spatial filters are viewable.") # scores self.score_map = {} self.scoresListWidget.itemClicked.connect( self.main_window.updateScores) self.score_map.clear() self.scoresListWidget.clear() sorted_scores = sorted(tally.scores) # always put total first if present if 'total' in sorted_scores: idx = sorted_scores.index('total') sorted_scores.insert(0, sorted_scores.pop(idx)) for score in sorted_scores: ql = QListWidgetItem() ql.setText(score.capitalize()) ql.setCheckState(QtCore.Qt.Unchecked) if not spatial_filters: ql.setFlags(QtCore.Qt.ItemIsUserCheckable) else: ql.setFlags(ql.flags() | QtCore.Qt.ItemIsUserCheckable) ql.setFlags(ql.flags() & ~QtCore.Qt.ItemIsSelectable) self.score_map[score] = ql self.scoresListWidget.addItem(ql) # select the first score item by default for item in self.score_map.values(): item.setCheckState(QtCore.Qt.Checked) break self.updateScores() self.scoresGroupBoxLayout = QVBoxLayout() self.scoresGroupBoxLayout.addWidget(self.scoresListWidget) self.scoresGroupBox = Expander("Scores:", layout=self.scoresGroupBoxLayout) self.tallySelectorLayout.addRow(self.scoresGroupBox) # nuclides self.nuclide_map = {} self.nuclidesListWidget.itemClicked.connect(self.main_window.updateNuclides) self.nuclide_map.clear() self.nuclidesListWidget.clear() sorted_nuclides = sorted(tally.nuclides) # always put total at the top if 'total' in sorted_nuclides: idx = sorted_nuclides.index('total') sorted_nuclides.insert(0, sorted_nuclides.pop(idx)) for nuclide in sorted_nuclides: ql = QListWidgetItem() ql.setText(nuclide.capitalize()) ql.setCheckState(QtCore.Qt.Unchecked) if not spatial_filters: ql.setFlags(QtCore.Qt.ItemIsUserCheckable) else: ql.setFlags(ql.flags() | QtCore.Qt.ItemIsUserCheckable) ql.setFlags(ql.flags() & ~QtCore.Qt.ItemIsSelectable) self.nuclide_map[nuclide] = ql self.nuclidesListWidget.addItem(ql) # select the first nuclide item by default for item in self.nuclide_map.values(): item.setCheckState(QtCore.Qt.Checked) break self.updateNuclides() self.nuclidesGroupBoxLayout = QVBoxLayout() self.nuclidesGroupBoxLayout.addWidget(self.nuclidesListWidget) self.nuclidesGroupBox = Expander("Nuclides:", layout=self.nuclidesGroupBoxLayout) self.tallySelectorLayout.addRow(self.nuclidesGroupBox)