From: jblum Date: Tue, 5 May 2009 18:35:39 +0000 (+0000) Subject: speed up for flow graphs with many blocks: X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=977674398e17ee07362fe986e0573cf1be69554e;p=debian%2Fgnuradio speed up for flow graphs with many blocks: separated highlighting update logic so update does not have to be called on selection. git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10958 221aa14e-8319-0410-a670-987f0aec2ac5 --- diff --git a/grc/src/gui/ActionHandler.py b/grc/src/gui/ActionHandler.py index da0909a6..dffba62a 100644 --- a/grc/src/gui/ActionHandler.py +++ b/grc/src/gui/ActionHandler.py @@ -150,10 +150,9 @@ class ActionHandler: # Selections ################################################## elif state == Actions.ELEMENT_SELECT: - self.get_flow_graph().update() + pass #do nothing, update routines below elif state == Actions.NOTHING_SELECT: self.get_flow_graph().unselect() - self.get_flow_graph().update() ################################################## # Enable/Disable ################################################## @@ -345,6 +344,7 @@ class ActionHandler: Actions.get_action_from_name(Actions.FLOW_GRAPH_SAVE).set_sensitive(not self.get_page().get_saved()) self.main_window.update() #draw the flow graph + self.get_flow_graph().update_highlighting() self.get_flow_graph().queue_draw() def update_exec_stop(self): diff --git a/grc/src/platforms/gui/FlowGraph.py b/grc/src/platforms/gui/FlowGraph.py index 37157ac7..11942eb2 100644 --- a/grc/src/platforms/gui/FlowGraph.py +++ b/grc/src/platforms/gui/FlowGraph.py @@ -275,21 +275,27 @@ class FlowGraph(Element): for selected_element in self.get_selected_connections() + self.get_selected_blocks(): selected_element.draw(gc, window) + def update_highlighting(self): + """ + Update highlighting so only the selected are highlighted. + """ + selected_elements = self.get_selected_elements() + for element in self.get_elements(): + element.set_highlighted(element in selected_elements) + def update(self): """ Removed deleted elements from the selected elements list. - Update highlighting so only the selected is highlighted. Call update on all elements. """ selected_elements = self.get_selected_elements() + elements = self.get_elements() #remove deleted elements for selected in selected_elements: - if selected not in self.get_elements(): - selected_elements.remove(selected) - #set highlight and update all - for element in self.get_elements(): - element.set_highlighted(element in selected_elements) - element.update() + if selected in elements: continue + selected_elements.remove(selected) + #update all + for element in elements: element.update() ########################################################################## ## Get Selected