summaryrefslogtreecommitdiff
path: root/grc/src/platforms/gui/Block.py
diff options
context:
space:
mode:
Diffstat (limited to 'grc/src/platforms/gui/Block.py')
-rw-r--r--grc/src/platforms/gui/Block.py23
1 files changed, 13 insertions, 10 deletions
diff --git a/grc/src/platforms/gui/Block.py b/grc/src/platforms/gui/Block.py
index 7589540b9..a2b5048ec 100644
--- a/grc/src/platforms/gui/Block.py
+++ b/grc/src/platforms/gui/Block.py
@@ -23,8 +23,7 @@ import Utils
import Colors
from ... gui.Constants import BORDER_PROXIMITY_SENSITIVITY
from Constants import \
- BLOCK_FONT, LABEL_PADDING_WIDTH, \
- LABEL_PADDING_HEIGHT, PORT_HEIGHT, \
+ BLOCK_FONT, BLOCK_LABEL_PADDING, \
PORT_SEPARATION, LABEL_SEPARATION, \
PORT_BORDER_SEPARATION, POSSIBLE_ROTATIONS
import pygtk
@@ -116,12 +115,15 @@ class Block(Element):
self.bg_color = self.get_enabled() and Colors.BG_COLOR or Colors.DISABLED_BG_COLOR
self.clear()
self._create_labels()
- self.W = self.label_width + 2*LABEL_PADDING_WIDTH
- max_ports = max(len(self.get_sinks()), len(self.get_sources()), 1)
- self.H = max(self.label_height+2*LABEL_PADDING_HEIGHT, 2*PORT_BORDER_SEPARATION + max_ports*PORT_HEIGHT + (max_ports-1)*PORT_SEPARATION)
- if self.is_horizontal(): self.add_area((0,0),(self.W,self.H))
- elif self.is_vertical(): self.add_area((0,0),(self.H,self.W))
- map(lambda p: p.update(), self.get_sinks() + self.get_sources())
+ self.W = self.label_width + 2*BLOCK_LABEL_PADDING
+ self.H = max(*(
+ [self.label_height+2*BLOCK_LABEL_PADDING] + [2*PORT_BORDER_SEPARATION + \
+ sum([port.H + PORT_SEPARATION for port in ports]) - PORT_SEPARATION
+ for ports in (self.get_sources(), self.get_sinks())]
+ ))
+ if self.is_horizontal(): self.add_area((0, 0), (self.W, self.H))
+ elif self.is_vertical(): self.add_area((0, 0), (self.H, self.W))
+ map(lambda p: p.update(), self.get_ports())
def _create_labels(self):
"""Create the labels for the signal block."""
@@ -164,6 +166,7 @@ class Block(Element):
self.vertical_label = vimage = gtk.gdk.Image(gtk.gdk.IMAGE_NORMAL, pixmap.get_visual(), height, width)
for i in range(width):
for j in range(height): vimage.put_pixel(j, width-i-1, image.get_pixel(i, j))
+ map(lambda p: p._create_labels(), self.get_ports())
def draw(self, window):
"""
@@ -176,9 +179,9 @@ class Block(Element):
#draw label image
gc = self.get_gc()
if self.is_horizontal():
- window.draw_image(gc, self.horizontal_label, 0, 0, x+LABEL_PADDING_WIDTH, y+(self.H-self.label_height)/2, -1, -1)
+ window.draw_image(gc, self.horizontal_label, 0, 0, x+BLOCK_LABEL_PADDING, y+(self.H-self.label_height)/2, -1, -1)
elif self.is_vertical():
- window.draw_image(gc, self.vertical_label, 0, 0, x+(self.H-self.label_height)/2, y+LABEL_PADDING_WIDTH, -1, -1)
+ window.draw_image(gc, self.vertical_label, 0, 0, x+(self.H-self.label_height)/2, y+BLOCK_LABEL_PADDING, -1, -1)
#draw ports
map(lambda p: p.draw(window), self.get_ports())