def on_tableview_currentRowChanged(self, current: QModelIndex, previous: QModelIndex): if current.isValid(): row = current.row() self._on_currentListDataChanged(self._acqs[row]) pass pass
def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: if index.row() == 0: return Qt.ItemIsSelectable elif index.column() == 0: return Qt.ItemIsSelectable | Qt.ItemIsEnabled else: return Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable
def setCurrentIndex(self, index: QModelIndex, command: QItemSelectionModel.SelectionFlags) -> None: if not index.isValid(): return # always focus column 3 index = self.model().index(index.row(), 3) super().setCurrentIndex(index, command)
def setData(self, index: QModelIndex, value: Any, _role: int = 0) -> bool: if not index.isValid(): return False col = self.getColumnKey(index.column()) row = index.row() asyncio.create_task(self.setDataInternal(col, row, str(value))) return True
def moveRows(self, sourceParent: PySide6.QtCore.QModelIndex, sourceRow: int, count: int, destinationParent: PySide6.QtCore.QModelIndex, destinationChild: int) -> bool: if sourceRow < 0 or sourceRow + count - 1 >= self.rowCount( sourceParent ) or destinationChild < 0 or destinationChild > self.rowCount( destinationParent ) or sourceRow == destinationChild - 1 or count <= 0: return False if not self.beginMoveRows(QModelIndex(), sourceRow, sourceRow + count - 1, QModelIndex(), destinationChild): return False fromRow = sourceRow if destinationChild < sourceRow: fromRow += count - 1 else: destinationChild -= 1 while count > 0: self.layouts.insert(destinationChild, self.layouts.pop(fromRow)) count -= 1 self.endMoveRows() # fromRow = (sourceRow + count - # 1) if destinationChild < sourceRow else sourceRow # while count > 0: # count -= 1 # print(f'{fromRow} <-> {destinationChild}') # self.layouts.insert(destinationChild, self.layouts.pop(fromRow)) # self.endMoveRows() return True
def data(self, index: QModelIndex, role=...): if not index.isValid(): return None if index.row() >= self.rowCount() or index.column() >= self.columnCount(): return None if role == Qt.DisplayRole: return self._table[index.row()][index.column()]
def rowCount(self, in_index: qtc.QModelIndex): if in_index.isValid(): node: Any = in_index.internalPointer() if type(node) is Folder: return len(node.children) return 0 return len(self.tree.children)
def createEditor(self, parent, option, index: QtCore.QModelIndex): col = index.column() self.items = [] if col == 2: self.items = ["Pocket", "Inside", "Outside", "Engrave"] if col == 7: self.items = ["Union", "Intersection", "Difference", "Xor"] if col == 8: self.items = ["Conventional", "Climb"] if col == 9: self.items = ["inch", "mm"] editor = PMFComboBox(parent, self.items) op = index.model().get_operation(index) attr = index.model().get_operation_attr(index) editor.assign_object(op) editor.assign_object_attribute(attr) editor.fill_control() # to flush a "setModelData" in place - it works! but model still has old value - editor.currentIndexChanged.connect(self.onEditorCurrentIndexChanged) return editor
def editEntry(self): """ Edit an entry in the addressbook. """ tableView = self.currentWidget() proxyModel = tableView.model() selectionModel = tableView.selectionModel() # Get the name and address of the currently selected row. indexes = selectionModel.selectedRows() for index in indexes: row = proxyModel.mapToSource(index).row() ix = self.tableModel.index(row, 0, QModelIndex()) name = self.tableModel.data(ix, Qt.DisplayRole) ix = self.tableModel.index(row, 1, QModelIndex()) address = self.tableModel.data(ix, Qt.DisplayRole) # Open an addDialogWidget, and only allow the user to edit the address. addDialog = AddDialogWidget() addDialog.setWindowTitle("Edit a Contact") addDialog.nameText.setReadOnly(True) addDialog.nameText.setText(name) addDialog.addressText.setText(address) # If the address is different, add it to the model. if addDialog.exec_(): newAddress = addDialog.address if newAddress != address: ix = self.tableModel.index(row, 1, QModelIndex()) self.tableModel.setData(ix, newAddress, Qt.EditRole)
def columnCount(self, parent: Qt = QModelIndex()) -> int: """Override method from QAbstractTableModel Return column count of the pandas DataFrame """ if parent == QModelIndex(): return len(self._dataframe.columns) return 0
def removeRows(self, position, rows=1, index=QModelIndex()): """ Remove a row from the model. """ self.beginRemoveRows(QModelIndex(), position, position + rows - 1) del self.addresses[position:position + rows] self.endRemoveRows() return True
def data(self, index:QtCore.QModelIndex, role:int=...) -> typing.Any: """ For given index and DisplayRole return name of the selected city""" # Return None if the index is not valid if not index.isValid(): return None # If the role is the DisplayRole, return name of the city if role == QtCore.Qt.DisplayRole: return self.city_list[index.row()]["muniLabel"]
def _on_data_changed(self, model: ResourceDatabaseGenericModel, top_left: QtCore.QModelIndex, bottom_right: QtCore.QModelIndex, roles): first_row = top_left.row() last_row = bottom_right.row() if first_row == last_row: self.ResourceChanged.emit( self.db.get_by_type(model.resource_type)[first_row])
def parent(self, index=None): if not index.isValid(): return QModelIndex() child_item = index.internalPointer() parent_item = child_item.getParent() if parent_item == self._root: return QModelIndex() return self.createIndex(0, 0, parent_item)
def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: """ Override QAbstractTableModel data for displaying pandas dataframe data """ if role == QtCore.Qt.DisplayRole: return self.logMessages[index.row()][index.column()] else: return None
def index(self, row, col, parent): if parent.isValid(): return QModelIndex() if row >= len(self.entries): return QModelIndex() if col >= self.total_cols: return QModelIndex() return self.createIndex(row, col)
def depends(self): if self.ui.depends.currentIndex() == 0: return QModelIndex() index = self.indexList[self.ui.depends.currentIndex() - 1] if index.isValid(): return index return QModelIndex()
def data(self, index: QModelIndex, role): if not index.isValid(): return None if role == self.DeviceClassRoles.DEVICE_CLASS_NAME: return self.classes[index.row()]['name'] if role == self.DeviceClassRoles.DEVICE_CLASS_VALUE: return self.classes[index.row()]['value']
def columnCount(self, parent: QModelIndex = ...) -> int: column_count_arg_in = {"parent": parent} logging.debug("columnCount") logging.debug(column_count_arg_in) if parent.isValid(): logging.debug({"return": parent.internalPointer().column_count()}) return parent.internalPointer().column_count() logging.debug({"return": self.__root.column_count()}) return self.__root.column_count()
def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: if not index.isValid(): return None if index.column() == 1: # not editable return super().flags(index) | ~QtCore.Qt.ItemIsEditable else: return super().flags(index)
def insertRows(self, position, rows=1, index=QModelIndex()): """ Insert a row into the model. """ self.beginInsertRows(QModelIndex(), position, position + rows - 1) for row in range(rows): self.addresses.insert(position + row, {"name": "", "address": ""}) self.endInsertRows() return True
def data(self, index: QModelIndex, role: int = Qt.UserRole + 1) -> t.Any: if not index.isValid(): return None if role != Qt.DisplayRole: return None item = index.internalPointer() return item.data(index.column())
def flags(self, index: QModelIndex) -> Qt.ItemFlags: if not index.isValid(): return Qt.NoItemFlags col = self.getColumnKey(index.column()) if col in ('package', 'filename', 'category', 'priority',): mod = self.modmodel[index.row()] if col in ('priority',) and mod.datatype not in ('mod', 'udf',): return Qt.ItemIsEnabled | Qt.ItemIsSelectable return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable return Qt.ItemIsEnabled | Qt.ItemIsSelectable
def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: result = QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable if self.allow_edits: if index.row() == len(self._get_items()): if index.column() == 0: result |= QtCore.Qt.ItemIsEditable else: if index.column() > 0: result |= QtCore.Qt.ItemIsEditable return result
def on_listview_point_select(self, current: QModelIndex, previous: QModelIndex): if current.isValid(): row = current.row() print(rf'some point be selected {row}') #todo sync with four axes and right list? #save to local ? #self._on_currentListDataChanged(self._acqs[row]) pass pass
def handleNewvalue(self, index: QtCore.QModelIndex, value: Any): print("--------------------------------", "handleNewvalue") row = index.row() col = index.column() attrib = self.header[col] print("handleNewvalue OLD -> %s" % (str(self.operations[row]))) print("handleNewvalue NEW -> %s %s" % (attrib, value))
def removeEntry(self): selectedIndexes = self.ui.ganttView.selectionModel().selectedIndexes() if len(selectedIndexes) > 0: index = selectedIndexes[0] else: index = QModelIndex() if not index.isValid(): return self.model.removeRow(index.row(), index.parent())
def data(self, index: QModelIndex, role): if not index.isValid(): return None if role == DeviceRoles.CATEGORY: return 'main' if index.row() < self._device_count_ else self._category_ for x in range(len(self._ui_dev_info_)): if x == index.row(): dev_cls = self._ui_dev_info_[x] return getattr(dev_cls, DeviceRolePropertyMap[role]) return None
def data(self, index: QModelIndex, role: Qt = Qt.ItemDataRole) -> None: """Override method from QAbstractTableModel Return data cell from the pandas DataFrame """ if not index.isValid(): return None if role == Qt.DisplayRole: return str(self._dataframe.iloc[index.row(), index.column()]) return None
def moveRow(self, from_, to): if from_ == to: return if from_ >= len(self.m_tasks) or to >= len(self.m_tasks) + 1: return if self.beginMoveRows(QModelIndex(), from_, from_, QModelIndex(), to): self.m_tasks.insert(to, self.m_tasks.pop(from_)) self.endMoveRows() else: return