1
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
12 __subject_events__ = ('device_bank',)
13
18
20 newreg = dict(filter(lambda (k, _): k != None, self._device_bank_registry.items()))
21 self._device_bank_registry = newreg
22
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
32
34 for k in self._device_bank_registry.iterkeys():
35 if k == device:
36 return k
37