Базовая комната
from ButtonEx import ButtonEx
from extronlib.ui import Label
from extronlib.system import ProgramLog, MESet
class BaseRoom():
def __init__(self):
self.UIHost = None
self.devices = {}
self.buttons = {}
self.labels = {}
self.__buttons = self.allButtons()
self.__labels = self.allLabels()
self.__mesets = self.allMESets()
class allButtons:
pass
@property
def Buttons(self):
return self.__buttons
class allLabels:
pass
@property
def Labels(self):
return self.__labels
class allMESets:
pass
@property
def MESets(self):
return self.__mesets
def AddPanel(self, UIHost):
self.UIHost = UIHost
return self
def AddDevice(self, name, device):
self.devices[name] = device
return self
def AddButtons(self, buttons):
for bset, params in buttons.items():
for b1 in bset:
b = ButtonEx(self, b1, params.get('holdTime', None), params.get('repeatTime', None))
b.MakeSwitch(params.get('switch', False))
b.MakeIndicator(params.get('indicator', False))
self.buttons[b1] = b
setattr(self.__buttons, b1, b)
if params.get('func'):
b.Listener(params['func'], params.get('action', 'Released'))
else:
b1.Indicator = True
return self
def AddLabels(self, labels):
if self.UIHost:
for l in labels:
label = Label(self.UIHost, l)
self.labels[l] = label
setattr(self.__labels, l, label)
return self
def CreateMESet(self, name, *args):
bn = [getattr(self.__buttons, x) for x in args]
setattr(self.__mesets, name, MESet(bn))
return self
# закрытие всех подстраниц
def HideAllPopups(self):
if self.UIHost:
self.UIHost.HideAllPopups()
return self
# возвращает девайс из словаря
def Device(self, name):
return self.devices.get(name)
@property
def Panel(self):
return self.UIHost
# показ подстраниц
def ShowPopups(self, *args):
if self.UIHost:
for p in args:
self.UIHost.ShowPopup(p)
return self
Last updated