|
@@ -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()
|