def set_marking_items(self, items): self.markInputCombo.clear() self.markInputRadioButton.setEnabled(False) self.markInputItems = items self.warning() if items is None: return if self.graph is None or self.graph.items() is None: self.warning('No graph provided or no items attached to the graph.') return graph_items = self.graph.items() domain = graph_items.domain if len(items) > 0: commonVars = (set(x.name for x in chain(items.domain.variables, items.domain.metas)) & set(x.name for x in chain(domain.variables, domain.metas))) self.markInputCombo.addItem(gui.attributeIconDict[gui.vartype(DiscreteVariable())], "ID") for var in commonVars: orgVar, mrkVar = domain[var], items.domain[var] if type(orgVar) == type(mrkVar) == StringVariable: self.markInputCombo.addItem(gui.attributeIconDict[gui.vartype(orgVar)], orgVar.name) self.markInputRadioButton.setEnabled(True)
def _set_combos(self): self._clear_combos() self.graph_attrs = self.graph_base.items_vars() self.edges_attrs = self.graph_base.links_vars() lastLabelColumns = self.lastLabelColumns lastTooltipColumns = self.lastTooltipColumns for var in self.graph_attrs: if (var.is_discrete or var.is_continuous or var.is_string and var.name == 'label'): # FIXME: whatis label? self.colorCombo.addItem(gui.attributeIconDict[gui.vartype(var)], var.name, var) if var.is_continuous: self.nodeSizeCombo.addItem(gui.attributeIconDict[gui.vartype(var)], var.name, var) elif var.is_string: try: value = self.graph.items()[0][var].value except (IndexError, TypeError): pass else: # can value be a list? if len(value.split(',')) > 1: self.nodeSizeCombo.addItem(gui.attributeIconDict[gui.vartype(var)], var.name, var) self.nodeSizeCombo.setDisabled(not self.graph_attrs) self.colorCombo.setDisabled(not self.graph_attrs) for var in self.edges_attrs: if var.is_discrete or var.is_continuous: self.edgeColorCombo.addItem(gui.attributeIconDict[gui.vartype(var)], str(var.name)) self.edgeColorCombo.setDisabled(not self.edges_attrs) for i in range(self.nodeSizeCombo.count()): if self.lastVertexSizeColumn == \ self.nodeSizeCombo.itemText(i): self.node_size_attr = i self.set_node_sizes() break for i in range(self.colorCombo.count()): if self.lastColorColumn == self.colorCombo.itemText(i): self.node_color_attr = i self.set_node_colors() break for i in range(self.attListBox.count()): if str(self.attListBox.item(i).text()) in lastLabelColumns: self.attListBox.item(i).setSelected(True) self._on_node_label_attrs_changed() for i in range(self.tooltipListBox.count()): if (self.tooltipListBox.item(i).text() in lastTooltipColumns or not lastTooltipColumns): self.tooltipListBox.item(i).setSelected(True) self._clicked_tooltip_lstbox() self.lastLabelColumns = lastLabelColumns self.lastTooltipColumns = lastTooltipColumns
def _set_combos(self): self._clear_combos() self.graph_attrs = self.graph.items_vars() lastLabelColumns = self.lastLabelColumns lastTooltipColumns = self.lastTooltipColumns for var in self.graph_attrs: if var.is_discrete or var.is_continuous: self.colorCombo.addItem( gui.attributeIconDict[gui.vartype(var)], var.name, var) if var.is_continuous: self.nodeSizeCombo.addItem( gui.attributeIconDict[gui.vartype(var)], var.name, var) self.nodeSizeCombo.setDisabled(not self.graph_attrs) self.colorCombo.setDisabled(not self.graph_attrs) for i in range(self.nodeSizeCombo.count()): if self.lastVertexSizeColumn == \ self.nodeSizeCombo.itemText(i): self.node_size_attr = i self.set_node_sizes() break for i in range(self.colorCombo.count()): if self.lastColorColumn == self.colorCombo.itemText(i): self.node_color_attr = i self.set_node_colors() break if lastLabelColumns: selection = QItemSelection() model = self.attListBox.model() for i in range(self.attListBox.count()): if str(self.attListBox.item(i).text()) in lastLabelColumns: selection.append(QItemSelectionRange(model.index(i, 0))) selmodel = self.attListBox.selectionModel() selmodel.select(selection, selmodel.Select | selmodel.Clear) else: self.attListBox.selectionModel().clearSelection() self._on_node_label_attrs_changed() if lastTooltipColumns: selection = QItemSelection() model = self.tooltipListBox.model() for i in range(self.tooltipListBox.count()): if self.tooltipListBox.item(i).text() in lastTooltipColumns: selection.append(QItemSelectionRange(model.index(i, 0))) selmodel = self.tooltipListBox.selectionModel() selmodel.select(selection, selmodel.Select | selmodel.Clear) else: self.tooltipListBox.selectionModel().clearSelection() self._clicked_tooltip_lstbox() self.lastLabelColumns = lastLabelColumns self.lastTooltipColumns = lastTooltipColumns
def _set_combos(self): self._clear_combos() self.graph_attrs = self.graph.items_vars() lastLabelColumns = self.lastLabelColumns lastTooltipColumns = self.lastTooltipColumns for var in self.graph_attrs: if var.is_discrete or var.is_continuous: self.colorCombo.addItem( gui.attributeIconDict[gui.vartype(var)], var.name, var) if var.is_continuous: self.nodeSizeCombo.addItem( gui.attributeIconDict[gui.vartype(var)], var.name, var) elif var.is_string: try: value = self.graph.items()[0][var].value except (IndexError, TypeError): pass else: # can value be a list? if len(value.split(',')) > 1: self.nodeSizeCombo.addItem( gui.attributeIconDict[gui.vartype(var)], var.name, var) self.nodeSizeCombo.setDisabled(not self.graph_attrs) self.colorCombo.setDisabled(not self.graph_attrs) for i in range(self.nodeSizeCombo.count()): if self.lastVertexSizeColumn == \ self.nodeSizeCombo.itemText(i): self.node_size_attr = i self.set_node_sizes() break for i in range(self.colorCombo.count()): if self.lastColorColumn == self.colorCombo.itemText(i): self.node_color_attr = i self.set_node_colors() break for i in range(self.attListBox.count()): if str(self.attListBox.item(i).text()) in lastLabelColumns: self.attListBox.item(i).setSelected(True) self._on_node_label_attrs_changed() for i in range(self.tooltipListBox.count()): if (self.tooltipListBox.item(i).text() in lastTooltipColumns or not lastTooltipColumns): self.tooltipListBox.item(i).setSelected(True) self._clicked_tooltip_lstbox() self.lastLabelColumns = lastLabelColumns self.lastTooltipColumns = lastTooltipColumns
def set_marking_items(self, items): self.markInputCombo.clear() self.markInputRadioButton.setEnabled(False) self.markInputItems = items self.warning() if items is None: return if self.graph is None or self.graph.items() is None: self.warning( 'No graph provided or no items attached to the graph.') return graph_items = self.graph.items() domain = graph_items.domain if len(items) > 0: commonVars = ( set(x.name for x in chain(items.domain.variables, items.domain.metas)) & set(x.name for x in chain(domain.variables, domain.metas))) self.markInputCombo.addItem( gui.attributeIconDict[gui.vartype(DiscreteVariable())], "ID") for var in commonVars: orgVar, mrkVar = domain[var], items.domain[var] if type(orgVar) == type(mrkVar) == StringVariable: self.markInputCombo.addItem( gui.attributeIconDict[gui.vartype(orgVar)], orgVar.name) self.markInputRadioButton.setEnabled(True)