def__init__(self,parent,parent_item=None,items=None,item_type=NcsPathway):"""Constructor"""super().__init__()self.setupUi(self)self.parent=parentself.parent_item=parent_itemself.item_type=item_typeself.items=itemsor[]select_all_btn=QtWidgets.QPushButton(tr("Select All"))select_all_btn.setToolTip(tr("Select the all listed items"))select_all_btn.clicked.connect(self.select_all_clicked)self.mButtonBox.addButton(select_all_btn,QtWidgets.QDialogButtonBox.ActionRole)clear_all_btn=QtWidgets.QPushButton(tr("Clear Selection"))clear_all_btn.setToolTip(tr("Clear the current selection"))clear_all_btn.clicked.connect(self.clear_all_clicked)self.mButtonBox.addButton(clear_all_btn,QtWidgets.QDialogButtonBox.ActionRole)toggle_selection_btn=QtWidgets.QPushButton(tr("Toggle Selection"))toggle_selection_btn.clicked.connect(self.toggle_selection_clicked)self.mButtonBox.addButton(toggle_selection_btn,QtWidgets.QDialogButtonBox.ActionRole)self.mButtonBox.accepted.connect(self.accept)self.set_items()forindexinrange(self.list_widget.count()):item=self.list_widget.item(index)item_uuid=item.data(QtCore.Qt.UserRole)ifself.item_typeisNcsPathway:pathway=settings_manager.get_ncs_pathway(str(item_uuid))layer_model_uuids=[item.uuidforiteminself.items]pathway_layer_uuids=[layer.get("uuid")forlayerinpathway.priority_layersiflayerisnotNone]if(self.parent_itemisnotNoneandstr(self.parent_item.get("uuid"))inpathway_layer_uuids)or(pathway.uuidinlayer_model_uuids):item.setCheckState(QtCore.Qt.Checked)else:layer=settings_manager.get_priority_layer(str(item_uuid))group_uuids=[]forgroupinlayer.get("groups"):group=settings_manager.find_group_by_name(group.get("name"))ifgroupisnotNone:group_uuids.append(str(group.get("uuid")))if(self.parent_itemisnotNoneandself.parent_item.get("uuid")ingroup_uuids):item.setCheckState(QtCore.Qt.Checked)
defclear_all_clicked(self):"""Slot for handling clear selection for all items."""foritem_indexinrange(self.list_widget.count()):item_item=self.list_widget.item(item_index)item_item.setCheckState(QtCore.Qt.Unchecked)
defselect_all_clicked(self):"""Slot for handling selection for all items."""foritem_indexinrange(self.list_widget.count()):item_item=self.list_widget.item(item_index)item_item.setCheckState(QtCore.Qt.Checked)
defselected_items(self):"""Returns the selected items from the dialog"""ifself.item_typeisNcsPathway:items=settings_manager.get_all_ncs_pathways()else:all_layers=settings_manager.get_priority_layers()items=[]forlayerinall_layers:model_layer=PriorityLayer(uuid=uuid.UUID(layer.get("uuid")),name=layer.get("name"),description=layer.get("description"),groups=layer.get("groups"),)items.append(model_layer)items_text=[]forindexinrange(self.list_widget.count()):item=self.list_widget.item(index)ifitem.checkState()==QtCore.Qt.Checked:items_text.append(item.text())final_items=[]foriteminitems:foritem_nameinitems_text:ifitem.name==item_name:final_items.append(item)breakreturnfinal_items
defset_items(self):"""Sets the item list in the dialog"""ifself.item_typeisNcsPathway:items=settings_manager.get_all_ncs_pathways()else:all_layers=settings_manager.get_priority_layers()items=[]forlayerinall_layers:model_layer=PriorityLayer(uuid=uuid.UUID(layer.get("uuid")),name=layer.get("name"),description=layer.get("description"),groups=layer.get("groups"),)items.append(model_layer)foriteminitems:list_widget_item=QtWidgets.QListWidgetItem(item.name)list_widget_item.setFlags(list_widget_item.flags()|QtCore.Qt.ItemIsUserCheckable)list_widget_item.setData(QtCore.Qt.UserRole,item.uuid)list_widget_item.setCheckState(QtCore.Qt.Unchecked)self.list_widget.addItem(list_widget_item)
deftoggle_selection_clicked(self):"""Toggles all the current items selection."""foritem_indexinrange(self.list_widget.count()):item_item=self.list_widget.item(item_index)state=item_item.checkState()ifstate==QtCore.Qt.Checked:item_item.setCheckState(QtCore.Qt.Unchecked)elifstate==QtCore.Qt.Unchecked:item_item.setCheckState(QtCore.Qt.Checked)
defunselected_items(self):"""Returns unselected items from the dialog"""ifself.item_typeisNcsPathway:items=settings_manager.get_all_ncs_pathways()else:all_layers=settings_manager.get_priority_layers()items=[]forlayerinall_layers:model_layer=PriorityLayer(uuid=uuid.UUID(layer.get("uuid")),name=layer.get("name"),description=layer.get("description"),groups=layer.get("groups"),)items.append(model_layer)items_text=[]forindexinrange(self.list_widget.count()):item=self.list_widget.item(index)ifitem.checkState()==QtCore.Qt.Unchecked:items_text.append(item.text())item_names=",".join(items_text)items=[itemforiteminitemsifitem.nameinitem_names]returnitems