summaryrefslogtreecommitdiff
path: root/grc/src
diff options
context:
space:
mode:
authorjblum2009-05-05 18:35:39 +0000
committerjblum2009-05-05 18:35:39 +0000
commit977674398e17ee07362fe986e0573cf1be69554e (patch)
tree034ba4253e8a5179712e3bf3e54935e4e78e5677 /grc/src
parente2a718865bbcb7196637404855447cbe4d0b88f6 (diff)
downloadgnuradio-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.py4
-rw-r--r--grc/src/platforms/gui/FlowGraph.py20
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