Exemplo n.º 1
0
 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))
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
 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))