|
|
|
@ -157,6 +157,10 @@ class CliMenu:
|
|
|
|
|
|
|
|
|
|
while True:
|
|
|
|
|
self._pos = (self._pos + direction) % len(self._items)
|
|
|
|
|
|
|
|
|
|
# move cursor of buffer along with the selected option
|
|
|
|
|
self._buf.cursor_position = self._doc.translate_row_col_to_index(self._pos, 0)
|
|
|
|
|
|
|
|
|
|
if self._items[self._pos].focusable:
|
|
|
|
|
break
|
|
|
|
|
|
|
|
|
@ -188,10 +192,6 @@ class CliMenu:
|
|
|
|
|
self._success = True
|
|
|
|
|
event.app.exit()
|
|
|
|
|
|
|
|
|
|
# set initial pos
|
|
|
|
|
if not self._items[self._pos].focusable:
|
|
|
|
|
self.next_item(1)
|
|
|
|
|
|
|
|
|
|
text = '\n'.join(map(lambda _x: _x.text, self._items))
|
|
|
|
|
self._doc = Document(text, cursor_position=self._pos)
|
|
|
|
|
self._buf = Buffer(read_only=True, document=self._doc)
|
|
|
|
@ -200,6 +200,11 @@ class CliMenu:
|
|
|
|
|
split = HSplit([Window(self._bufctrl,
|
|
|
|
|
wrap_lines=True,
|
|
|
|
|
always_hide_cursor=True)])
|
|
|
|
|
|
|
|
|
|
# set initial pos
|
|
|
|
|
if not self._items[self._pos].focusable:
|
|
|
|
|
self.next_item(1)
|
|
|
|
|
|
|
|
|
|
app = Application(layout=Layout(split),
|
|
|
|
|
key_bindings=self._kb,
|
|
|
|
|
full_screen=False,
|
|
|
|
|