def add_variables(self, ds=None): """Add children of variables and coords to this TreeWidgetItem""" if ds is None: ds = self.ds() self.variables.takeChildren() self.coords.takeChildren() else: self.ds = weakref.ref(ds) columns = self.columns variables = self.variables coords = self.coords for vname, variable in six.iteritems(ds.variables): item = QTreeWidgetItem(0) item.setText(0, str(vname)) for i, attr in enumerate(columns, 1): if attr == 'dims': item.setText(i, ', '.join(variable.dims)) else: item.setText( i, str( variable.attrs.get(attr, getattr(variable, attr, '')))) if vname in ds.coords: coords.addChild(item) else: variables.addChild(item) if rcParams['content.load_tooltips']: item.setToolTip(0, str(variable))
def initialize(self): """Fill the items of the :attr:`rc` into the tree""" rcParams = self.rc descriptions = self.descriptions self.valid = [True] * len(rcParams) validators = self.validators vcol = self.value_col for i, (key, val) in enumerate(sorted(rcParams.items())): item = QTreeWidgetItem(0) item.setText(0, key) item.setToolTip(0, key) item.setIcon(1, QIcon(get_icon('valid.png'))) desc = descriptions.get(key) if desc: item.setText(vcol, desc) item.setToolTip(vcol, desc) child = QTreeWidgetItem(0) item.addChild(child) self.addTopLevelItem(item) editor = QTextEdit(self) # set maximal height of the editor to 3 rows editor.setMaximumHeight( 4 * QtGui.QFontMetrics(editor.font()).height()) editor.setPlainText(yaml.dump(val)) self.setItemWidget(child, vcol, editor) editor.textChanged.connect( self.set_icon_func(i, item, validators[key])) self.resizeColumnToContents(0) self.resizeColumnToContents(1)
def initialize(self): """Fill the items of the :attr:`rc` into the tree""" rcParams = self.rc descriptions = self.descriptions self.valid = [True] * len(rcParams) validators = self.validators vcol = self.value_col for i, (key, val) in enumerate(sorted(rcParams.items())): item = QTreeWidgetItem(0) item.setText(0, key) item.setToolTip(0, key) item.setIcon(1, QIcon(get_icon('valid.png'))) desc = descriptions.get(key) if desc: item.setText(vcol, desc) item.setToolTip(vcol, desc) child = QTreeWidgetItem(0) item.addChild(child) self.addTopLevelItem(item) editor = QTextEdit(self) # set maximal height of the editor to 3 rows editor.setMaximumHeight(4 * QtGui.QFontMetrics(editor.font()).height()) editor.setPlainText(yaml.dump(val)) self.setItemWidget(child, vcol, editor) editor.textChanged.connect( self.set_icon_func(i, item, validators[key])) self.resizeColumnToContents(0) self.resizeColumnToContents(1)
def refresh_plots_item(self, item, vname, mp=None, sp=None): expand = item.isExpanded() item.takeChildren() try: num = self.ds().psy.num except AttributeError: return if mp is None: mp = gcp(True) if sp is None: sp = gcp() for i in range(len(mp)): sub = mp[i:i + 1] array_info = sub.array_info(ds_description={'arr', 'num'}) arrs = sub._get_ds_descriptions(array_info).get(num, {}) if arrs and any(vname in arr.psy.base_variables for arr in arrs['arr']): child = QTreeWidgetItem(0) prefix = '*' if sub[0] in sp else '' text = sub[0].psy._short_info() child.setText(0, prefix + text) child.setToolTip(0, text) item.addChild(child) if expand and item.childCount(): item.setExpanded(True)
def add_variables(self, ds=None): """Add children of variables and coords to this TreeWidgetItem""" if ds is None: ds = self.ds() self.variables.takeChildren() self.coords.takeChildren() else: self.ds = weakref.ref(ds) columns = self.columns variables = self.variables coords = self.coords for vname, variable in six.iteritems(ds.variables): item = QTreeWidgetItem(0) item.setText(0, str(vname)) for i, attr in enumerate(columns, 1): if attr == 'dims': item.setText(i, ', '.join(variable.dims)) else: item.setText( i, str( variable.attrs.get(attr, getattr(variable, attr, '')))) if vname in ds.coords: coords.addChild(item) else: variables.addChild(item) if rcParams['content.load_tooltips']: item.setToolTip( 0, '<pre>' + escape_html(str(variable)) + '</pre>') # Add shape shape_item = QTreeWidgetItem(0) shape_item.setText(0, 'shape') shape_item.setText(1, str(variable.shape)) item.addChild(shape_item) # Add dimensions dims_item = QTreeWidgetItem(0) dims_item.setText(0, 'dims') dims_item.setText(1, ', '.join(variable.dims)) item.addChild(dims_item) # add open plots plots_item = QTreeWidgetItem(0) plots_item.setText(0, 'Plots') self.refresh_plots_item(plots_item, vname) item.addChild(plots_item) # add variable attribute attrs_item = QTreeWidgetItem(0) attrs_item.setText(0, 'Attributes') self.add_attrs(variable.attrs, attrs_item) item.addChild(attrs_item) # add variable encoding encoding_item = QTreeWidgetItem(0) encoding_item.setText(0, 'Encoded attributes') self.add_attrs(variable.encoding, encoding_item) item.addChild(encoding_item)
def add_attrs(self, attrs=None, item=None): if attrs is None: attrs = self.ds().attrs self.attrs.takeChildren() if item is None: item = self.attrs for key, val in attrs.items(): child = QTreeWidgetItem(0) child.setText(0, key) child.setText(1, str(val)) child.setToolTip(1, '{}: {}'.format(key, str(val))) item.addChild(child)
def __init__(self, ds, columns=[], *args, **kwargs): super(DatasetTreeItem, self).__init__(*args, **kwargs) variables = QTreeWidgetItem(0) variables.setText(0, 'variables') coords = QTreeWidgetItem(0) coords.setText(0, 'coords') self.addChildren([variables, coords]) self.addChild(variables) for vname, variable in six.iteritems(ds.variables): item = QTreeWidgetItem(0) item.setText(0, vname) for i, attr in enumerate(columns, 1): if attr == 'dims': item.setText(i, ', '.join(variable.dims)) else: item.setText(i, str(variable.attrs.get(attr, getattr( variable, attr, '')))) if vname in ds.coords: coords.addChild(item) else: variables.addChild(item) item.setToolTip(0, str(variable))