diff options
-rw-r--r-- | interface/__main__.py | 3 | ||||
-rw-r--r-- | interface/interface.py | 26 | ||||
-rw-r--r-- | interface/render.py | 7 |
3 files changed, 29 insertions, 7 deletions
diff --git a/interface/__main__.py b/interface/__main__.py index a8c2738..64b47cd 100644 --- a/interface/__main__.py +++ b/interface/__main__.py @@ -3,8 +3,9 @@ import os import sys from .interface import Interface +from .dummy import DummyOutput if len(sys.argv) > 2: raise ValueError("Usage: %s [workspace file]" % sys.argv[0]) -Interface(sys.argv[1] if len(sys.argv) == 2 else None).main() +Interface(sys.argv[1] if len(sys.argv) == 2 else None, DummyOutput()).main() diff --git a/interface/interface.py b/interface/interface.py index 32d9060..32fca84 100644 --- a/interface/interface.py +++ b/interface/interface.py @@ -22,6 +22,8 @@ from .chaserview import ChaserView from .pager import Pager from .dialog import askyesnocancel from .audioview import AudioView +from .render import Renderer +from .dummy import DummyOutput def wrap_curses(f): def inner(*args, **kwargs): @@ -103,6 +105,8 @@ class Interface: self.channel_bank = AudioView(*yx, *hw) self.channel_bank.audio = f self.channel_bank.title = f.type + ' "%s"' % f.name + self.renderer.clear_hold() + self.renderer.hold(f.values) def handle_enter(self, fid): with self.w_lock: @@ -222,6 +226,8 @@ class Interface: self.channel_bank.set_scope(self.primitive.scope) if v is not None: self.channel_bank.set_values(((c, v) for c in channels)) + self.renderer.clear_hold() + self.renderer.hold(self.primitive.values) def scene_clear(self, cr): self.scene_set(cr, None) @@ -280,6 +286,7 @@ class Interface: self.input.context = self.context_base self.chaser = None self.current_cv = None + self.renderer.clear_hold() def base_save(self, path=None): with self.w_lock: @@ -518,7 +525,10 @@ class Interface: self.primitive.filename = fname self.channel_bank.audio = self.primitive - def __init__(self, path): + def _render_callback(self, t, values): + pass + + def __init__(self, path, output): ## Have to do most of the actual initialization in the main method, as curses isn't ## ready yet. self.channel_bank = None @@ -580,7 +590,7 @@ class Interface: }, self.help) self.context_chaser = Input.parse_context(( - ("select $num", self.chaser_select), + ("choose $num", self.chaser_select), ("edit", self.chaser_edit), ("edit $num", self.chaser_edit), @@ -602,10 +612,10 @@ class Interface: ("rename chaser $quoted_string", self.chaser_rename_self), ("move $num to $num", self.chaser_move), ("move $num", self.chaser_move), - ("fade in $time", self.chaser_fade), - ("fade out $time", lambda t: self.chaser_fade(t, True)), - ("length $time", self.chaser_duration), - ("unset", self.chaser_unset), + ("set fade in $time", self.chaser_fade), + ("set fade out $time", lambda t: self.chaser_fade(t, True)), + ("set length $time", self.chaser_duration), + ("unbind", self.chaser_unset), ("bind $num", self.chaser_bind), ("list fixtures", self.list_fixtures), @@ -669,3 +679,7 @@ class Interface: ("quit", self.audio_exit), )) + + self.output = output + self.renderer = Renderer(self.w, self.w_lock, self.output, self._render_callback) + self.rendering = False diff --git a/interface/render.py b/interface/render.py index 5b6c934..be7d770 100644 --- a/interface/render.py +++ b/interface/render.py @@ -9,6 +9,8 @@ from blc2.topology import Fixture class Renderer: def hold(self, values): with self._lock: + if isinstance(values, dict): + values = values.items() for c, v in values: if v is None: if c in self._hold: @@ -20,6 +22,11 @@ class Renderer: ## If not, just update now self._update() + def clear_hold(self): + with self._lock: + self._hold = {} + self.hold(()) + def _update(self): with self._lock: self._values = {c: (v if c not in self._hold else self._hold[c]) for c, v in self._last.items()} |