Пример #1
0
 def __init__(self, master, helpURL=None):
     self.model = TelMechModel.getModel()
     DevStateWdg.__init__(self,
         master = master,
         catInfo = self.model.catDict["Eyelids"],
         helpText = "State of the eyelids",
         helpURL = helpURL,
     )
     self.catInfo = self.model.catDict["Eyelids"]
     self.tertRot = self.model.tertRot
     self.model.tertRot.addCallback(self.updateState, callNow=False)
Пример #2
0
 def __init__(self, master, helpURL=None):
     self.model = TelMechModel.getModel()
     DevStateWdg.__init__(
         self,
         master=master,
         catInfo=self.model.catDict["Eyelids"],
         helpText="State of the eyelids",
         helpURL=helpURL,
     )
     self.catInfo = self.model.catDict["Eyelids"]
     self.tertRot = self.model.tertRot
     self.model.tertRot.addCallback(self.updateState, callNow=False)
Пример #3
0
    def __init__(self,
        master,
    **kargs):
        """Create a new widget to show status for and configure the enclosure controller
        """
        Tkinter.Frame.__init__(self, master, **kargs)
        self.model = TelMechModel.getModel()
        self.tuiModel = TUI.TUIModel.getModel()
        
        # dict of category: sequence of detailed controls (for show/hide)
        self.detailWdgDict ={}
        
        self.pendingCmds = []

        self.col = 0
        self.row = 0
        self.statusRow = 0
        
        self.addCategory("Shutters")
        self.row += 1
        self.addCategory("Fans")

        self.startNewColumn()
        RO.Wdg.StrLabel(
            master = self,
            text = "Mir Covers",
            helpURL = _HelpURL,
        ).grid(row=self.row, column=self.col)
        self.row += 1
        coversFrame = Tkinter.Frame(master = self)
        self.coversUserWdg = RO.Wdg.Checkbutton(
            master = coversFrame,
            autoIsCurrent = True,
            command = self.doCoversCmd,
            helpText = "Open the primary mirror covers?",
            helpURL = _HelpURL,
        )
        self.coversUserWdg.pack(side="left")
        self.coversCurrWdg = RO.Wdg.Label(
            master = coversFrame,
            width = 6,
            anchor = "w",
            helpText = "State of the primary mirror covers?",
            helpURL = _HelpURL,
        )
        self.coversCurrWdg.pack(side="left")
        coversFrame.grid(row=self.row, column=self.col, sticky="w")
        self.row += 3
        self.model.covers.addIndexedCallback(self.updateCovers)
        
        RO.Wdg.StrLabel(
            master = self,
            text = "Tert Rot",
            helpURL = _HelpURL,
        ).grid(row=self.row, column=self.col)
        self.row += 1
        self.tertRotWdg = RO.Wdg.OptionMenu(
            master = self,
            items = self.model.catDict["Eyelids"].devDict.keys(),
            noneDisplay = "?",
            ignoreCase = True,
            autoIsCurrent = True,
            defMenu = "Default",
            callFunc = self.tertRotEnable,
            helpText = "Tertiary rotation",
            helpURL = _HelpURL,
        )
        self.tertRotWdg.grid(row=self.row, column=self.col)
        self.row += 1
        self.tertRotApplyWdg = RO.Wdg.Button(
            master = self,
            text = "Apply",
            callFunc = self.doTertRotApply,
            helpText = "Apply tertiary rotation",
            helpURL = _HelpURL,
        )
        self.tertRotApplyWdg.grid(row=self.row, column=self.col)
        self.row += 1
        self.tertRotCurrWdg = RO.Wdg.Button(
            master = self,
            text = "Current",
            callFunc = self.doTertRotRestore,
            helpText = "Show current tertiary rotation",
            helpURL = _HelpURL,
        )
        self.tertRotCurrWdg.grid(row=self.row, column=self.col)
        self.row += 1
        self.model.tertRot.addIndexedCallback(self.updateTertRot)
        
        self.startNewColumn()
        self.eyelidsState = EyelidsStateWdg(
            master = self,
            helpURL = _HelpURL,
        )
        self.eyelidsOpenWdg = RO.Wdg.Button(
            master = self,
            text = "Open All",
            callFunc = self.doEyelidsOpen,
            helpText = "Open all eyelids",
            helpURL = _HelpURL,
        )
        self.eyelidsCloseWdg = RO.Wdg.Button(
            master = self,
            text = "Close All",
            callFunc = self.doEyelidsClose,
            helpText = "Close all eyelids",
            helpURL = _HelpURL,
        )
        self.addCategory(
            catName = "Eyelids",
            extraWdgs = (self.eyelidsState, self.eyelidsOpenWdg, self.eyelidsCloseWdg),
        )
        
        self.startNewColumn()
        self.lightsState = DevStateWdg(
            master = self,
            catInfo = self.model.catDict["Lights"],
            onIsNormal = False,
            patternDict = {
                (0, 0, 0, 0, 0, 0, 1, 0): ("Main Off", RO.Constants.sevNormal),
            },
            helpText = "State of the lights",
            helpURL = _HelpURL,
        )
        self.lightsMainOffWdg = RO.Wdg.Button(
            master = self,
            text = "Main Off",
            callFunc = self.doLightsMainOff,
            helpText = "Turn off all lights except int. incandescents",
            helpURL = _HelpURL,
        )
        self.addCategory("Lights", extraWdgs=(self.lightsState, self.lightsMainOffWdg))
        
        self.startNewColumn()
        self.louversState = DevStateWdg(
            master = self,
            catInfo = self.model.catDict["Louvers"],
            onIsNormal = True,
            helpText = "State of the louvers",
            helpURL = _HelpURL,
        )
        self.louversOpenWdg = RO.Wdg.Button(
            master = self,
            text = "Open All",
            callFunc = self.doLouversOpen,
            helpText = "Open all louvers",
            helpURL = _HelpURL,
        )
        self.louversCloseWdg = RO.Wdg.Button(
            master = self,
            text = "Close All",
            callFunc = self.doLouversClose,
            helpText = "Close all louvers",
            helpURL = _HelpURL,
        )
        self.addCategory(
            catName = "Louvers",
            extraWdgs = (self.louversState, self.louversOpenWdg, self.louversCloseWdg),
        )
        
        self.startNewColumn()
        self.heatersState = DevStateWdg(
            master = self,
            catInfo = self.model.catDict["Heaters"],
            onIsNormal = False,
            helpText = "State of the roof heaters",
            helpURL = _HelpURL,
        )
        self.heatersOffWdg = RO.Wdg.Button(
            master = self,
            text = "All Off",
            callFunc = self.doHeatersOff,
            helpText = "Turn off all roof heaters",
            helpURL = _HelpURL,
        )
        self.heatersOnWdg = RO.Wdg.Button(
            master = self,
            text = "All On",
            callFunc = self.doHeatersOn,
            helpText = "Turn on all roof heaters",
            helpURL = _HelpURL,
        )
        self.addCategory(
            catName = "Heaters",
            extraWdgs = (self.heatersState, self.heatersOffWdg, self.heatersOnWdg),
        )

        self.statusBar = RO.Wdg.StatusBar(
            master = self,
            dispatcher = self.tuiModel.dispatcher,
            prefs = self.tuiModel.prefs,
            playCmdSounds = True,
            summaryLen = 20,
            helpURL = _HelpURL,
        )
        self.statusBar.grid(
            column=0,
            row=self.statusRow + 1,
            columnspan = self.col - 1,
            sticky="sew",
        )
        
        self.cancelBtn = RO.Wdg.Button(
            master = self,
            text = "Cancel",
            callFunc = self.cancelCmds,
            helpText = "Cancel all executing commands",
            helpURL = _HelpURL,
        )
        self.cancelBtn.setEnable(False)
        self.cancelBtn.grid(
            column = self.col,
            row = self.statusRow + 1,
            columnspan = _ColsPerDev,
        )
Пример #4
0
    def __init__(self, master, **kargs):
        """Create a new widget to show status for and configure the enclosure controller
        """
        Tkinter.Frame.__init__(self, master, **kargs)
        self.model = TelMechModel.getModel()
        self.tuiModel = TUI.TUIModel.getModel()

        # dict of category: sequence of detailed controls (for show/hide)
        self.detailWdgDict = {}

        self.pendingCmds = []

        self.col = 0
        self.row = 0
        self.statusRow = 0

        self.addCategory("Shutters")
        self.row += 1
        self.addCategory("Fans")

        self.startNewColumn()
        RO.Wdg.StrLabel(
            master=self,
            text="Mir Covers",
            helpURL=_HelpURL,
        ).grid(row=self.row, column=self.col)
        self.row += 1
        coversFrame = Tkinter.Frame(master=self)
        self.coversUserWdg = RO.Wdg.Checkbutton(
            master=coversFrame,
            autoIsCurrent=True,
            command=self.doCoversCmd,
            helpText="Open the primary mirror covers?",
            helpURL=_HelpURL,
        )
        self.coversUserWdg.pack(side="left")
        self.coversCurrWdg = RO.Wdg.Label(
            master=coversFrame,
            width=6,
            anchor="w",
            helpText="State of the primary mirror covers?",
            helpURL=_HelpURL,
        )
        self.coversCurrWdg.pack(side="left")
        coversFrame.grid(row=self.row, column=self.col, sticky="w")
        self.row += 3
        self.model.covers.addIndexedCallback(self.updateCovers)

        RO.Wdg.StrLabel(
            master=self,
            text="Tert Rot",
            helpURL=_HelpURL,
        ).grid(row=self.row, column=self.col)
        self.row += 1
        self.tertRotWdg = RO.Wdg.OptionMenu(
            master=self,
            items=self.model.catDict["Eyelids"].devDict.keys(),
            noneDisplay="?",
            ignoreCase=True,
            autoIsCurrent=True,
            defMenu="Default",
            callFunc=self.tertRotEnable,
            helpText="Tertiary rotation",
            helpURL=_HelpURL,
        )
        self.tertRotWdg.grid(row=self.row, column=self.col)
        self.row += 1
        self.tertRotApplyWdg = RO.Wdg.Button(
            master=self,
            text="Apply",
            callFunc=self.doTertRotApply,
            helpText="Apply tertiary rotation",
            helpURL=_HelpURL,
        )
        self.tertRotApplyWdg.grid(row=self.row, column=self.col)
        self.row += 1
        self.tertRotCurrWdg = RO.Wdg.Button(
            master=self,
            text="Current",
            callFunc=self.doTertRotRestore,
            helpText="Show current tertiary rotation",
            helpURL=_HelpURL,
        )
        self.tertRotCurrWdg.grid(row=self.row, column=self.col)
        self.row += 1
        self.model.tertRot.addIndexedCallback(self.updateTertRot)

        self.startNewColumn()
        self.eyelidsState = EyelidsStateWdg(
            master=self,
            helpURL=_HelpURL,
        )
        self.eyelidsOpenWdg = RO.Wdg.Button(
            master=self,
            text="Open All",
            callFunc=self.doEyelidsOpen,
            helpText="Open all eyelids",
            helpURL=_HelpURL,
        )
        self.eyelidsCloseWdg = RO.Wdg.Button(
            master=self,
            text="Close All",
            callFunc=self.doEyelidsClose,
            helpText="Close all eyelids",
            helpURL=_HelpURL,
        )
        self.addCategory(
            catName="Eyelids",
            extraWdgs=(self.eyelidsState, self.eyelidsOpenWdg,
                       self.eyelidsCloseWdg),
        )

        self.startNewColumn()
        self.lightsState = DevStateWdg(
            master=self,
            catInfo=self.model.catDict["Lights"],
            onIsNormal=False,
            patternDict={
                (0, 0, 0, 0, 0, 0, 1, 0): ("Main Off", RO.Constants.sevNormal),
            },
            helpText="State of the lights",
            helpURL=_HelpURL,
        )
        self.lightsMainOffWdg = RO.Wdg.Button(
            master=self,
            text="Main Off",
            callFunc=self.doLightsMainOff,
            helpText="Turn off all lights except int. incandescents",
            helpURL=_HelpURL,
        )
        self.addCategory("Lights",
                         extraWdgs=(self.lightsState, self.lightsMainOffWdg))

        self.startNewColumn()
        self.louversState = DevStateWdg(
            master=self,
            catInfo=self.model.catDict["Louvers"],
            onIsNormal=True,
            helpText="State of the louvers",
            helpURL=_HelpURL,
        )
        self.louversOpenWdg = RO.Wdg.Button(
            master=self,
            text="Open All",
            callFunc=self.doLouversOpen,
            helpText="Open all louvers",
            helpURL=_HelpURL,
        )
        self.louversCloseWdg = RO.Wdg.Button(
            master=self,
            text="Close All",
            callFunc=self.doLouversClose,
            helpText="Close all louvers",
            helpURL=_HelpURL,
        )
        self.addCategory(
            catName="Louvers",
            extraWdgs=(self.louversState, self.louversOpenWdg,
                       self.louversCloseWdg),
        )

        self.startNewColumn()
        self.heatersState = DevStateWdg(
            master=self,
            catInfo=self.model.catDict["Heaters"],
            onIsNormal=False,
            helpText="State of the roof heaters",
            helpURL=_HelpURL,
        )
        self.heatersOffWdg = RO.Wdg.Button(
            master=self,
            text="All Off",
            callFunc=self.doHeatersOff,
            helpText="Turn off all roof heaters",
            helpURL=_HelpURL,
        )
        self.heatersOnWdg = RO.Wdg.Button(
            master=self,
            text="All On",
            callFunc=self.doHeatersOn,
            helpText="Turn on all roof heaters",
            helpURL=_HelpURL,
        )
        self.addCategory(
            catName="Heaters",
            extraWdgs=(self.heatersState, self.heatersOffWdg,
                       self.heatersOnWdg),
        )

        self.statusBar = RO.Wdg.StatusBar(
            master=self,
            dispatcher=self.tuiModel.dispatcher,
            prefs=self.tuiModel.prefs,
            playCmdSounds=True,
            summaryLen=20,
            helpURL=_HelpURL,
        )
        self.statusBar.grid(
            column=0,
            row=self.statusRow + 1,
            columnspan=self.col - 1,
            sticky="sew",
        )

        self.cancelBtn = RO.Wdg.Button(
            master=self,
            text="Cancel",
            callFunc=self.cancelCmds,
            helpText="Cancel all executing commands",
            helpURL=_HelpURL,
        )
        self.cancelBtn.setEnable(False)
        self.cancelBtn.grid(
            column=self.col,
            row=self.statusRow + 1,
            columnspan=_ColsPerDev,
        )