changeset 74:2dfae9ed1cda

jostle feature, use it to shake levels mildly
author dmcc
date Thu, 11 Jul 2002 15:54:24 +0000
parents c74fe7efabc1
children 0b86bf6808f8
files light8/Lightboard.py light8/panels.py
diffstat 2 files changed, 17 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/light8/Lightboard.py	Thu Jul 11 15:27:17 2002 +0000
+++ b/light8/Lightboard.py	Thu Jul 11 15:54:24 2002 +0000
@@ -1,10 +1,9 @@
 from __future__ import nested_scopes
 
 from Tix import *
-from time import sleep
+import random
 from signal import signal, SIGINT
 import sys, cPickle
-# import shelve
 
 import io
 from uihelpers import *
@@ -28,6 +27,7 @@
         self.master = master
         self.parportdmx = parportdmx
         self.DUMMY = DUMMY
+        self.jostle_mode = 0
 
         self.channel_levels = []
         self.scalelevels = {}
@@ -35,8 +35,6 @@
         self.oldlevels = [None] * 68 # never replace this; just clear it
         self.subediting = Subediting(currentoutputlevels=self.oldlevels)
 
-        # self.shelf = shelve.open('/tmp/light9.newprefs')
-        # self.windowpos = self.shelf.get('window', {})
         self.windowpos = 0
         self.get_data()
         self.buildinterface()
@@ -74,7 +72,8 @@
         Console(self)
 
         # root frame
-        controlpanel = Controlpanel(self.master, self.xfader, self.refresh, self.quit)
+        controlpanel = Controlpanel(self.master, self.xfader, self.refresh, 
+            self.quit, self.toggle_jostle)
         
         xf=Frame(self.master)
         xf.pack(side='right')
@@ -150,7 +149,7 @@
                 levels[ch-1] = max(levels[ch-1], fadelev)
 
         levels = [int(l) for l in levels]
-
+        
         for lev,lab,oldlev,numlab in zip(levels, self.channel_levels, 
                                          self.oldlevels, 
                                          self.leveldisplay.number_labels):
@@ -166,6 +165,12 @@
 
         self.oldlevels[:] = levels[:] # replace the elements in oldlevels - don't make a new list (Subediting is watching it)
             
+        if self.jostle_mode:
+            delta = random.randrange(-1, 2, 1) # (-1, 0, or 1)
+            # print "delta", delta
+            levels = [min(100, max(x + delta, 0)) for x in levels]
+            # print "jostled", levels
+
         self.parportdmx.sendlevels(levels)
 
     def updatestagelevels(self):
@@ -206,35 +211,15 @@
         self.master.destroy()
         sys.exit()
     def save(self, *args):
-
-
         filename = '/tmp/light9.prefs'
         if self.DUMMY:
             filename += '.dummy'
         print "Saving to", filename
         file = open(filename, 'w')
 
-        '''
-        # {name : (tkname, geom)}
-        windowitems = self.windowpos.items()
-        windowmapping = dict([(pair[0], name) for name, pair in windowitems])
-        # print "windowmapping", windowmapping
-        # print "windowpos", self.windowpos
-
-        for w in self.master.winfo_children():
-            tkname, geom = str(w), w.winfo_geometry()
-            try:
-                name = windowmapping[tkname]
-                self.windowpos[name] = (tkname, geom)
-                # print name, "geom is", geom
-            except:
-                # print "failed to save windowpos"
-                pass
-        # self.shelf['window'] = self.windowpos
-        # self.shelf.close()
-        '''
-
         try:
             cPickle.dump(Pickles(self.scalelevels, Subs.subs.items()), file)
         except cPickle.UnpickleableError:
             print "UnpickleableError!  There's yer problem."
+    def toggle_jostle(self, *args):
+        self.jostle_mode = not self.jostle_mode
--- a/light8/panels.py	Thu Jul 11 15:27:17 2002 +0000
+++ b/light8/panels.py	Thu Jul 11 15:54:24 2002 +0000
@@ -11,7 +11,7 @@
 monofont = ('Courier', 8)
 
 class Controlpanel(Frame):
-    def __init__(self, parent, xfader, refresh_cb, quit_cb):
+    def __init__(self, parent, xfader, refresh_cb, quit_cb, jostle_cb):
         Frame.__init__(self,parent)
         controlpanel = self
         for txt,cmd in (
@@ -22,8 +22,11 @@
             ('Clear X',     lambda: xfader.clearallbuttons('x')),
             ('On -> Y',     lambda: xfader.grab('y')),
             ('Clear Y',     lambda: xfader.clearallbuttons('y'))):
+            # ('Jostle',     jostle_cb)):
             Button(controlpanel, text=txt, command=cmd).pack(side='top', 
                 fill='x')
+        Checkbutton(controlpanel, text="Jostle", 
+            command=jostle_cb).pack(side=TOP, fill=X)
 
 class Console:
     def __init__(self,lightboard):