예제 #1
0
 def on_tableview_currentRowChanged(self, current: QModelIndex,
                                    previous: QModelIndex):
     if current.isValid():
         row = current.row()
         self._on_currentListDataChanged(self._acqs[row])
         pass
     pass
예제 #2
0
 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
예제 #3
0
 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)
예제 #4
0
 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
예제 #5
0
    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
예제 #6
0
 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()]
예제 #7
0
 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)
예제 #8
0
    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
예제 #9
0
    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)
예제 #10
0
    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
예제 #11
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
예제 #12
0
 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"]
예제 #13
0
 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])
예제 #14
0
 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)
예제 #15
0
 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
예제 #16
0
 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)
예제 #17
0
    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()
예제 #18
0
    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']
예제 #19
0
파일: model.py 프로젝트: flow-edge/ess
 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()
예제 #20
0
    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)
예제 #21
0
    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
예제 #22
0
    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())
예제 #23
0
 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
예제 #24
0
 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
예제 #25
0
 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
예제 #26
0
    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))
예제 #27
0
파일: mainwindow.py 프로젝트: KDAB/KDChart
    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())
예제 #28
0
    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
예제 #29
0
    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
예제 #30
0
파일: main.py 프로젝트: KDAB/KDChart
    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