-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfields.py
82 lines (69 loc) · 2.18 KB
/
fields.py
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/env python
# ~ encoding: utf-8 ~
#
# Copyright (C) 2012 Max Brauer <[email protected]>
#
# This program is free software. It comes without any warranty, to
# the extent permitted by applicable law. You can redistribute it
# and/or modify it under the terms of the Do What The Fuck You Want
# To Public License, Version 2, as published by Sam Hocevar. See
# http://sam.zoy.org/wtfpl/COPYING for more details.
class CheckboxField(object):
"""
"""
possile_modes = {
'square': '[ ]',
'round': '( )',
'curly': '{ }'
}
def __init__(self, window, x_pos, y_pos, label, mode="square", symbol="X"):
""" Initialize the CheckboxWidget.
label = the text behind the checkbox
mode = defines how the checkbox look like.
Possible values are:
* 'square' for [ ]
* 'round' for ( )
* 'curly' for { }
symbol = a char to represent if the box is checked or not
"""
self.window = window
self.x_pos = x_pos
self.y_pos = y_pos
self.label = label
self.mode = self.possile_modes.get(mode, '( )')
self.symbol = symbol
self.active = False
self._place_widget_in_window()
def curly(self):
""" Change mode to curly {}
"""
self.mode = self.possile_modes['curly']
def round(self):
""" Change mode to round ()
"""
self.mode = self.possile_modes['round']
def square(self):
""" Change mode to square []
"""
self.mode = self.possile_modes['square']
def toggle(self):
""" Toggle active state.
If active, set to inactive. If inactive, set to active.
"""
self.active = not self.active
self._place_widget_in_window()
def _place_widget_in_window(self):
""" Generate the String for the widget.
"""
self.window.addstr(
self.x_pos,
self.y_pos,
"%s %s" % (self.mode, self.label)
)
if self.active:
self.window.addstr(
self.x_pos,
self.y_pos + 1,
self.symbol
)
self.window.refresh()