Package _Framework :: Module DeviceBankRegistry
[hide private]
[frames] | no frames]

Source Code for Module _Framework.DeviceBankRegistry

 1  #Embedded file name: /Users/versonator/Hudson/live/Projects/AppLive/Resources/MIDI Remote Scripts/_Framework/DeviceBankRegistry.py 
 2  """ 
 3  Classes to keep a global registry of the currently selected bank for 
 4  given device instances. 
 5   
 6  [jbo] After some though about this, I personally believe that moving 
 7  banking to the C++ code is the best mid-term solution. 
 8  """ 
 9  from SubjectSlot import Subject 
10   
11 -class DeviceBankRegistry(Subject):
12 __subject_events__ = ('device_bank',) 13
14 - def __init__(self, *a, **k):
15 super(DeviceBankRegistry, self).__init__(*a, **k) 16 self._device_bank_registry = {} 17 self._device_bank_listeners = []
18
19 - def compact_registry(self):
20 newreg = dict(filter(lambda (k, _): k != None, self._device_bank_registry.items())) 21 self._device_bank_registry = newreg
22
23 - def set_device_bank(self, device, bank):
24 if not self._find_device_bank_key(device): 25 key = device 26 old = self._device_bank_registry[key] if key in self._device_bank_registry else 0 27 self._device_bank_registry[key] = old != bank and bank 28 self.notify_device_bank(device, bank)
29
30 - def get_device_bank(self, device):
31 return self._device_bank_registry.get(self._find_device_bank_key(device), 0)
32
33 - def _find_device_bank_key(self, device):
34 for k in self._device_bank_registry.iterkeys(): 35 if k == device: 36 return k
37