aboutsummaryrefslogtreecommitdiff
path: root/client/ur_fuzzy_alarm_clock.py
diff options
context:
space:
mode:
Diffstat (limited to 'client/ur_fuzzy_alarm_clock.py')
-rwxr-xr-xclient/ur_fuzzy_alarm_clock.py143
1 files changed, 80 insertions, 63 deletions
diff --git a/client/ur_fuzzy_alarm_clock.py b/client/ur_fuzzy_alarm_clock.py
index 4fbe3e5..d6e5a1b 100755
--- a/client/ur_fuzzy_alarm_clock.py
+++ b/client/ur_fuzzy_alarm_clock.py
@@ -18,11 +18,11 @@ except ImportError:
logging.error('This program needs pySerial')
sys.exit(1)
-class FuzzyAlarmClock:
- def __init__(self,device):
+class FuzzyAlarmClock:
+ def __init__(self, device):
try:
- self.serial = serial.Serial(device,9600,timeout=5)
+ self.serial = serial.Serial(device, 9600, timeout=5)
except serial.serialutil.SerialException:
logging.warning('No such serial device {device}; mocking'.format(
device=device
@@ -36,7 +36,7 @@ class FuzzyAlarmClock:
now = 's'+datetime.datetime.now().strftime("%y%m%d%u%H%M%S")
self.serial.write(now)
- def read_alarms(self,n):
+ def read_alarms(self, n):
data = []
self.serial.flushInput()
self.serial.write('p')
@@ -51,32 +51,33 @@ class FuzzyAlarmClock:
data[i] = days+data[i][1:]
return data
- def set_alarm(self,alarm,values):
+ def set_alarm(self, alarm, values):
s = 'a'+str(alarm)
b0 = 0
- for i,bit in enumerate(values[1:8] + values[0:1]):
+ for i, bit in enumerate(values[1:8] + values[0:1]):
b0 += bit << i
- s += "%02x"%(b0)
+ s += "%02x" % (b0)
for val in values[8:]:
- s += "%02x"%(val)
+ s += "%02x" % (val)
self.serial.write(s)
-class ModEdit(urwid.IntEdit):
- def __init__(self,mod,caption="",default=None,offset=0):
+class ModEdit(urwid.IntEdit):
+ def __init__(self, mod, caption="", default=None, offset=0):
self.mod = mod
self.offset = offset
- super(ModEdit,self).__init__(caption,default)
+ super(ModEdit, self).__init__(caption, default)
- def insert_text(self,text):
- super(ModEdit,self).insert_text(text)
- self.set_edit_text(str((self.value() - self.offset)% self.mod+self.offset))
+ def insert_text(self, text):
+ super(ModEdit, self).insert_text(text)
+ self.set_edit_text(str(
+ (self.value() - self.offset) % self.mod + self.offset
+ ))
class Alarm:
-
- def __init__(self,aid,fac):
+ def __init__(self, aid, fac):
self.w_aid = urwid.Text(str(aid))
self.w_repeat = urwid.CheckBox("")
self.w_mon = urwid.CheckBox("")
@@ -86,28 +87,30 @@ class Alarm:
self.w_fri = urwid.CheckBox("")
self.w_sat = urwid.CheckBox("")
self.w_sun = urwid.CheckBox("")
- self.w_month = ModEdit(12,offset=1)
- self.w_day = ModEdit(31,offset=1)
- self.w_hour = ModEdit(24,default=0)
- self.w_minute = ModEdit(60,default=0)
-
- self.widgets = urwid.Columns([self.w_aid,
- self.w_repeat,
- self.w_mon,
- self.w_tue,
- self.w_wed,
- self.w_thu,
- self.w_fri,
- self.w_sat,
- self.w_sun,
- self.w_month,
- self.w_day,
- self.w_hour,
- self.w_minute,
- ],
- dividechars=1)
-
- def set_values(self,values):
+ self.w_month = ModEdit(12, offset=1)
+ self.w_day = ModEdit(31, offset=1)
+ self.w_hour = ModEdit(24, default=0)
+ self.w_minute = ModEdit(60, default=0)
+
+ self.widgets = urwid.Columns(
+ [
+ self.w_aid,
+ self.w_repeat,
+ self.w_mon,
+ self.w_tue,
+ self.w_wed,
+ self.w_thu,
+ self.w_fri,
+ self.w_sat,
+ self.w_sun,
+ self.w_month,
+ self.w_day,
+ self.w_hour,
+ self.w_minute,
+ ],
+ dividechars=1)
+
+ def set_values(self, values):
self.w_repeat.set_state(values[0])
self.w_mon.set_state(values[1])
self.w_tue.set_state(values[2])
@@ -139,14 +142,17 @@ class Alarm:
class UI:
-
- def __init__(self,fac):
+ def __init__(self, fac):
self.fac = fac
- self.alarm_number=4
+ self.alarm_number = 4
self.frame = self.build_ui()
- self.loop = urwid.MainLoop(self.frame,self.palette,unhandled_input=self.read_commands)
+ self.loop = urwid.MainLoop(
+ self.frame,
+ self.palette,
+ unhandled_input=self.read_commands
+ )
def build_ui(self):
self.palette = [
@@ -156,8 +162,8 @@ class UI:
self.alarms = []
for i in range(self.alarm_number):
- self.alarms.append(Alarm(i,self.fac))
-
+ self.alarms.append(Alarm(i, self.fac))
+
alarm_headers = urwid.Columns([
urwid.Text('#'),
urwid.Text('rep'),
@@ -172,11 +178,15 @@ class UI:
urwid.Text('dd'),
urwid.Text('HH'),
urwid.Text('MM'),
- ],dividechars=1)
- self.main_body = urwid.ListBox([alarm_headers]+[al.widgets for al in self.alarms])
+ ],
+ dividechars=1)
+ self.main_body = urwid.ListBox(
+ [alarm_headers] +
+ [al.widgets for al in self.alarms]
+ )
self.footer = urwid.Text('')
- footer_map = urwid.AttrMap(self.footer,'footer')
+ footer_map = urwid.AttrMap(self.footer, 'footer')
header = urwid.Text(
'q: Quit ' +
@@ -184,20 +194,25 @@ class UI:
'f: to File l: Load ' +
'?:Help'
)
- header_map = urwid.AttrMap(header,'header')
+ header_map = urwid.AttrMap(header, 'header')
- ui = urwid.Frame(self.main_body,footer=footer_map,header=header_map)
+ ui = urwid.Frame(
+ self.main_body,
+ footer=footer_map,
+ header=header_map
+ )
return ui
- def read_commands(self,cmd):
- {'n': self.set_time_to_now,
- 'r': self.read_alarms,
- 's': self.set_alarms,
- '?': self.print_help,
- 'q': self.quit,
- 'f': self.save_alarms,
- 'l': self.load_alarms,
- }.get(cmd,self.do_nothing)()
+ def read_commands(self, cmd):
+ {
+ 'n': self.set_time_to_now,
+ 'r': self.read_alarms,
+ 's': self.set_alarms,
+ '?': self.print_help,
+ 'q': self.quit,
+ 'f': self.save_alarms,
+ 'l': self.load_alarms,
+ }.get(cmd, self.do_nothing)()
def do_nothing(self):
pass
@@ -211,8 +226,8 @@ class UI:
self.footer.set_text('Alarms read from device')
def set_alarms(self):
- for i,alarm in enumerate(self.alarms):
- self.fac.set_alarm(i,alarm.get_values())
+ for i, alarm in enumerate(self.alarms):
+ self.fac.set_alarm(i, alarm.get_values())
self.footer.set_text('Alarms set on device')
@@ -224,7 +239,7 @@ class UI:
def save_alarms(self, fname='saved_alarms.json'):
alarms = [a.get_values() for a in self.alarms]
- with open(fname,'w') as fp:
+ with open(fname, 'w') as fp:
json.dump(alarms, fp)
self.footer.set_text('Alarms saved to {fname}'.format(fname=fname))
@@ -248,7 +263,7 @@ class UI:
def quit(self):
raise urwid.ExitMainLoop()
-
+
def run(self):
self.loop.run()
@@ -258,4 +273,6 @@ def main():
ui = UI(fac)
ui.run()
-if __name__ == '__main__': main()
+
+if __name__ == '__main__':
+ main()