summaryrefslogtreecommitdiff
path: root/grc/base/Port.py
diff options
context:
space:
mode:
Diffstat (limited to 'grc/base/Port.py')
-rw-r--r--grc/base/Port.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/grc/base/Port.py b/grc/base/Port.py
index 0e58f583c3..1b2acb0582 100644
--- a/grc/base/Port.py
+++ b/grc/base/Port.py
@@ -38,6 +38,7 @@ class Port(Element):
self._type = n['type']
self._dir = dir
+
def validate(self):
"""
Validate the port.
@@ -62,7 +63,14 @@ class Port(Element):
def is_port(self): return True
def get_color(self): return '#FFFFFF'
- def get_name(self): return self._name
+ def get_name(self):
+ number = ''
+ if self.get_type() == 'bus':
+ busses = filter(lambda a: a._dir == self._dir, self.get_parent().get_ports_gui());
+
+ number = str(busses.index(self)) + '#' + str(len(self.get_associated_ports()));
+ return self._name + number
+
def get_key(self): return self._key
def is_sink(self): return self._dir == 'sink'
def is_source(self): return self._dir == 'source'
@@ -87,3 +95,23 @@ class Port(Element):
a list of connection objects
"""
return filter(lambda c: c.get_enabled(), self.get_connections())
+
+ def get_associated_ports(self):
+ if not self.get_type() == 'bus':
+ return [self];
+ else:
+ if self.is_source():
+ get_p = self.get_parent().get_sources;
+ bus_structure = self.get_parent().current_bus_structure['source'];
+ direc = 'source'
+ else:
+ get_p = self.get_parent().get_sinks;
+ bus_structure = self.get_parent().current_bus_structure['sink'];
+ direc = 'sink'
+
+ ports = [i for i in get_p() if not i.get_type() == 'bus'];
+ if bus_structure:
+ busses = [i for i in get_p() if i.get_type() == 'bus'];
+ bus_index = busses.index(self);
+ ports = filter(lambda a: ports.index(a) in bus_structure[bus_index], ports);
+ return ports;