Changeset - 032b2b67bc10
[Not reviewed]
default
0 9 0
dmcc - 22 years ago 2002-07-08 14:31:20

result of July 7th on-site editing
9 files changed with 579 insertions and 116 deletions:
0 comments (0 inline, 0 general)
light8/Config.py
Show inline comments
 
@@ -2,13 +2,31 @@ from random import randrange
 
from time import time
 
from __future__ import generators,division
 
from Subs import *
 
from Cue import *
 

	
 
from Fader import fader
 
f1 = Fade('col blue', 0, 2, 100)
 
f2 = Fade('god', 1, 3, 50)
 
f3 = Fade('house', 0, 4, 0)
 
f4 = Fade('col gree', 0, 8, 75) 
 

	
 
g1 = Fade('edges', 1, 2, 20)
 
g2 = Fade('sidepost', 0, 4, 50)
 
g3 = Fade('cyc', 1, 5, 20)
 
g4 = Fade('*curtain', 0, 8, 15) 
 

	
 
c1 = Cue("This", 0, 10, f1, f2, f3, f4)
 
c2 = Cue("That", 0, 5, g1, g2, g3, g4)
 
c3 = Cue("The other", 1, 7, f1, g2, g3, f4)
 

	
 
cues = [c1, c2, c3]
 

	
 
patch = {
 
    
 
    'side l' : 45, # posts
 
    'side r' : 46,
 
    ('side l','sidepost1') : 45, # posts
 
    ('side r','sidepost2') : 46,
 
    
 
    'sidefill1' : 13,
 
    'sidefill2' : 14,
 
    
 
    ('patio1','main 1',) : 1,
 
    ('main 2',) : 2,
 
@@ -22,9 +40,10 @@ patch = {
 
    ('main 10',) : 10,
 
    ('main 11',):11,
 
    ('patio2','main 12',):12,
 
    'hotback':19,
 

	
 
    'cycleft' : 43,
 
    'cycright' : 44, # ? might be a different circuit
 
    'cycright' : 42,
 
    
 
    'house':68,
 
    ('desk1' ,'b11'):54, # left bank over house
 
@@ -49,6 +68,10 @@ patch = {
 
    'gree1':22,    'gree2':26,    'gree3':30,    'gree4':34,
 
    'blue1':23,    'blue2':27,    'blue3':31,    'blue4':35,
 
    'red1' :24,    'red2' :28,    'red3' :32,    'red4' :36,
 
    'upfill1' : 40,
 
    'upfill2' : 38,
 
    'upfill3' : 37,
 
    'upfill4' : 39,
 
}
 

	
 
from util import maxes,scaledict
 
@@ -244,28 +267,312 @@ def randomdimmer(params, slideradjuster)
 

	
 

	
 
subs = {
 
    'over pit sm' : levs(range(1, 13),(100,0,0,91,77,79,86,55,92,77,59,0)),
 
    'over pit lg' : fulls(range(1, 13)),
 
    ('house', 'black') : { 68:100 },
 
    ('cyc', 'lightBlue'):{42:FL,43:FL},
 
    ('scp hot ctr', 'yellow'):{18:FL},
 
    ('scp more', '#AAAA00'):{18:FL,14:FL},
 
    ('scp all', '#AAAA00'):fulls((13,16,18,19,39)),
 
    ('col oran', '#EEEE99'):fulls('oran1 oran2 oran3 oran4'.split()),
 
    ('col red', 'red'):fulls('red1 red2 red3 red4'.split()),
 
    ('col blue', 'blue'):fulls('blue1 blue2 blue3 blue4'.split()),
 
    ('col gree', 'green'):fulls('gree1 gree2 gree3 gree4'.split()),
 
    'sidepost':fulls((45,46)),
 
    'edges':fulls((55,60,49,54,61,66)),
 
    'bank1ctr':fulls(('b22','b23','b24','b25')),
 
    'god' : fulls((6,)),
 
    ('strobe', 'grey'):strobe,
 
#    ('strobe', 'grey'):strobe,
 
#    'chase' : chase,
 
#    'chase2' : chase,
 
    'cyc' : fulls(('cycleft','cycright')),
 
    'sidefill' : fulls(('sidefill1','sidefill2')),
 
    'patio left' : { 'patio1':FL },
 
    'patio right' : { 'patio2':FL },
 
    'upfill sides' : fulls(('upfill1','upfill4')),
 
    '*broadway open':{},
 
    '*int mission':{},
 
    '*phone booth':{},
 
    '*off broadway':{},
 
    '*cuba left':{},
 
    '*cuba right':{},
 
    '*cuba dance':{},
 
    '*cuba sky':{},
 
    '*cuba love':{},
 
    '*ext mission':{},
 
    '*hotbox dance':{},
 
    '*hotbox table':{},
 
    '*sewer':{},
 
    '*marry':{},
 
    
 
    'chase' : chase,
 
    'chase2' : chase,
 
    
 
}
 

	
 
subs["ba outrs"] = fulls("b11 b12 b13 b14 b15 b16 b31 b32 b33 b34 b35 b36".split())
 
subs["ba some"] = {'b12':40,'b13':FL,'b14':FL,'b15':40,
 
                   'b32':40,'b33':FL,'b34':FL,'b35':40,}
 
subs['*curtain'] = subs['ba some'].copy()
 
subs["*marry"] = { "hotbox1" : 100,}
 
subs["*phone booth"] = { "phone" : 100,}
 
subs["*broadway open"] = { "sidefill2" : 100, "sidefill1" : 100,
 
    "main 11" : 100, "main 10" : 100, "b34" : 100, "b25" : 100, "b24" : 100,
 
    "b22" : 100, "desk2" : 78, "phone" : 46, "upfill3" : 69, "upfill2" : 100,
 
    "main 3" : 68, "main 2" : 100, "main 5" : 100, "main 4" : 100,
 
    "main 7" : 100, "main 9" : 100, "main 8" : 100, "edge" : 46,
 
    "sidepost1" : 100, "sidepost2" : 100, "marry2" : 100, "marry1" : 100,}
 
subs["*int mission"] = { "sidefill1" : 100, "main 4" : 100, "main 9" : 100,
 
    "main 8" : 100, "b24" : 100, "b23" : 100, "desk1" : 100, "desk2" : 100,
 
    "b22" : 100, "rock" : 100, "marry1" : 100, "cuba1" : 25, "cuba2" : 51,
 
    "main 10" : 100,}
 
subs["*broadway open"] = { "sidefill2" : 100, "sidefill1" : 100,
 
    "main 11" : 100, "main 10" : 100, "b34" : 100, "b25" : 100, "b24" : 100,
 
    "b22" : 100, "desk2" : 78, "phone" : 46, "hotbox1" : 100, "upfill3" : 69,
 
    "upfill2" : 100, "main 3" : 68, "main 2" : 100, "main 5" : 100,
 
    "main 4" : 100, "main 7" : 100, "hotbox2" : 100, "main 9" : 100,
 
    "main 8" : 100, "edge" : 46, "sidepost1" : 100, "sidepost2" : 100,
 
    "marry2" : 100, "marry1" : 100,}
 
subs["*broadway open"] = { "sidefill2" : 100, "sidefill1" : 100,
 
    "cycright" : 41, "upfill3" : 69, "upfill2" : 100, "upfill1" : 56,
 
    "side l" : 100, "b25" : 100, "cycleft" : 41, "b22" : 100, "desk2" : 78,
 
    "phone" : 46, "hotbox1" : 100, "upfill4" : 56, "b24" : 100, "side r" : 100,
 
    "main 11" : 100, "main 10" : 100, "main 3" : 68, "main 2" : 100,
 
    "main 5" : 100, "main 4" : 100, "main 7" : 100, "hotbox2" : 100,
 
    "main 9" : 100, "main 8" : 100, "b34" : 100, "edge" : 46, "god" : 100,
 
    "marry2" : 100, "marry1" : 100,}
 
subs["*broadway open"] = { "sidefill2" : 100, "sidefill1" : 100,
 
    "cycright" : 41, "upfill3" : 69, "upfill2" : 100, "upfill1" : 56,
 
    "b34" : 100, "b25" : 100, "side l" : 100, "b22" : 100, "desk2" : 78,
 
    "phone" : 80, "hotbox1" : 100, "upfill4" : 56, "b24" : 100, "side r" : 100,
 
    "main 11" : 100, "main 10" : 100, "main 3" : 100, "main 2" : 100,
 
    "main 5" : 100, "main 4" : 100, "main 7" : 100, "hotbox2" : 100,
 
    "main 9" : 100, "main 8" : 100, "cycleft" : 41, "edge" : 80,
 
    "god" : 100, "marry2" : 100, "marry1" : 100,}
 
subs["*int mission"] = { "sidefill2" : 51, "sidefill1" : 0, "upfill4" : 0,
 
    "main 11" : 100, "main 10" : 100, "b34" : 0, "b25" : 0, "b24" : 100,
 
    "b23" : 100, "desk1" : 53, "desk2" : 100, "b22" : 100, "hotbox2" : 85,
 
    "hotbox1" : 25, "b32" : 62, "upfill3" : 37, "upfill2" : 66, "main 3" : 0,
 
    "main 5" : 70, "main 4" : 100, "main 7" : 100, "main 9" : 100,
 
    "main 8" : 100, "rock" : 52, "marry2" : 100, "marry1" : 61, "cuba1" : 0,
 
    "cuba2" : 78,}
 
subs["*int mission"] = { "sidefill2" : 51, "sidefill1" : 0, "upfill4" : 0,
 
    "main 11" : 100, "main 10" : 100, "b34" : 0, "b25" : 0, "b24" : 100,
 
    "b23" : 100, "desk1" : 53, "desk2" : 100, "b22" : 100, "hotbox2" : 85,
 
    "hotbox1" : 25, "cycright" : 66, "b32" : 62, "upfill3" : 37,
 
    "upfill2" : 66, "main 3" : 57, "main 2" : 0, "main 5" : 70, "main 4" : 100,
 
    "main 7" : 100, "main 9" : 100, "main 8" : 100, "rock" : 52,
 
    "marry2" : 100, "marry1" : 61, "cuba1" : 0, "cuba2" : 78,}
 
subs["*hotbox dance"] = { "red3" : 100, "sidefill2" : 46, "red1" : 100,
 
    "cycright" : 19, "upfill3" : 32, "upfill2" : 46, "upfill1" : 26,
 
    "red2" : 100, "side l" : 46, "b25" : 46, "cycleft" : 19, "sidefill1" : 46,
 
    "desk2" : 36, "b22" : 46, "phone" : 37, "hotbox1" : 46, "upfill4" : 26,
 
    "b24" : 46, "side r" : 46, "main 11" : 46, "main 10" : 46, "main 3" : 46,
 
    "main 2" : 46, "main 5" : 46, "main 4" : 46, "main 7" : 46, "hotbox2" : 46,
 
    "main 9" : 46, "main 8" : 46, "red4" : 100, "b34" : 46, "edge" : 37,
 
    "god" : 100, "marry2" : 46, "marry1" : 46,}
 
subs["*hotbox dance"] = { "cycright" : 19, "upfill3" : 32, "upfill2" : 46,
 
    "upfill1" : 26, "sidefill2" : 0, "b25" : 0, "side l" : 46, "b23" : 0,
 
    "desk1" : 0, "desk2" : 0, "upfill4" : 26, "side r" : 46, "main 11" : 46,
 
    "main 10" : 46, "god" : 100, "edge" : 0, "sidepost1" : 0, "sidepost2" : 0,
 
    "marry2" : 0, "marry1" : 0, "cuba1" : 0, "cuba2" : 0, "b13" : 0,
 
    "red3" : 100, "red2" : 100, "sidefill1" : 0, "b24" : 0, "red4" : 100,
 
    "b34" : 30, "cycleft" : 19, "b32" : 43, "b22" : 0, "phone" : 0,
 
    "hotbox1" : 42, "main 3" : 46, "main 2" : 46, "main 5" : 46,
 
    "main 4" : 46, "main 7" : 100, "hotbox2" : 78, "main 9" : 46,
 
    "main 8" : 46, "hotback" : 100, "rock" : 0, "red1" : 100,}
 
subs["*hotbox dance"] = { "cycright" : 19, "upfill3" : 32, "upfill2" : 46,
 
    "upfill1" : 26, "sidefill2" : 0, "b25" : 0, "side l" : 46, "b23" : 0,
 
    "desk1" : 0, "desk2" : 24, "upfill4" : 26, "side r" : 46, "main 11" : 46,
 
    "main 10" : 100, "god" : 100, "edge" : 0, "sidepost1" : 0, "sidepost2" : 0,
 
    "marry2" : 0, "marry1" : 0, "cuba1" : 0, "cuba2" : 0, "b13" : 0,
 
    "red3" : 100, "red2" : 100, "sidefill1" : 0, "b24" : 0, "red4" : 100,
 
    "b34" : 30, "cycleft" : 19, "b32" : 43, "b22" : 0, "phone" : 0,
 
    "hotbox1" : 42, "main 3" : 46, "main 2" : 46, "main 5" : 100,
 
    "main 4" : 46, "main 7" : 100, "hotbox2" : 78, "main 9" : 46,
 
    "main 8" : 46, "hotback" : 100, "rock" : 0, "red1" : 100,}
 
subs["*hotbox table"] = { "sidefill2" : 0, "main 3" : 80, "main 2" : 62,
 
    "main 11" : 0, "main 4" : 29, "main 7" : 10, "main 9" : 64, "main 8" : 10,
 
    "b25" : 0, "b22" : 100, "phone" : 0, "edge" : 0, "b13" : 0, "marry2" : 0,
 
    "main 5" : 34, "marry1" : 0, "hotback" : 0, "cuba1" : 22, "cuba2" : 0,}
 
subs["*hotbox table"] = { "sidefill2" : 0, "main 11" : 0, "b25" : 0,
 
    "b22" : 100, "desk2" : 58, "phone" : 0, "main 3" : 80, "main 2" : 62,
 
    "main 5" : 34, "main 4" : 100, "main 7" : 10, "hotbox2" : 46,
 
    "main 9" : 64, "main 8" : 10, "edge" : 0, "b13" : 0, "rock" : 22,
 
    "marry2" : 0, "marry1" : 0, "hotback" : 0, "cuba1" : 22, "cuba2" : 0,}
 
subs["*hotbox small table"] = { "red3" : 100, "red2" : 100, "main 3" : 80,
 
    "main 2" : 62, "main 5" : 34, "main 4" : 100, "main 7" : 10,
 
    "red4" : 100, "main 9" : 64, "main 8" : 10, "rock" : 22, "red1" : 100,
 
    "desk2" : 58, "b22" : 100, "hotbox2" : 46, "upfill4" : 62, "god" : 100,
 
    "upfill1" : 62, "cuba1" : 22,}
 
subs["*hotbox small table"] = { "red3" : 100, "red2" : 100, "red1" : 100,
 
    "upfill4" : 62, "main 11" : 0, "main 10" : 0, "upfill1" : 62,
 
    "red4" : 100, "b25" : 5, "b22" : 100, "desk2" : 58, "desk1" : 52,
 
    "hotbox2" : 0, "sidefill2" : 0, "main 3" : 47, "main 2" : 0,
 
    "main 5" : 0, "main 4" : 0, "main 7" : 0, "phone" : 0, "main 9" : 11,
 
    "main 8" : 0, "god" : 100, "edge" : 0, "rock" : 0, "marry2" : 0,
 
    "marry1" : 0, "hotback" : 0, "cuba1" : 0, "cuba2" : 0,}
 
subs["*ext mission"] = { "sidefill2" : 100, "sidefill1" : 100,
 
    "cycright" : 41, "upfill3" : 69, "upfill2" : 100, "upfill1" : 56,
 
    "side l" : 100, "b25" : 100, "cycleft" : 41, "b22" : 100, "desk2" : 78,
 
    "phone" : 80, "hotbox1" : 100, "upfill4" : 56, "b24" : 100, "side r" : 100,
 
    "main 11" : 100, "main 10" : 100, "main 3" : 100, "main 2" : 100,
 
    "main 5" : 100, "main 4" : 100, "main 7" : 100, "hotbox2" : 100,
 
    "main 9" : 100, "main 8" : 100, "b34" : 100, "edge" : 80, "god" : 100,
 
    "marry2" : 100, "marry1" : 100,}
 
subs["*ext mission"] = { "sidefill2" : 100, "sidefill1" : 59,
 
    "cycright" : 53, "upfill3" : 0, "upfill2" : 0, "upfill1" : 0,
 
    "b34" : 100, "b25" : 100, "side l" : 100, "b23" : 100, "b22" : 49,
 
    "b32" : 80, "phone" : 0, "hotbox1" : 0, "upfill4" : 0, "b24" : 100,
 
    "desk2" : 78, "main 11" : 100, "main 10" : 100, "main 3" : 0,
 
    "main 2" : 100, "main 5" : 100, "main 4" : 0, "main 7" : 100,
 
    "hotbox2" : 100, "main 9" : 100, "main 8" : 100, "god" : 100,
 
    "cycleft" : 0, "edge" : 0, "b13" : 0, "rock" : 60, "marry2" : 100,
 
    "marry1" : 0, "side r" : 100,}
 
subs["*broadway night 1-7"] = { "sidefill2" : 37, "sidefill1" : 37,
 
    "cycright" : 15, "upfill3" : 25, "upfill2" : 37, "upfill1" : 20,
 
    "side l" : 37, "b25" : 37, "cycleft" : 15, "b22" : 37, "desk2" : 28,
 
    "phone" : 29, "hotbox1" : 37, "upfill4" : 20, "b24" : 37, "side r" : 37,
 
    "main 11" : 37, "main 10" : 37, "main 3" : 37, "main 2" : 37,
 
    "main 5" : 37, "main 4" : 37, "main 7" : 37, "hotbox2" : 37,
 
    "main 9" : 37, "main 8" : 37, "b34" : 37, "edge" : 29, "god" : 100,
 
    "marry2" : 37, "marry1" : 37,}
 
subs["*broadway night 1-7"] = { "sidefill2" : 37, "sidefill1" : 37,
 
    "upfill3" : 11, "upfill2" : 23, "b34" : 37, "b25" : 37, "b24" : 94,
 
    "b23" : 100, "b22" : 61, "desk2" : 28, "hotbox2" : 37, "hotbox1" : 37,
 
    "blue1" : 93, "main 11" : 37, "blue3" : 93, "blue2" : 93, "blue4" : 93,
 
    "main 10" : 37, "main 3" : 25, "main 2" : 37, "main 5" : 37,
 
    "main 4" : 37, "main 7" : 37, "main 9" : 37, "main 8" : 37, "edge" : 12,
 
    "god" : 100, "marry2" : 37, "marry1" : 37,}
 
subs["*broadway night 1-7"] = { "sidefill2" : 37, "sidefill1" : 37,
 
    "upfill3" : 11, "upfill2" : 23, "b34" : 37, "b25" : 37, "b24" : 94,
 
    "b23" : 100, "b22" : 61, "desk2" : 0, "desk1" : 0, "hotbox2" : 37,
 
    "hotbox1" : 0, "blue1" : 93, "main 11" : 37, "blue3" : 93, "blue2" : 93,
 
    "blue4" : 93, "main 10" : 37, "main 3" : 25, "main 2" : 37, "main 5" : 37,
 
    "main 4" : 37, "main 7" : 37, "main 9" : 37, "main 8" : 37, "edge" : 12,
 
    "god" : 100, "marry2" : 37, "marry1" : 37,}
 
subs["*broadway night 1-7"] = { "sidefill2" : 37, "sidefill1" : 37,
 
    "upfill3" : 11, "upfill2" : 23, "b34" : 28, "b25" : 37, "b24" : 94,
 
    "b23" : 100, "b22" : 82, "desk2" : 0, "desk1" : 0, "hotbox2" : 11,
 
    "hotbox1" : 0, "blue1" : 93, "main 11" : 37, "blue3" : 93, "blue2" : 93,
 
    "blue4" : 93, "main 10" : 37, "main 3" : 25, "main 2" : 37, "main 5" : 37,
 
    "main 4" : 37, "main 7" : 37, "main 9" : 37, "main 8" : 37, "edge" : 12,
 
    "god" : 100, "marry2" : 0, "marry1" : 37,}
 
subs["*cuba right"] = { "main 3" : 31, "main 2" : 0, "main 10" : 100,
 
    "b34" : 100, "b22" : 31, "desk2" : 85, "desk1" : 39, "edge" : 31,
 
    "sidefill1" : 7, "cuba1" : 100, "cuba2" : 100,}
 
subs["*cuba dance"] = { "sidefill2" : 100, "sidefill1" : 100,
 
    "upfill4" : 100, "upfill3" : 81, "upfill2" : 100, "upfill1" : 100,
 
    "b34" : 100, "b25" : 100, "b24" : 100, "b23" : 100, "desk1" : 100,
 
    "desk2" : 100, "b22" : 100, "phone" : 100, "main 11" : 100, "main 10" : 100,
 
    "main 3" : 100, "main 2" : 100, "main 5" : 100, "main 4" : 100,
 
    "main 7" : 100, "main 9" : 100, "main 8" : 100, "edge" : 100,
 
    "god" : 100, "marry2" : 100, "marry1" : 100, "hotback" : 100,
 
    "cuba1" : 100, "cuba2" : 100,}
 
subs["*cuba love"] = { "sidefill2" : 0, "sidefill1" : 0, "upfill4" : 61,
 
    "main 11" : 100, "main 10" : 100, "upfill1" : 61, "b25" : 100,
 
    "b24" : 100, "b23" : 100, "b22" : 100, "desk2" : 0, "desk1" : 0,
 
    "phone" : 0, "hotbox1" : 0, "upfill3" : 61, "upfill2" : 61, "main 3" : 0,
 
    "main 2" : 100, "main 5" : 100, "main 4" : 100, "main 7" : 100,
 
    "main 9" : 73, "main 8" : 100, "edge" : 0, "hotback" : 0, "marry2" : 0,
 
    "marry1" : 0, "cuba1" : 0, "cuba2" : 0,}
 
subs["*cuba love"] = { "sidefill2" : 0, "sidefill1" : 0, "upfill4" : 0,
 
    "main 11" : 28, "main 10" : 28, "upfill1" : 0, "b34" : 9, "b25" : 100,
 
    "b24" : 59, "b23" : 59, "b22" : 100, "desk2" : 0, "desk1" : 0,
 
    "phone" : 0, "hotbox1" : 0, "upfill3" : 43, "upfill2" : 43, "main 3" : 0,
 
    "main 2" : 100, "main 5" : 16, "main 4" : 16, "main 7" : 0, "main 9" : 73,
 
    "main 8" : 100, "edge" : 0, "marry2" : 9, "marry1" : 0, "hotback" : 0,
 
    "cuba1" : 0, "cuba2" : 0,}
 
subs["*cuba love"] = { "sidefill2" : 0, "sidefill1" : 0, "upfill4" : 0,
 
    "main 11" : 28, "main 10" : 28, "upfill1" : 0, "b34" : 9, "b25" : 100,
 
    "b24" : 59, "b23" : 59, "b22" : 100, "desk2" : 0, "desk1" : 0,
 
    "phone" : 0, "hotbox1" : 0, "upfill3" : 43, "upfill2" : 43, "main 3" : 0,
 
    "main 2" : 100, "main 5" : 16, "main 4" : 16, "main 7" : 0, "main 9" : 65,
 
    "main 8" : 74, "edge" : 0, "marry2" : 9, "marry1" : 0, "hotback" : 0,
 
    "cuba1" : 0, "cuba2" : 0,}
 
subs["*cuba love"] = { "sidefill2" : 0, "sidefill1" : 0, "upfill4" : 0,
 
    "main 11" : 28, "main 10" : 28, "upfill1" : 0, "b34" : 9, "b25" : 100,
 
    "b24" : 59, "b23" : 59, "b22" : 100, "desk2" : 16, "desk1" : 0,
 
    "phone" : 0, "hotbox1" : 0, "upfill3" : 43, "upfill2" : 43, "main 3" : 28,
 
    "main 2" : 100, "main 5" : 16, "main 4" : 16, "main 7" : 0, "main 9" : 65,
 
    "main 8" : 74, "edge" : 0, "marry2" : 9, "marry1" : 0, "hotback" : 0,
 
    "cuba1" : 0, "cuba2" : 0,}
 
subs["*ext mission night"] = { "sidefill2" : 39, "sidefill1" : 23,
 
    "cycright" : 20, "main 11" : 29, "main 10" : 29, "upfill1" : 8,
 
    "b34" : 39, "b25" : 39, "side l" : 39, "b23" : 39, "b22" : 19,
 
    "b32" : 31, "upfill4" : 8, "b24" : 39, "side r" : 39, "desk2" : 18,
 
    "main 2" : 39, "main 5" : 39, "main 9" : 39, "main 8" : 39, "god" : 100,
 
    "marry2" : 39,}
 
subs["*ext mission night"] = { "sidefill2" : 39, "sidefill1" : 23,
 
    "cycright" : 20, "main 11" : 29, "main 10" : 29, "upfill1" : 8,
 
    "b34" : 39, "b25" : 39, "side l" : 39, "b23" : 39, "b22" : 19,
 
    "b32" : 31, "upfill4" : 8, "b24" : 39, "side r" : 39, "desk2" : 18,
 
    "main 2" : 39, "main 5" : 39, "main 9" : 39, "main 8" : 39, "god" : 100,
 
    "marry2" : 39,}
 
subs["*ext mission night"] = { "cycright" : 6, "main 11" : 15,
 
    "main 10" : 15, "upfill1" : 0, "b25" : 25, "side l" : 39, "b23" : 25,
 
    "b22" : 5, "desk2" : 4, "upfill4" : 0, "side r" : 39, "upfill3" : 0,
 
    "upfill2" : 0, "patio1" : 0, "god" : 86, "edge" : 0, "b13" : 0,
 
    "sidepost2" : 0, "marry2" : 25, "marry1" : 0, "cuba1" : 5, "cuba2" : 0,
 
    "sidepost1" : 0, "sidefill2" : 25, "sidefill1" : 9, "b24" : 25,
 
    "b34" : 25, "cycleft" : 0, "b32" : 17, "desk1" : 0, "hotbox2" : 25,
 
    "hotbox1" : 0, "main 3" : 0, "main 2" : 25, "main 5" : 25, "main 4" : 25,
 
    "main 7" : 25, "phone" : 0, "main 9" : 25, "main 8" : 25, "patio2" : 0,
 
    "hotback" : 0, "rock" : 17,}
 
subs["*ext mission night"] = { "b32" : 27, "sidefill2" : 34, "sidefill1" : 20,
 
    "cycright" : 18, "main 11" : 34, "main 10" : 34, "upfill1" : 8,
 
    "b34" : 34, "b25" : 34, "side l" : 34, "b23" : 34, "b22" : 16,
 
    "desk2" : 26, "hotbox2" : 34, "upfill4" : 8, "b24" : 34, "side r" : 34,
 
    "main 2" : 34, "main 5" : 34, "main 4" : 25, "main 7" : 34, "main 9" : 34,
 
    "main 8" : 34, "rock" : 20, "god" : 100, "marry2" : 34, "cuba1" : 5,}
 
subs["*2-2"] = { "b32" : 27, "sidefill2" : 34, "sidefill1" : 20,
 
    "cycright" : 18, "main 11" : 34, "main 10" : 34, "upfill1" : 70,
 
    "b34" : 34, "b25" : 34, "side l" : 34, "b23" : 34, "b22" : 16,
 
    "desk2" : 26, "hotbox2" : 34, "upfill4" : 70, "b24" : 34, "side r" : 34,
 
    "main 2" : 34, "main 5" : 34, "main 4" : 25, "main 7" : 34, "main 9" : 34,
 
    "main 8" : 34, "rock" : 20, "god" : 100, "marry2" : 34, "cuba1" : 5,}
 
subs["*2-2"] = { "sidefill2" : 0, "sidefill1" : 0, "cycright" : 18,
 
    "main 11" : 5, "main 10" : 5, "upfill1" : 70, "b34" : 34, "b25" : 71,
 
    "side l" : 34, "b23" : 67, "b22" : 50, "b32" : 57, "desk1" : 0,
 
    "hotbox2" : 59, "upfill4" : 70, "b24" : 67, "desk2" : 26, "main 3" : 0,
 
    "main 2" : 5, "main 5" : 5, "main 4" : 0, "main 7" : 5, "main 9" : 5,
 
    "main 8" : 5, "rock" : 20, "edge" : 0, "sidepost1" : 0, "sidepost2" : 0,
 
    "god" : 100, "marry2" : 50, "cuba1" : 0, "side r" : 34,}
 
subs["*sewer"] = { "main 10" : 71, "upfill4" : 100, "main 11" : 66,
 
    "main 4" : 71, "upfill1" : 88, "main 8" : 71, "main 7" : 71,
 
    "main 5" : 100, "hotbox1" : 88, "hotback" : 66, "marry2" : 66,
 
    "upfill3" : 88, "marry1" : 66, "upfill2" : 100,}
 
subs["*2-2"] = { "sidefill2" : 0, "sidefill1" : 0, "cycright" : 18,
 
    "main 11" : 5, "main 10" : 5, "upfill1" : 70, "b34" : 34, "b25" : 71,
 
    "side l" : 34, "b23" : 67, "b22" : 50, "b32" : 57, "desk1" : 0,
 
    "hotbox2" : 59, "upfill4" : 70, "b24" : 67, "desk2" : 26, "main 3" : 0,
 
    "main 2" : 5, "main 5" : 56, "main 4" : 0, "main 7" : 5, "main 9" : 5,
 
    "main 8" : 5, "rock" : 20, "edge" : 0, "sidepost1" : 0, "sidepost2" : 0,
 
    "god" : 100, "marry2" : 50, "cuba1" : 0, "side r" : 34,}
 
subs["*sewer"] = { "sidefill2" : 33, "sidefill1" : 33, "upfill4" : 10,
 
    "upfill3" : 22, "main 10" : 48, "upfill1" : 14, "b25" : 16, "b24" : 19,
 
    "b23" : 46, "b22" : 50, "hotbox1" : 0, "main 11" : 40, "upfill2" : 61,
 
    "main 2" : 54, "main 5" : 20, "main 4" : 45, "main 7" : 0, "main 9" : 84,
 
    "main 8" : 45, "hotback" : 40, "marry2" : 0, "marry1" : 0,}
 
subs["*sewer"] = { "sidefill2" : 33, "sidefill1" : 33, "upfill4" : 10,
 
    "upfill3" : 22, "main 10" : 48, "upfill1" : 14, "b25" : 16, "b24" : 19,
 
    "b23" : 64, "b22" : 50, "hotbox1" : 0, "main 11" : 40, "upfill2" : 61,
 
    "main 2" : 54, "main 5" : 20, "main 4" : 45, "main 7" : 0, "main 9" : 84,
 
    "main 8" : 45, "hotback" : 40, "sidepost1" : 31, "sidepost2" : 31,
 
    "marry2" : 0, "marry1" : 0,}
 
subs["*sewer"] = { "sidefill2" : 33, "sidefill1" : 33, "upfill4" : 10,
 
    "upfill3" : 22, "main 10" : 48, "upfill1" : 14, "b25" : 16, "b24" : 19,
 
    "b23" : 64, "b22" : 50, "hotbox1" : 0, "main 11" : 40, "upfill2" : 61,
 
    "main 2" : 54, "main 5" : 20, "main 4" : 45, "main 7" : 0, "main 9" : 84,
 
    "main 8" : 45, "hotback" : 40, "sidepost1" : 31, "sidepost2" : 31,
 
    "marry2" : 0, "marry1" : 0, "cuba1" : 59,}
 
subs["*marry"] = { "b32" : 23, "sidefill2" : 30, "sidefill1" : 17,
 
    "cycright" : 15, "main 11" : 30, "main 10" : 30, "upfill1" : 48,
 
    "b34" : 30, "b25" : 30, "side l" : 30, "b23" : 30, "b22" : 14,
 
    "desk2" : 23, "hotbox2" : 30, "upfill4" : 48, "b24" : 30, "side r" : 30,
 
    "main 3" : 30, "main 2" : 30, "main 5" : 30, "main 4" : 22, "main 7" : 30,
 
    "main 9" : 30, "main 8" : 30, "rock" : 17, "edge" : 15, "god" : 100,
 
    "marry2" : 30, "cuba1" : 4,}
 
subs["*marry"] = { "sidefill2" : 0, "sidefill1" : 0, "cycright" : 100,
 
    "main 11" : 55, "main 10" : 55, "upfill1" : 48, "b34" : 30, "b25" : 0,
 
    "side l" : 30, "b23" : 100, "b22" : 14, "b32" : 23, "main 4" : 0,
 
    "hotbox2" : 43, "hotbox1" : 49, "upfill4" : 48, "b24" : 100,
 
    "desk2" : 23, "patio2" : 0, "main 3" : 0, "main 2" : 30, "main 5" : 0,
 
    "patio1" : 0, "main 7" : 30, "phone" : 0, "main 9" : 30, "main 8" : 0,
 
    "rock" : 17, "edge" : 0, "sidepost1" : 0, "sidepost2" : 0, "god" : 100,
 
    "marry2" : 34, "marry1" : 69, "cuba1" : 0, "cuba2" : 0, "side r" : 30,}
 
subs["*marry"] = { "sidefill2" : 0, "sidefill1" : 0, "cycright" : 100,
 
    "main 11" : 55, "main 10" : 55, "upfill1" : 48, "b34" : 30, "patio1" : 0,
 
    "b25" : 0, "side l" : 30, "b23" : 100, "b22" : 14, "b32" : 23,
 
    "hotbox2" : 43, "hotbox1" : 49, "upfill4" : 48, "b24" : 100,
 
    "desk2" : 23, "patio2" : 0, "main 3" : 0, "main 2" : 30, "main 5" : 0,
 
    "main 4" : 0, "main 7" : 30, "phone" : 0, "main 9" : 30, "main 8" : 0,
 
    "rock" : 17, "edge" : 0, "sidepost1" : 0, "sidepost2" : 0, "god" : 100,
 
    "marry2" : 34, "marry1" : 69, "cuba1" : 0, "cuba2" : 0, "side r" : 30,}
light8/ConfigDummy.py
Show inline comments
 
@@ -8,7 +8,7 @@ f1 = Fade('red', 0, 2, 100)
 
f2 = Fade('green', 1, 3, 50)
 
f3 = Fade('blue', 0, 4, 0)
 
f4 = Fade('clear', 0, 8, 75) 
 
c1 = Cue("Color shift", 0, 10, None, f1, f2, f3, f4)
 
c1 = Cue("Color shift", 0, 10, f1, f2, f3, f4)
 

	
 
cues = [c1]
 

	
light8/Cue.py
Show inline comments
 
@@ -7,11 +7,10 @@ class Cue:
 
    given time.  They contain Fades, which are actually children of Cue,
 
    meaning that Cues can contain Cues.  This is similar to the Light9 concept
 
    of Cues and Fades, but without all the Nodes."""
 
    def __init__(self, name, starttime, endtime=None, dur=None, *fades):
 
    def __init__(self, name, starttime, dur, *fades):
 
        'Create a cue'
 
        if not endtime:
 

	
 
            endtime = starttime + dur
 
        else:
 
            dur = endtime - starttime
 

	
 
        self.name = name
 
@@ -55,11 +54,9 @@ class Cue:
 

	
 
class Fade(Cue):
 
    'See Cue.__doc__'
 
    def __init__(self, channel, starttime, endtime=None, endlevel=0, dur=None,
 
                 param=None):
 
    def __init__(self, channel, starttime, dur=None, endlevel=0, param=None):
 
        'Fades are simple Cues'
 
        Cue.__init__(self, "%s -> %f" % (channel, endlevel), starttime, endtime,
 
            dur)
 
        Cue.__init__(self, "%s -> %f" % (channel, endlevel), starttime, dur)
 
        self.channel = channel
 
        self.endlevel = endlevel
 
        self.dur = dur
light8/Fader.py
Show inline comments
 
from Tix import *
 
from time import time # time is on my side
 
from util import subsetdict
 
from FlyingFader import FlyingFader
 

	
 
# statuses are:
 
# stopped - no cue is loaded
 
# stopped - no cue is loaded or cue is stopped
 
# running - cue is running, not complete
 
# halted - cue stops wherever it was, can't continue
 
# finished - cue is finished, next is loaded
 

	
 
stdfont = ('Arial', 10)
 
@@ -16,7 +16,9 @@ class Fader(Frame):
 
        self.master = master
 
        self.cues = cues
 
        self.scalelevels = scalelevels
 
        self.time_start = 0
 
        self.init_layout()
 
        self.stop()
 
    def init_layout(self):
 
        Frame.__init__(self, self.master)
 

	
 
@@ -31,71 +33,147 @@ class Fader(Frame):
 
        
 
        self.cuepercent = DoubleVar() # percent complete
 
        self.cuepercent.set(0)
 
        self.cuetime = StringVar() # time left
 
        self.cuetime.set('0 / 0')
 
        self.cuepercent.trace('w', self.update_percent)
 
        self.cuetimeelapse = StringVar() # time elapsed
 
        self.cuetimeelapse.set('0s')
 
        self.cuetimeleft = StringVar() # time left
 
        self.cuetimeleft.set('0s')
 

	
 
        buttonframe = Frame(self)
 

	
 
        self.listbox = ScrolledListBox(buttonframe)
 
        self.listbox.listbox.configure({'exportselection' : 0})
 
        self.listbox = ScrolledListBox(buttonframe, 
 
            command=self.update_selection)
 
        self.listbox.listbox.configure({'exportselection' : 0, 
 
            'selectmode' : EXTENDED})
 
        for c in self.cues:
 
            self.listbox.listbox.insert(END, c.name)
 
        self.listbox.pack(side=TOP)
 
        Button(buttonframe, text="Go", command=self.go).pack(side=LEFT)
 
        Button(buttonframe, text="Halt").pack(side=LEFT)
 
        Button(buttonframe, text="Clear").pack(side=LEFT)
 
        self.listbox.listbox.bind("<<ListboxSelect>>", self.update_selection, 
 
            add=1)
 
        Button(buttonframe, text="Go", command=self.go, font=stdfont,
 
            bg='green').pack(side=LEFT)
 
        Button(buttonframe, text="Stop", command=self.stop, font=stdfont,
 
            bg='red').pack(side=LEFT)
 
        Button(buttonframe, text="Prev", command=self.prev, 
 
            font=stdfont).pack(side=LEFT)
 
        Button(buttonframe, text="Next", command=self.next, 
 
            font=stdfont).pack(side=LEFT)
 

	
 
        infoframe = Frame(self)
 
        Label(infoframe, textvariable=self.cuename, 
 
            font=('Arial', 12), bg='lightBlue').grid(columnspan=2, sticky=NE+SW)
 
            font=('Arial', 12), bg='lightBlue').grid(columnspan=4, sticky=NE+SW)
 

	
 
        Label(infoframe, text="Length", font=stdfont, 
 
            bg='lightPink').grid(row=1, sticky=NE+SW)
 
        Label(infoframe, textvariable=self.cuelength, 
 
            font=stdfont).grid(row=1, column=1, sticky=NE+SW)
 
            font=stdfont).grid(row=1, column=1, columnspan=3, sticky=NE+SW)
 

	
 
        Label(infoframe, text="Target", font=stdfont,
 
            bg='lightPink', wraplength=50).grid(row=2, sticky=NE+SW)
 
        Label(infoframe, textvariable=self.cuetarget, 
 
            font=stdfont).grid(row=2, column=1, sticky=NE+SW)
 
            font=stdfont).grid(row=2, column=1, columnspan=3, sticky=NE+SW)
 

	
 
        Label(infoframe, text="Status", font=stdfont,
 
            bg='lightPink').grid(row=3, sticky=NE+SW)
 
        Label(infoframe, textvariable=self.cuestatus, 
 
            font=stdfont).grid(row=3, column=1, sticky=NE+SW)
 
            font=stdfont).grid(row=3, column=1, columnspan=3, sticky=NE+SW)
 

	
 
        Label(infoframe, text="Time", font=stdfont,
 
        Label(infoframe, text="Time Elapsed", font=stdfont,
 
            bg='lightPink').grid(row=4, sticky=NE+SW)
 
        Label(infoframe, textvariable=self.cuetime, 
 
        Label(infoframe, textvariable=self.cuetimeelapse, 
 
            font=stdfont).grid(row=4, column=1, sticky=NE+SW)
 

	
 
        Label(infoframe, text="Time Remain", font=stdfont,
 
            bg='lightPink').grid(row=4, column=2, sticky=NE+SW)
 
        Label(infoframe, textvariable=self.cuetimeleft, 
 
            font=stdfont).grid(row=4, column=3, sticky=NE+SW)
 

	
 
        Label(infoframe, text="Percent Complete", font=stdfont,
 
            bg='lightPink').grid(row=5, sticky=NE+SW)
 
        Label(infoframe, textvariable=self.cuepercent, 
 
            font=stdfont).grid(row=5, column=1, sticky=NE+SW)
 
            bg='lightPink').grid(row=5, column=0, sticky=NE+SW)
 
        self.percentlabel = Label(infoframe, 
 
            font=stdfont)
 
        self.percentlabel.grid(row=5, column=1, columnspan=3, sticky=NE+SW)
 

	
 
        s = Scale(infoframe, variable=self.cuepercent,
 
                        showvalue=0, length=220,
 
                        width=18, sliderlength=30,
 
                        to=100,res=.1,from_=0,bd=1, font=stdfont,
 
                        orient='horiz')
 
        s.grid(row=6, columnspan=4, sticky='ew')
 

	
 
        infoframe.pack(side=RIGHT, fill=BOTH, expand=1)
 
        buttonframe.pack(side=BOTTOM)
 

	
 
        self.listbox.listbox.select_set(0)
 
        self.update_selection()
 
    def update_selection(self):
 
    def update_percent(self, *args):
 
        if self.cuestatus.get() != 'running':
 
            self.cuestatus.set("running")
 
            self.time_start = time()
 
            startlevels = dict([(k, v.get()) 
 
                for k, v in self.scalelevels.items()])
 
            self.current.start(startlevels, self.time_start)
 

	
 
        percent = self.cuepercent.get()
 
        self.percentlabel.config(text='%.1f%%' % percent)
 
        percent /= 100
 

	
 
        elapsed = percent * self.current.dur
 
        self.cuetimeelapse.set('%.1fs' % elapsed)
 
        self.cuetimeleft.set('%.1fs' % (self.current.dur - elapsed))
 
        newlevels = self.current.get_levels(self.time_start + elapsed)
 
        for ch, lev in newlevels.items():
 
            try:
 
                self.scalelevels[ch].set(lev / 100.0)
 
            except KeyError:
 
                pass
 

	
 
    def update_selection(self, *args):
 
        selection = int(self.listbox.listbox.curselection()[0]) # blech
 
        self.current = self.cues[selection]
 
        self.cuename.set(self.current.name)
 
        self.cuelength.set(self.current.dur)
 
        self.cuetarget.set(str(self.current.get_end_levels()))
 
        target = ', '.join(['%s -> %.1f' % (n, lev) 
 
            for n, lev in self.current.get_end_levels().items()])
 
        self.cuetarget.set(target)
 
        self.cuetimeelapse.set('0s')
 
        self.cuetimeleft.set('%.1fs' % self.current.dur)
 
        self.cuepercent.set(0)
 
    def go(self):
 
        print 'Fade to', self.current.name
 
        self.update_selection()
 
        self.cuestatus.set("running")
 
        self.time_start = time()
 
        startlevels = dict([(k, v.get()) for k, v in self.scalelevels.items()])
 
        self.current.start(startlevels, self.time_start)
 
        self.running_loop()
 
    def stop(self):
 
        self.cuestatus.set('stopped')
 
    def prev(self):
 
        self.cuestatus.set('stopped')
 
        selection = int(self.listbox.listbox.curselection()[0]) # blech
 
        if selection != 0:
 
            self.listbox.listbox.select_clear(selection)
 
            self.listbox.listbox.select_set(selection - 1)
 
            self.update_selection()
 
    def next(self):
 
        self.cuestatus.set('stopped')
 
        selection = int(self.listbox.listbox.curselection()[0]) # blech
 
        if selection != self.listbox.listbox.size() - 1:
 
            self.listbox.listbox.select_clear(selection)
 
            self.listbox.listbox.select_set(selection + 1)
 
            self.update_selection()
 
    def running_loop(self):
 
        curtime = time()
 
        if (curtime - self.time_start) > self.current.dur:
 
        if self.cuestatus.get() == 'stopped':
 
            return
 
        newlevels = self.current.get_levels(time())
 
        print newlevels
 
        curtime = time()
 
        elapsed = (curtime - self.time_start)
 
        if elapsed > self.current.dur:
 
            self.cuestatus.set('finished')
 
            self.cuepercent.set(100)
 

	
 
            # advance cues if okay
 
            self.next()
 
            return
 

	
 
        self.cuepercent.set(100 * elapsed / self.current.dur)
 
        self.after(30, self.running_loop)
light8/io.py
Show inline comments
 
@@ -2,6 +2,7 @@ from parport import *
 

	
 
class ParportDMX:
 
    def __init__(self, dummy=1, dimmers=68):
 
        self.dimmers = dimmers
 
        self.dummy = dummy
 
        if not dummy:
 
            getparport()
 
@@ -10,5 +11,5 @@ class ParportDMX:
 
        levels = list(levels) + [0]
 
        # if levels[14] > 0: levels[14] = 100 # non-dim
 
        outstart()
 
        for p in range(1, dimmers + 2):
 
        for p in range(1, self.dimmers + 2):
 
            outbyte(levels[p-1]*255 / 100)
light8/panels.py
Show inline comments
 
@@ -26,7 +26,7 @@ class Controlpanel(Frame):
 
                fill='x')
 

	
 
class Console:
 
    def __init__(self,refresh,currentlevels,configfilename):
 
    def __init__(self,lightboard):
 
        print "Light 8: Everything's under control"
 
        t=toplevelat(267,717,w=599,h=19)
 
        self.frame = Frame(t)
 
@@ -35,41 +35,16 @@ class Console:
 
        self.entry.bind('<Return>',
 
                        lambda evt: self.execute(evt, self.entry.get()))
 
        self.frame.pack(fill=BOTH, expand=1)
 
        self.refreshcmd=refresh
 
        self.currentlevels=currentlevels
 
        self.configfilename=configfilename
 
        self.lightboard=lightboard
 
    
 
    def execute(self, evt, str):
 
        if str[0] == '*': # make a new sub
 
            self.make_sub(str)
 
        if str[0] == '*': # make a new sub from the current levels
 
            self.lightboard.save_sub(str,self.lightboard.stageassub())
 
        else:
 
            print '>>>', str
 
            print eval(str)
 
        self.frame.focus()
 

	
 
    def make_sub(self, name):
 
        i = 1
 
        if not name:
 
            print "Enter sub name in console."
 
            return
 

	
 
        st = ''
 
        linebuf = 'subs["%s"] = {' % name
 
        for l in self.currentlevels:
 
            if l:
 
                if len(linebuf) > 60: 
 
                    st += linebuf + '\n   '
 
                    linebuf = ''
 

	
 
                linebuf += ' "%s" : %d,' % (Patch.get_channel_name(i), l)
 
            i += 1
 
        st += linebuf + '}\n'
 
        f = open(self.configfilename, 'a')
 
        f.write(st)
 
        f.close()
 
        print 'Added sub:', st
 
        self.refreshcmd()
 

	
 
class Leveldisplay:
 
    def __init__(self, parent, channel_levels, num_channels=68):
 
        frames = (make_frame(parent), make_frame(parent))
 
@@ -103,7 +78,8 @@ class Leveldisplay:
 
        # these labels
 

	
 
class Subpanels:
 
    def __init__(self, scenesparent, effectsparent, scalelevels, Subs, xfader,
 
    def __init__(self, scenesparent, effectsparent, lightboard,
 
                 scalelevels, Subs, xfader,
 
        changelevel, subediting, longestname):
 
        
 
        sublist = Subs.subs.items()
 
@@ -132,37 +108,34 @@ class Subpanels:
 
            f=Frame(parent, bd=1, relief='raised')
 
            f.pack(fill='both',exp=1,side=side2)
 

	
 
            # make DoubleVar (there might be one left around from before a refresh)
 
            # make DoubleVar (there might be one left around from
 
            # before a refresh)
 
            if name not in scalelevels:
 
                scalelevels[name]=DoubleVar()
 

	
 
            sub.set_slider_var(scalelevels[name])
 

	
 
            scaleopts = {}
 
            scaleopts = {'troughcolor' : 'grey70'}
 
            if sub.color:
 
                scaleopts['troughcolor'] = sub.color
 

	
 
            s = FlyingFader(f, label=str(name), variable=scalelevels[name],
 
                            showvalue=0, length=300-17,
 
                            width=18, sliderlength=18,
 
                            to=end1,res=.001,from_=end2,bd=0, font=stdfont,
 
                            width=14, sliderlength=14,
 
                            to=end1,res=.001,from_=end2,bd=1, font=stdfont,
 
                            orient=orient1,
 
                            labelwidth=width1,
 
                            **scaleopts)
 

	
 
            if not sub.is_effect:
 
                eb = Togglebutton(f,text="Edit",font=stdfont,padx=0,pady=0,bd=1,
 
                                  command=lambda: subediting.setsub(sub))
 
                eb.pack(side=side1,fill='both',padx=0,pady=0)
 
            # tell subediting what widget to highlight when it's
 
            # editing a sub
 
            for w in (s,s.label,s.vlabel, s.scale):
 
                subediting.register(subname=name,widget=w)
 

	
 
            for axis in ('y','x'):
 
                cvar=IntVar()
 
                eb_color = ('red', 'green')[axis == 'y']
 
                cb=Togglebutton(f,text=axis.upper(),variable=cvar,font=stdfont, 
 
                                padx=0, pady=0, bd=1, downcolor=eb_color)
 
                cb.pack(side=side1,fill='both', padx=0, pady=0)
 
                s.bind('<Key-%s>'%axis, lambda ev,cb=cb: cb.invoke)
 
                xfader.registerbutton(name,axis,cvar)
 
            if not sub.is_effect:
 
                self.subeditingbuttons(f,side1,sub,name,lightboard,subediting)
 

	
 
            self.axisbuttons(f,s,xfader,stdfont,side1,name)
 

	
 
            s.pack(side='left', fill=BOTH)
 

	
 
@@ -170,3 +143,28 @@ class Subpanels:
 
            sframe = Frame(f,bd=2,relief='groove')
 
            sub.draw_tk(sframe)
 
            sframe.pack(side='left',fill='y')
 

	
 
    def subediting_edit(self,subediting,sub):
 
        subediting.setsub(sub)
 
        
 
    def subediting_save(self,name,sub,lightboard):
 
        lightboard.save_sub(name,sub.getlevels())
 
        
 
    def subeditingbuttons(self,f,side1,sub,name,lightboard,subediting):
 
        for txt,cmd in (("Edit",lambda subediting=subediting,sub=sub: self.subediting_edit(subediting,sub)),
 
                        ("Save",lambda sub=sub,name=name,lightboard=lightboard: self.subediting_save(name,sub,lightboard))):
 
            eb = Button(f,text=txt,font=stdfont,padx=0,pady=0,
 
                        bd=1,command=cmd)
 
            eb.pack(side=side1,fill='both',padx=0,pady=0)
 
            
 
    def axisbuttons(self,f,s,xfader,stdfont,side1,name):
 
        for axis in ('y','x'):
 
            cvar=IntVar()
 
            eb_color = ('red', 'green')[axis == 'y']
 
            cb=Togglebutton(f,text=axis.upper(),variable=cvar,font=stdfont, 
 
                            padx=3, pady=0, bd=1, downcolor=eb_color)
 
            cb.pack(side=side1,fill='both', padx=0, pady=0)
 
            s.bind('<Key-%s>'%axis, lambda ev,cb=cb: cb.invoke)
 
            xfader.registerbutton(name,axis,cvar)
 

	
 
                    
light8/rsn.py
Show inline comments
 
@@ -60,7 +60,7 @@ class Lightboard:
 
        for w in self.master.winfo_children():
 
            w.destroy()
 

	
 
        stage_tl = toplevelat(44,723)
 
        stage_tl = toplevelat(22,30)
 
        s = stage.Stage(stage_tl)
 
        stage.createlights(s)
 
        s.setsubediting(self.subediting)
 
@@ -69,9 +69,9 @@ class Lightboard:
 
        sub_tl = toplevelat(0,0)
 
        effect_tl = toplevelat(462,4)
 

	
 
        self.subpanels = Subpanels(sub_tl, effect_tl, self.scalelevels, Subs, 
 
            self.xfader, self.changelevel, self.subediting, 
 
            Subs.longestsubname())
 
        self.subpanels = Subpanels(sub_tl, effect_tl, self, self.scalelevels,
 
                                   Subs, self.xfader, self.changelevel,
 
                                   self.subediting, Subs.longestsubname())
 

	
 
        leveldisplay_tl = toplevelat(873,400)
 
        leveldisplay_tl.bind('<Escape>', sys.exit)
 
@@ -79,12 +79,9 @@ class Lightboard:
 
        self.leveldisplay = Leveldisplay(leveldisplay_tl, self.channel_levels)
 
        for i in range(0,len(self.channel_levels)):
 
            self.channel_levels[i].config(text=self.oldlevels[i])
 
            colorlabel(self.channel_levels[i])
 

	
 
        if DUMMY:
 
            filename = 'ConfigDummy.py'
 
        else:
 
            filename = 'Config.py'
 
        Console(self.refresh,currentlevels=self.oldlevels,configfilename=filename)
 
        Console(self)
 

	
 
        # root frame
 
        controlpanel = Controlpanel(root, self.xfader, self.refresh, self.quit)
 
@@ -100,16 +97,50 @@ class Lightboard:
 
        self.xfader.setupwidget(xf)
 
        controlpanel.pack()
 

	
 
        cuefader_tl = toplevelat(98, 480)
 
        cuefader = Fader(cuefader_tl, Subs.cues, self.scalelevels)
 
        cuefader.pack()
 
        # cuefader_tl = toplevelat(98, 480)
 
        # cuefader = Fader(cuefader_tl, Subs.cues, self.scalelevels)
 
        # cuefader.pack()
 

	
 
    def refresh(self, *args):
 
        'rebuild interface, reload data'
 
        get_data()
 
        self.subediting.refresh()
 
        self.buildinterface()
 
        bindkeys(root,'<Escape>', self.quit)
 

	
 
    def stageassub(self):
 
        """returns the current onstage lighting as a levels
 
        dictionary, skipping the zeros, and using names where
 
        possible"""
 
        levs=self.oldlevels
 
        
 
        return dict([(Patch.get_channel_name(i),l) for i,l
 
                     in zip(range(1,len(levs)+1),levs)
 
                     if l>0])
 
    def save_sub(self, name, levels):
 
        if not name:
 
            print "Enter sub name in console."
 
            return
 

	
 
        st = ''
 
        linebuf = 'subs["%s"] = {' % name
 
        for channame,lev in levels.items():
 
            if len(linebuf) > 60: 
 
                st += linebuf + '\n   '
 
                linebuf = ''
 

	
 
            linebuf += ' "%s" : %d,' % (channame, lev)
 
        st += linebuf + '}\n'
 
        if DUMMY:
 
            filename = 'ConfigDummy.py'
 
        else:
 
            filename = 'Config.py'
 
        f = open(filename, 'a')
 
        f.write(st)
 
        f.close()
 
        print 'Added sub:', st
 
        self.refresh()
 

	
 
    # this is called on a loop, and ALSO by the Scales
 
    def changelevel(self, *args):
 
        'Amp trims slider'
light8/stage.py
Show inline comments
 
@@ -6,7 +6,7 @@ def printevent(ev):
 
            print k,getattr(ev,k)
 
    print ""
 

	
 
textstyle={'font':'arial 7','fill':'white'}
 
textstyle={'font':'arial 9','fill':'white'}
 

	
 
class Stage(Canvas):
 
    
 
@@ -185,12 +185,14 @@ class Stage(Canvas):
 

	
 
        if self.mode=='deselect-or-rectangle':
 
            if (coords[0]-self.mousedownpos[0])**2+(coords[1]-self.mousedownpos[1])**2>self.halo**2:
 
                if not shifted and not control:
 
                    self.clearselection()
 
                # they moved enough, it's a level change
 
                self.startrectangleselect()
 
                
 

	
 
        if self.mode=='levelchange':
 
            delta = (self.mousedownpos[1]-ev.y)
 
            delta = 1.5 * (self.mousedownpos[1]-ev.y)
 
            if self.subeditor:
 
                self.subeditor.levelchange(self.selectedlights,delta)
 

	
 
@@ -335,6 +337,25 @@ def createlights(s):
 

	
 
    s.addlight('hotback',(413, 476),(414, 396))
 

	
 
    s.addlight('main 2',(120, 563) ,aim=(241, 472))
 
    s.addlight('main 3',(162, 562) ,aim=(140, 425))
 
    s.addlight('main 4',(208, 560) ,aim=(342, 423))
 
    s.addlight('main 5',(259, 558) ,aim=(433, 450))
 
    s.addlight('main 7',(494, 551) ,aim=(420, 458))
 
    s.addlight('main 8',(528, 554) ,aim=(503, 477))
 
    s.addlight('main 9',(559, 554) ,aim=(544, 479))
 
    s.addlight('main 10',(597, 556),aim=(339, 444))
 
    s.addlight('main 11',(636, 556),aim=(449, 409))
 

	
 
    s.addlight('sidepost2', (785, 609))
 
    s.addlight('sidepost1', (8, 613))
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 
if __name__=='__main__':
light8/subediting.py
Show inline comments
 
@@ -10,11 +10,27 @@ class Subediting:
 
    20:41:37 drewp: if you drag a light that's in the sub you're editing, you'll adjust it from it's position in the sub (Even if that sub is not visialbe, or if the light is doing someting else)
 
    20:41:57 drewp: but if you touch a light that wasnt in the sub, the current light brightness from the stage gets copied into the sub, and then you adjust frmo there
 
    20:42:05 drewp: i dont know any other rules; but these seem odd
 
    20:42:29 drewp: it may be necessary to highlight which lights are already in the sub, so you know what you're doing as soon as you click on one
 
    20:42:29 drewp: it may be necessary to highluight which lights are already in the sub, so you know what you're doing as soon as you click on one
 
    """
 
    def __init__(self,currentoutputlevels):
 
        self.sub=None
 
        self.currentoutputlevels = currentoutputlevels
 
        self.widgets={} # subname : widget list
 
        self.oldcolors={} # widget : bgcolor
 

	
 
    def refresh(self):
 
        self.sub=None # this wouldn't last even if we wanted it to;
 
        # the Sub objects are rebuilt upon reload
 
        self.widgets={}
 
        self.oldcolors={}
 

	
 
    def register(self,subname,widget):
 
        """tell subediting about any widgets that should be highlighted
 
        when a sub is being edited"""
 
        if subname not in self.widgets:
 
            self.widgets[subname]=[]
 
        self.widgets[subname].append(widget)
 
        self.oldcolors[widget] = widget.cget('bg')
 

	
 
    def setsub(self,sub):
 
        """sets which (one) sub object should the stage be editing.
 
@@ -24,12 +40,26 @@ class Subediting:
 
        
 
        print "subedit: editing ",sub.name
 
        self.sub = sub
 
        self.highlighteditsub()
 
    def highlighteditsub(self):
 
        """based on how widgets got self.register'd, we highlight
 
        just the row that's being edited"""
 

	
 
        # highlight that row only
 
        for n,wl in self.widgets.items():
 
            if n==self.sub.name:
 
                for w in wl:
 
                    w.config(bg='red')
 
            else:
 
                for w in wl:
 
                    w.config(bg=self.oldcolors[w])
 

	
 
    #
 
    # next two methods are called by the Stage
 
    #
 
    def startlevelchange(self):
 
        "stage is about to send some level changes. this method is called by the Stage."
 
        """stage is about to send some level changes. this method is
 
        called by the Stage."""
 
        print "subedit: start-------"
 
        if self.sub is None:
 
            print "not editing any sub!"
 
@@ -49,7 +79,7 @@ class Subediting:
 
        0..1 measured from the last startlevelchange call. this method is
 
        called by the Stage"""
 

	
 
        print "subedit: level change",lightnames,delta
 
#        print "subedit: level change",lightnames,delta
 
        if self.sub is None:
 
            print "not editing any sub!"
 
            return
 
@@ -62,7 +92,7 @@ class Subediting:
 
                cl = self.getcurrentlevel(l)
 
                if cl is None:
 
                    print "light '%s' isn't even in the patch! skipping" % l
 
                    return
 
                    continue
 
                print "copying current light level",cl,"into the sub"
 
                self.startlevels[l] = cl 
 

	
0 comments (0 inline, 0 general)