diff --git a/light8/Config.py b/light8/Config.py --- a/light8/Config.py +++ b/light8/Config.py @@ -89,17 +89,17 @@ subs[('col red', 'red')]={ 'red1': 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-0', 'white')]={ '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-0', 'white')]={ '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-03-0', 'white')]={ '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-00-dance', 'white')]={ '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, } @@ -111,13 +111,13 @@ subs['*1-04-20-table']={ 'b22': 100, 'cu 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-05-0', 'white')]={ '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-06-0', 'white')]={ '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-07-0', 'white')]={ '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-00-left cafe', 'white')]={ 'b22': 40, 'cafe1': 71, 'edge': 41, } subs['*1-08-10-right cafe']={ 'b32': 10, 'b34': 31, 'cafe2': 100, 'cuba1': 53, 'cuba2': 76, } @@ -129,11 +129,11 @@ subs['*1-08-20-backdrop']={ 'upfill1': 1 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-09-0', 'white')]={ '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[('*1-10-0', 'white')]={ '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-0-dance', 'white')]={ '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, } @@ -145,11 +145,11 @@ subs['*2-01-2-table']={ 'b22': 100, 'cub 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-0', 'white')]={ '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-00-open dance', 'white')]={ '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, } @@ -161,21 +161,21 @@ subs['*2-03-20-luck-c']={ 'b23': 100, 'b 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-04-0', 'white')]={ '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-0', 'white')]={ '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-0', 'white')]={ '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[('*2-07-0', 'white')]={ '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, } diff --git a/light8/ExtSliderMapper.py b/light8/ExtSliderMapper.py --- a/light8/ExtSliderMapper.py +++ b/light8/ExtSliderMapper.py @@ -10,7 +10,7 @@ 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 +from uihelpers import FancyDoubleVar, get_selection stdfont = ('Arial', 8) @@ -33,6 +33,7 @@ class SliderMapping: self.statuslabel = None # tells us sync status self.lastbgcolor = None # last background color drawn to avoid # unnecessary redraws + self.subnames = [] # we need to keep track of this for idiotic reasons def sync(self, *args): self.synced.set(1) self.color_bg() @@ -74,6 +75,17 @@ class SliderMapping: self.check_synced() self.color_bg() def set_subname(self, newname): + try: + self.listbox.listbox.select_clear(0, END) + except IndexError: + pass + try: + newindex = self.subnames.index(newname) + self.listbox.listbox.select_set(newindex) + self.listbox.listbox.see(newindex) + except ValueError: + pass + self.subname.set(newname) self.unsync() self.color_bg() @@ -132,24 +144,29 @@ class SliderMapping: def get_level_pair(self): 'Returns suitable output for ExtSliderMapper.get_levels()' return (self.subname.get(), self.extlevel.get()) + def listbox_cb(self, *args): + self.subname.set(self.subnames[get_selection(self.listbox.listbox)-0]) 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, dropdown=0) - c.slistbox.listbox.insert(END, "disconnected") - # c.listbox.insert(END, "disconnected") + self.subnames = subnames + frame = Frame(master, bg='black') + self.listbox = ScrolledListBox(frame, scrollbar='y', bg='black') + self.listbox.listbox.bind("<>", self.listbox_cb, add=1) + self.listbox.listbox.configure(font=stdfont, exportselection=0, + selectmode=BROWSE, bg='black', fg='white') + self.listbox.vsb.configure(troughcolor='black') + # self.listbox.listbox.insert(END, "disconnected") for s in subnames: - c.slistbox.listbox.insert(END, s) - # c.listbox.insert(END, s) - c.entry.configure(width=12, font=stdfont) - c.slistbox.listbox.configure(font=stdfont, exportselection=0) - statframe = Frame(frame) + self.listbox.listbox.insert(END, s) + statframe = Frame(frame, bg='black') - self.statuslabel = Label(statframe, text="No sync", width=15, font=stdfont) + 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', font=stdfont) ilabel.grid(row=1, sticky=W) - extlabel = Label(statframe, textvariable=self.extlevel, width=5, font=stdfont) + extlabel = Label(statframe, textvariable=self.extlevel, width=5, + font=stdfont) extlabel.grid(row=1, column=1) rlabel = Label(statframe, text="Real", font=stdfont) rlabel.grid(row=2, sticky=W) @@ -159,17 +176,17 @@ class SliderMapping: 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) + self.listbox.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, disc_button] + self.widgets = [frame, self.listbox, statframe, self.statuslabel, + ilabel, extlabel, rlabel, self.sublabel, disc_button] class ExtSliderMapper(Frame): def __init__(self, parent, sliderlevels, sliderinput, filename='slidermapping', numsliders=4): 'Slider levels is scalelevels, sliderinput is an ExternalInput object' - Frame.__init__(self, parent) + Frame.__init__(self, parent, bg='black') self.parent = parent self.sliderlevels = sliderlevels self.sliderinput = sliderinput @@ -213,6 +230,7 @@ class ExtSliderMapper(Frame): try: v = self.sliderlevels[slidermap.get_mapping()] slidermap.set_sublevel_var(v) + # print "ESM: Yes submaster named", slidermap.get_mapping() except KeyError: name = slidermap.get_mapping() if name != 'disconnected': @@ -233,24 +251,33 @@ class ExtSliderMapper(Frame): if m.issynced()]) def draw_interface(self): self.reallevellabels = [] - subchoiceframe = Frame(self) + subchoiceframe = Frame(self, bg='black') for m in self.current_mappings: m.draw_interface(subchoiceframe, self.subnames) subchoiceframe.pack() - presetframe = Frame(self) - Label(presetframe, text="Preset:").pack(side=LEFT) + presetframe = Frame(self, bg='black') + Label(presetframe, text="Preset:", font=('Arial', 10), bg='black', + fg='white').pack(side=LEFT) self.presetcombo = ComboBox(presetframe, variable=self.current_preset, - editable=1, command=self.apply_preset) + editable=1, command=self.apply_preset, + dropdown=1) + self.presetcombo.slistbox.configure(bg='black') + self.presetcombo.slistbox.listbox.configure(bg='black', fg='white') + self.presetcombo.entry.configure(bg='black', fg='white') self.draw_presets() self.presetcombo.pack(side=LEFT) - Button(presetframe, text="Add", padx=0, pady=0, + Button(presetframe, text="Add", padx=0, pady=0, bg='black', + fg='white', font=stdfont, command=self.add_preset).pack(side=LEFT) - Button(presetframe, text="Delete", padx=0, pady=0, + Button(presetframe, text="Delete", padx=0, pady=0, bg='black', + fg='white', font=stdfont, command=self.delete_preset).pack(side=LEFT) - Button(presetframe, text="Disconnect", padx=0, pady=0, + Button(presetframe, text="Disconnect", padx=0, pady=0, bg='black', + fg='white', font=stdfont, command=self.disconnect_all).pack(side=LEFT) - Button(presetframe, text="Reload", padx=0, pady=0, + Button(presetframe, text="Reload", padx=0, pady=0, bg='black', + fg='white', font=stdfont, command=self.load_presets).pack(side=LEFT) presetframe.pack(side=BOTTOM) def apply_preset(self, preset): diff --git a/light8/Fader.py b/light8/Fader.py --- a/light8/Fader.py +++ b/light8/Fader.py @@ -2,6 +2,7 @@ from Tix import * from time import time # time is on my side from util import subsetdict from FlyingFader import FlyingFader +from uihelpers import get_selection # statuses are: # stopped - no cue is loaded or cue is stopped @@ -10,11 +11,6 @@ from FlyingFader import FlyingFader stdfont = ('Arial', 10) -def get_selection(listbox): - 'Given a listbox, returns first selection as integer' - selection = int(listbox.curselection()[0]) # blech - return selection - class Fader(Frame): 'User interface for cue fader' def __init__(self, master, cues, scalelevels): diff --git a/light8/Lightboard.py b/light8/Lightboard.py --- a/light8/Lightboard.py +++ b/light8/Lightboard.py @@ -38,13 +38,16 @@ class Lightboard: self.get_data() self.buildinterface() self.load() + print "Light 8.8: Enterring backgroundloop" self.backgroundloop() self.updatestagelevels() def buildinterface(self): + print "Light 8.8: Constructing interface..." for w in self.master.winfo_children(): w.destroy() + print "\tstage" stage_tl = toplevelat('stage') s = stage.Stage(stage_tl) stage.createlights(s) @@ -56,16 +59,19 @@ class Lightboard: scene_tl = toplevelat('scenes') effect_tl = toplevelat('effect') + print "\tslider patching" mapping_tl = toplevelat('mapping') self.slidermapper = ExtSliderMapper.ExtSliderMapper(mapping_tl, self.scalelevels, ExternalSliders()) self.slidermapper.pack() + print "\tsubmaster control" self.subpanels = Subpanels(sub_tl, effect_tl, scene_tl, self, self.scalelevels, Subs, self.xfader, self.changelevel, self.subediting, Subs.longestsubname()) + print "\tlevel display" leveldisplay_tl = toplevelat('leveldisplay') leveldisplay_tl.bind('', sys.exit) @@ -74,12 +80,16 @@ class Lightboard: self.channel_levels[i].config(text=self.oldlevels[i]) colorlabel(self.channel_levels[i]) + print "\tconsole" Console(self) # root frame + print "\tcontrol panel" + self.master.configure(bg='black') controlpanel = Controlpanel(self.master, self.xfader, self.refresh, self.quit, self.toggle_jostle) + print "\tcrossfader" xf=Frame(self.master) xf.pack(side='right') @@ -91,15 +101,18 @@ class Lightboard: self.xfader.setupwidget(xf) controlpanel.pack() - cuefader_tl = toplevelat('cuefader') - cuefader = Fader(cuefader_tl, Subs.cues, self.scalelevels) - cuefader.pack() + print "\tcue fader (skipped)" + # cuefader_tl = toplevelat('cuefader') + # cuefader = Fader(cuefader_tl, Subs.cues, self.scalelevels) + # cuefader.pack() + print "Light 8.8: Everything's under control" + def get_data(self,*args): Subs.reload_data(self.DUMMY) Patch.reload_data(self.DUMMY) - print "Patch:", Patch.patch - print "Subs:", ', '.join(Subs.subs.keys()) + print "Light 8.8:", len(Patch.patch), "dimmers patched" + print "Light 8.8:", len(Subs.subs), "submasters loaded" def refresh(self, *args): 'rebuild interface, reload data' @@ -176,7 +189,7 @@ class Lightboard: else: numlab['bg'] = 'red' else: - numlab['bg'] = 'lightPink' + numlab['bg'] = 'grey40' self.oldlevels[:] = levels[:] # replace the elements in oldlevels - don't make a new list (Subediting is watching it) @@ -198,7 +211,7 @@ class Lightboard: filename = '/tmp/light9.prefs' if self.DUMMY: filename += '.dummy' - print "Loading from", filename + print "Light 8.8: Loading from", filename file = open(filename, 'r') p = cPickle.load(file) for s, v in p.scalelevels.items(): diff --git a/light8/Xfader.py b/light8/Xfader.py --- a/light8/Xfader.py +++ b/light8/Xfader.py @@ -45,7 +45,7 @@ class Xfader(Canvas): def height(self): return int(self['height']) def setupwidget(self,parent): - Canvas.__init__(self,parent,width=150,height=150,bg="#ff0000") + Canvas.__init__(self,parent,width=150,height=150,bg="grey40") self.pack(side='bottom') self.create_rectangle(5,5,self.width()-5,self.height()-5) self.create_line(0,self.height()/2,150,self.height()/2) diff --git a/light8/panels.py b/light8/panels.py --- a/light8/panels.py +++ b/light8/panels.py @@ -11,7 +11,7 @@ monofont = ('Courier', 8) class Controlpanel(Frame): def __init__(self, parent, xfader, refresh_cb, quit_cb, jostle_cb): - Frame.__init__(self,parent) + Frame.__init__(self,parent, bg='black') controlpanel = self for txt,cmd in ( ('Quit', quit_cb), @@ -21,18 +21,17 @@ class Controlpanel(Frame): ('Clear X', lambda: xfader.clearallbuttons('x')), ('On -> Y', lambda: xfader.grab('y')), ('Clear Y', lambda: xfader.clearallbuttons('y'))): - Button(controlpanel, text=txt, command=cmd).pack(side='top', - fill='x') + Button(controlpanel, text=txt, command=cmd, bg='black', + fg='white').pack(side='top', fill='x') # jostle button - Checkbutton(controlpanel, text="Jostle", + Checkbutton(controlpanel, text="Jostle", bg='black', fg='white', command=jostle_cb).pack(side=TOP, fill=X) class Console: def __init__(self,lightboard): - print "Light 8: Everything's under control" t=toplevelat('console') - self.frame = Frame(t) - self.entry=Entry(self.frame) + self.frame = Frame(t, bg='black') + self.entry=Entry(self.frame, bg='black', fg='white') self.entry.pack(expand=1, fill='x') self.entry.bind('', lambda evt: self.execute(evt, self.entry.get())) @@ -57,15 +56,15 @@ class Leveldisplay: # frame for this channel f = Frame(frames[channel > (num_channels/2)]) # channel number -- will turn yellow when being altered - num_lab = Label(f, text=str(channel), width=3, bg='lightPink', - font=stdfont, padx=0, pady=0, bd=0, height=1) + num_lab = Label(f, text=str(channel), width=3, bg='grey40', + fg='white', font=stdfont, padx=0, pady=0, bd=0, height=1) num_lab.pack(side='left') self.number_labels.append(num_lab) # text description of channel Label(f, text=Patch.get_channel_name(channel), width=8, font=stdfont, anchor='w', padx=0, pady=0, bd=0, - height=1).pack(side='left') + height=1, bg='black', fg='white').pack(side='left') # current level of channel, shows intensity with color l = Label(f, width=3, bg='lightBlue', font=stdfont, anchor='e', @@ -88,7 +87,7 @@ class Subpanels: sublist.sort() for p in scenesparent,effectsparent,scenes: - sw = ScrolledWindow(p) + sw = ScrolledWindow(p, bg='black') for but,units in ( (4,-4),(5,4) ): sw.window.bind(""%but,lambda ev,s=sw.vsb,u=units: s.tk.call('tkScrollByUnits',s,'hv',u)) @@ -128,7 +127,7 @@ class Subpanels: width1=longestname # make frame that surrounds the whole submaster - f=Frame(parent, bd=1, relief='raised') + f=Frame(parent, bd=1, relief='raised', bg='black') f.pack(fill='both',exp=1,side=side2) @@ -151,6 +150,10 @@ class Subpanels: orient=orient1, labelwidth=width1, **scaleopts) + s.configure(bg='black') + s.label.configure(bg='black', fg='white') + s.vlabel.configure(bg='black', fg='white') + s.scale.configure(bg='black', fg='white') # tell subediting what widgets to highlight when it's # editing a sub @@ -181,7 +184,7 @@ class Subpanels: ("SaveStg",lambda l=lightboard,name=name: l.save_sub(name,l.stageassub(),refresh=1)), ): eb = Button(f,text=txt,font=stdfont,padx=0,pady=0, - bd=1,command=cmd) + bd=1,command=cmd, bg='black', fg='white') eb.pack(side=side1,fill='both',padx=0,pady=0) def axisbuttons(self,f,s,xfader,stdfont,side1,name): @@ -189,7 +192,8 @@ class Subpanels: 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) + padx=3, pady=0, bd=1, downcolor=eb_color, + bg='black', fg='white') cb.pack(side=side1,fill='both', padx=0, pady=0) s.bind(''%axis, lambda ev,cb=cb: cb.invoke) xfader.registerbutton(name,axis,cvar) diff --git a/light8/rsn.py b/light8/rsn.py --- a/light8/rsn.py +++ b/light8/rsn.py @@ -10,11 +10,11 @@ from Lightboard import Lightboard if len(sys.argv) >= 2: DUMMY = 0 - print "This is the real thing, baby" + print "Light 8.8: This is the real thing, baby" window_title = "Light 8.8 (On Air)" else: DUMMY = 1 - print "Dummy mode" + print "Light 8.8: Dummy mode" window_title = "Light 8.8 (Bogus)" root = Tk() @@ -22,12 +22,15 @@ root.wm_title(window_title) root.wm_geometry('+462+470') root.tk_focusFollowsMouse() + parportdmx = io.ParportDMX() if not DUMMY: # this turns the parportdmx from dummy to live + print "Light 8.8: Preparing DMX interface..." parportdmx.golive() +print "Light 8.8: And this...is Mr. Lightboard" mr_lightboard = Lightboard(root,parportdmx,DUMMY) # root.tk_setPalette('gray40') @@ -36,6 +39,7 @@ signal(SIGINT, mr_lightboard.quit) # # start net slider server in separate thread # +print "Light 8.8: External input server spawned" import ExternalInput, thread thread.start_new_thread(ExternalInput.start_server,()) @@ -44,6 +48,7 @@ bindkeys(root,'', mr_lightboard. root.bind_class("all","",lambda ev: eventtoparent(ev,"")) root.bind_class("all","",lambda ev: eventtoparent(ev,"")) +print 'Light 8.8: "Uh...Shiny McShine?"' root.mainloop() # Receiver switches main #import profile diff --git a/light8/stage.py b/light8/stage.py --- a/light8/stage.py +++ b/light8/stage.py @@ -71,7 +71,7 @@ class Stage(Canvas): def setimage(self,stageimage): img = Image('photo',file=stageimage) self.img=img # can't lose this! - print img.width() + # print img.width() # self.create_image(0,0,anchor='nw',image=img) # self.config(width=img.width(),height=img.height()) diff --git a/light8/uihelpers.py b/light8/uihelpers.py --- a/light8/uihelpers.py +++ b/light8/uihelpers.py @@ -16,7 +16,7 @@ windowlocations = { } def make_frame(parent): - f = Frame(parent, bd=0) + f = Frame(parent, bd=0, bg='black') f.pack(side='left') return f @@ -75,7 +75,12 @@ def printevent(ev): print "" def eventtoparent(ev,sequence): - "passes an event to the parent" + "passes an event to the parent, screws up TixComboBoxes" + + wid_class = str(ev.widget.__class__) + if wid_class == 'Tix.ComboBox' or wid_class == 'Tix.TixSubWidget': + return + evdict={} for x in ['state', 'time', 'y', 'x', 'serial']: evdict[x]=getattr(ev,x) @@ -208,8 +213,10 @@ class FancyDoubleVar(DoubleVar): else: print "FancyDoubleVar: attempted to delete named %s which wasn't set to any function" % name - - +def get_selection(listbox): + 'Given a listbox, returns first selection as integer' + selection = int(listbox.curselection()[0]) # blech + return selection if __name__=='__main__': root=Tk() @@ -221,12 +228,3 @@ if __name__=='__main__': t.pack() Entry(root,textvariable=iv).pack() root.mainloop() - - - - - - - - -