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))
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
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