Пример #1
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
Пример #2
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)
Пример #3
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()]
Пример #4
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)
Пример #5
0
 def on_tableview_currentRowChanged(self, current: QModelIndex,
                                    previous: QModelIndex):
     if current.isValid():
         row = current.row()
         self._on_currentListDataChanged(self._acqs[row])
         pass
     pass
Пример #6
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"]
Пример #7
0
    def rowCount(self, index: qtc.QModelIndex) -> int:
        """Returns the number of rows."""
        # so index points to an article
        if index.isValid():
            return 0

        # must be the root index
        return len(self.articles)
Пример #8
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']
Пример #9
0
 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()
Пример #10
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)
Пример #11
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
Пример #12
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())
Пример #13
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
Пример #14
0
    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())
Пример #15
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
Пример #16
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
Пример #17
0
 def parent(self, child: QModelIndex = ...) -> QModelIndex:
     parent_arg_in = {"child": child}
     logging.debug("parent")
     logging.debug(parent_arg_in)
     if not child.isValid():
         return QModelIndex()
     child_item = child.internalPointer()
     parent_item = child_item.parent_item()
     if parent_item == self.__root:
         return QModelIndex()
     logging.debug({"return": self.createIndex(parent_item.row(), 0, parent_item)})
     return self.createIndex(parent_item.row(), 0, parent_item)
Пример #18
0
    def rowCount(self, parent: QModelIndex = ...) -> int:
        row_count_arg_in = {"parent": parent}
        logging.debug("rowCount")
        logging.debug(row_count_arg_in)
        if parent.column() > 0:
            return 0

        if not parent.isValid():
            parent_item = self.__root
        else:
            parent_item = parent.internalPointer()
        logging.debug({"return": parent_item.child_count()})
        return parent_item.child_count()
Пример #19
0
    def index(self, row: int, column: int,
              parent: QModelIndex = QModelIndex()) -> QModelIndex:

        if not self.hasIndex(row, column, parent):
            return QModelIndex()
        if not parent.isValid():
            parent_item = self.rootItem
        else:
            parent_item = parent.internalPointer()
        child_item = parent_item.child(row)
        if child_item:
            return self.createIndex(row, column, child_item)
        else:
            return QModelIndex()
Пример #20
0
    def data(self, index: QModelIndex, role: int = ...) -> typing.Any:
        data_arg_in = {
            "index": index,
            "role": role
        }
        logging.debug(data_arg_in)
        if not index.isValid():
            return None
        r = int(Qt.DisplayRole)
        c = index.column()
        if role != Qt.DisplayRole:
            val = index.internalPointer().data(index.column())
            return None

        return index.internalPointer().data(index.column())
Пример #21
0
 def index(self, row: int, column: int, parent: QModelIndex = ...) -> QModelIndex:
     index_arg_in = {"row": row,
                     "column": column,
                     "parent": parent}
     logging.debug("index")
     logging.debug(index_arg_in)
     if not self.hasIndex(row, column, parent):
         return QModelIndex()
     if not parent.isValid():
         parent_item = self.__root
     else:
         parent_item = parent.internalPointer()
     res = parent_item.child(row)
     if res is None:
         return QModelIndex()
     logging.debug({"return": self.createIndex(row, column, res)})
     return self.createIndex(row, column, res)
Пример #22
0
 def data(self, index: QModelIndex, role=...):
     if not index.isValid():
         return None
     if index.row() >= self.rowCount() or index.column() >= len(
             self._header_data):
         return None
     if role == Qt.DisplayRole:
         g = self._goods[index.row()]
         if index.column() == 0:
             return g.name
         elif index.column() == 1:
             return g.type.name
         elif index.column() == 2:
             return str(g.create_time)
         else:
             return g.comment if g.comment is not None else ''
     if role == Qt.EditRole:
         return self._goods[index.row()]
Пример #23
0
 def setData(self, index: QtCore.QModelIndex, value: Any, role = QtCore.Qt.EditRole) -> bool:
     if index.isValid() and role == QtCore.Qt.EditRole:
         if index.column() == 0: 
             return False
         elif index.column() ==  1: 
             self.m_data[index.row()].command = str(value)
         elif index.column() ==  2: 
             self.m_data[index.row()].state = GCodeItem.States(value)
         elif index.column() ==  3: 
             self.m_data[index.row()].response = str(value)
         elif index.column() ==  4: 
             self.m_data[index.row()].line = int(value)
         elif index.column() ==  5: 
             self.m_data[index.row()].args = [str(value)] ## FIXME: toStringList()
     
         self.dataChanged.emit(index, index)
         return True
     
     return False
Пример #24
0
    def data(self, index: QtCore.QModelIndex, role = QtCore.Qt.DisplayRole) -> Any :
        if not index.isValid(): 
            return None # QVariant()

        if index.row() >= len(self.m_data) :
            return None # QVariant()

        if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole:
            if index.column() == 0: 
                return "" if index.row() == self.rowCount() - 1 else str(index.row() + 1)
            elif index.column() ==  1: return self.m_data[index.row()].command
            elif index.column() ==  2:
                if index.row() == self.rowCount() - 1: 
                    return ""
                if self.m_data[index.row()].state == GCodeItem.States.InQueue: 
                    return "In queue"
                elif self.m_data[index.row()].state == GCodeItem.States.Sent: 
                    return "Sent"
                elif self.m_data[index.row()].state == GCodeItem.States.Processed: 
                    return "Processed"
                elif self.m_data[index.row()].state == GCodeItem.States.Skipped: 
                    return "Skipped"
                else:
                    return "Unknown"
            elif index.column() ==  3: 
                return self.m_data[index.row()].response
            elif index.column() ==  4: 
                return self.m_data[index.row()].line
            elif index.column() ==  5: 
                return self.m_data[index.row()].args

        if role == QtCore.Qt.TextAlignmentRole:
            return QtCore.Qt.AlignVCenter

        if role == QtCore.Qt.FontRole:
            if index.column() == 1: # text items are bold.
                font = QtGui.QFont()
                font.setBold(True)
                return font

        return None  # QVariant()
Пример #25
0
    def initFrom(self, index, constraintModel):
        row = index.row()
        parent = index.parent()

        self.ui.name.setText(
            self.model.data(self.model.index(row, 0, parent)).toString())
        self.ui.legend.setText(
            self.model.data(self.model.index(row, 5, parent)).toString())

        idx = self.ui.type.findData(
            self.model.data(self.model.index(row, 1, parent)).toInt())
        self.ui.type.setCurrentIndex(idx)
        self.ui.startDate.setDateTime(
            self.model.data(self.model.index(row, 2, parent)).toDateTime())
        self.ui.endDate.setDateTime(
            self.model.data(self.model.index(row, 3, parent)).toDateTime())
        self.ui.completion.setValue(
            self.model.data(self.model.index(row, 4, parent)).toInt())
        self.ui.readOnly.setChecked(not (
            self.model.flags(self.model.index(row, 0, parent))
            & Qt.ItemIsEditable))

        constraints = constraintModel.constraintsForIndex(
            self.model.index(row, 0, parent))
        if constraints.isEmpty():
            return

        constraintIndex = QModelIndex()
        for i in range(0, constraints.size()):
            constraint = constraints[i]
            if constraint.endIndex() == index:
                constraintIndex = constraint.startIndex()
                break

        if not constraintIndex.isValid():
            return

        self.ui.depends.setCurrentIndex(indexList.indexOf(constraintIndex) + 1)
Пример #26
0
    def addNewEntry(self):
        dialog = EntryDialog(self.model)
        dialog.setWindowTitle("New Entry")
        if dialog.exec_() == QDialog.Rejected:
            dialog = None
            return

        selectedIndexes = self.ui.ganttView.selectionModel().selectedIndexes()
        if len(selectedIndexes) > 0:
            parent = selectedIndexes[0]
        else:
            parent = QModelIndex()

        if not self.model.insertRow(self.model.rowCount(parent), parent):
            return

        row = self.model.rowCount(parent) - 1
        if row == 0 and parent.isValid():
            self.model.insertColumns(self.model.columnCount(paren), 5, parent)

        self.model.setData(self.model.index(row, 0, parent), dialog.name())
        self.model.setData(self.model.index(row, 1, parent), dialog.type())
        if dialog.type() != KDGantt.TypeSummary:
            self.model.setData(self.model.index(row, 2, parent),
                               dialog.startDate(), KDGantt.StartTimeRole)
            self.model.setData(self.model.index(row, 3, parent),
                               dialog.endDate(), KDGantt.EndTimeRole)

        self.model.setData(self.model.index(row, 4, parent),
                           dialog.completion())
        self.model.setData(self.model.index(row, 5, parent), dialog.legend())

        self.addConstraint(dialog.depends(), self.model.index(row, 0, parent))
        self.setReadOnly(self.model.index(row, 0, parent), dialog.readOnly())

        dialog = None
Пример #27
0
    def data(self, index: QModelIndex, role: Qt.ItemDataRole = Qt.DisplayRole) -> Any:
        if not index.isValid():
            return None
        col = self.getColumnKey(index.column())
        if not col:
            return None

        if role == Qt.FontRole:
            if col in ('datatype', 'size',):
                return QFontDatabase.systemFont(QFontDatabase.FixedFont)
            return None

        if role == Qt.CheckStateRole:
            if col in ('enabled',):
                mod = self.modmodel[index.row()]
                val = mod[col]
                return Qt.Checked if val else Qt.Unchecked
            return None

        if role == Qt.BackgroundRole:
            mod = self.modmodel[index.row()]
            if not mod.enabled:
                return self._colorDisabled
            if col in ('priority',) and mod.datatype not in ('mod', 'udf',):
                return self._colorUnavailable
            if mod.installdate > self._lastUpdate:
                return self._colorNewest
            if mod.installdate > self._lastInitialization:
                return self._colorRecent
            if not mod.installed:
                return self._colorUnmanaged
            return None

        if role == Qt.ForegroundRole:
            mod = self.modmodel[index.row()]
            if not mod.enabled:
                return QColor(60, 60, 60)
            elif col in ('scriptFiles',):
                if mod.filename in self.modmodel.conflicts.scripts \
                and self.modmodel.conflicts.scripts[mod.filename]:
                    return QColor('#E55934')
            elif col in ('bundledFiles',):
                if mod.filename in self.modmodel.conflicts.bundled \
                and self.modmodel.conflicts.bundled[mod.filename]:
                    return QColor('#b08968')
            return None

        if role == Qt.DecorationRole:
            if col in ('datatype',):
                mod = self.modmodel[index.row()]
                val = mod[col]
                return self._icons[val] if val in self._icons else self._icons['udf']
            return None

        if role == Qt.ToolTipRole:
            mod = self.modmodel[index.row()]
            if col in ('datatype',):
                val = mod[col]
                return self._datatypes[val] if val in self._datatypes else self._datatypes['udf']
            if col in ('enabled',):
                val = mod[col]
                return 'Enabled' if val else 'Disabled'
            return str(mod[col])

        if role == Qt.TextAlignmentRole:
            if col in ('size',):
                # Right|VCenter
                return 0x0082
            if col in ('priority', 'installdate', 'binFiles', 'menuFiles', 'settings',
                       'inputs', 'contentFiles', 'scriptFiles', 'bundledFiles',):
                # HCenter|VCenter
                return 0x0084
            # Left|VCenter
            return 0x0081

        if role == Qt.EditRole:
            if col in ('package', 'filename', 'category', 'priority',):
                mod = self.modmodel[index.row()]
                return str(mod[col])
            return None

        # role used for sorting
        if role == Qt.UserRole:
            mod = self.modmodel[index.row()]
            if col in ('priority',):
                return f'{"-" if int(mod[col]) < 0 else "+"}{abs(int(mod[col])): >20} {mod["filename"]}'
            if col in ('size',):
                return int(mod[col])
            if col in ('binFiles', 'menuFiles', 'contentFiles', \
                       'scriptFiles', 'settings', 'inputs', 'bundledFiles',):
                return len(mod[col])
            return str(mod[col])

        if role == Qt.DisplayRole:
            if col in ('enabled',):
                return None
            mod = self.modmodel[index.row()]
            if col in ('datatype',):
                return str(mod[col]).upper()
            if col in ('priority',):
                val = mod[col]
                if val < 0:
                    return 'none'
                return val
            if col in ('installdate',):
                return mod[col].astimezone(tz=None).strftime('%Y-%m-%d %H:%M:%S')
            if col in ('size',):
                val = mod[col]
                frm = 'b'
                val /= 1024
                frm = 'K'
                if val // 1024:
                    val /= 1024
                    frm = 'M'
                return '%.1f %s' % (val, frm)
            if col in ('inputs', 'settings',):
                val = 0
                for s in mod[col]:
                    for n in s.config.sections():
                        val += len(s.config.items(n))
                return val if val else None

            if col in ('binFiles', 'menuFiles', 'contentFiles', 'scriptFiles', 'bundledFiles',):
                val = len(mod[col])
                if val < 1:
                    return ''
                return val
            return str(mod[col])

        return None
Пример #28
0
 def flags(self, index: QModelIndex) -> Qt.ItemFlags:
     if not index.isValid():
         return Qt.NoItemFlags
     return super().flags(index)
Пример #29
0
 def rowCount(self, parent: QModelIndex):
     return 0 if parent.isValid() else len(self.classes)