X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=TimeMachine.py;fp=TimeMachine.py;h=29999efe4e618b69c76229199ad720326d7ba9e2;hb=804a2a2f884bdda0a90af110635a76391a88f0c0;hp=0000000000000000000000000000000000000000;hpb=97b83b23e43e16f98cc8e2f9d1ac3f55d0de580c;p=audiocontrol.git diff --git a/TimeMachine.py b/TimeMachine.py new file mode 100644 index 0000000..29999ef --- /dev/null +++ b/TimeMachine.py @@ -0,0 +1,61 @@ +import Views, Actions +import subprocess, curses + +class TimeMachine(Views.View): + + def __init__(self, context, name, x, y, dx, dy, ports, dir, buffer): + Views.View.__init__(self, context, name, x, y, dx, dy) + nul = file("/dev/null","w") + self._tm = subprocess.Popen(["timemachine", "-i", "-t", str(buffer)] + list(ports), cwd=dir, + stdin=subprocess.PIPE, stdout=nul, stderr=nul) + self._recording = False + + def start(self): + if not self._recording: + self._tm.stdin.write("start\n") + self._recording = True + self._redraw() + + def stop(self): + if self._recording: + self._tm.stdin.write("stop\n") + self._recording = False + self._redraw() + + def toggle(self): + if self._recording: + self.stop() + else: + self.start() + + def _redraw(self, refresh=True): + self.win().addstr(1,2,"Status: ") + if self._recording: + self.win().addstr(1,10, "RECORDING", curses.A_BOLD) + else: + self.win().addstr(1,10, "Idle ") + if refresh: + self.win().refresh() + + def updateView(self, bindings): + pass + + def init(self): + Views.View.init(self) + self._redraw() + +class ToggleRecord(Actions.Action): + + def __init__(self, name, tm): + Actions.Action.__init__(self, name) + self._tm = tm + + def __call__(self, binding): + self._tm.toggle() + + +def register(viewmanager, context, name, x, y, dx, dy, ports, dir, buffer): + tm = TimeMachine(context, name, x, y, dx, dy, ports, dir, buffer) + viewmanager.registerView(tm) + return tm +