comparison flax/Submaster.py @ 138:304152488ed7

Timeline: new methods to make editing easier Timeline: new methods to make editing easier Submaster: fix level-clobbering bug, skip CVS files, better __repr__ KeyboardClient: tiny cleanups
author dmcc
date Sat, 14 Jun 2003 16:01:31 +0000
parents 5670f66845ce
children 1fe54442db38
comparison
equal deleted inserted replaced
137:7d768d04b9f0 138:304152488ed7
55 dict_scale(self.levels, scalar)) 55 dict_scale(self.levels, scalar))
56 __rmul__ = __mul__ 56 __rmul__ = __mul__
57 def max(self, *othersubs): 57 def max(self, *othersubs):
58 return sub_maxes(self, *othersubs) 58 return sub_maxes(self, *othersubs)
59 def __repr__(self): 59 def __repr__(self):
60 return "<%s: %r>" % (self.name, self.levels) 60 levels = ' '.join(["%s:%.2f" % item for item in self.levels.items()])
61 return "<'%s': [%s]>" % (self.name, levels)
61 def get_dmx_list(self): 62 def get_dmx_list(self):
62 leveldict = self.get_levels() # gets levels of sub contents 63 leveldict = self.get_levels() # gets levels of sub contents
63 64
64 levels = [0] * 68 65 levels = [0] * 68
65 for k, v in leveldict.items(): 66 for k, v in leveldict.items():
66 levels[Patch.get_dmx_channel(k) - 1] = v 67 dmxchan = Patch.get_dmx_channel(k) - 1
68 levels[dmxchan] = max(v, levels[dmxchan])
67 69
68 return levels 70 return levels
71 def normalize_patch_names(self):
72 # possibly busted -- don't use unless you know what you're doing
73 self.set_all_levels(self.levels.copy())
69 74
70 def sub_maxes(*subs): 75 def sub_maxes(*subs):
71 return Submaster("max(%r)" % (subs,), 76 return Submaster("max(%r)" % (subs,),
72 dict_max(*[sub.levels for sub in subs])) 77 dict_max(*[sub.levels for sub in subs]))
73 78
78 83
79 import os 84 import os
80 files = os.listdir('subs') 85 files = os.listdir('subs')
81 86
82 for filename in files: 87 for filename in files:
83 if filename.startswith('.') or filename.endswith('~'): 88 # we don't want these files
89 if filename.startswith('.') or filename.endswith('~') or \
90 filename.startswith('CVS'):
84 continue 91 continue
85 self.submasters[filename] = Submaster(filename) 92 self.submasters[filename] = Submaster(filename)
86 def get_all_subs(self): 93 def get_all_subs(self):
87 "All Submaster objects" 94 "All Submaster objects"
88 return self.submasters.values() 95 return self.submasters.values()
92 __getitem__ = get_sub_by_name 99 __getitem__ = get_sub_by_name
93 100
94 if __name__ == "__main__": 101 if __name__ == "__main__":
95 Patch.reload_data() 102 Patch.reload_data()
96 s = Submasters() 103 s = Submasters()
97 newsub = s['newsub']
98 newsub.set_all_levels({'5' : 1, '7': 0.2})
99 print s.get_all_subs() 104 print s.get_all_subs()
105 if 0: # turn this on to normalize all subs
106 for sub in s.get_all_subs():
107 print "before", sub
108 sub.normalize_patch_names()
109 sub.save()
110 print "after", sub