diff options
author | Sebastian Koslowski <koslowski@kit.edu> | 2015-03-24 15:50:45 +0100 |
---|---|---|
committer | Sebastian Koslowski <koslowski@kit.edu> | 2015-04-03 22:17:59 +0200 |
commit | 3271e9f31c11a4fc36a3989e236f2dc919bda86b (patch) | |
tree | bc490c280ae5c31fb1325332bd53b6e16d239f20 | |
parent | 6afc40e80f05a6cc2dbdebcc037ed40c5f5921f1 (diff) |
grc: add block comments
-rw-r--r-- | grc/base/Block.py | 12 | ||||
-rw-r--r-- | grc/gui/Block.py | 29 | ||||
-rw-r--r-- | grc/gui/FlowGraph.py | 8 |
3 files changed, 48 insertions, 1 deletions
diff --git a/grc/base/Block.py b/grc/base/Block.py index 128cc5ecbe..5670d11924 100644 --- a/grc/base/Block.py +++ b/grc/base/Block.py @@ -185,6 +185,17 @@ class Block(Element): }) )) + self.get_params().append(self.get_parent().get_parent().Param( + block=self, + n=odict({'name': 'Comment', + 'key': 'comment', + 'type': 'string', + 'hide': 'part', + 'value': '', + 'tab': ADVANCED_PARAM_TAB + }) + )) + def back_ofthe_bus(self, portlist): portlist.sort(key=lambda p: p._type == 'bus') @@ -226,6 +237,7 @@ class Block(Element): def get_children(self): return self.get_ports() + self.get_params() def get_children_gui(self): return self.get_ports_gui() + self.get_params() def get_block_wrapper_path(self): return self._block_wrapper_path + def get_comment(self): return self.get_param('comment').get_value() ############################################## # Access Params diff --git a/grc/gui/Block.py b/grc/gui/Block.py index 11c1cafc97..5d3ae457da 100644 --- a/grc/gui/Block.py +++ b/grc/gui/Block.py @@ -35,6 +35,9 @@ import pango BLOCK_MARKUP_TMPL="""\ #set $foreground = $block.is_valid() and 'black' or 'red' <span foreground="$foreground" font_desc="$font"><b>$encode($block.get_name())</b></span>""" +COMMENT_MARKUP_TMPL="""\ +#set $foreground = $block.get_enabled() and '#444' or '#888' +<span foreground="$foreground" font_desc="$font">$encode($block.get_comment())</span>""" class Block(Element): """The graphical signal block.""" @@ -68,6 +71,7 @@ class Block(Element): }) )) Element.__init__(self) + self._comment_pixmap = None def get_coordinate(self): """ @@ -203,6 +207,23 @@ class Block(Element): for ports in (self.get_sources_gui(), self.get_sinks_gui()) ] )) + self.create_comment_label() + + def create_comment_label(self): + comment = self.get_comment() + if comment: + layout = gtk.DrawingArea().create_pango_layout('') + layout.set_markup(Utils.parse_template(COMMENT_MARKUP_TMPL, block=self, font=BLOCK_FONT)) + width, height = layout.get_pixel_size() + pixmap = self.get_parent().new_pixmap(width, height) + gc = pixmap.new_gc() + gc.set_foreground(Colors.FLOWGRAPH_BACKGROUND_COLOR) + pixmap.draw_rectangle(gc, True, 0, 0, width, height) + pixmap.draw_layout(gc, 0, 0, layout) + self._comment_pixmap = pixmap + else: + self._comment_pixmap = None + def draw(self, gc, window): """ @@ -243,3 +264,11 @@ class Block(Element): port_selected = port.what_is_selected(coor, coor_m) if port_selected: return port_selected return Element.what_is_selected(self, coor, coor_m) + + def draw_comment(self, gc, window): + if not self._comment_pixmap: + return + + x, y = self.get_coordinate() + window.draw_drawable(gc, self._comment_pixmap, 0, 0, x, + y + self.H + BLOCK_LABEL_PADDING, -1, -1) diff --git a/grc/gui/FlowGraph.py b/grc/gui/FlowGraph.py index f8be2f6cc3..d512a6793d 100644 --- a/grc/gui/FlowGraph.py +++ b/grc/gui/FlowGraph.py @@ -280,6 +280,12 @@ class FlowGraph(Element): #draw the background gc.set_foreground(Colors.FLOWGRAPH_BACKGROUND_COLOR) window.draw_rectangle(gc, True, 0, 0, W, H) + # draw comments first + hide_disabled_blocks = Actions.TOGGLE_HIDE_DISABLED_BLOCKS.get_active() + for block in self.get_blocks(): + if hide_disabled_blocks and not block.get_enabled(): + continue # skip hidden disabled block comments + block.draw_comment(gc, window) #draw multi select rectangle if self.mouse_pressed and (not self.get_selected_elements() or self.get_ctrl_mask()): #coordinates @@ -295,7 +301,7 @@ class FlowGraph(Element): window.draw_rectangle(gc, False, x, y, w, h) #draw blocks on top of connections for element in self.get_connections() + self.get_blocks(): - if Actions.TOGGLE_HIDE_DISABLED_BLOCKS.get_active() and not element.get_enabled(): + if hide_disabled_blocks and not element.get_enabled(): continue # skip hidden disabled blocks and connections element.draw(gc, window) #draw selected blocks on top of selected connections |