def addNodeItem(self, index): type = index.internalPointer().typeInfo() if type in [ typ.SEQUENCE_NODE, typ.SELECTOR_NODE, typ.FAILURE_NODE, typ.SUCCESS_NODE ]: item = NodeGraphicsItem(type) elif type == typ.SET_NODE: item = SetNodeGraphicsItem(type) item.setIndexValues(index.siblingAtColumn(col.SET_VALUES_BY_NAME)) elif type == typ.WAIT_TIME_NODE: item = WaitTimeNodeGraphicsItem(type) item.setIndexWaitTime(index.siblingAtColumn(col.WAIT_TIME)) else: item = NodeGraphicsItem(type) print("Node not defined in behavior view", str(type)) if not index.internalPointer().isLeaf(): item.setIsBranch() item.setIndexXPos( QtCore.QPersistentModelIndex(index.siblingAtColumn(col.X))) item.setIndexYPos( QtCore.QPersistentModelIndex(index.siblingAtColumn(col.Y))) item.setCallback(self.setData) item.setDeleteCallback(self.removeGraphicItem) item.setAddCallback(self.addGraphicItem) if index.internalPointer().parent().typeInfo() == 'root': item.setIsRoot(True) self._scene.addItem(item) p_index = QtCore.QPersistentModelIndex(index) #self._scene_items.append((QtCore.QPersistentModelIndex(index), item)) self._scene_items.append((p_index, item)) self.updateNodeItem(index) #Add lines between nodes if index.parent().internalPointer(): parent_item = self.graphicItemFromIndex(index.parent()) new_path = Path(parent_item.centerBottomPos(), item.centerTopPos()) self._scene.addItem(new_path) self._paths.append((QtCore.QPersistentModelIndex(index), new_path)) item.addLine(new_path, 1) parent_item.addLine(new_path, 0)
def highlight_item_row(self, item): """ highlight the entire row containing a table item @param item: table item """ try: if not item.index().isValid(): return parent = item.parent() if parent is None: parent = item if not parent.hasChildren(): self.highlight_item(parent) return row = item.row() column_num = parent.columnCount() for column in xrange(0, column_num): if self.functionModel.hasIndex(row, column, parent.index()): cur_index = self.functionModel.index(row, column, parent.index()) self.highlight_item(self.functionModel.itemFromIndex(cur_index)) persistent_index = QtCore.QPersistentModelIndex(cur_index) self.highligthed_items.append(persistent_index) except Exception as ex: idaapi.msg("Error while highlighting item row: %s\n" % ex)
def detect_button_click(self): detect_form = Detect_Dialog() detect_form.setupUi(detect_form) ap_number_list = list() for currentRows in self.ScantableWidget.selectionModel().selectedRows( ): row = QtCore.QPersistentModelIndex(currentRows).row() ap_number_list.append(row) if len(ap_number_list) <= 1: QtWidgets.QMessageBox.critical(self, "Error", "Select at least two item") else: ap_str_list = [str(i + 1) for i in ap_number_list] ap_str = ','.join(ap_str_list) detect_form.AP_list.setText(ap_str) detect_form.Listen_card.addItems(items) detect_form.Send_card.addItems(items) if ap_number_list[0]: target_akm = self.ScantableWidget.item(ap_number_list[0], 4) if target_akm: detect_form.AP_akm.setText(target_akm.text()) if detect_form.exec(): listen_card = detect_form.get_listen_card() send_card = detect_form.get_send_card() key = detect_form.get_ap_key() self.detect_thread = DetectThread(listen_card, send_card, key, ap_number_list, self.scan_list) self.detect_thread.TextBrowser_text_signal.connect( self.__on_TextBroswer) self.detect_thread.TextBrowser_div_signal.connect( self.__on_div_Broswer) self.detect_thread.start()
def edit_record(self, sourceIdx): if len(self.treeView.selectionModel().selectedRows()) > 1: reply = QtWidgets.QMessageBox.question( self, f"Editing multiple records", f"Do you want to edit *all* the selected records?\rYes = Edit all records, No = Edit only current recaord", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No | QtWidgets.QMessageBox.Cancel, QtWidgets.QMessageBox.Yes, ) if reply == QtWidgets.QMessageBox.Yes: for proxy_index in self.treeView.selectionModel().selectedRows(): proxy_model = proxy_index.model() index = proxy_model.mapToSource(proxy_index) p_index = QtCore.QPersistentModelIndex(index) dlgDetail(self, p_index) return True if not sourceIdx: sourceIdx = self.treeView.currentIndex() if not sourceIdx.isValid(): trace("not selection") return False # only single selection trace("single selection") proxy_model = sourceIdx.model() index = proxy_model.mapToSource(sourceIdx) dlgDetail(self, index) self.updateStatus()
def _get_selected_rows(self): index_list = [] for model_index in self.table_pulse_params.selectionModel( ).selectedRows(): index = QtCore.QPersistentModelIndex(model_index) index_list.append(index) return index_list
def createRowEditWidget(self, tableWidget, row, col, editCallback, deleteCallback ): wd = QtWidgets.QWidget() layout = QtWidgets.QHBoxLayout(wd) index = QtCore.QPersistentModelIndex(tableWidget.model().index(row, col)) editBtn = self.createToolButton( tableWidget, 'Editar', self.getEditIconPath() ) editBtn.clicked.connect( lambda *args, index=index: editCallback(index) ) layout.addWidget(editBtn) deleteBtn = self.createToolButton( tableWidget, 'Deletar', self.getDeleteIconPath() ) deleteBtn.clicked.connect( lambda *args, index=index: deleteCallback(index) ) layout.addWidget(deleteBtn) layout.setAlignment(QtCore.Qt.AlignCenter) layout.setContentsMargins(0,0,0,0) return wd
def cell_hover(self, index): if index != self._last_hover_index: self.cellExited.emit(self._last_hover_index.row(), self._last_hover_index.column()) self.cellEntered.emit(index.row(), index.column()) self._last_hover_index = QtCore.QPersistentModelIndex(index)
def prune_models(self, valid_paths): # To be executed when the library is updated by folder # All files in unselected directories will have to be removed # from both of the models # They will also have to be deleted from the library valid_paths = set(valid_paths) # Get all paths all_paths = set() for i in range(self.view_model.rowCount()): item = self.view_model.item(i, 0) item_metadata = item.data(QtCore.Qt.UserRole + 3) book_path = item_metadata['path'] all_paths.add(book_path) invalid_paths = all_paths - valid_paths deletable_persistent_indexes = [] for i in range(self.view_model.rowCount()): item = self.view_model.item(i) path = item.data(QtCore.Qt.UserRole + 3)['path'] if path in invalid_paths: deletable_persistent_indexes.append( QtCore.QPersistentModelIndex(item.index())) if deletable_persistent_indexes: for i in deletable_persistent_indexes: self.view_model.removeRow(i.row()) # Remove invalid paths from the database as well database.DatabaseFunctions( self.parent.database_path).delete_from_database( 'Path', invalid_paths)
def remove_row(): index_list = [ QtCore.QPersistentModelIndex(row) for row in self.clients_table.selectionModel().selectedRows() ] for index in index_list: self.clients_table.removeRow(index.row())
def printAppResult(self, vals, lines, searched_word_indices): val_1 = val_2 = val_3 = val_4 = val_5 = 0 self.lcdBereshit.display(vals[0]) self.lcdShemot.display(vals[1]) self.lcdVaykra.display(vals[2]) self.lcdBamidbar.display(vals[3]) self.lcdDevarim.display(vals[4]) self.lcdSomma.display(sum(vals)) #immette il modello (i dati elaborati da Pandas) nella QTableView "listOutput" lines.data(lines.index(7, 2), role=QtCore.Qt.BackgroundRole) self.listOutput.setModel(lines) # self.listOutput.setShowGrid(False) # -> pyhton pandas code per lista di index di valori in tabella -> df.index[df["column name"] == "wanted_data"] #list cohomprension per ottenere lista di indici relativi alla parola cercata (identità di lemma) nel df di output # NB: 2 è il numero della colonna "words" -> cambia solo se si riduce il numero di colonne! Al posto di "2" immettere SOLO il numero della colonna "words" # (col count starts from "0") # lista come oggetto QT searched_word_matches = [ QtCore.QPersistentModelIndex(self.listOutput.model().index( item, 2)) for item in searched_word_indices ] # lista resa leggibile con le funzioni index.row() ..column() e ...data() # struttura lista: lvl1: gruppo [row, column, word] lvl2: 0 riga, 1, colonna, 2 parola. la visualizzazione in console viene ribaltata a causa dell'uso dei caratteri ebraici searched_word_matches = [[item.row(), item.column(), item.data()] for item in searched_word_matches]
def prune_models(self, valid_paths): # To be executed when the library is updated by folder # All files in unselected directories will have to be removed # from both of the models # They will also have to be deleted from the library invalid_paths = [] deletable_persistent_indexes = [] for i in range(self.libraryModel.rowCount()): item = self.libraryModel.item(i) item_metadata = item.data(QtCore.Qt.UserRole + 3) book_path = item_metadata['path'] try: addition_mode = item_metadata['addition_mode'] except KeyError: addition_mode = 'automatic' print('Libary: Error setting addition mode for prune') if (book_path not in valid_paths and (addition_mode != 'manual' or addition_mode is None)): invalid_paths.append(book_path) deletable_persistent_indexes.append( QtCore.QPersistentModelIndex(item.index())) if deletable_persistent_indexes: for i in deletable_persistent_indexes: self.libraryModel.removeRow(i.row()) # Remove invalid paths from the database as well database.DatabaseFunctions( self.main_window.database_path).delete_from_database( 'Path', invalid_paths)
def cleanprocess(self): self.taskmanagerui.tasks.setSelectionMode( QAbstractItemView.MultiSelection) indextoremove = [] for i, v in enumerate(self.mylistofprocesses): if v.state() == 0: indextoremove.append(i) self.taskmanagerui.tasks.selectRow(i) self.rowcount = self.rowcount - 1 else: print(v.pid()) #self.taskmanagerui.tasks.repaint() index_list = [] for model_index in self.taskmanagerui.tasks.selectionModel( ).selectedRows(): index = QtCore.QPersistentModelIndex(model_index) index_list.append(index) for index in index_list: self.taskmanagerui.tasks.removeRow(index.row()) self.mylistofprocesses = [ i for j, i in enumerate(self.mylistofprocesses) if j not in indextoremove ] self.taskmanagerui.tasks.setSelectionMode( QAbstractItemView.NoSelection) self.taskmanagerui.tasks.repaint()
def connectWidgetExpression(self, row, col, ruleValue, widgetExpression): index = QtCore.QPersistentModelIndex(self.tableWidget.model().index( row, col)) widgetExpression.setExpression(ruleValue) widgetExpression.expressionChanged.connect( lambda *args, index=index, widget=widgetExpression: self. handleWidgetExpression(index, widget)) return widgetExpression
def on_clicked(self, index): if not self.model.hasChildren(index): self.clicked.emit(index) return action = self.toolbar.addAction(index.data()) action.setData(QtCore.QPersistentModelIndex(index)) self.listview.setRootIndex(index) print(index.data())
def removeIngredient(self): indexes = [QtCore.QPersistentModelIndex(index) for index in self.doseTableView.selectionModel().selectedRows()] if indexes == []: return 'Выберите дозу.' for index in indexes: RecordRemoverService.removeRecord(self, self.doseTableView.model(), index.row()) self.doseTableView.model().select() self.fillComboBox()
def del_Item(self, type): index_list = [] for model_index in self.tableWidget.selectionModel().selectedRows(): index = QtCore.QPersistentModelIndex(model_index) index_list.append(index) for self.index in index_list: if type == 1: self.tableWidget.removeRow(self.index.row())
def remove_disk(self): index_list = [] for model_index in self.disksListView.selectionModel().selectedRows(): index = QtCore.QPersistentModelIndex(model_index) index_list.append(index) for index in index_list: self.disksModel.removeRow(index.row()) self.get_targets_disks()
def del_vector(self): index_list = [] for model_index in self.vectorTbl.selectionModel().selectedRows(): index = QtCore.QPersistentModelIndex(model_index) index_list.append(index) for index in index_list: self.vectorTbl.removeRow(index.row())
def remove_row(self): index_list = [] for model_index in self.view.table.selectionModel().selectedRows(): index = QtCore.QPersistentModelIndex(model_index) index_list.append(index) for index in index_list: self.model.removeRow(index.row()) self.view.update_view()
def data(self, index, role): # return data in a single cell if not index.isValid(): return False if role == qtc.Qt.TextAlignmentRole: return qtc.Qt.AlignCenter if role == qtc.Qt.CheckStateRole and index.column() == self.VIS_COL: return self.checkState(qtc.QPersistentModelIndex(index)) if role in [qtc.Qt.DisplayRole, qtc.Qt.EditRole]: return self.character_table[index.row()][index.column()] return None
def selectedFiles(self): indexes = [] count = self.list.model().rowCount() for row in range(count): item = self.list.model().item(row) if item.checkState() == QtCore.Qt.Checked: index = QtCore.QPersistentModelIndex(item.index()) indexes.append((index, item.text())) return indexes
def actionDeleteHandler(self): index_list = [] for model_idx in self.tableWidget.selectionModel().selectedRows(): index = QtCore.QPersistentModelIndex(model_idx) index_list.append(index) # 绝对不可以一边遍历一边删除,会删不完 for index in index_list: self.logging_signal.emit( f"从候选区删除{self.tableWidget.item(index.row(), 3).text()}") self.tableWidget.removeRow(index.row())
def delete(self): # print("delete") index_list = [] for model_index in self.tableWidget.selectionModel().selectedRows(): index = QtCore.QPersistentModelIndex(model_index) index_list.append(index) self.rowNo = self.rowNo - len(index_list) for index in index_list: self.tableWidget.removeRow(index.row())
def removeRAW(self): index_list = [] for row_index in self.tableCasos.selectionModel().selectedRows(): index = QtCore.QPersistentModelIndex(row_index) index_list.append(index) for index in index_list: filename = index.data() self.scenarios.pop(filename) self.tableCasos.removeRow(index.row()) self.printOutputBar("Caso Removido: " + filename) self.enableButtons()
def del_action(self): # for items in self.selectionModel().selectedRows(): # print(self.model.item(items.row(), 0).child(0,1)) # self.model.removeRow(items.row()) index_list = [] for model_index in self.selectionModel().selectedRows(): index = QtCore.QPersistentModelIndex(model_index) index_list.append(index) for index in index_list: self.model.removeRow(index.row())
def removeRow(self): if self.dataTableView.model( ) == None or self.dataTableView.selectionModel().hasSelection( ) == False: return 'Выберите строку для удаления.' indexes = [ QtCore.QPersistentModelIndex(index) for index in self.dataTableView.selectionModel().selectedRows() ] for index in indexes: RecordRemoverService.removeRecord(self, self.dataTableView.model(), index.row())
def removeFiles(self): table = self.ui.tbl_fileList index_list = [] for model_index in table.selectionModel().selectedRows(): index = QtCore.QPersistentModelIndex(model_index) index_list.append(index) for index in index_list: ind = index.row() table.removeRow(ind) if table.rowCount() < 1: self.ui.btn_Remove.setEnabled(False) self.ui.btn_Convert.setEnabled(False) self.verSelected()
def onClickButtonDelete(self): # 删除tableWidget选中的行 index_list = [] for model_idx in self.tableWidget.selectionModel().selectedRows(): index = QtCore.QPersistentModelIndex(model_idx) index_list.append(index) # 绝对不可以一边遍历一边删除,会删不完 for index in index_list: self.logging_signal.emit( f"删除{self.tableWidget.item(index.row(), 0).text()}-" f"{self.tableWidget.item(index.row(), 1).text()}") self.tableWidget.removeRow(index.row())
def createColorBtn(self, row, col, colorRgb): wd = QtWidgets.QWidget() layout = QtWidgets.QHBoxLayout(wd) button = QtWidgets.QPushButton('', self.tableWidget) button.setStyleSheet("QPushButton {background-color: rgb(" + colorRgb + ")}") index = QtCore.QPersistentModelIndex(self.tableWidget.model().index( row, col)) button.clicked.connect( lambda *args, index=index: self.handleColorBtn(index)) layout.addWidget(button) layout.setContentsMargins(0, 0, 0, 0) return wd
def deleteInvalidEntry(self): indexList = [] indexes = self.invalidTable.selectionModel().selectedRows() for index in sorted(indexes): user = index.sibling(index.row(), index.column()).data() question = index.sibling(index.row(), index.column() + 1).data() answer = index.sibling(index.row(), index.column() + 2).data() row = QtCore.QPersistentModelIndex(index) indexList.append(row) self.db.deleteTableData(user, question, answer) for rowIndex in indexList: self.invalidTable.removeRow(rowIndex.row())