Mercurial > code > home > repos > light9
changeset 53:032b2b67bc10
result of July 7th on-site editing
author | dmcc |
---|---|
date | Mon, 08 Jul 2002 14:31:20 +0000 |
parents | 065896b0913c |
children | 3011c1028eb7 |
files | light8/Config.py light8/ConfigDummy.py light8/Cue.py light8/Fader.py light8/io.py light8/panels.py light8/rsn.py light8/stage.py light8/subediting.py |
diffstat | 9 files changed, 583 insertions(+), 120 deletions(-) [+] |
line wrap: on
line diff
--- a/light8/Config.py Mon Jul 08 03:25:42 2002 +0000 +++ b/light8/Config.py Mon Jul 08 14:31:20 2002 +0000 @@ -2,14 +2,32 @@ 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, ('main 3',) : 3, @@ -22,9 +40,10 @@ ('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 @@ '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 @@ 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,}
--- a/light8/ConfigDummy.py Mon Jul 08 03:25:42 2002 +0000 +++ b/light8/ConfigDummy.py Mon Jul 08 14:31:20 2002 +0000 @@ -8,7 +8,7 @@ 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]
--- a/light8/Cue.py Mon Jul 08 03:25:42 2002 +0000 +++ b/light8/Cue.py Mon Jul 08 14:31:20 2002 +0000 @@ -7,12 +7,11 @@ 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 + + endtime = starttime + dur + dur = endtime - starttime self.name = name self.starttime = starttime @@ -55,11 +54,9 @@ 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
--- a/light8/Fader.py Mon Jul 08 03:25:42 2002 +0000 +++ b/light8/Fader.py Mon Jul 08 14:31:20 2002 +0000 @@ -1,11 +1,11 @@ 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 @@ 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 @@ 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)
--- a/light8/io.py Mon Jul 08 03:25:42 2002 +0000 +++ b/light8/io.py Mon Jul 08 14:31:20 2002 +0000 @@ -2,6 +2,7 @@ class ParportDMX: def __init__(self, dummy=1, dimmers=68): + self.dimmers = dimmers self.dummy = dummy if not dummy: getparport() @@ -10,5 +11,5 @@ 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)
--- a/light8/panels.py Mon Jul 08 03:25:42 2002 +0000 +++ b/light8/panels.py Mon Jul 08 14:31:20 2002 +0000 @@ -26,7 +26,7 @@ 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,40 +35,15 @@ 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() + self.frame.focus() class Leveldisplay: def __init__(self, parent, channel_levels, num_channels=68): @@ -103,8 +78,9 @@ # these labels class Subpanels: - def __init__(self, scenesparent, effectsparent, scalelevels, Subs, xfader, - changelevel, subediting, longestname): + def __init__(self, scenesparent, effectsparent, lightboard, + scalelevels, Subs, xfader, + changelevel, subediting, longestname): sublist = Subs.subs.items() sublist.sort() @@ -132,37 +108,34 @@ 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 @@ 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) + +
--- a/light8/rsn.py Mon Jul 08 03:25:42 2002 +0000 +++ b/light8/rsn.py Mon Jul 08 14:31:20 2002 +0000 @@ -60,7 +60,7 @@ 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 @@ 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 @@ 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 @@ 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'
--- a/light8/stage.py Mon Jul 08 03:25:42 2002 +0000 +++ b/light8/stage.py Mon Jul 08 14:31:20 2002 +0000 @@ -6,7 +6,7 @@ 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 @@ 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 @@ 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__':
--- a/light8/subediting.py Mon Jul 08 03:25:42 2002 +0000 +++ b/light8/subediting.py Mon Jul 08 14:31:20 2002 +0000 @@ -10,12 +10,28 @@ 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 @@ 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 @@ 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 @@ 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