equal
deleted
inserted
replaced
5 |
5 |
6 class TextField(Widget): |
6 class TextField(Widget): |
7 |
7 |
8 def __init__(self, value=''): |
8 def __init__(self, value=''): |
9 Widget.__init__(self) |
9 Widget.__init__(self) |
|
10 self.allow_focus = True |
10 self.sizereq.update(10, 1) |
11 self.sizereq.update(10, 1) |
11 |
|
12 self.allow_focus = True |
|
13 |
12 |
14 self.code = locale.getpreferredencoding() |
13 self.code = locale.getpreferredencoding() |
15 if not isinstance(value, str): |
14 if not isinstance(value, str): |
16 value = str(value, self.code) |
15 value = str(value, self.code) |
17 |
16 |
23 self.ofs = 0 # position of value beginning on screen |
22 self.ofs = 0 # position of value beginning on screen |
24 |
23 |
25 def resize(self, w, h): |
24 def resize(self, w, h): |
26 self.tw = self.width - 2 |
25 self.tw = self.width - 2 |
27 |
26 |
28 def set_theme(self, theme): |
|
29 self.color = theme.normal |
|
30 |
|
31 def draw(self, buffer): |
27 def draw(self, buffer): |
32 with buffer.attr(self.color): |
28 color = self.theme.active if self.has_focus() else self.theme.normal |
|
29 with buffer.attr(color): |
33 # draw value |
30 # draw value |
34 val = self.value + ' ' * self.tw # add spaces to fill rest of field |
31 val = self.value + ' ' * self.tw # add spaces to fill rest of field |
35 val = val[self.ofs : self.ofs + self.tw] # cut value - begin from ofs, limit to tw chars |
32 val = val[self.ofs : self.ofs + self.tw] # cut value - begin from ofs, limit to tw chars |
36 buffer.puts(val.encode(self.code), 1) |
33 buffer.puts(val.encode(self.code), 1) |
37 |
34 |
47 buffer.putch(c, self.width-1, 0) |
44 buffer.putch(c, self.width-1, 0) |
48 |
45 |
49 self._cursor = (1 + self.curspos - self.ofs, 0) |
46 self._cursor = (1 + self.curspos - self.ofs, 0) |
50 |
47 |
51 def keypress(self, keyname, char, mod=0): |
48 def keypress(self, keyname, char, mod=0): |
52 Widget.keypress(self, keyname, char, mod) |
49 consumed = True |
53 accepted = True |
|
54 if keyname == 'left': |
50 if keyname == 'left': |
55 self.move_left() |
51 self.move_left() |
56 elif keyname == 'right': |
52 elif keyname == 'right': |
57 self.move_right() |
53 self.move_right() |
58 elif keyname == 'backspace': |
54 elif keyname == 'backspace': |
60 self.move_left() |
56 self.move_left() |
61 self.del_char() |
57 self.del_char() |
62 elif keyname == 'delete': |
58 elif keyname == 'delete': |
63 self.del_char() |
59 self.del_char() |
64 else: |
60 else: |
65 accepted = False |
61 consumed = False |
66 |
62 |
67 if char: |
63 if char: |
68 self.add_char(char) |
64 self.add_char(char) |
69 self.move_right() |
65 self.move_right() |
70 accepted = True |
66 consumed = True |
71 |
67 |
72 #if accepted: |
68 if consumed: |
73 #self.redraw() |
69 #self.redraw() |
74 return accepted |
70 return True |
|
71 Widget.keypress(self, keyname, char, mod) |
75 |
72 |
76 def move_left(self): |
73 def move_left(self): |
77 if self.curspos - self.ofs > 1 or (self.ofs == 0 and self.curspos == 1): |
74 if self.curspos - self.ofs > 1 or (self.ofs == 0 and self.curspos == 1): |
78 # move cursor |
75 # move cursor |
79 self.curspos -= 1 |
76 self.curspos -= 1 |