diff --git a/light8/Config.py b/light8/Config.py --- a/light8/Config.py +++ b/light8/Config.py @@ -1,7 +1,6 @@ -from __future__ import generators,division from random import randrange from time import time -import os +from __future__ import generators,division from Subs import * from Cue import * @@ -78,9 +77,293 @@ def fulls(chans): return dict([(c,FL) for c in chans]) def levs(chans,levs): return dict([(c,v) for c,v in zip(chans,levs)]) +subs={} +subs[('col blue', 'blue')]={ 'blue1': 100, 'blue2': 100, 'blue3': 100, 'blue4': 100, } + +subs[('col gree', 'green')]={ 'gree1': 100, 'gree2': 100, 'gree3': 100, 'gree4': 100, } + +subs[('col oran', '#EEEE99')]={ 'oran1': 100, 'oran2': 100, 'oran3': 100, 'oran4': 100, } + +subs[('col red', 'red')]={ 'red1': 100, 'red2': 100, 'red3': 100, 'red4': 100, } + +subs[('house', 'black')]={ 'house': 100, } + +subs['*1-01-0']={ 'b22': 100, 'b24': 100, 'b25': 100, 'b34': 100, 'cycleft': 41, 'cycright': 41, 'desk2': 78, 'edge': 80, 'hotbox1': 43, 'hotbox2': 91, 'main 10': 100, 'main 11': 100, 'main 2': 100, 'main 3': 100, 'main 4': 100, 'main 5': 100, 'main 7': 100, 'main 8': 100, 'main 9': 100, 'marry1': 100, 'marry2': 100, 'side l': 100, 'side r': 100, 'sidefill1': 100, 'sidefill2': 100, 'upfill1': 56, 'upfill2': 91, 'upfill3': 60, 'upfill4': 68, } + +subs['*1-01-9 end conversations']={ 'b22': 63, 'b23': 12, 'b24': 42, 'b25': 63, 'b34': 63, 'cuba1': 63, 'cuba2': 42, 'cycleft': 25, 'cycright': 25, 'desk2': 12, 'edge': 13, 'hotbox1': 37, 'hotbox2': 63, 'main 10': 63, 'main 11': 63, 'main 2': 63, 'main 3': 26, 'main 4': 63, 'main 5': 100, 'main 7': 63, 'main 8': 63, 'main 9': 63, 'marry1': 100, 'marry2': 63, 'side l': 63, 'side r': 63, 'sidefill1': 26, 'sidefill2': 63, 'upfill1': 29, 'upfill2': 63, 'upfill3': 43, 'upfill4': 29, } + +subs['*1-02-0']={ 'b22': 100, 'b23': 100, 'b24': 100, 'b32': 14, 'cuba2': 38, 'cycright': 63, 'desk1': 53, 'desk2': 65, 'hotbox1': 25, 'hotbox2': 100, 'main 10': 100, 'main 11': 100, 'main 4': 100, 'main 5': 70, 'main 7': 100, 'main 8': 100, 'main 9': 100, 'marry1': 61, 'marry2': 47, 'rock': 23, 'sidefill2': 51, 'upfill2': 6, 'upfill3': 55, } + +subs['*1-02-1 desk solo']={ 'b22': 100, 'b23': 100, 'b24': 22, 'cycright': 37, 'desk1': 53, 'desk2': 89, 'hotbox1': 25, 'hotbox2': 7, 'main 10': 22, 'main 11': 22, 'main 3': 9, 'main 4': 22, 'main 7': 100, 'main 8': 22, 'main 9': 22, 'marry1': 61, 'marry2': 22, 'rock': 14, } + +subs['*1-03-0']={ 'phone': 100, 'upfill2':50, 'upfill3':50, } + +subs['*1-04-00-dance']={ 'b32': 43, 'b34': 30, 'cycleft': 19, 'cycright': 19, 'desk2': 24, 'hotback': 100, 'hotbox1': 42, 'hotbox2': 78, 'main 10': 100, 'main 11': 46, 'main 2': 46, 'main 3': 46, 'main 4': 46, 'main 5': 100, 'main 7': 100, 'main 8': 46, 'main 9': 46, 'red1': 100, 'red2': 100, 'red3': 100, 'red4': 100, 'upfill1': 26, 'upfill2': 46, 'upfill3': 32, 'upfill4': 26, } + +subs['*1-04-01 dark tables']={ 'b23': 67, 'b24': 67, 'b32': 2, 'b34': 12, 'blue1': 33, 'blue2': 33, 'blue3': 33, 'blue4': 33, 'cycleft': 19, 'cycright': 19, 'desk2': 24, 'edge': 9, 'hotback': 100, 'hotbox1': 46, 'hotbox2': 45, 'main 10': 100, 'main 11': 46, 'main 2': 46, 'main 3': 13, 'main 4': 100, 'main 7': 100, 'main 8': 29, 'main 9': 100, 'red1': 100, 'red2': 100, 'red3': 100, 'red4': 100, 'upfill1': 26, 'upfill4': 26, } + +subs['*1-04-02 solo ada']={ 'b23': 62, 'b24': 100, 'b32': 2, 'b34': 12, 'blue1': 33, 'blue2': 33, 'blue3': 33, 'blue4': 33, 'cycleft': 19, 'cycright': 19, 'desk2': 24, 'hotback': 100, 'hotbox1': 32, 'hotbox2': 24, 'main 10': 11, 'main 11': 2, 'main 2': 13, 'main 4': 100, 'main 7': 100, 'main 9': 61, 'red1': 100, 'red2': 100, 'red3': 100, 'red4': 100, 'upfill1': 26, 'upfill4': 26, } + +subs['*1-04-10-after dance']={ 'b32': 43, 'b34': 30, 'cycleft': 19, 'cycright': 19, 'desk2': 24, 'hotback': 100, 'hotbox1': 42, 'hotbox2': 78, 'main 10': 100, 'main 11': 46, 'main 2': 46, 'main 3': 46, 'main 4': 46, 'main 5': 100, 'main 7': 100, 'main 8': 46, 'main 9': 46, 'red1': 100, 'red2': 100, 'red3': 100, 'red4': 100, 'upfill1': 26, 'upfill2': 46, 'upfill3': 32, 'upfill4': 26, } + +subs['*1-04-20-table']={ 'b22': 100, 'cuba1': 22, 'desk2': 58, 'hotbox2': 46, 'main 2': 62, 'main 3': 80, 'main 4': 100, 'main 5': 34, 'main 7': 10, 'main 8': 10, 'main 9': 64, 'red1': 100, 'rock': 22, } + +subs['*1-04-30-small table']={ 'b22': 100, 'desk1': 50, 'desk2': 34, 'red1': 100, 'upfill1': 62, 'upfill4': 62, } + +subs['*1-05-0']={ 'b13': 100, 'b22': 100, 'b23': 100, 'b24': 100, 'b25': 100, 'b34': 13, 'cycleft': 18, 'cycright': 36, 'desk1': 19, 'desk2': 31, 'edge': 37, 'hotbox2': 17, 'main 10': 100, 'main 11': 89, 'main 2': 100, 'main 3': 85, 'main 4': 100, 'main 5': 100, 'main 7': 100, 'main 8': 100, 'main 9': 100, 'side l': 100, 'side r': 82, 'sidefill1': 100, 'sidefill2': 100, 'upfill2': 37, 'upfill3': 37, } + +subs['*1-06-0']={ 'b22': 49, 'b23': 100, 'b24': 100, 'b25': 100, 'b32': 80, 'b34': 100, 'cycright': 53, 'desk2': 78, 'hotbox2': 100, 'main 10': 100, 'main 11': 100, 'main 2': 100, 'main 5': 100, 'main 7': 100, 'main 8': 100, 'main 9': 100, 'marry2': 100, 'rock': 60, 'side l': 100, 'side r': 100, 'sidefill1': 59, 'sidefill2': 100, } + +subs['*1-07-0']={ 'b22': 82, 'b23': 100, 'b24': 100, 'b25': 64, 'b34': 28, 'blue1': 93, 'blue2': 93, 'blue3': 93, 'blue4': 93, 'edge': 12, 'hotbox2': 11, 'main 10': 37, 'main 11': 37, 'main 2': 37, 'main 3': 25, 'main 4': 37, 'main 5': 37, 'main 7': 37, 'main 8': 37, 'main 9': 37, 'marry1': 37, 'side l': 49, 'side r': 36, 'sidefill1': 37, 'sidefill2': 37, 'upfill2': 18, 'upfill3': 6, } + +subs['*1-08-00-left cafe']={ 'b22': 40, 'cafe1': 71, 'edge': 41, } + +subs['*1-08-10-right cafe']={ 'b32': 10, 'b34': 31, 'cafe2': 100, 'cuba1': 53, 'cuba2': 76, } + +subs['*1-08-10-centerwalk']={ 'b23': 100, 'b24': 100, } + +subs['*1-08-10-rightwalk']={ 'b25': 100, } + +subs['*1-08-20-backdrop']={ 'upfill1': 100, 'upfill2': 100, 'upfill3': 100, 'upfill4': 100, } + +subs['*1-08-30-full']={ 'b22': 100, 'b23': 100, 'b24': 100, 'b25': 100, 'b32': 23, 'b34': 24, 'blue1': 15, 'blue2': 15, 'blue3': 15, 'blue4': 15, 'cafe1': 100, 'cafe2': 50, 'cycleft': 15, 'cycright': 15, 'desk2': 30, 'edge': 31, 'gree1': 15, 'gree2': 15, 'gree3': 15, 'gree4': 15, 'hotbox1': 38, 'hotbox2': 38, 'main 10': 38, 'main 11': 38, 'main 2': 38, 'main 3': 38, 'main 4': 38, 'main 5': 38, 'main 7': 38, 'main 8': 38, 'main 9': 38, 'marry1': 38, 'marry2': 38, 'oran1': 82, 'oran2': 82, 'oran3': 82, 'oran4': 82, 'phone': 31, 'red1': 77, 'red2': 77, 'red3': 77, 'red4': 95, 'side l': 38, 'side r': 38, 'sidefill1': 38, 'sidefill2': 38, 'upfill1': 100, 'upfill2': 100, 'upfill3': 100, 'upfill4': 100, } + +subs['*1-09-0']={ 'b22': 32, 'b23': 21, 'b24': 21, 'b25': 62, 'b34': 9, 'blue1': 92, 'blue2': 92, 'blue3': 92, 'blue4': 92, 'cafe1': 37, 'cafe2': 37, 'desk2': 16, 'gree1': 53, 'gree2': 53, 'gree3': 53, 'gree4': 53, 'main 10': 43, 'main 11': 37, 'main 2': 61, 'main 5': 64, 'main 8': 47, 'main 9': 38, 'marry2': 9, 'oran1': 31, 'oran2': 31, 'oran3': 31, 'oran4': 31, 'red1': 100, 'red2': 100, 'red3': 100, 'red4': 100, 'upfill1': 30, 'upfill2': 43, 'upfill3': 43, 'upfill4': 30, } + +subs['*1-10-0']={ 'b13': 15, 'b22': 44, 'b23': 20, 'b24': 34, 'b25': 34, 'b32': 27, 'b34': 34, 'blue1': 84, 'blue2': 54, 'cuba1': 5, 'desk1': 17, 'desk2': 11, 'hotbox2': 34, 'main 10': 34, 'main 11': 34, 'main 2': 34, 'main 3': 25, 'main 4': 25, 'main 5': 34, 'main 7': 34, 'main 8': 34, 'main 9': 34, 'rock': 3, 'side l': 23, 'side r': 14, 'sidefill1': 6, 'sidefill2': 23, } + +subs['*2-01-0-dance']={ 'b32': 43, 'b34': 30, 'cycleft': 19, 'cycright': 19, 'desk2': 24, 'hotback': 100, 'hotbox1': 42, 'hotbox2': 78, 'main 10': 100, 'main 11': 46, 'main 2': 46, 'main 3': 46, 'main 4': 46, 'main 5': 100, 'main 7': 100, 'main 8': 46, 'main 9': 46, 'red1': 100, 'red2': 100, 'red3': 100, 'red4': 100, 'upfill1': 26, 'upfill2': 46, 'upfill3': 32, 'upfill4': 26, } + +subs['*2-01-01-solo']={ 'b23': 100, 'b24': 100, 'b32': 43, 'cycleft': 55, 'cycright': 55, 'desk2': 24, 'hotback': 100, 'hotbox1': 42, 'hotbox2': 78, 'main 7': 100, 'red1': 100, 'red2': 100, 'red3': 100, 'red4': 100, 'upfill1': 67, 'upfill2': 1, 'upfill4': 67, } + +subs['*2-01-1-after dance']={ 'b32': 43, 'b34': 30, 'cycleft': 19, 'cycright': 19, 'desk2': 24, 'hotback': 100, 'hotbox1': 42, 'hotbox2': 78, 'main 10': 100, 'main 11': 46, 'main 2': 46, 'main 3': 46, 'main 4': 46, 'main 5': 100, 'main 7': 100, 'main 8': 46, 'main 9': 46, 'red1': 100, 'red2': 100, 'red3': 100, 'red4': 100, 'upfill1': 26, 'upfill2': 46, 'upfill3': 32, 'upfill4': 26, } + +subs['*2-01-1-darker dance']={ 'b23': 93, 'b24': 93, 'b32': 4, 'b34': 9, 'cycleft': 19, 'cycright': 19, 'desk2': 10, 'hotback': 100, 'hotbox1': 42, 'hotbox2': 52, 'red1': 100, 'red2': 100, 'red3': 100, 'red4': 100, 'upfill4': 26, } + +subs['*2-01-2-table']={ 'b22': 100, 'cuba1': 22, 'desk2': 58, 'hotbox2': 46, 'main 2': 62, 'main 3': 80, 'main 4': 100, 'main 5': 34, 'main 7': 10, 'main 8': 10, 'main 9': 64, 'red1': 100, 'rock': 22, 'upfill1': 76, 'upfill2': 76, 'upfill3': 76, 'upfill4': 76, } + +subs['*2-01-3-small table']={ 'b22': 56, 'b25': 5, 'desk1': 47, 'desk2': 58, 'main 3': 18, 'main 9': 11, 'red1': 100, 'upfill1': 62, 'upfill4': 62, } + +subs['*2-02-0']={ 'b23': 76, 'b24': 52, 'main 10': 53, 'main 2': 53, 'main 4': 24, 'main 5': 18, 'main 7': 42, 'main 8': 36, 'main 9': 60, 'marry2': 38, 'side r': 34, } + +subs['*2-02-1-works']={'upfill2':50,'upfill3':50,'cycright':50} + +subs['*2-03-00-open dance']={ 'b22': 11, 'blue1': 70, 'blue2': 70, 'blue3': 70, 'blue4': 92, 'cuba1': 20, 'gree1': 75, 'gree2': 75, 'gree3': 75, 'gree4': 75, 'hotback': 40, 'main 10': 40, 'main 11': 28, 'main 2': 60, 'main 4': 45, 'main 5': 20, 'main 8': 26, 'main 9': 42, 'red1': 75, 'red2': 75, 'red3': 75, 'red4': 97, 'side l': 31, 'side r': 31, 'upfill1': 27, 'upfill2': 31, 'upfill3': 26, 'upfill4': 17, } + +subs['*2-03-10-dialogue']={ 'b13': 60, 'b22': 62, 'b23': 64, 'b24': 19, 'b25': 16, 'blue1': 70, 'blue2': 70, 'blue3': 70, 'blue4': 92, 'cuba1': 59, 'gree1': 75, 'gree2': 75, 'gree3': 75, 'gree4': 75, 'hotback': 40, 'main 10': 48, 'main 11': 40, 'main 2': 54, 'main 4': 45, 'main 5': 20, 'main 8': 22, 'main 9': 73, 'red1': 75, 'red2': 75, 'red3': 75, 'red4': 97, 'side l': 31, 'side r': 31, 'sidefill1': 20, 'sidefill2': 20, 'upfill1': 27, 'upfill2': 31, 'upfill3': 26, 'upfill4': 17, } + +subs['*2-03-20-luckcover']={ 'b22': 20, 'b23': 20, 'b24': 20, 'b25': 20, 'blue1': 70, 'blue2': 70, 'blue3': 70, 'blue4': 92, 'cuba1': 5, 'gree1': 75, 'gree2': 75, 'gree3': 75, 'gree4': 75, 'hotback': 40, 'main 7': 100, 'main 8': 57, 'red1': 75, 'red2': 75, 'red3': 75, 'red4': 97, 'side l': 31, 'side r': 31, 'upfill1': 27, 'upfill2': 31, 'upfill3': 26, 'upfill4': 17, } + +subs['*2-03-20-luck-l']={ 'b22': 100, } + +subs['*2-03-20-luck-c']={ 'b23': 100, 'b24': 100, } + +subs['*2-03-20-luck-r']={ 'b25': 100, } + +subs['*2-04-0']={ 'b13': 39, 'b22': 50, 'b23': 67, 'b24': 67, 'b25': 71, 'b32': 57, 'b34': 34, 'blue1': 63, 'blue2': 63, 'blue3': 63, 'blue4': 63, 'cycright': 18, 'desk1': 24, 'desk2': 26, 'hotbox2': 59, 'main 10': 5, 'main 11': 5, 'main 2': 5, 'main 3': 45, 'main 5': 56, 'main 7': 5, 'main 8': 5, 'main 9': 5, 'marry2': 50, 'rock': 20, 'side r': 34, 'upfill1': 70, 'upfill4': 70, } + +subs['*2-05-0']={ 'b22': 100, 'b23': 100, 'b24': 100, 'b32': 14, 'cuba2': 9, 'desk1': 53, 'desk2': 65, 'hotbox1': 25, 'hotbox2': 100, 'main 10': 100, 'main 11': 100, 'main 4': 100, 'main 5': 70, 'main 7': 100, 'main 8': 100, 'main 9': 100, 'marry1': 61, 'marry2': 47, 'rock': 23, 'sidefill2': 25, 'upfill2': 6, 'upfill3': 34, } + +subs['*2-05-1-dream']={ 'desk2': 42, 'dream': 100, 'main 11': 7, 'upfill2': 16, } + +subs['*2-05-2-boat']={ 'b22': 100, 'b23': 100, 'b24': 100, 'b32': 52, 'cuba2': 65, 'cycright': 55, 'desk1': 44, 'desk2': 84, 'hotbox1': 21, 'hotbox2': 95, 'main 10': 84, 'main 11': 84, 'main 3': 72, 'main 4': 100, 'main 5': 83, 'main 7': 100, 'main 8': 100, 'main 9': 100, 'marry1': 75, 'marry2': 100, 'rock': 43, 'sidefill2': 43, 'upfill2': 55, 'upfill3': 31, } + +subs['*2-06-0']={ 'b22': 14, 'b23': 100, 'b24': 100, 'b32': 23, 'b34': 30, 'cycright': 100, 'desk2': 23, 'hotbox1': 49, 'hotbox2': 43, 'main 10': 55, 'main 11': 55, 'main 2': 30, 'main 7': 30, 'main 9': 30, 'marry1': 69, 'marry2': 34, 'rock': 17, 'side r': 30, 'upfill1': 48, 'upfill4': 48, } + +subs['*2-06-1-patio right']={ 'patio2': 100, } + +subs['*2-06-2 patio left']={ 'patio1': 100, } + +subs['*2-07-0']={ 'b22': 100, 'b23': 100, 'b24': 100, 'b25': 100, 'b34': 100, 'cycleft': 41, 'cycright': 41, 'desk2': 78, 'edge': 63, 'hotbox1': 14, 'hotbox2': 5, 'main 10': 100, 'main 11': 100, 'main 2': 100, 'main 3': 83, 'main 4': 100, 'main 5': 100, 'main 7': 100, 'main 8': 100, 'main 9': 100, 'marry1': 100, 'marry2': 100, 'phone': 62, 'side l': 100, 'side r': 100, 'sidefill1': 83, 'sidefill2': 100, 'upfill1': 56, 'upfill2': 100, 'upfill3': 69, 'upfill4': 56, } + +subs['*curtain']={ 'b22': 73, 'b24': 73, 'b25': 73, 'b34': 73, 'desk2': 57, 'edge': 58, 'hotbox2': 73, 'main 10': 73, 'main 11': 73, 'main 2': 73, 'main 3': 73, 'main 4': 73, 'main 5': 73, 'main 7': 73, 'main 8': 73, 'main 9': 73, 'marry1': 73, 'marry2': 73, 'phone': 58, 'side l': 73, 'side r': 73, 'sidefill1': 23, 'sidefill2': 23, 'upfill1': 9, 'upfill2': 68, 'upfill3': 18, 'upfill4': 9, } + +subs['*phone booth']={ 'phone': 100, } + +subs['*spare']={ } + +subs['bank1ctr']={ 'b22': 100, 'b23': 100, 'b24': 100, 'b25': 100, } + +subs['cyc']={ 'cycleft': 100, 'cycright': 100, } + +subs['god']={ 'god': 100, } + +subs['patio left']={ 'patio1': 100, } + +subs['patio right']={ 'patio2': 100, } + +subs['sidefill']={ 'sidefill1': 100, 'sidefill2': 100, } + +subs['sidepost']={ 'side l': 100, 'side r': 100, } + +subs['upfill sides']={ 'upfill1': 100, 'upfill4': 100, } -# instead of import, we exec to maintain a single namespace -the_dir_of_this_module=os.path.dirname(__file__) -execfile(os.path.join(the_dir_of_this_module,"Configsubs.py")) - +subs["*interscene"] = {} +subs["*interscene"] = { "blue1" : 49, "blue3" : 49, "blue2" : 49, + "blue4" : 49,} +subs["*1-08-30-full"] = { "cycright" : 15, "main 11" : 38, "main 10" : 38, + "upfill1" : 0, "sidefill2" : 38, "b25" : 100, "side l" : 38, + "b23" : 100, "b22" : 100, "desk2" : 30, "oran3" : 82, "upfill4" : 0, + "side r" : 38, "upfill3" : 0, "blue3" : 15, "upfill2" : 0, "gree2" : 15, + "gree3" : 15, "cafe2" : 100, "gree1" : 15, "gree4" : 15, "marry2" : 38, + "marry1" : 38, "cuba1" : 100, "cuba2" : 100, "red3" : 77, "red2" : 77, + "sidefill1" : 38, "b24" : 100, "red4" : 95, "b34" : 54, "cycleft" : 15, + "b32" : 43, "hotbox2" : 38, "hotbox1" : 38, "blue1" : 15, "oran2" : 82, + "oran1" : 82, "blue2" : 15, "blue4" : 15, "oran4" : 82, "main 3" : 38, + "main 2" : 38, "main 5" : 38, "main 4" : 38, "main 7" : 38, "phone" : 31, + "main 9" : 38, "main 8" : 38, "edge" : 31, "cafe1" : 100, "red1" : 77,} +subs["*2-03-20-luck-c"] = { "hotbox2" : 0, "b23" : 100, "b24" : 100, + "main 5" : 52, "marry2" : 37,} +subs["*2-07-0"] = { "sidefill2" : 100, "sidefill1" : 83, "cycright" : 41, + "main 11" : 100, "main 10" : 100, "upfill1" : 56, "b34" : 100, + "b25" : 100, "cycleft" : 41, "b23" : 100, "b22" : 100, "side l" : 100, + "hotbox2" : 5, "hotbox1" : 14, "upfill4" : 56, "b24" : 100, "desk2" : 78, + "upfill3" : 69, "upfill2" : 100, "main 3" : 83, "main 2" : 100, + "main 5" : 100, "main 4" : 100, "main 7" : 100, "phone" : 62, + "main 9" : 100, "main 8" : 100, "edge" : 63, "marry2" : 100, + "marry1" : 100, "xmas" : 80, "side r" : 100,} +subs["*1-01-0-sarah"] = { "sidefill2" : 100, "sidefill1" : 100, + "cycright" : 41, "upfill3" : 60, "upfill2" : 91, "upfill1" : 56, + "side l" : 100, "b25" : 100, "cycleft" : 41, "b22" : 100, + "desk2" : 78, "phone" : 80, "hotbox1" : 43, "upfill4" : 68, "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" : 91, "main 9" : 100, "main 8" : 100, "b34" : 100, + "edge" : 80, "marry2" : 100, "marry1" : 100,} +subs["*1-01-0-sarah"] = { "sidefill2" : 37, "sidefill1" : 39, + "cycright" : 24, "upfill3" : 31, "upfill2" : 62, "upfill1" : 27, + "b34" : 34, "b25" : 100, "side l" : 50, "b22" : 89, + "desk2" : 30, "phone" : 80, "hotbox1" : 43, "upfill4" : 39, "b24" : 100, + "side r" : 46, "main 11" : 100, "main 10" : 100, "main 3" : 5, + "main 2" : 92, "main 5" : 100, "main 4" : 100, "main 7" : 100, + "hotbox2" : 52, "main 9" : 58, "main 8" : 0, "cycleft" : 24, + "edge" : 24, "marry2" : 71, "marry1" : 62,} +subs["*1-05-0-down"] = { "sidefill2" : 100, "sidefill1" : 100, + "cycright" : 36, "upfill3" : 37, "upfill2" : 37, "upfill1" : 2, + "side l" : 100, "b25" : 100, "cycleft" : 18, "b23" : 100, + "desk1" : 19, "desk2" : 31, "b22" : 100, "hotbox2" : 17, "upfill4" : 2, + "b24" : 100, "side r" : 82, "main 11" : 89, "main 10" : 100, + "main 3" : 85, "main 2" : 100, "main 5" : 100, "main 4" : 100, + "main 7" : 100, "main 9" : 100, "main 8" : 100, "b34" : 13, "edge" : 37, + "b13" : 100,} +subs["*1-05-0"] = { "sidefill2" : 68, "sidefill1" : 65, "cycright" : 42, + "main 11" : 11, "main 10" : 22, "b34" : 0, "b25" : 67, "side l" : 100, + "b23" : 67, "b22" : 67, "desk2" : 31, "desk1" : 19, "hotbox2" : 0, + "b24" : 67, "side r" : 82, "upfill3" : 37, "upfill2" : 37, "main 3" : 53, + "main 2" : 68, "main 5" : 68, "main 4" : 68, "main 7" : 22, "main 9" : 22, + "main 8" : 22, "cycleft" : 24, "edge" : 0, "b13" : 100,} +subs["*1-05-0"] = { "sidefill2" : 68, "sidefill1" : 65, "cycright" : 42, + "main 11" : 11, "main 10" : 22, "b34" : 0, "b25" : 67, "side l" : 100, + "b23" : 67, "b22" : 67, "desk2" : 31, "desk1" : 19, "hotbox2" : 91, + "hotbox1" : 100, "b24" : 67, "side r" : 82, "upfill3" : 61, "upfill2" : 61, + "main 3" : 53, "main 2" : 68, "main 5" : 68, "main 4" : 68, "main 7" : 22, + "main 9" : 22, "main 8" : 20, "cycleft" : 24, "edge" : 0, "b13" : 100, + "marry2" : 19,} +subs["*1-05-0-down"] = { "sidefill2" : 70, "sidefill1" : 70, "cycright" : 0, + "upfill3" : 25, "upfill2" : 25, "upfill1" : 15, "b34" : 13, + "b25" : 100, "side l" : 100, "b23" : 100, "desk1" : 19, "desk2" : 31, + "b22" : 100, "hotbox2" : 17, "upfill4" : 15, "b24" : 100, "side r" : 82, + "main 11" : 89, "main 10" : 100, "main 3" : 85, "main 2" : 100, + "main 5" : 100, "main 4" : 100, "main 7" : 100, "main 9" : 100, + "main 8" : 100, "cycleft" : 0, "edge" : 37, "b13" : 100,} +subs["*1-08-30-full"] = { "cycright" : 10, "main 11" : 38, "main 10" : 36, + "upfill1" : 0, "sidefill2" : 0, "b25" : 100, "side l" : 38, "b23" : 100, + "b22" : 100, "desk2" : 0, "oran3" : 64, "upfill4" : 0, "side r" : 38, + "upfill3" : 0, "blue3" : 100, "upfill2" : 0, "gree2" : 15, "gree3" : 15, + "cafe2" : 100, "gree1" : 15, "gree4" : 15, "marry2" : 38, "marry1" : 38, + "cuba1" : 23, "cuba2" : 0, "red3" : 27, "red2" : 27, "sidefill1" : 0, + "b24" : 100, "red4" : 45, "b34" : 28, "cycleft" : 10, "b32" : 43, + "hotbox2" : 38, "hotbox1" : 38, "blue1" : 100, "oran2" : 64, + "oran1" : 64, "blue2" : 100, "blue4" : 100, "oran4" : 64, "main 3" : 38, + "main 2" : 38, "main 5" : 0, "main 4" : 38, "main 7" : 0, "phone" : 31, + "main 9" : 38, "main 8" : 38, "edge" : 0, "cafe1" : 100, "red1" : 27,} +subs["*2-02-0"] = { "main 2" : 53, "main 5" : 18, "main 10" : 53, + "main 7" : 42, "main 9" : 60, "main 8" : 36, "b24" : 52, "b23" : 76, + "side r" : 34, "blue1" : 63, "marry2" : 38, "blue3" : 63, "blue2" : 63, + "blue4" : 63, "main 4" : 24,} +subs["*2-03-20-luck-c"] = { "main 5" : 0, "main 10" : 0, "main 7" : 0, + "b24" : 100, "b23" : 100, "b32" : 0, "hotbox2" : 0, "hotback" : 0, + "b13" : 31, "rock" : 0, "marry2" : 0, "main 4" : 78,} +subs["*2-05-2-boat"] = { "sidefill2" : 43, "cycright" : 0, "main 11" : 84, + "main 10" : 84, "upfill1" : 0, "b24" : 100, "b23" : 100, "b22" : 100, + "desk2" : 84, "desk1" : 44, "hotbox2" : 95, "hotbox1" : 21, "upfill4" : 0, + "b32" : 52, "upfill3" : 34, "upfill2" : 0, "main 3" : 72, "main 5" : 83, + "main 4" : 100, "main 7" : 100, "main 9" : 100, "main 8" : 100, + "rock" : 43, "marry2" : 100, "marry1" : 75, "cuba2" : 65,} +subs["*2-06-0"] = { "cycright" : 100, "main 11" : 55, "main 10" : 55, + "upfill1" : 48, "hotbox2" : 43, "b34" : 30, "b24" : 100, "b23" : 100, + "main 7" : 30, "desk2" : 23, "b22" : 14, "main 9" : 30, "hotbox1" : 71, + "main 2" : 30, "b32" : 23, "rock" : 17, "marry2" : 34, "marry1" : 69, + "upfill4" : 48, "side r" : 30,} +subs["*1-01-0-justback"] = { "sidefill2" : 100, "sidefill1" : 100, + "cycright" : 41, "upfill3" : 60, "upfill2" : 91, "upfill1" : 56, + "side l" : 100, "b25" : 100, "cycleft" : 41, "b22" : 100, + "desk2" : 78, "hotbox2" : 91, "hotbox1" : 43, "upfill4" : 68, + "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, "main 9" : 100, "main 8" : 100, "b34" : 100, + "edge" : 80, "marry2" : 100, "marry1" : 100,} +subs["*1-01-0-justleft"] = { "sidefill2" : 100, "sidefill1" : 100, + "cycright" : 41, "upfill3" : 60, "upfill2" : 91, "upfill1" : 56, + "side l" : 100, "b25" : 100, "cycleft" : 41, "b22" : 100, + "desk2" : 78, "hotbox2" : 91, "hotbox1" : 43, "upfill4" : 68, + "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, "main 9" : 100, "main 8" : 100, "b34" : 100, + "edge" : 80, "marry2" : 100, "marry1" : 100,} +subs["*1-01-0-justleft"] = { "sidefill2" : 100, "sidefill1" : 100, + "cycright" : 0, "upfill3" : 0, "upfill2" : 0, "upfill1" : 0, + "b34" : 7, "b25" : 0, "side l" : 100, "b22" : 100, + "desk2" : 78, "hotbox2" : 10, "hotbox1" : 43, "upfill4" : 0, + "b24" : 0, "side r" : 100, "main 11" : 0, "main 10" : 100, "main 3" : 100, + "main 2" : 100, "main 5" : 100, "main 4" : 100, "main 7" : 0, + "main 9" : 0, "main 8" : 0, "cycleft" : 0, "edge" : 80, "marry2" : 100, + "marry1" : 100,} +subs["*1-01-0-justback"] = { "sidefill2" : 100, "sidefill1" : 100, + "cycright" : 41, "upfill3" : 60, "upfill2" : 91, "upfill1" : 56, + "b34" : 100, "b25" : 100, "side l" : 100, "b22" : 100, + "desk2" : 78, "hotbox2" : 91, "hotbox1" : 43, "upfill4" : 68, + "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, "main 9" : 100, "main 8" : 100, "cycleft" : 41, + "edge" : 80, "marry2" : 100, "marry1" : 100,} +subs["*1-01-0-justright"] = { "sidefill2" : 100, "sidefill1" : 100, + "cycright" : 41, "upfill3" : 60, "upfill2" : 91, "upfill1" : 56, + "side l" : 100, "b25" : 100, "cycleft" : 41, "b22" : 100, + "desk2" : 78, "hotbox2" : 91, "hotbox1" : 43, "upfill4" : 68, + "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, "main 9" : 100, "main 8" : 100, "b34" : 100, + "edge" : 80, "marry2" : 100, "marry1" : 100,} +subs["*1-01-0-justright"] = { "sidefill2" : 100, "sidefill1" : 0, + "cycright" : 0, "upfill3" : 0, "upfill2" : 0, "upfill1" : 0, + "b34" : 100, "b25" : 100, "side l" : 0, "b22" : 0, + "desk2" : 0, "hotbox2" : 0, "hotbox1" : 0, "upfill4" : 0, "b24" : 100, + "side r" : 100, "main 11" : 0, "main 10" : 0, "main 3" : 0, "main 2" : 100, + "main 5" : 100, "main 4" : 0, "main 7" : 0, "main 9" : 100, "main 8" : 100, + "cycleft" : 0, "edge" : 0, "marry2" : 7, "marry1" : 100,} +subs["*1-01-0-justleft"] = { "sidefill2" : 0, "sidefill1" : 100, + "cycright" : 0, "upfill3" : 0, "upfill2" : 0, "upfill1" : 0, + "b34" : 7, "b25" : 0, "side l" : 100, "b22" : 100, + "desk2" : 78, "hotbox2" : 10, "hotbox1" : 0, "upfill4" : 0, "b24" : 0, + "side r" : 0, "main 11" : 0, "main 10" : 100, "main 3" : 100, + "main 2" : 100, "main 5" : 100, "main 4" : 100, "main 7" : 0, + "main 9" : 0, "main 8" : 0, "cycleft" : 0, "edge" : 80, "marry2" : 100, + "marry1" : 0,} +subs["*1-01-0-justback"] = { "b32" : 7, "sidefill2" : 47, "sidefill1" : 47, + "cycright" : 41, "upfill3" : 60, "upfill2" : 91, "upfill1" : 56, + "b34" : 16, "b25" : 16, "side l" : 0, "b23" : 16, + "b22" : 16, "desk2" : 0, "desk1" : 0, "hotbox2" : 7, "hotbox1" : 0, + "upfill4" : 68, "b24" : 16, "side r" : 0, "main 11" : 100, "main 10" : 100, + "main 3" : 13, "main 2" : 13, "main 5" : 13, "main 4" : 100, + "main 7" : 100, "phone" : 0, "main 9" : 14, "main 8" : 13, "cycleft" : 41, + "edge" : 0, "b13" : 16, "rock" : 0, "marry2" : 16, "marry1" : 16, + "cuba1" : 16, "cuba2" : 0,} +subs["*1-01-0-justright"] = { "sidefill2" : 100, "sidefill1" : 0, + "cycright" : 0, "upfill3" : 0, "upfill2" : 0, "upfill1" : 0, + "b34" : 100, "b25" : 100, "side l" : 0, "b22" : 0, + "desk2" : 0, "hotbox2" : 0, "hotbox1" : 0, "upfill4" : 0, "b24" : 100, + "side r" : 100, "main 11" : 0, "main 10" : 0, "main 3" : 0, "main 2" : 100, + "main 5" : 100, "main 4" : 0, "main 7" : 0, "phone" : 100, "main 9" : 100, + "main 8" : 100, "cycleft" : 0, "edge" : 0, "marry2" : 7, "marry1" : 100,} diff --git a/light8/ConfigDummy.py b/light8/ConfigDummy.py --- a/light8/ConfigDummy.py +++ b/light8/ConfigDummy.py @@ -1013,3 +1013,5 @@ subs["*2-07-0"] = { "sidefill2" : 100, " "main 5" : 100, "main 4" : 100, "main 7" : 100, "hotbox2" : 5, "main 9" : 100, "main 8" : 100, "rock" : 0, "cycleft" : 41, "edge" : 63, "god" : 100, "marry2" : 100, "marry1" : 100, "xmas" : 100,} +subs["*interscene"] = { "blue1" : 38, "blue3" : 38, "blue2" : 38, + "blue4" : 38,} diff --git a/light8/ExtSliderMapper.py b/light8/ExtSliderMapper.py --- a/light8/ExtSliderMapper.py +++ b/light8/ExtSliderMapper.py @@ -2,7 +2,7 @@ submasters. It tells you the status of each mapping and saves and loads presets. The show is relying on this module! Do not lose it! -FUQ (frequently unasked question) +FUQ (frequently unasked question(s)) 1. What's with all the *args? @@ -10,6 +10,9 @@ It lets functions take any number of arg Callbacks do this, and we typically don't care about what they have to say. """ from Tix import * +from uihelpers import FancyDoubleVar + +stdfont = ('Arial', 8) class SliderMapping: def __init__(self, default='disconnected', synced=0, extinputlevel=0, @@ -17,6 +20,7 @@ class SliderMapping: self.subname = StringVar() # name of submaster we're connected to self.subname.set(default) self.sublevel = DoubleVar() # scalelevel variable of that submaster + # self.sublevel = FancyDoubleVar() # scalelevel variable of that submaster self.sublevel.set(sublevel) self.synced = BooleanVar() # currently synced self.synced.set(synced) @@ -39,6 +43,19 @@ class SliderMapping: return self.synced.get() def disconnect(self, *args): self.set_subname('disconnected') # a bit hack-like + # self.sublevel.delete_named('sync') + ''' + try: + if self.sublevel.unsync_trace_cbname is not None: + # self.sublevel.trace_vdelete('w', + # self.sublevel.unsync_trace_cbname) + self.sublevel._tk.call('trace', 'vdelete', self.sublevel._name, + 'w', self.sublevel.unsync_trace_cbname) + self.sublevel.unsync_trace_cbname = None + except AttributeError: + pass + ''' + self.sublabel.configure(text="N/A") self.color_bg() def isdisconnected(self): @@ -88,19 +105,26 @@ class SliderMapping: 'newvar is one of the variables in scalelevels' if newvar is not self.sublevel: + # self.sublevel.delete_named('sync') + self.sublevel = newvar + self.sublabel.configure(textvariable=newvar) + # self.sublevel.trace_named('sync', lambda *args: self.unsync(*args)) + ''' try: - # remove an old trace - self.sublevel.trace_vdelete('w', - self.sublevel.unsync_trace_cbname) + if self.sublevel.unsync_trace_cbname is not None: + # remove an old trace + self.sublevel.trace_vdelete('w', + self.sublevel.unsync_trace_cbname) except AttributeError: pass # it didn't have one self.sublevel = newvar self.sublevel.unsync_trace_cbname = self.sublevel.trace('w', self.unsync) + ''' - if self.sublabel: - self.sublabel.configure(textvariable=newvar) + # if self.sublabel: + # self.sublabel.configure(textvariable=newvar) self.check_synced() def get_mapping(self): 'Get name of submaster currently mapped' @@ -111,29 +135,35 @@ class SliderMapping: def draw_interface(self, master, subnames): 'Draw interface into master, given a list of submaster names' frame = Frame(master) - c = ComboBox(frame, variable=self.subname) + c = ComboBox(frame, variable=self.subname, dropdown=0) c.slistbox.listbox.insert(END, "disconnected") + # c.listbox.insert(END, "disconnected") for s in subnames: c.slistbox.listbox.insert(END, s) - c.entry.configure(width=12) + # c.listbox.insert(END, s) + c.entry.configure(width=12, font=stdfont) + c.slistbox.listbox.configure(font=stdfont, exportselection=0) statframe = Frame(frame) - self.statuslabel = Label(statframe, text="No sync") + self.statuslabel = Label(statframe, text="No sync", width=15, font=stdfont) self.statuslabel.grid(columnspan=2, sticky=W) - ilabel = Label(statframe, text="Input", fg='blue') + ilabel = Label(statframe, text="Input", fg='blue', font=stdfont) ilabel.grid(row=1, sticky=W) - extlabel = Label(statframe, textvariable=self.extlevel, width=5) + extlabel = Label(statframe, textvariable=self.extlevel, width=5, font=stdfont) extlabel.grid(row=1, column=1) - rlabel = Label(statframe, text="Real") + rlabel = Label(statframe, text="Real", font=stdfont) rlabel.grid(row=2, sticky=W) - self.sublabel = Label(statframe, text="N/A", width=5) + self.sublabel = Label(statframe, text="N/A", width=5, font=stdfont) self.sublabel.grid(row=2, column=1) - statframe.pack(side=BOTTOM, expand=1, fill=X) - c.pack() + disc_button = Button(statframe, text="Disconnect", + command=self.disconnect, padx=0, pady=0, font=stdfont) + disc_button.grid(row=3, columnspan=2) + statframe.pack(side=BOTTOM, expand=1, fill=BOTH) + c.pack(expand=1, fill=BOTH) frame.pack(side=LEFT, expand=1, fill=BOTH) self.widgets = [frame, c, statframe, self.statuslabel, ilabel, extlabel, - rlabel, self.sublabel] + rlabel, self.sublabel, disc_button] class ExtSliderMapper(Frame): def __init__(self, parent, sliderlevels, sliderinput, filename='slidermapping', @@ -161,6 +191,7 @@ class ExtSliderMapper(Frame): self.draw_interface() def load_presets(self): + self.presets = {} self.file = open(self.filename, 'r') lines = self.file.readlines() for l in lines: @@ -183,13 +214,15 @@ class ExtSliderMapper(Frame): v = self.sliderlevels[slidermap.get_mapping()] slidermap.set_sublevel_var(v) except KeyError: - pass + name = slidermap.get_mapping() + if name != 'disconnected': + print "ESM: No submaster named", name def get_levels(self): 'Called by changelevels, returns a dict of new values for submasters' if not self.sliderinput: return {} - self.load_scalelevels() # freshen our input from the physical sliders + self.load_scalelevels() # freshen our input from the submasters rawlevels = self.sliderinput.get_levels() for rawlev, slidermap in zip(rawlevels, self.current_mappings): @@ -217,11 +250,14 @@ class ExtSliderMapper(Frame): command=self.delete_preset).pack(side=LEFT) Button(presetframe, text="Disconnect", padx=0, pady=0, command=self.disconnect_all).pack(side=LEFT) + Button(presetframe, text="Reload", padx=0, pady=0, + command=self.load_presets).pack(side=LEFT) presetframe.pack(side=BOTTOM) def apply_preset(self, preset): if not preset: return preset_mapping = self.presets.get(preset) if not preset_mapping: return + self.disconnect_all() for subname, slidermap in zip(preset_mapping, self.current_mappings): slidermap.set_subname(subname) def delete_preset(self, *args): diff --git a/light8/Lightboard.py b/light8/Lightboard.py --- a/light8/Lightboard.py +++ b/light8/Lightboard.py @@ -107,7 +107,8 @@ class Lightboard: self.subediting.refresh() self.buildinterface() bindkeys(self.master,'', self.quit) - self.master.tk_setPalette('gray40') + self.slidermapper.setup() + # self.master.tk_setPalette('gray40') def stageassub(self): """returns the current onstage lighting as a levels @@ -160,9 +161,9 @@ class Lightboard: for name, val in extlevels.items(): if name in self.scalelevels: sl = self.scalelevels[name] - sl.disable_traces() + # sl.disable_traces() sl.set(val) - sl.recreate_traces() + # sl.recreate_traces() for lev,lab,oldlev,numlab in zip(levels, self.channel_levels, self.oldlevels, diff --git a/light8/configconvert.py b/light8/configconvert.py --- a/light8/configconvert.py +++ b/light8/configconvert.py @@ -36,7 +36,7 @@ def read_tsv(filename,outname): print >>out,"}\n" -print_tsv(filename="sublevs.txt",allchans=Patch.get_all_channels(),subs=subs) -read_tsv(filename="sublevs.txt",outname="Configsubs2.py") +#print_tsv(filename="sublevs.txt",allchans=Patch.get_all_channels(),subs=subs) +read_tsv(filename="sublevs-fixed",outname="Configsubs-fixed.py") diff --git a/light8/panels.py b/light8/panels.py --- a/light8/panels.py +++ b/light8/panels.py @@ -135,7 +135,8 @@ class Subpanels: # make DoubleVar (there might be one left around from # before a refresh) if name not in scalelevels: - scalelevels[name]=FancyDoubleVar() + # scalelevels[name]=FancyDoubleVar() + scalelevels[name]=DoubleVar() sub.set_slider_var(scalelevels[name]) diff --git a/light8/rsn.py b/light8/rsn.py --- a/light8/rsn.py +++ b/light8/rsn.py @@ -29,7 +29,7 @@ if not DUMMY: parportdmx.golive() mr_lightboard = Lightboard(root,parportdmx,DUMMY) -root.tk_setPalette('gray40') +# root.tk_setPalette('gray40') signal(SIGINT, mr_lightboard.quit) diff --git a/light8/slidermapping b/light8/slidermapping --- a/light8/slidermapping +++ b/light8/slidermapping @@ -1,5 +1,19 @@ -Disconnect all disconnected disconnected disconnected disconnected +1-00 opening *curtain house god *1-01-0 +1-01 *1-01-0 *1-01-9 end conversations *1-02-0 *interscene +1-02 *1-02-0 *1-02-1 desk solo *1-03-0 *interscene +1-03 *1-03-0 *1-04-00-dance *1-04-01 dark tables *interscene +1-04 *1-04-00-dance *1-04-01 dark tables *1-04-02 solo ada *1-04-10-after dance +1-04 - 2 *1-04-02 solo ada *1-04-10-after dance *1-04-20-table *1-04-30-small table +1-04 -3, I.5, I.6 *1-04-30-small table *1-05-0 *1-06-0 *interscene +1-06, I.7 *1-06-0 *1-07-0 *1-08-00-left cafe *interscene +1-08 cuba intro *1-08-00-left cafe *1-08-10-right cafe *1-08-10-centerwalk *1-08-10-rightwalk +1-08 cuba travopen *1-08-30-full *1-08-10-right cafe *1-08-20-backdrop *1-08-10-rightwalk +1-10 - intermission *1-10-0 *curtain house *2-01-0-dance +2-00 intermission *curtain house god *2-01-0-dance +2-01 *2-01-0-dance *2-01-01-solo *2-01-1-after dance *2-01-1-darker dance +2-03 start *2-03-00-open dance *2-03-10-dialogue god *2-03-20-luckcover +2-03 luck *2-03-20-luck-l *2-03-20-luck-c *2-03-20-luck-r *2-03-20-luckcover +2-05 *2-05-0 *2-05-1-dream *2-05-2-boat *interscene +2-06 *2-06-0 *2-06-1-patio right *2-06-2 patio left *interscene colors col blue col gree col oran col red -first four *1-01-0 *1-02-0 *1-03-0 *1-04-00-dance -random *1-03-0 *1-04-10-after dance *1-06-0 *1-01-0 vitals house god *curtain phone booth diff --git a/light8/stage.py b/light8/stage.py --- a/light8/stage.py +++ b/light8/stage.py @@ -77,7 +77,7 @@ class Stage(Canvas): # we had the picture removed for good luck, but we remember # what the dimensions formerly was - self.config(width=821,height=681) + self.config(width=821,height=681, bg="grey40") def setsubediting(self,subeditor): diff --git a/light8/sub_analyzer.py b/light8/sub_analyzer.py --- a/light8/sub_analyzer.py +++ b/light8/sub_analyzer.py @@ -1,3 +1,4 @@ +#!/usr/bin/python from Subs import * from Patch import * from types import TupleType diff --git a/light8/uihelpers.py b/light8/uihelpers.py --- a/light8/uihelpers.py +++ b/light8/uihelpers.py @@ -13,7 +13,6 @@ windowlocations = { 'effect' : '24x24+0963+338', 'stage' : '823x683+37+030', 'scenes' : '504x198+462+12', - } def make_frame(parent): @@ -157,7 +156,8 @@ class Togglebutton(Button): class FancyDoubleVar(DoubleVar): def __init__(self,master=None): DoubleVar.__init__(self,master) - self.callbacklist = {} + self.callbacklist = {} # cbname : mode + self.namedtraces = {} # name : cbname def trace_variable(self,mode,callback): """Define a trace callback for the variable. @@ -171,7 +171,7 @@ class FancyDoubleVar(DoubleVar): self._tk.call("trace", "variable", self._name, mode, cbname) # we build a list of the trace callbacks (the py functrions and the tcl functionnames) - self.callbacklist[cbname]= mode + self.callbacklist[cbname] = mode # print "added trace:",callback,cbname return cbname @@ -187,6 +187,29 @@ class FancyDoubleVar(DoubleVar): # self.trace_variable(v[0],v[1]) self._tk.call("trace", "variable", self._name, mode,cb) + def trace_named(self, name, callback): + if name in self.namedtraces: + print "FancyDoubleVar: already had a trace named %s - replacing it" % name + self.delete_named(name) + + cbname = self.trace_variable('w',callback) # this will register in self.callbacklist too + + self.namedtraces[name] = cbname + return cbname + + def delete_named(self, name): + if name in self.namedtraces: + + cbname = self.namedtraces[name] + + self.trace_vdelete('w',cbname) + #self._tk.call("trace","vdelete",self._name,'w',cbname) + print "FancyDoubleVar: successfully deleted trace named %s" % name + else: + print "FancyDoubleVar: attempted to delete named %s which wasn't set to any function" % name + + + if __name__=='__main__': root=Tk() @@ -198,3 +221,12 @@ if __name__=='__main__': t.pack() Entry(root,textvariable=iv).pack() root.mainloop() + + + + + + + + +