def append_blue_data(self, data): """ DOCSTRING """ self.clear_blue_list.emit() i = 1 for i in data: if self.current_lang == "Polski": item = QListWidgetItem('Nazwa: ' + str(i) + ' \nMAC: ' + str(data[i][0].upper()) + ' \nRSSI: ' + str(data[i][1]) + ' dBm\nProducent: ' + str( manu.search_manufacturer_by_mac( str(data[i][0].upper()))) + '') else: item = QListWidgetItem('Name: ' + str(i) + ' \nMAC: ' + str(data[i][0].upper()) + ' \nRSSI: ' + str(data[i][1]) + ' dBm\nManufacturer: ' + str( manu.search_manufacturer_by_mac( str(data[i][0].upper()))) + '') if int(abs(data[i][1])) < 50: item.setIcon(QIcon('icons/icons8-no-connection-64-green.png')) elif int(abs(data[i][1])) >= 50 and int(abs(data[i][1])) < 70: item.setIcon(QIcon('icons/icons8-no-connection-64-blue.png')) elif int(abs(data[i][1])) >= 70 and int(abs(data[i][1])) < 80: item.setIcon(QIcon('icons/icons8-no-connection-64-orange.png')) elif int(abs(data[i][1])) >= 80 and int(abs(data[i][1])) < 90: item.setIcon(QIcon('icons/icons8-no-connection-64-red.png')) elif int(abs(data[i][1])) >= 90: item.setIcon(QIcon('icons/icons8-no-connection-64-black.png')) self.append_blue_list_item.emit(item) self.loop = QEventLoop() QTimer.singleShot(50, self.loop.quit) self.loop.exec_()
def addItems(self, items, checked=False): for i in items: item = QListWidgetItem(i, parent=self) self.addItem(item) state = Qt.Checked if checked else Qt.Unchecked item.setCheckState(state)
def update_meshes_list(self): self.ui.lwMeshes.clear() for name in self.node.meshes_names: self.ui.lwMeshes.addItem(QListWidgetItem(name))
def redraw_timers(self): self.listTimers.clear() for timer in self.timers.timers: cboItem = QListWidgetItem(timer.format_str(), self.listTimers) cboItem.setData(Qt.UserRole, timer.name)
def __init__(self, alid=0, db=0, mode=0): super().__init__() self.font = mainfont self.resize(1000, 600) layout = QGridLayout() self.layout = layout self.buttext = [] self.dictViewer = QWidget() self.linedits = {} self.last_eid = 0 self.photo_ids = 0 self.QLABELM_TYPE = type(QLabelM()) self.listWidget = QListWidget() self.listWidget.itemDoubleClicked.connect(self.doubleClick) self.listWidget.itemSelectionChanged.connect(self.itemChanged) self.setFont(mainfont) self.db = db self.alid = alid self.event_ids = db.get_all_event_ids(self.alid) self.photo_gallery = QLabel() #self.photo_gallery.setAlignment(Qt.AlignCenter) #self.photo_gallery.setPixmap(QPixmap('f.png').scaled(400,400,Qt.KeepAspectRatio)) print(self.event_ids) if self.event_ids: for eid in self.event_ids: event = db.get_event_data(self.alid, eid) print(event) if event: text = '' text = event['event_head'] if type(event) == type( {}) and 'event_head' in event.keys( ) and event['event_head'] != '' else text item = QListWidgetItem(text) if type(event) == type({}) and 'eid' in event.keys(): item.setWhatsThis(str(event['eid'])) self.listWidget.addItem(item) if self.listWidget.count(): self.listWidget.setCurrentRow(0) self.mode = mode def openMenu(position): # Создание PopupMenu menu = QMenu() if mode > 0: addAction = menu.addAction('Добавить событие') #menu.addSeparator() editAction = menu.addAction('Переименовать событие') #menu.addSeparator() delAction = menu.addAction('Удалить событие') delAllAction = menu.addAction('Удалить все события') menu.addSeparator() else: addAction, editAction, delAction, delAllAction = QAction( ), QAction(), QAction(), QAction() quitAction = menu.addAction('Выход') action = menu.exec_(self.mapToGlobal(position)) # Привязка событий к Actions if action == addAction: text, ok = QInputDialog().getText(self, "Название события", "Ввкдите название события:", QLineEdit.Normal, '') if ok: text = 'Новое событие' if text == '' else text res = self.db.add_event({ 'alid': self.alid, 'event_head': text }) if len(res) == 1: event = res[0] text = event['event_head'] if type(event) == type( {} ) and 'event_head' in event.keys( ) and event['event_head'] != '' else 'Новое событие' item = QListWidgetItem(text) item.setWhatsThis(str(event['eid'])) self.listWidget.addItem(item) db.events.save() #self.changed = True self.event_ids = db.get_all_event_ids(self.alid) if action == editAction: eid = self.listWidget.currentItem() if eid is not None: eid = self.listWidget.currentItem().whatsThis() last_name = self.db.get_event_data(self.alid, eid)['event_head'] text, ok = QInputDialog().getText( self, "Название события", "Ввкдите новое название события:", QLineEdit.Normal, str(last_name)) if ok: event = self.db.edit_event({ 'alid': self.alid, 'eid': eid, 'event_head': text }) self.listWidget.currentItem().setText(text) self.db.events.save() if event: event = self.db.get_event_data(alid, eid) #b = layout.takeAt(1) self.dictViewer.close() #b.widget().deleteLater() self.dictViewer = DictViewer( event, 1, self.db.events.invizible_fields, self.db.events.editable_fields) self.layout.addWidget(self.dictViewer, 0, 2) self.event_ids = db.get_all_event_ids(self.alid) if action == delAction: res = QMessageBox.question( self, 'ВНИМАНИЕ!!!', "Вы действительно хотите удалить событие?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if res == QMessageBox.Yes: eid = self.listWidget.currentItem() if eid is not None: eid = self.listWidget.currentItem().whatsThis() self.db.del_event({'alid': self.alid, 'eid': eid}) self.listWidget.takeItem(self.listWidget.currentRow()) self.db.events.save() #self.changed = True self.event_ids = db.get_all_event_ids(self.alid) if action == delAllAction: res = QMessageBox.question( self, 'ВНИМАНИЕ!!!', "Вы действительно хотите удалить все события?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if res == QMessageBox.Yes: if self.db.del_all_events(int(self.alid)): self.listWidget.clear() self.db.events.save() #self.changed = True self.event_ids = db.get_all_event_ids(self.alid) #db.photos.save() if action == quitAction: self.accept() self.listWidget.setContextMenuPolicy(Qt.CustomContextMenu) self.listWidget.customContextMenuRequested.connect(openMenu) layout.addWidget(self.listWidget, 0, 0, 1, 1) layout.addWidget(self.photo_gallery, 0, 1, 1, 1) self.setLayout(layout)
def internal(item: QListWidgetItem): idx = self.__get_item_idx(self._instance.currentItem()) callback(idx, item.text())
def create_item(self, name, icon): """Create a standard list widget item, for option panel. Args: name: Name of option button icon: Icon name of option button Returns: item: created option button """ item = QListWidgetItem(self) item.setText(name) item.setIcon(QIcon(icon)) item.setStatusTip(name) item.setSizeHint(QSize(75, 70)) item.setTextAlignment(Qt.AlignCenter) item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) return item
def nextFile(self): print('nextFile PRESSED') filename = QFileDialog.getOpenFileName(self, "Choix Film") item = QListWidgetItem(filename[0]) self.ui.file_list.addItem(item)
def __init__(self, pid=0, db=0, mode=0): super().__init__() self.font = mainfont self.resize(500, self.height()) layout = QGridLayout() self.layout = layout self.buttext = [] self.last_alid = 0 self.listWidget = QListWidget() self.listWidget.itemDoubleClicked.connect(self.doubleClick) self.listWidget.itemSelectionChanged.connect(self.itemChanged) self.dictAlbum = QWidget() self.DICTVIEWERTYPE = type(DictViewer()) self.setFont(mainfont) self.db = db self.pid = pid self.album_ids = db.get_all_albums_ids() print(self.album_ids) if self.album_ids: for alid in self.album_ids: album = db.get_album_data(alid) print(album) self.dictAlbum = DictViewer(album, 1, self.db.albums.invizible_fields, self.db.albums.editable_fields) if album: text = '' text = album['title'] if type(album) == type( {}) and 'title' in album.keys( ) and album['title'] != '' else text item = QListWidgetItem(text) if type(album) == type({}) and 'alid' in album.keys(): item.setWhatsThis(str(album['alid'])) self.listWidget.addItem(item) self.listWidget.setCurrentRow(0) self.mode = mode def openMenu(position): # Создание PopupMenu menu = QMenu() openAction = menu.addAction('Открыть альбом') openEAction = menu.addAction('Открыть события') menu.addSeparator() if mode > 0: #importAction = menu.addAction('Выгрузить альбом') exportAction = menu.addAction('Добавить альбом') renameAction = menu.addAction('Переименовать альбом') #menu.addSeparator() #editAction = menu.addAction('Заменить') menu.addSeparator() delAction = menu.addAction('Удалить альбом') delAllAction = menu.addAction('Удалить все альбомы') menu.addSeparator() else: exportAction, delAction, delAllAction = QAction(), QAction( ), QAction() quitAction = menu.addAction('Выход') action = menu.exec_(self.mapToGlobal(position)) # Привязка событий к Actions if action == openAction: self.doubleClick(self.listWidget.currentItem()) if action == openEAction: item = self.listWidget.currentItem() if item is not None: alid = item.whatsThis() self.events = EventViewer(int(alid), db, 1) self.events.show() if action == exportAction: text, ok = QInputDialog().getText(self, "Название альбома", "Ввкдите название альбома:", QLineEdit.Normal, 'Альбом') if ok: res = self.db.add_album({'imid': -1, 'title': text}) if len(res) == 1: album = res[0] item = QListWidgetItem(text) item.setWhatsThis(str(album['alid'])) self.listWidget.addItem(item) self.album_ids = db.get_all_albums_ids() if action == renameAction: item = self.listWidget.currentItem() if item is not None: alid = item.whatsThis() album = db.get_album_data(alid) text, ok = QInputDialog().getText( self, "Название альбома", "Ввкдите название альбома:", QLineEdit.Normal, album['title']) if ok: album = db.edit_album({ 'alid': int(alid), 'imid': -1, 'title': text }) item.setText(text) if album: album = self.db.get_album_data(alid) # b = layout.takeAt(1) # self.dictAlbum.close() # b.widget().deleteLater() self.dictAlbum = DictViewer( album, 1, self.db.albums.invizible_fields, self.db.albums.editable_fields) self.layout.addWidget(self.dictAlbum, 0, 1) self.album_ids = db.get_all_albums_ids() if action == delAction: res = QMessageBox.question( self, 'ВНИМАНИЕ!!!', "Вы действительно хотите удалить альбом?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if res == QMessageBox.Yes: self.delete_item() if action == delAllAction: res = QMessageBox.question( self, 'ВНИМАНИЕ!!!', "Вы действительно хотите удалить все альбомы?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if res == QMessageBox.Yes: item = self.listWidget.currentItem() while item is not None: self.delete_item() item = self.listWidget.currentItem() self.album_ids = db.get_all_albums_ids() if action == quitAction: self.accept() self.setContextMenuPolicy(Qt.CustomContextMenu) self.customContextMenuRequested.connect(openMenu) layout.addWidget(self.listWidget, 0, 0) layout.addWidget(self.dictAlbum, 0, 1) self.setLayout(layout)
def _add_character_to_list(target_list: QListWidget, character: PropertyContainer): item = QListWidgetItem() item.setText(character.get_display_name()) item.setData(QtCore.Qt.UserRole, character) target_list.addItem(item)
def fill_main_item_list(self): for i in range(10): item = QListWidgetItem("Menu {}".format(i)) item.setSizeHint(QSize(item.sizeHint().width(), 50)) self.item_list.addItem(item)
def addTemplate(self, template): item = QListWidgetItem() view = Item(template, self.subject) item.setSizeHint(view.sizeHint()) self.addItem(item) self.setItemWidget(item, view)
def create_list(self): path_list = self.ui.hdf5_paths path_list.clear() for i in range(len(self.paths)): path = QListWidgetItem(self.paths[i], path_list) path_list.addItem(path)
def selection_changed(self): if not splash.isHidden(): splash.showMessage(f"Finishing (2/3) - Loading first app..", color=splash_color) try: # app_name = self.ui.listAppsWidget.currentItem().text() data = self.ui.listAppsWidget.currentItem().data(Qt.UserRole) app_name = data[0] except Exception: app_name = None if app_name is not None: # Set active tab to first self.ui.tabMetadata.setCurrentIndex(0) # Hide icon self.ui.HomebrewIconLabel.hide() # Clear supported controllers listview: self.ui.SupportedControllersListWidget.clear() # Set data data = self.ui.listAppsWidget.currentItem().data(Qt.UserRole) # -- Get actual metadata # App Name self.ui.appname.setText(data[1]) self.ui.SelectionInfoBox.setTitle("Metadata: " + data[1]) self.ui.label_displayname.setText(data[1]) # File Size try: self.ui.filesize.setText(metadata.file_size(data[2])) except KeyError: self.ui.filesize.setText("Unknown") # Category self.ui.HomebrewCategoryLabel.setText( metadata.category_display_name(data[3])) # Release Date self.ui.releasedate.setText( datetime.fromtimestamp(int( data[4])).strftime('%B %e, %Y at %R')) # Controllers controllers = metadata.parse_controllers(data[5]) # Add icons for Wii Remotes if controllers[0] > 1: item = QListWidgetItem() item.setText(f"{str(controllers[0])} Wii Remotes") item.setIcon( QIcon( resource_path( f"assets/gui/icons/controllers/{str(controllers[0])}WiiRemote.png" ))) item.setToolTip( f"This app supports up to {str(controllers[0])} Wii Remotes." ) self.ui.SupportedControllersListWidget.addItem(item) elif controllers[0] == 1: item = QListWidgetItem() item.setText(f"1 Wii Remote") item.setIcon( QIcon( resource_path( f"assets/gui/icons/controllers/1WiiRemote.png"))) item.setToolTip("This app supports a single Wii Remote.") self.ui.SupportedControllersListWidget.addItem(item) if controllers[1] is True: item = QListWidgetItem() item.setText(f"Nunchuk") item.setIcon( QIcon( resource_path( f"assets/gui/icons/controllers/Nunchuk.png"))) item.setToolTip("This app can be used with a Nunchuk.") self.ui.SupportedControllersListWidget.addItem(item) if controllers[2] is True: item = QListWidgetItem() item.setText(f"Classic Controller") item.setIcon( QIcon( resource_path( f"assets/gui/icons/controllers/ClassicController.png" ))) item.setToolTip( "This app can be used with a Classic Controller.") self.ui.SupportedControllersListWidget.addItem(item) if controllers[3] is True: item = QListWidgetItem() item.setText(f"GameCube Controller") item.setIcon( QIcon( resource_path( f"assets/gui/icons/controllers/GamecubeController.png" ))) item.setToolTip( "This app can be used with a Gamecube Controller.") self.ui.SupportedControllersListWidget.addItem(item) if controllers[4] is True: item = QListWidgetItem() item.setText(f"Wii Zapper") item.setIcon( QIcon( resource_path( f"assets/gui/icons/controllers/WiiZapper.png"))) item.setToolTip("This app can be used with a Wii Zapper.") self.ui.SupportedControllersListWidget.addItem(item) if controllers[5] is True: item = QListWidgetItem() item.setText(f"USB Keyboard") item.setIcon( QIcon( resource_path( f"assets/gui/icons/controllers/USBKeyboard.png"))) item.setToolTip("This app can be used with a USB Keyboard.") self.ui.SupportedControllersListWidget.addItem(item) if controllers[6] is True: item = QListWidgetItem() item.setText(f"SDHC Card") item.setIcon( QIcon( resource_path( f"assets/gui/icons/controllers/SDHC.png"))) item.setToolTip("This app is confirmed to support SDHC cards.") self.ui.SupportedControllersListWidget.addItem(item) # Version self.ui.version.setText(data[6]) # Coder self.ui.developer.setText(data[7]) # Short Description if data[8] == "": self.ui.label_description.setText("No description specified.") else: self.ui.label_description.setText(data[8]) # Long Description self.ui.longDescriptionBrowser.setText(data[9]) # File Name Line Edit self.ui.FileNameLineEdit.setText(app_name + ".zip") self.ui.DirectLinkLineEdit.setText( metadata.url(app_name, repo=HOST)) self.ui.progressBar.setValue(0) self.repaint() # Load icon self.load_icon(app_name=app_name, repo=HOST) self.status_message("Ready to download")
def add_list_widget_item(self, spent_category : SpentCategory): item = QListWidgetItem() item.setText(spent_category.name) self.ui.lw_spent_categories_list.addItem(item) self.enable_widgets() self.ui.lw_spent_categories_list.setCurrentRow(self.ui.lw_spent_categories_list.count() - 1)
def openMenu(position): # Создание PopupMenu menu = QMenu() openAction = menu.addAction('Открыть альбом') openEAction = menu.addAction('Открыть события') menu.addSeparator() if mode > 0: #importAction = menu.addAction('Выгрузить альбом') exportAction = menu.addAction('Добавить альбом') renameAction = menu.addAction('Переименовать альбом') #menu.addSeparator() #editAction = menu.addAction('Заменить') menu.addSeparator() delAction = menu.addAction('Удалить альбом') delAllAction = menu.addAction('Удалить все альбомы') menu.addSeparator() else: exportAction, delAction, delAllAction = QAction(), QAction( ), QAction() quitAction = menu.addAction('Выход') action = menu.exec_(self.mapToGlobal(position)) # Привязка событий к Actions if action == openAction: self.doubleClick(self.listWidget.currentItem()) if action == openEAction: item = self.listWidget.currentItem() if item is not None: alid = item.whatsThis() self.events = EventViewer(int(alid), db, 1) self.events.show() if action == exportAction: text, ok = QInputDialog().getText(self, "Название альбома", "Ввкдите название альбома:", QLineEdit.Normal, 'Альбом') if ok: res = self.db.add_album({'imid': -1, 'title': text}) if len(res) == 1: album = res[0] item = QListWidgetItem(text) item.setWhatsThis(str(album['alid'])) self.listWidget.addItem(item) self.album_ids = db.get_all_albums_ids() if action == renameAction: item = self.listWidget.currentItem() if item is not None: alid = item.whatsThis() album = db.get_album_data(alid) text, ok = QInputDialog().getText( self, "Название альбома", "Ввкдите название альбома:", QLineEdit.Normal, album['title']) if ok: album = db.edit_album({ 'alid': int(alid), 'imid': -1, 'title': text }) item.setText(text) if album: album = self.db.get_album_data(alid) # b = layout.takeAt(1) # self.dictAlbum.close() # b.widget().deleteLater() self.dictAlbum = DictViewer( album, 1, self.db.albums.invizible_fields, self.db.albums.editable_fields) self.layout.addWidget(self.dictAlbum, 0, 1) self.album_ids = db.get_all_albums_ids() if action == delAction: res = QMessageBox.question( self, 'ВНИМАНИЕ!!!', "Вы действительно хотите удалить альбом?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if res == QMessageBox.Yes: self.delete_item() if action == delAllAction: res = QMessageBox.question( self, 'ВНИМАНИЕ!!!', "Вы действительно хотите удалить все альбомы?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if res == QMessageBox.Yes: item = self.listWidget.currentItem() while item is not None: self.delete_item() item = self.listWidget.currentItem() self.album_ids = db.get_all_albums_ids() if action == quitAction: self.accept()
def add_item(self, item: str, is_editable=True): self.__items.append(QListWidgetItem(item, self._instance)) if is_editable: self.__items[-1].setFlags(self.__items[-1].flags() | Qt.ItemIsEditable) self._instance.addItem(self.__items[-1])
def initDevices(self): for device in self.devices: newItem = QListWidgetItem() newItem.setText(device.name + " (" + device.address + ")") self.listWidget.addItem(newItem)
import sys from PySide2.QtWidgets import QApplication, QListWidget, QListWidgetItem from PySide2.QtCore import Qt if __name__ == '__main__': app = QApplication(sys.argv) lw = QListWidget() for i in range(5): text = f'Item {i}' item = QListWidgetItem(text) item.setCheckState(Qt.Unchecked) lw.addItem(item) lw.setDragDropMode(lw.InternalMove) lw.show() sys.exit(app.exec_())
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 write_to_file_CV(ui, CV, CV_window, AP_params): """ This function is connect to save file button. Parameters ------ CV : the Ui_CV object CV_window: the CV QMainWindow object AP_parameters: list that contains the advanced parameters """ config_params = get_parameters(CV, 'CV', AP_params) data_out_name = config_params[3] data_out_path = config_params[4] filename_list = os.listdir(data_out_path) config_writer_CV(*config_params) filename = os.path.join(data_out_path, data_out_name + "_CV_config.yml") filename_parse = filename.split('/')[-1].strip() # list all the filename in the experiment queue, stored in queue_filename queue_filename = [] for x in range(ui.experiment_queue.count()): queue_filename.append( ui.experiment_queue.item(x).data(2).split('.yml')[0] + '.yml') if filename_parse in filename_list: if warning('The filename exists. Do you want to overwrite it?'): CV_window.close() if filename_parse not in queue_filename: item = QListWidgetItem() icon = QIcon("../pics/icon_cv.ico") item.setData(1, icon) item.setData(2, filename_parse) item.setData(3, filename) ui.experiment_queue.addItem(item) return else: return else: return if warning('The file is saved. Do you want to exit the window?'): CV_window.close() item = QListWidgetItem() icon = QIcon("../pics/icon_cv.ico") item.setData(1, icon) item.setData(2, filename_parse) item.setData(3, filename) ui.experiment_queue.addItem(item)
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)
def run(self): # next() raises a StopIteration exception when the generator ends. # If this exception is unhandled by run(), it causes thread termination. # If wdg internal C++ object was destroyed by main thread (form closing) # a RuntimeError exception is raised and causes thread termination too. # Thus, no further synchronization is needed. from bLUeTop import exiftool with exiftool.ExifTool() as e: while True: try: filename = next(self.fileListGen) # get orientation try: # read metadata from sidecar (.mie) if it exists, otherwise from image file. profile, metadata = e.get_metadata( filename, tags=("colorspace", "profileDescription", "orientation", "model", "rating", "FileCreateDate"), createsidecar=False) except ValueError: metadata = {} # get image info tmp = [ value for key, value in metadata.items() if 'orientation' in key.lower() ] orientation = tmp[ 0] if tmp else 1 # metadata.get("EXIF:Orientation", 1) # EXIF:DateTimeOriginal seems to be missing in many files tmp = [ value for key, value in metadata.items() if 'date' in key.lower() ] date = tmp[ 0] if tmp else '' # metadata.get("EXIF:ModifyDate", '') tmp = [ value for key, value in metadata.items() if 'rating' in key.lower() ] rating = tmp[ 0] if tmp else 0 # metadata.get("XMP:Rating", 5) rating = ''.join(['*'] * int(rating)) transformation = exiftool.decodeExifOrientation( orientation) # get thumbnail img = e.get_thumbNail(filename, thumbname='thumbnailimage') # no thumbnail found : try preview if img.isNull(): img = e.get_thumbNail( filename, thumbname='PreviewImage' ) # the order is important : for jpeg PreviewImage is full sized ! # all failed : open image if img.isNull(): img = QImage(filename) # remove possible black borders, except for .NEF if filename[-3:] not in ['nef', 'NEF']: bBorder = 7 img = img.copy( QRect(0, bBorder, img.width(), img.height() - 2 * bBorder)) pxm = QPixmap.fromImage(img) if not transformation.isIdentity(): pxm = pxm.transformed(transformation) # set item caption and tooltip item = QListWidgetItem( QIcon(pxm), basename(filename)) # + '\n' + rating) item.setToolTip( basename(filename) + ' ' + date + ' ' + rating) # set item mimeData to get filename=item.data(Qt.UserRole)[0] transformation=item.data(Qt.UserRole)[1] item.setData(Qt.UserRole, (filename, transformation)) self.wdg.addItem(item) # for clean exiting we catch all exceptions and force break except OSError: continue except: break
def addattr_handler(self): text = self.attr.text() if text != "": self.attr.clear() self.to_attrs.addItem(QListWidgetItem(text))
def openMenu(position): # Создание PopupMenu menu = QMenu() if mode > 0: addAction = menu.addAction('Добавить событие') #menu.addSeparator() editAction = menu.addAction('Переименовать событие') #menu.addSeparator() delAction = menu.addAction('Удалить событие') delAllAction = menu.addAction('Удалить все события') menu.addSeparator() else: addAction, editAction, delAction, delAllAction = QAction( ), QAction(), QAction(), QAction() quitAction = menu.addAction('Выход') action = menu.exec_(self.mapToGlobal(position)) # Привязка событий к Actions if action == addAction: text, ok = QInputDialog().getText(self, "Название события", "Ввкдите название события:", QLineEdit.Normal, '') if ok: text = 'Новое событие' if text == '' else text res = self.db.add_event({ 'alid': self.alid, 'event_head': text }) if len(res) == 1: event = res[0] text = event['event_head'] if type(event) == type( {} ) and 'event_head' in event.keys( ) and event['event_head'] != '' else 'Новое событие' item = QListWidgetItem(text) item.setWhatsThis(str(event['eid'])) self.listWidget.addItem(item) db.events.save() #self.changed = True self.event_ids = db.get_all_event_ids(self.alid) if action == editAction: eid = self.listWidget.currentItem() if eid is not None: eid = self.listWidget.currentItem().whatsThis() last_name = self.db.get_event_data(self.alid, eid)['event_head'] text, ok = QInputDialog().getText( self, "Название события", "Ввкдите новое название события:", QLineEdit.Normal, str(last_name)) if ok: event = self.db.edit_event({ 'alid': self.alid, 'eid': eid, 'event_head': text }) self.listWidget.currentItem().setText(text) self.db.events.save() if event: event = self.db.get_event_data(alid, eid) #b = layout.takeAt(1) self.dictViewer.close() #b.widget().deleteLater() self.dictViewer = DictViewer( event, 1, self.db.events.invizible_fields, self.db.events.editable_fields) self.layout.addWidget(self.dictViewer, 0, 2) self.event_ids = db.get_all_event_ids(self.alid) if action == delAction: res = QMessageBox.question( self, 'ВНИМАНИЕ!!!', "Вы действительно хотите удалить событие?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if res == QMessageBox.Yes: eid = self.listWidget.currentItem() if eid is not None: eid = self.listWidget.currentItem().whatsThis() self.db.del_event({'alid': self.alid, 'eid': eid}) self.listWidget.takeItem(self.listWidget.currentRow()) self.db.events.save() #self.changed = True self.event_ids = db.get_all_event_ids(self.alid) if action == delAllAction: res = QMessageBox.question( self, 'ВНИМАНИЕ!!!', "Вы действительно хотите удалить все события?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if res == QMessageBox.Yes: if self.db.del_all_events(int(self.alid)): self.listWidget.clear() self.db.events.save() #self.changed = True self.event_ids = db.get_all_event_ids(self.alid) #db.photos.save() if action == quitAction: self.accept()
def input_reset(self, l: int = 0): self.ui.input.clear() for i in range(l): temp_item = QListWidgetItem("") temp_item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEditable | Qt.ItemIsDragEnabled | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) self.ui.input.addItem(temp_item)
def _set_icon(self, result: Tuple[int, QIcon, str, str]): (idx, icon, filepath, label) = result item = QListWidgetItem(icon, label) # Store filepath to be retrieved by other components item.setData(Qt.StatusTipRole, filepath) self._gallery.addItem(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 _fill_list_with_scene_objects(self, scene): for sceneObject in self._filter_function(scene): item = QListWidgetItem() item.setText(sceneObject.name) item.setData(Qt.UserRole, sceneObject.node_id) self.sceneObjectListWidget.addItem(item)
def append_wifi_data(self, data): """ Append data to list in WiFi list tab """ self.clear_wifi_list.emit() i = 1 for i in data: if self.current_lang == "Polski": item = QListWidgetItem( 'BSID: ' + str(i) + ' \nKanał: ' + str(data[i][1]) + ' \nRSSI: ' + str(data[i][0]) + ' dBm \nMAC: ' + str(data[i][3]) + ' (Producent: ' + str(manu.search_manufacturer_by_mac(str(data[i][3]))) + ')') else: item = QListWidgetItem( 'BSID: ' + str(i) + ' \nChannel: ' + str(data[i][1]) + ' \nRSSI: ' + str(data[i][0]) + ' dBm \nMAC: ' + str(data[i][3]) + ' (Manufacturer: ' + str(manu.search_manufacturer_by_mac(str(data[i][3]))) + ')') if int(abs(data[i][0])) < 50: item.setIcon(QIcon('icons/icons8-no-connection-64-green.png')) elif int(abs(data[i][0])) >= 50 and int(abs(data[i][0])) < 70: item.setIcon(QIcon('icons/icons8-no-connection-64-blue.png')) elif int(abs(data[i][0])) >= 70 and int(abs(data[i][0])) < 80: item.setIcon(QIcon('icons/icons8-no-connection-64-orange.png')) elif int(abs(data[i][0])) >= 80 and int(abs(data[i][0])) < 90: item.setIcon(QIcon('icons/icons8-no-connection-64-red.png')) elif int(abs(data[i][0])) >= 90: item.setIcon(QIcon('icons/icons8-no-connection-64-black.png')) self.append_wifi_list_item.emit(item) self.loop = QEventLoop() QTimer.singleShot(50, self.loop.quit) self.loop.exec_()