def update_item(self, obj, tree_item): # pragma pylint: disable=no-self-use """ Update destination item from source data item. Note: See class description for more details about argument types. Arguments: obj (object): Source data object. tree_item (QTreeWidgetItem): Tree widget item. """ node_type = get_node_type(obj) if node_type in (NodeType.Command, NodeType.Category, NodeType.Stage, NodeType.Case, NodeType.Variable): update_validity_role(obj, tree_item) if node_type == NodeType.Command: update_font(tree_item, obj.type is None) # !!! Validity update must be before data set tree_item.setText(0, get_object_name(obj)) tree_item.setText(1, get_object_type(obj)) tree_item.setData(0, Q.Qt.ToolTipRole, get_object_info(obj)) tree_item.setData(0, Role.ExpandedRole, tree_item.isExpanded()) icon = get_icon(obj) if icon is not None: tree_item.setIcon(0, icon)
def create_item(self, obj): """ Create a destination item for given source item. Note: See class description for more details about argument and return type. Arguments: obj (object): Source data object. Returns: TreeWidgetItem: Tree widget item. """ is_current_case = self.category_model.case == \ self.category_model.history.current_case node_type = get_node_type(obj) tree_item = Q.QTreeWidgetItem() # first column: name, icon tree_item.setText(0, get_object_name(obj)) icon = get_icon(obj) if icon is not None: tree_item.setIcon(0, icon) tree_item.setData(0, Q.Qt.ToolTipRole, get_object_info(obj)) tree_item.setData(0, Role.TypeRole, node_type) if isinstance(obj, History): node_id = root_node_type() else: node_id = obj.uid tree_item.setData(0, Role.IdRole, node_id) # second column: catalogue name (Command only) tree_item.setText(1, get_object_type(obj)) # third column (debug mode only): object id tree_item.setText(2, str(node_id)) # item flags if node_type & NodeType.ValidityItems: update_validity_role(obj, tree_item) if node_type == NodeType.Stage: flags = tree_item.flags() if is_current_case: flags = flags | Q.Qt.ItemIsEditable tree_item.setFlags(flags) elif node_type in (NodeType.Command, NodeType.Variable): update_font(tree_item, obj.type is None) flags = tree_item.flags() if obj.type is not None and is_current_case: flags = flags | Q.Qt.ItemIsEditable tree_item.setFlags(flags) self.category_model.register_item(tree_item) return tree_item
def data(self, column, role): """Redefined from TreeItem.""" res = super(DirItem, self).data(column, role) if role in (Q.Qt.UserRole,): res = self.dir elif role in (Role.SortRole,) and Model.sort_stages(): res = self.dirType elif column == FileData.file: if role in (Q.Qt.DisplayRole,): res = self.title elif role in (Q.Qt.ToolTipRole,): res = self.title + ": {}".format(self.dir) elif role in (Q.Qt.DecorationRole,): return get_icon("Dir") return res
def data(self, column, role): """Redefined from TreeItem.""" # pragma pylint: disable=redefined-variable-type res = super(CommandItem, self).data(column, role) if role in (Q.Qt.UserRole,): res = self.command elif column == FileData.file: if role in (Q.Qt.DisplayRole, Role.SortRole): res = get_object_name(self.command) elif role in (Q.Qt.ToolTipRole,): res = get_object_info(self.command, with_parent_stage=True) elif role in (Q.Qt.DecorationRole,): res = get_icon(self.command) elif column == FileData.unit: if role in (Role.SortRole,): res = self.command.uid return res
def data(self, column, role): """Redefined from TreeItem.""" # pragma pylint: disable=redefined-variable-type res = super(HandleItem, self).data(column, role) if role in (Role.ReferenceRole,): res = self.is_reference elif role in (Q.Qt.BackgroundRole,): if self.itemData().is_repeated: return Q.QBrush(Q.QColor(Q.Qt.yellow)) else: return Q.QBrush(Q.QColor(Q.Qt.white)) elif column == FileData.file: if role in (Q.Qt.DisplayRole, Q.Qt.ToolTipRole, Role.SortRole): res = self._text(role != Q.Qt.ToolTipRole) elif role in (Q.Qt.UserRole,): return self.filename elif role in (Q.Qt.DecorationRole,): return get_icon("Unit") elif column == FileData.unit: if role in (Q.Qt.DisplayRole, Q.Qt.ToolTipRole,): res = '?' if self.unit is None else self.unit elif role in (Q.Qt.UserRole, Role.SortRole): res = self.unit elif column == FileData.inout: if role in (Q.Qt.DisplayRole, Q.Qt.ToolTipRole, Role.SortRole): res = FileAttr.value2str(self.attr) elif role in (Q.Qt.UserRole,): res = self.attr elif role in (Q.Qt.FontRole,): res = Q.QFont() res.setBold(self.is_forced_attr) elif column == FileData.exists: if role in (Q.Qt.DisplayRole, Q.Qt.ToolTipRole, Role.SortRole): res = bool2str(self.exists) elif role in (Q.Qt.UserRole,): res = self.exists elif column == FileData.embedded: if role in (Q.Qt.DisplayRole, Q.Qt.ToolTipRole, Role.SortRole): res = bool2str(self.embedded) elif role in (Q.Qt.UserRole,): res = self.embedded elif role in (Q.Qt.FontRole,): res = Q.QFont() res.setBold(self.is_forced_attr) return res
def data(self, column, role): """Redefined from TreeItem.""" res = super(StageItem, self).data(column, role) if role in (Q.Qt.UserRole,): res = self.stage elif column == FileData.file: if role in (Q.Qt.DisplayRole,): res = self.stage.name elif role in (Q.Qt.ToolTipRole,): res = get_object_info(self.stage) elif role in (Role.SortRole,) and Model.sort_stages(): res = self.stage.number elif role in (Q.Qt.DecorationRole,): return get_icon(self.stage) elif column == FileData.unit: if role in (Role.SortRole,) and Model.sort_stages(): res = self.stage.number return res