1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import urwid
class CursorPudding(urwid.Widget):
_sizing = frozenset(['flow'])
_selectable = True
def __init__(self):
self.cursor_col = 0
def rows(self, size, focus=False):
return 1
def render(self, size, focus=False):
(maxcol,) = size
num_pudding = maxcol / len("Pudding")
cursor = None
if focus:
cursor = self.get_cursor_coords(size)
return urwid.TextCanvas(["Pudding" * num_pudding], [], cursor, maxcol)
def get_cursor_coords(self, size):
(maxcol,) = size
col = min(self.cursor_col, maxcol - 1)
return col, 0
def keypress(self, size, key):
(maxcol, ) = size
if key == 'left':
col = self.cursor_col - 1
elif key == 'right':
col = self.cursor_col + 1
else:
return key
self.cursor_x = max(0, min(maxcol - 1, col))
self._invalidate()
|