diff options
author | jblum | 2009-05-05 18:35:39 +0000 |
---|---|---|
committer | jblum | 2009-05-05 18:35:39 +0000 |
commit | 977674398e17ee07362fe986e0573cf1be69554e (patch) | |
tree | 034ba4253e8a5179712e3bf3e54935e4e78e5677 /grc/src | |
parent | e2a718865bbcb7196637404855447cbe4d0b88f6 (diff) | |
download | gnuradio-977674398e17ee07362fe986e0573cf1be69554e.tar.gz gnuradio-977674398e17ee07362fe986e0573cf1be69554e.tar.bz2 gnuradio-977674398e17ee07362fe986e0573cf1be69554e.zip |
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
Diffstat (limited to 'grc/src')
-rw-r--r-- | grc/src/gui/ActionHandler.py | 4 | ||||
-rw-r--r-- | grc/src/platforms/gui/FlowGraph.py | 20 |
2 files changed, 15 insertions, 9 deletions
diff --git a/grc/src/gui/ActionHandler.py b/grc/src/gui/ActionHandler.py index da0909a64..dffba62a3 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 37157ac7c..11942eb2e 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 |