summaryrefslogtreecommitdiff
path: root/grc/gui/BlockTreeWindow.py
diff options
context:
space:
mode:
Diffstat (limited to 'grc/gui/BlockTreeWindow.py')
-rw-r--r--grc/gui/BlockTreeWindow.py57
1 files changed, 23 insertions, 34 deletions
diff --git a/grc/gui/BlockTreeWindow.py b/grc/gui/BlockTreeWindow.py
index a68d0938fc..e8de6e9277 100644
--- a/grc/gui/BlockTreeWindow.py
+++ b/grc/gui/BlockTreeWindow.py
@@ -26,36 +26,26 @@ from gi.repository import GObject
from . import Actions, Utils
from .Constants import DEFAULT_BLOCKS_WINDOW_WIDTH, DND_TARGETS
-NAME_INDEX = 0
-KEY_INDEX = 1
-DOC_INDEX = 2
-
-DOC_MARKUP_TMPL = """\
-#set $docs = []
-#if $doc.get('')
- #set $docs += $doc.pop('').splitlines() + ['']
-#end if
-#for b, d in $doc.iteritems()
- #set $docs += ['--- {0} ---'.format(b)] + d.splitlines() + ['']
-#end for
-#set $len_out = 0
-#for $n, $line in $enumerate($docs[:-1])
-#if $n
-
-#end if
-$encode($line)#slurp
-#set $len_out += $len($line)
-#if $n > 10 or $len_out > 500
-
-...#slurp
-#break
-#end if
-#end for
-#if $len_out == 0
-undocumented#slurp
-#end if"""
-
-CAT_MARKUP_TMPL = """Category: $cat"""
+NAME_INDEX, KEY_INDEX, DOC_INDEX = range(3)
+
+
+def _format_doc(doc):
+ docs = []
+ if doc.get(''):
+ docs += doc.pop('').splitlines() + ['']
+ for block_name, docstring in doc.iteritems():
+ docs.append('--- {0} ---'.format(block_name))
+ docs += docstring.splitlines()
+ docs.append('')
+ out = ''
+ for n, line in enumerate(docs[:-1]):
+ if n:
+ out += '\n'
+ out += Utils.encode(line)
+ if n > 10 or len(out) > 500:
+ out += '\n...'
+ break
+ return out or 'undocumented'
class BlockTreeWindow(Gtk.VBox):
@@ -159,7 +149,7 @@ class BlockTreeWindow(Gtk.VBox):
iter_ = treestore.insert_before(categories[sub_category[:-1]], None)
treestore.set_value(iter_, NAME_INDEX, cat_name)
treestore.set_value(iter_, KEY_INDEX, '')
- treestore.set_value(iter_, DOC_INDEX, Utils.parse_template(CAT_MARKUP_TMPL, cat=cat_name))
+ treestore.set_value(iter_, DOC_INDEX, 'Category: ' + Utils.encode(cat_name))
categories[sub_category] = iter_
# add block
if block is None:
@@ -167,7 +157,7 @@ class BlockTreeWindow(Gtk.VBox):
iter_ = treestore.insert_before(categories[category], None)
treestore.set_value(iter_, NAME_INDEX, block.get_name())
treestore.set_value(iter_, KEY_INDEX, block.get_key())
- treestore.set_value(iter_, DOC_INDEX, Utils.parse_template(DOC_MARKUP_TMPL, doc=block.get_doc()))
+ treestore.set_value(iter_, DOC_INDEX, _format_doc(block.get_doc()))
def update_docs(self):
"""Update the documentation column of every block"""
@@ -177,8 +167,7 @@ class BlockTreeWindow(Gtk.VBox):
return # category node, no doc string
key = model.get_value(iter_, KEY_INDEX)
block = self.platform.blocks[key]
- doc = Utils.parse_template(DOC_MARKUP_TMPL, doc=block.get_doc())
- model.set_value(iter_, DOC_INDEX, doc)
+ model.set_value(iter_, DOC_INDEX, _format_doc(block.get_doc()))
self.treestore.foreach(update_doc)
self.treestore_search.foreach(update_doc)