Browse Source

select-locate: show patterns

Fabian Peter Hammerle 8 years ago
parent
commit
696a42a1ee
1 changed files with 19 additions and 2 deletions
  1. 19 2
      scripts/select-locate

+ 19 - 2
scripts/select-locate

@@ -6,6 +6,7 @@ import osex
 import curses
 import pprint
 import locale
+import textwrap
 import argparse
 import argcomplete
 import ioex, ioex.cursesex, ioex.selector
@@ -42,9 +43,25 @@ class LocateRootNode(ioex.selector.Node):
         return self._header_height
 
     def show_patterns(self):
-        self._window.addstr(0, 0, 'locate-select', curses.A_BOLD)
+        label = 'patterns: '
+        self._window.addstr(0, 0, label, curses.A_BOLD)
+        # join patterns so textwrap.fill may be applied
+        patterns_text = textwrap.fill(
+            '\1'.join(self._patterns),
+            # fixme: unwanted new lines occur if width is not decremented
+            self.get_window_width() - 1,
+            initial_indent = '#' * len(label),
+            subsequent_indent = ' ' * len(label)
+            )
+        patterns_wrapped = patterns_text[len(label):].split('\1')
+        for pattern_wrapped in patterns_wrapped:
+            self._window.addstr(pattern_wrapped, curses.A_REVERSE)
+            self._window.addstr(' ')
         self._window.refresh()
-        self._header_height = 1
+        self._header_height = patterns_text.count('\n') + 1
+        # remove A_REVERSE attribute from ident blocks
+        for row_index in range(1, self._header_height):
+            self._window.addstr(row_index, 0, ' ' * len(label))
 
     def show_header(self):
         self.show_patterns()