def check_disabled_button_states(self, button: QPushButton,
                                  index: QModelIndex) -> bool:
     if not index.isValid():
         button.setText("No pilot selected")
         button.setDisabled(True)
         return True
     pilot = self.squadron_model.pilot_at_index(index)
     if not pilot.alive:
         button.setText("Pilot is dead")
         button.setDisabled(True)
         return True
     return False
    def parent(self, index: QtCore.QModelIndex):
        if not index.isValid():
            return QtCore.QModelIndex()  # type: ignore

        childItem = self.getItem(index)
        parentItem = childItem.parent

        if parentItem == self.rootItem or childItem == self.rootItem:
            return QtCore.QModelIndex()  # type: ignore

        if parentItem is not None:
            return self.createIndex(parentItem.childNumber(), 0, parentItem)
    def data(self,
             index: qc.QModelIndex = qc.QModelIndex(),
             role: int = qq.DisplayRole) -> t.Any:
        if not index.isValid():
            return None

        row = index.row()
        col = index.column()
        result = self._results[row]

        if qq.DisplayRole == role:
            return str(result[col])
    def data(self, index: QModelIndex, role: int = ...) -> Any:
        if not index.isValid():
            return None

        elem = self.entries[index.row()]
        if role == QtCore.Qt.DisplayRole:
            return self.module.get_display_name_for_entry(elem)
        if role == QtCore.Qt.DecorationRole and self.module.entry_icon_type:
            return locator.get_scoped("IconService").get_icon_by_type(elem, self.module.entry_icon_type)
        if role == QtCore.Qt.UserRole:
            return elem
        return None
Exemple #5
0
    def data(self,
             index: QtCore.QModelIndex,
             role: int = QtCore.Qt.DisplayRole) -> Optional[str]:
        if not index.isValid():
            return None

        if role in (QtCore.Qt.DisplayRole, QtCore.Qt.EditRole):
            pos = [index.row(), index.column()]
            value = self.array[pos[self.axes[0]], pos[self.axes[1]]]
            return str(value)
        else:  # pragma: no cover
            return None
 def removeRows(self,
                row: int,
                count: int,
                parent: QModelIndex = QModelIndex()):
     if not parent.isValid():
         return False
     self.beginRemoveRows(parent, row, row + count - 1)
     for idx in range(count):
         if row + idx < len(self.items):
             del self.items[row + idx]
     self.endRemoveRows()
     return True
Exemple #7
0
 def setData(self,
             index: QModelIndex,
             value: typing.Any,
             role: int = ...) -> bool:
     row = index.row()
     col = index.column()
     if index.isValid() and role == Qt.EditRole and row < len(
             self.list) and col in (3, 5):
         self.list[row][col] = value
         self.dataChanged.emit(index, index)
         return True
     return False
    def rowCount(
        self, parent: QtCore.QModelIndex = QtCore.QModelIndex()
    ) -> int:  # parent would default to None but C++ requires us to use an empty QModelIndex instead
        '''Return the number of rows in the list'''

        if self.__friends_reference:
            # Prevents value from being returned if the list has a parent (is inside another list)
            if not parent.isValid():
                return len(self.__friends_reference.friends)

        # Return 0 if there is no friends reference
        return 0
Exemple #9
0
 def setData(self,
             index: QModelIndex,
             value: str,
             role: int = Qt.EditRole) -> bool:
     if index.isValid() and role == Qt.EditRole:
         # If the new value is invalid, then remove the row and quit
         value = value.strip()
         if not value or value in self.stringList():
             self.removeRow(index.row(), index.parent())
             return False
     # In every other case call superclass
     return super().setData(index, value, role)
Exemple #10
0
 def data(self, index: QModelIndex, role: int = ...) -> typing.Any:
     row = index.row()
     column = index.column()
     if role == Qt.DisplayRole and index.isValid(
     ) and row < self.rowCount():
         t = self.list[row]
         if column == 0:
             return str(t.id)
         elif column == 1:
             return t.short_desc
         elif column == 2:
             return t.long_desc
Exemple #11
0
 def data(self, index: QModelIndex, role: int = ...):
     row = index.row()
     column = index.column()
     if role == Qt.DisplayRole and index.isValid(
     ) and row < self.rowCount():
         customer = Customer.from_record(self.record(row))
         if column == 0:
             return customer.concated_name
         elif column == 1:
             return customer.company_name
         elif column == 2:
             return customer.address
     return super().data(index, role)
Exemple #12
0
    def setData(self, index: QModelIndex, value: typing.Any, role: int = ...):
        if not index.isValid():
            return False

        if role == Qt.EditRole or role == Qt.CheckStateRole:
            if value == '':
                return False
            self.options[index.row()][1] = value
        self.dataChanged.emit(index, index)
        self.option_modified.emit()
        if self.options[index.row()][0] == 'parse_dates':
            self.date_format_required.emit()
        return True
Exemple #13
0
 def get_element(self, index: QtCore.QModelIndex):
     """
     Dobavlja podatak smjesten na zadatom indeksu, ako je indeks validan.
     Pomocna metoda nase klase.
     :param index: indeks elementa modela.
     :type index: QModelIndex
     :returns: object -- vrijednost na indeksu.
     """
     if index.isValid():
         element = self._data[index.row()][index.column()]
         if element:
             return element
     return None
Exemple #14
0
    def data(self, index: QModelIndex, role: int = ...) -> Any:
        if not index.isValid():
            return None

        if index.row() >= self.__listNode.__len__() or index.row() < 0:
            return None

        if role == Qt.DisplayRole:
            return self.__listNode[index.row()].text
        elif role == Qt.UserRole:
            return self.__listNode[index.row()].treeNode

        return None
Exemple #15
0
    def data(self, index: QtCore.QModelIndex, role: QtCore.Qt) -> Any:
        if not index.isValid():
            return None

        if role != QtCore.Qt.DisplayRole and role != QtCore.Qt.EditRole and role != QtCore.Qt.DecorationRole:
            return None

        item = self.getItem(index)

        if role == QtCore.Qt.DecorationRole:
            return item.icon()
        else:
            return item.data()
Exemple #16
0
    def flags(self, index: QModelIndex) -> Qt.ItemFlags:
        if not index.isValid():
            return Qt.NoItemFlags

        default = Qt.ItemIsDragEnabled | Qt.ItemIsDropEnabled | Qt.ItemIsEnabled | Qt.ItemIsSelectable
        row = index.row()
        col = index.column()
        if row == len(self.list):
            return Qt.ItemIsEnabled | Qt.ItemIsDropEnabled

        if col == 3 or col == 5:
            return Qt.ItemIsEditable | default
        return default
Exemple #17
0
    def data(self, index: QModelIndex, role=None):
        if not index.isValid():
            return None
        value = self._array_data[index.row()][index.column()]
        if role == Qt.DisplayRole:
            return value
        if role == Qt.BackgroundRole:
            if index.row() == START_DAY_ROW:
                return QtGui.QColor('#A18C3D')
            if index.row() == MIDDLE_DAY_ROW:
                return QtGui.QColor('#e3b918')

        return None
Exemple #18
0
 def setData(self, index: QModelIndex, value: Any, role: int = ...) -> bool:
     if index.isValid():
         if role == Qt.CheckStateRole:
             if self.cond["RESULT_MANUAL_POST_CORRECTION"]:
                 self.data_result.correct(self.cond, index.row(), bool(value))
                 self.runner.lcptd_set_property()
             else:
                 return False
         else:
             return False
         return True
     else:
         return False
Exemple #19
0
    def index(self, row: int, column: int, parent: QModelIndex) -> QModelIndex:
        if column != 0:
            leftmost = self.index(row, 0, parent)
            return self.createIndex(row, column, leftmost.internalPointer())

        if parent.isValid():
            data = typing.cast(_InternalData, parent.internalPointer())
            return data["children"][row]["index"]

        if row >= len(self.model):
            return QModelIndex()

        return self.model[row]["index"]
Exemple #20
0
    def setData(self, index: QModelIndex, value: str, role: int = ...) -> bool:
        if not index.isValid():
            return False

        value = value.strip()
        if role == Qt.EditRole and value and index.column() == self.nameColumn and \
                value != index.data(Qt.EditRole):
            # TODO: add regex validator
            self._edits[index.row()] = value
        else:
            return False
        self.dataChanged.emit(index, index)
        return True
Exemple #21
0
    def index(self, row: int, column: int, parent: QModelIndex = ...):
        if not self.hasIndex(row, column, parent):
            return QModelIndex()

        if not parent.isValid():
            parent_item = self.root_item
        else:
            parent_item = parent.internalPointer()
        try:
            child_item = parent_item.children[row]
            return self.createIndex(row, column, child_item)
        except IndexError:
            return QModelIndex()
Exemple #22
0
    def parent(self, index: QModelIndex) -> QModelIndex:
        if not index.isValid():
            return QModelIndex()

        item = index.internalPointer()
        if item in self.root_items:
            return QModelIndex()

        parent = item.parent_item
        if parent is None:
            return QModelIndex()
        else:
            return self.createIndex(parent.row, parent.column, parent)
Exemple #23
0
    def data(self, index: QtCore.QModelIndex, role: QtCore.Qt) -> Any:
        if role == QtCore.Qt.DisplayRole:
            if not index.isValid():
                return None

            if index.row() > len(self.flows):
                return None

            flow = self.flows[index.row()]

            row_values = flow.values_for_table()

            return row_values[index.column()]
Exemple #24
0
    def move_down(self, index: qc.QModelIndex):
        if not index.isValid():
            return

        row = index.row()
        row_new = row + 1
        if 0 <= row_new < len(self._items):
            dummy_index = qc.QModelIndex()

            self.beginMoveRows(dummy_index, row, row, dummy_index, row_new + 1)
            self._items[row], self._items[row_new] = self._items[
                row_new], self._items[row]
            self.endMoveRows()
    def data(self, index: QModelIndex, role: Qt.ItemDataRole = Qt.DisplayRole):  # pylint: disable=too-many-return-statements,too-many-branches
        """Gets the node data

        Args:
            index (QModelIndex): index to get data for
            role (Qt.ItemDataRole): the role (Default: Qt.DisplayRole)

        Returns:
            object: fetched data
        """
        if not index.isValid():
            return None

        # The data in a form suitable for editing in an editor. (QString)
        if role == Qt.EditRole:
            return self.data(index, Qt.DisplayRole)

        # Bold the first
        if (role == Qt.FontRole) and (index.column() == self.NAME):
            font = QFont()
            font.setBold(True)
            return font

        if role == Qt.TextAlignmentRole:
            return int(Qt.AlignTop | Qt.AlignLeft)

        if role == Qt.DisplayRole:
            node = self.nodeFromIndex(index)
            if node:
                # the first column is either a leaf key or a branch
                # the second column is always a leaf value or for a branch is ''.
                if isinstance(node, BranchNode):
                    # Handle a branch (which is a nested subdictionary, which can be expanded)
                    if index.column() == self.NAME:
                        return node.name
                    if index.column() == self.TYPE:
                        return node.type
                    return ''
                # We have a leaf
                if index.column() == self.NAME:
                    return str(node.name)  # key
                if index.column() == self.VALUE:
                    return str(node.value)  # value
                if index.column() == self.PARSED:
                    return str(self._design.parse_value(node.value))
                if index.column() == self.TYPE:
                    return node.type

                return None

        return None
    def data(self, index: QModelIndex, role: Qt.ItemDataRole = Qt.DisplayRole):
        """Gets the node data.

        Args:
            index (QModelIndex): Index to get data for
            role (Qt.ItemDataRole): The role..  Defaults to Qt.DisplayRole.

        Returns:
            object: fetched data
        """
        if not index.isValid():
            return None

        if self.component is None:
            return None

        # The data in a form suitable for editing in an editor. (QString)
        if role == Qt.EditRole:
            return self.data(index, Qt.DisplayRole)

        # Bold the first
        if (role == Qt.FontRole) and (index.column() == 0):
            font = QFont()
            font.setBold(True)
            return font

        if role == Qt.TextAlignmentRole:
            return int(Qt.AlignTop | Qt.AlignLeft)

        if role == Qt.DisplayRole:
            node = self.nodeFromIndex(index)
            if node:
                # the first column is either a leaf key or a branch
                # the second column is always a leaf value or for a branch is ''.
                if isinstance(node, BranchNode):
                    # Handle a branch (which is a nested subdictionary, which can be expanded)
                    if index.column() == 0:
                        return node.name
                    return ''
                # We have a leaf
                elif index.column() == 0:
                    return str(node.label)  # key
                elif index.column() == 1:
                    return str(node.value)  # value
                elif index.column() == 2:
                    # TODO: If the parser fails, this can throw an error
                    return str(self.design.parse_value(node.value))
                else:
                    return None

        return None
Exemple #27
0
 def setData(self,
             index: QModelIndex,
             value: QPersistentModelIndex,
             role: int = Qt.EditRole) -> bool:
     if index.isValid() and role == Qt.EditRole and index.column() == 1:
         sourceIndex = self.mapToSource(index)
         currValue: QPersistentModelIndex = self.attributes.get(
             sourceIndex.row(), None)
         if value.isValid() and value != currValue:
             self.attributes[sourceIndex.row()] = value
             self.dataChanged.emit(index, index,
                                   [Qt.DisplayRole, Qt.EditRole])
             return True
     return False
	def flags(self, index: QModelIndex) -> Qt.ItemFlags:
		"""
		Get the flags associated with the given index
		
		:param index: the index to get the flags for
		:type index: QModelIndex
		:return: The flags with a given index
		:rtype: Qt.ItemFlags
		"""
		if not index.isValid():
			return Qt.NoItemFlags
		
		else:
			return Qt.ItemIsEnabled | Qt.ItemIsSelectable
Exemple #29
0
 def data(self, index: QModelIndex, role: int = None):
     if not index.isValid():
         return None
     if role == Qt.DisplayRole:
         return self.getValue(index.row(), index.column())
     elif role == Qt.TextAlignmentRole:
         return self.getAlignment(index.row(), index.column())
     elif role == Qt.ForegroundRole:
         return self.getForeground(index.row(), index.column())
     elif role == Qt.FontRole:
         return self.getFont(index.row(), index.column())
     elif role == Qt.BackgroundRole:
         return self.getBackground(index.row(), index.column())
     return None
Exemple #30
0
    def data(self, index: QModelIndex, role: Qt.ItemDataRole = Qt.DisplayRole):
        if not index.isValid():
            return

        item = index.internalPointer()

        if role == Qt.DisplayRole:
            if index.column() == 0:
                return item.name
        if role == Qt.ForegroundRole:
            if index.column() == 0:
                status = item.status.value
                color = QColor(ITEM_STATE_COLORS[status])
                return QBrush(color)