def updateTree(self): """Updates the elements shown in the tree.""" self.clearCacheTree() filterStr = self.valueFilter.text() or '' for key in self.client.keys(): if filterStr not in key: continue # split the key into parts parts = key.split('/') # keys without category need a node too if len(parts) == 1: parts = ['<no category>'] + parts # add a node to the tree for each part of the key except the last prefix = '' parent = None for part in parts[:-1]: prefix = part if not prefix else prefix + '/' + part node = self._treeitems.get(prefix) if not node: node = QTreeWidgetItem() node.setText(0, part) node.setData(0, 32, prefix) if parent: parent.addChild(node) else: self.treeCache.addTopLevelItem(node) node.setExpanded(True) self._treeitems[prefix] = node parent = node
def _create_device_item(self, devname, add_cat=False, failure=None): ldevname = devname.lower() # get all cache keys pertaining to the device params = self.client.getDeviceParams(devname) if not params and not failure: return lowlevel_device = params.get('lowlevel') or False if lowlevel_device and not self._show_lowlevel: return if 'nicos.core.data.sink.DataSink' in params.get('classes', []) and \ not self._show_lowlevel: return # remove still-existing previous item for the same device name if ldevname in self._devitems: self.on_client_device(('destroy', [devname])) cat = self._dev2setup.get(devname) if cat is None: # device is not in any setup? reread setup info self._read_setup_info() cat = self._dev2setup.get(devname) if cat is None: # still not there -> give up return if cat not in self._catitems: display_order = self._setupinfo[cat].get('display_order', 50) representative = self._setupinfo[cat].get('extended', {}).get( 'representative', '').lower() catitem = SetupTreeWidgetItem(cat, display_order, representative) catitem.setToolTip(0, self._setupinfo[cat].get('description', '')) f = catitem.font(0) f.setBold(True) catitem.setFont(0, f) catitem.setIcon(0, self.groupIcon) self._catitems[cat] = catitem if add_cat: self.tree.addTopLevelItem(catitem) catitem.setExpanded(True) else: catitem = self._catitems[cat] # create a tree node for the device devitem = QTreeWidgetItem(catitem, [devname, '', ''], DEVICE_TYPE) devitem.setForeground(0, lowlevelBrush[lowlevel_device]) devitem.setFont(0, lowlevelFont[lowlevel_device]) if failure: short_failure = failure.split('\n')[0] devitem.setText(2, 'creating device failed: %s' % short_failure) if self.useicons: devitem.setIcon(0, self.statusIcon[ERROR]) else: if self.useicons: devitem.setIcon(0, self.statusIcon[OK]) devitem.setToolTip(0, params.get('description', '')) self._devitems[ldevname] = devitem # fill the device info with dummy values, will be populated below self._devinfo[ldevname] = DevInfo(devname, failure=failure) # let the cache handler process all properties for key, value in params.items(): self.on_client_cache( (0, ldevname + '/' + key, OP_TELL, cache_dump(value)))