コード例 #1
0
    def on_relation_change(self, relation, id):
        def _on_remove_relation(id):
            try: relation = self.relations.pop(id)
            except KeyError: return
            self.graph.remove_relation(relation)

        def _on_add_relation(relation, id):
            _on_remove_relation(id)
            self.relations[id] = relation
            self.graph.add_relation(relation)

        if relation:
            _on_add_relation(relation.relation, id)
        else:
            _on_remove_relation(id)
        self._populate_table()
        self.slider_rank.setMaximum(30
                                    if any(max(rel.data.shape) > LIMIT_RANK_THRESHOLD
                                           for rel in self.graph.relations)
                                    else
                                    100)
        self.webview.repaint(self.graph, self)
        self.send(Output.FUSION_GRAPH, FusionGraph(self.graph))
        # this ensures gui.label-s get updated
        self.n_object_types = self.graph.n_object_types
        self.n_relations = self.graph.n_relations
コード例 #2
0
    def on_relation_change(self, relation, id):
        def _on_remove_relation(id):
            try:
                relation = self.relations.pop(id)
            except KeyError:
                return
            self.graph.remove_relation(relation)

        def _on_add_relation(relation, id):
            _on_remove_relation(id)
            self.relations[id] = relation
            self.graph.add_relation(relation)

        if relation:
            _on_add_relation(relation.relation, id)
        else:
            _on_remove_relation(id)

        self.graphview.clear()
        for relation in self.graph.relations:
            self.graphview.addRelation(relation)
        self.graphview.hideSquares()

        self._populate_table()
        LIMIT_RANK_THRESHOLD = 1000  # If so many objects or more, limit maximum rank
        self.slider_rank.setMaximum(30 if any(
            max(rel.data.shape) > LIMIT_RANK_THRESHOLD
            for rel in self.graph.relations) else 100)
        self.send(Output.FUSION_GRAPH, FusionGraph(self.graph))
        # this ensures gui.label-s get updated
        self.n_object_types = self.graph.n_object_types
        self.n_relations = self.graph.n_relations
コード例 #3
0
 def __init__(self):
     super().__init__()
     self.n_object_types = 0
     self.n_relations = 0
     self.relations = {}  # id-->relation map
     self.graph = FusionGraph(fusion.FusionGraph())
     self.graphview = FusionGraphView(self)
     self.graphview.selectionChanged.connect(self.on_graph_element_selected)
     self._create_layout()
コード例 #4
0
 def __init__(self):
     super().__init__()
     self.n_object_types = 0
     self.n_relations = 0
     self.relations = {}  # id-->relation map
     self.graph_element_selected.connect(self.on_graph_element_selected)
     self.graph = FusionGraph(fusion.FusionGraph())
     self.webview = WebviewWidget(self.mainArea)
     self._create_layout()