Exemple #1
0
    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)
Exemple #2
0
    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
Exemple #3
0
 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
Exemple #4
0
 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
Exemple #5
0
 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
Exemple #6
0
 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