Базовая комната

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