[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 02/07: grc: refactor FlowGraph.py(s)
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 02/07: grc: refactor FlowGraph.py(s) |
Date: |
Fri, 4 Sep 2015 12:57:49 +0000 (UTC) |
This is an automated email from the git hooks/post-receive script.
jcorgan pushed a commit to branch master
in repository gnuradio.
commit c3ed72b9d9fffb234ed266c243a6b3c3b49d42d2
Author: Sebastian Koslowski <address@hidden>
Date: Wed Aug 19 14:01:03 2015 +0200
grc: refactor FlowGraph.py(s)
---
grc/base/FlowGraph.py | 45 +++++++++++++++++++++++++++++++++------------
grc/gui/FlowGraph.py | 21 +++++++++------------
grc/python/Generator.py | 2 +-
3 files changed, 43 insertions(+), 25 deletions(-)
diff --git a/grc/base/FlowGraph.py b/grc/base/FlowGraph.py
index 697ae8c..61e60f9 100644
--- a/grc/base/FlowGraph.py
+++ b/grc/base/FlowGraph.py
@@ -18,10 +18,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA
"""
import time
-from . import odict
-from Element import Element
+from operator import methodcaller
+from itertools import ifilter
+
from .. gui import Messages
-from . Constants import FLOW_GRAPH_FILE_FORMAT_VERSION
+
+from . import odict
+from .Element import Element
+from .Constants import FLOW_GRAPH_FILE_FORMAT_VERSION
class FlowGraph(Element):
@@ -118,18 +122,33 @@ class FlowGraph(Element):
##############################################
## Access Elements
##############################################
- def get_block(self, id): return filter(lambda b: b.get_id() == id,
self.get_blocks())[0]
- def get_blocks_unordered(self): return filter(lambda e: e.is_block(),
self.get_elements())
+ def get_block(self, id):
+ for block in self.iter_blocks():
+ if block.get_id() == id:
+ return block
+ raise KeyError('No block with ID {0!r}'.format(id))
+
+ def iter_blocks(self):
+ return ifilter(methodcaller('is_block'), self.get_elements())
+
+ def get_blocks_unordered(self):
+ return list(self.iter_blocks())
+
def get_blocks(self):
# refactored the slow, ugly version
# don't know why we need this here, using it for sorted export_data()
- return sorted(self.get_blocks_unordered(), key=lambda b: (
+ return sorted(self.iter_blocks(), key=lambda b: (
b.get_key() != 'options', # options to the front
not b.get_key().startswith('variable'), # then vars
str(b)
))
- def get_connections(self): return filter(lambda e: e.is_connection(),
self.get_elements())
- def get_children(self): return self.get_elements()
+
+ def iter_connections(self):
+ return ifilter(methodcaller('is_connection'), self.get_elements())
+
+ def get_connections(self):
+ return list(self.iter_connections())
+
def get_elements(self):
"""
Get a list of all the elements.
@@ -145,6 +164,8 @@ class FlowGraph(Element):
self._elements.remove(self._options_block)
return self._elements
+ get_children = get_elements
+
def get_enabled_blocks(self):
"""
Get a list of all blocks that are enabled and not bypassed.
@@ -152,7 +173,7 @@ class FlowGraph(Element):
Returns:
a list of blocks
"""
- return filter(lambda b: b.get_enabled(), self.get_blocks())
+ return filter(methodcaller('get_enabled'), self.iter_blocks())
def get_bypassed_blocks(self):
"""
@@ -161,7 +182,7 @@ class FlowGraph(Element):
Returns:
a list of blocks
"""
- return filter(lambda b: b.get_bypassed(), self.get_blocks())
+ return filter(methodcaller('get_bypassed'), self.iter_blocks())
def get_enabled_connections(self):
"""
@@ -170,7 +191,7 @@ class FlowGraph(Element):
Returns:
a list of connections
"""
- return filter(lambda c: c.get_enabled(), self.get_connections())
+ return filter(methodcaller('get_enabled'), self.get_connections())
def get_new_block(self, key):
"""
@@ -301,7 +322,7 @@ class FlowGraph(Element):
block.import_data(block_n)
#build the connections
- block_ids = map(lambda b: b.get_id(), self.get_blocks())
+ block_ids = map(methodcaller('get_id'), self.iter_blocks())
for connection_n in connections_n:
try: # to make the connection
#get the block ids
diff --git a/grc/gui/FlowGraph.py b/grc/gui/FlowGraph.py
index bf6e1ee..4a9fb0b 100644
--- a/grc/gui/FlowGraph.py
+++ b/grc/gui/FlowGraph.py
@@ -17,17 +17,14 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
"""
-from Constants import SCROLL_PROXIMITY_SENSITIVITY, SCROLL_DISTANCE
-import Actions
-import Colors
-import Utils
-from Element import Element
-import pygtk
-pygtk.require('2.0')
-import gtk
import random
-import Messages
-import Bars
+from itertools import chain
+from operator import methodcaller
+
+from . import Actions, Colors, Utils, Messages, Bars
+from .Constants import SCROLL_PROXIMITY_SENSITIVITY, SCROLL_DISTANCE
+from .Element import Element
+
class FlowGraph(Element):
"""
@@ -294,7 +291,7 @@ class FlowGraph(Element):
window.draw_rectangle(gc, True, 0, 0, W, H)
# draw comments first
if Actions.TOGGLE_SHOW_BLOCK_COMMENTS.get_active():
- for block in self.get_blocks():
+ for block in self.iter_blocks():
if block.get_enabled():
block.draw_comment(gc, window)
#draw multi select rectangle
@@ -312,7 +309,7 @@ class FlowGraph(Element):
window.draw_rectangle(gc, False, x, y, w, h)
#draw blocks on top of connections
hide_disabled_blocks = Actions.TOGGLE_HIDE_DISABLED_BLOCKS.get_active()
- for element in self.get_connections() + self.get_blocks():
+ for element in chain(self.iter_connections(), self.iter_blocks()):
if hide_disabled_blocks and not element.get_enabled():
continue # skip hidden disabled blocks and connections
element.draw(gc, window)
diff --git a/grc/python/Generator.py b/grc/python/Generator.py
index 98fbd0c..3c687a2 100644
--- a/grc/python/Generator.py
+++ b/grc/python/Generator.py
@@ -173,7 +173,7 @@ class TopBlockGenerator(object):
return code
blocks = expr_utils.sort_objects(
- filter(lambda b: b.get_enabled() and not b.get_bypassed(),
self._flow_graph.get_blocks()),
+ filter(lambda b: b.get_enabled() and not b.get_bypassed(),
self._flow_graph.iter_blocks()),
lambda b: b.get_id(), _get_block_sort_text
)
# List of regular blocks (all blocks minus the special ones)
- [Commit-gnuradio] [gnuradio] branch master updated (7d1ead9 -> 80d5255), git, 2015/09/04
- [Commit-gnuradio] [gnuradio] 05/07: Merge remote-tracking branch 'mbr0wn/uhd/usrp_block_grc', git, 2015/09/04
- [Commit-gnuradio] [gnuradio] 07/07: Merge remote-tracking branch 'gnuradio-wg-grc/master_grcwg', git, 2015/09/04
- [Commit-gnuradio] [gnuradio] 04/07: gr-qtgui: default font size of the colorbar title in the Waterfall plot was never set. Now set to font size 18., git, 2015/09/04
- [Commit-gnuradio] [gnuradio] 06/07: Merge remote-tracking branch 'saikwolf/qt_themeing', git, 2015/09/04
- [Commit-gnuradio] [gnuradio] 02/07: grc: refactor FlowGraph.py(s),
git <=
- [Commit-gnuradio] [gnuradio] 03/07: grc: sort blocks in export_data(), draw disabled blocks first (fixes #830), git, 2015/09/04
- [Commit-gnuradio] [gnuradio] 01/07: uhd: Rearranged GRC bindings for USRP blocks, git, 2015/09/04