Beispiel #1
0
    def __init__(self):
        #
        # Input readers
        #
        self.inputReaders = IODict.inputReaderDict()

        #
        # Identifier dict
        #
        self.__idDict = {}

        #
        # Data tree
        #
        self.projectRoot = ItemContainer()
        #self.projectRoot.addChildren(
        #    [ItemContainer(parent=self.projectRoot, label=key)\
        #     for key in ['Spectra', 'Images', 'Stacks']])
        for label in ['Spectra', 'Images', 'Stacks']:
            self.addGroup(label)
        if DEBUG >= 1:
            print('RixsProject.__init__ -- projectRoot.childCount: %d' %
                  self.projectRoot.childCount())
            print('RixsProject.__init__ -- projectRoot.__idDict: %s' %
                  str(self.__idDict))
Beispiel #2
0
    def addItem(self, item):
        """
        :param DataItem item: Item to be inserted into the project tree

        Item is wrapped in :class:`datahandling.ItemContainer` and inserted into the tree.
        The insertion node depdends on the type of item.

        **TODO:**
        * Add remove functionality here (c.f. RixsTool.Models)

        :returns: Container of item
        :rtype: ItemContainer
        :raises TypeError: if the item type is unknown
        :raises ValueError: if the item.key() is already present
        """
        if DEBUG >= 1:
            print('RixsProject.addItem -- called')
        if item.key() in self.__idDict:
            raise ValueError(
                "RixsProject.addItem -- Item key '%s' already present" %
                item.key())
        if isinstance(item, ScanItem) or isinstance(item, SpecItem):
            node = self.projectRoot.children[0]
        elif isinstance(item, ImageItem):
            node = self.projectRoot.children[1]
        elif isinstance(item, StackItem):
            node = self.projectRoot.children[2]
        else:
            raise TypeError("RixsProject.addItem -- unknown item type '%s'" %
                            type(item))
        container = ItemContainer(item=item, parent=node)
        node.addChildren([container])
        self.__idDict[item.key()] = container.getID()
        return container
Beispiel #3
0
    def addGroup(self, label, node=None):
        """
        :param str label: Unique label for the container
        :param ItemContainer node: Parent for the new container. Defaults to None, the parent in that case is the root.

        Creates a new container object in the parent container node

        :returns: The created :class:`datahandling.ItemContainer`
        :rtype: ItemContainer
        :raises ValueError: if the label is already present in the project
        """
        if DEBUG >= 1:
            print('RixsProject.addItem -- called')
        if label in self.__idDict:
            raise ValueError(
                "RixsProject.addItem -- Item key '%s' already present" % label)
        if not node:
            node = self.projectRoot
        container = ItemContainer(item=None, parent=node, label=label)
        node.addChildren([container])
        self.__idDict[container.label] = container.getID()
        return container