Exemplo n.º 1
0
    def __init__(self, sr):
        """Display exposure status and a few user input widgets.
        """
        # if True, run in debug-only mode (which doesn't DO anything, it just pretends)
        sr.debug = False
        self.expModel = ExposeModel.getModel(InstName)
        self.spicamModel = TUI.Inst.SPIcam.SPIcamModel.getModel()
        self.tccModel = TUI.TCC.TCCModel.getModel()
        self.sr = sr

        row = 0

        expStatusWdg = ExposeStatusWdg(
            master=sr.master,
            instName=InstName,
            helpURL=HelpURL,
        )
        expStatusWdg.grid(row=row, column=0, columnspan=3, sticky="w")
        row += 1

        self.expWdg = ExposeInputWdg(
            master=sr.master,
            instName=InstName,
            expTypes="object",
            helpURL=HelpURL,
        )
        self.expWdg.grid(row=row, column=0, columnspan=3, sticky="w")
        row += 1

        wdgFrame = Tkinter.Frame(sr.master)
        gr = RO.Wdg.Gridder(wdgFrame, sticky="w")
        self.filterWdg = RO.Wdg.OptionMenu(
            master=self.expWdg,
            items=[],
            helpText="filter",
            helpURL=HelpURL,
            defMenu="Current",
            autoIsCurrent=True,
        )
        self.expWdg.gridder.gridWdg("Filter",
                                    self.filterWdg,
                                    sticky="w",
                                    colSpan=3)

        self.spicamModel.filterNames.addCallback(self.filterWdg.setItems)
        self.spicamModel.filterName.addIndexedCallback(
            self.filterWdg.setDefault, 0)
Exemplo n.º 2
0
    def __init__(self, sr):
        """Create widgets.
        """
        # if True, run in debug-only mode (which doesn't DO anything, it just pretends)
        sr.debug = False

        self.file = None

        self.nicfpsModel = TUI.Inst.NICFPS.NICFPSModel.getModel()
        self.expModel = TUI.Inst.ExposeModel.getModel(InstName)
        self.tccModel = TUI.TCC.TCCModel.getModel()

        row = 0

        # standard exposure status widget
        expStatusWdg = ExposeStatusWdg(
            master=sr.master,
            instName=InstName,
            helpURL=HelpURL,
        )
        expStatusWdg.grid(row=row, column=0, sticky="news")
        row += 1

        # standard exposure input widget
        self.expWdg = ExposeInputWdg(
            master=sr.master,
            instName=InstName,
            expTypes="object",
            helpURL=HelpURL,
        )
        self.expWdg.numExpWdg.helpText = "# of exposures at each spacing"
        self.expWdg.grid(row=row, column=0, sticky="news")
        row += 1

        gr = self.expWdg.gridder

        # add file widget
        self.fileWdg = RO.Wdg.FileWdg(
            master=self.expWdg,
            helpText="file of x y z etalon positions",
            helpURL=HelpURL,
        )
        gr.gridWdg("Data File", self.fileWdg, colSpan=3)

        if sr.debug:
            self.expWdg.timeWdg.set(3)
            self.expWdg.fileNameWdg.set("debugtest")
Exemplo n.º 3
0
    def __init__(self, sr):
        """Create widgets.
        """
        # if True, run in debug-only mode (which doesn't DO anything, it just pretends)
        sr.debug = False

        self.errStr = ""

        self.nicfpsModel = TUI.Inst.NICFPS.NICFPSModel.getModel()
        self.expModel = TUI.Inst.ExposeModel.getModel(InstName)
        self.tccModel = TUI.TCC.TCCModel.getModel()

        row = 0

        # standard exposure status widget
        expStatusWdg = ExposeStatusWdg(
            master=sr.master,
            instName=InstName,
            helpURL=HelpURL,
        )
        expStatusWdg.grid(row=row, column=0, sticky="news")
        row += 1

        # standard exposure input widget
        self.expWdg = ExposeInputWdg(
            master=sr.master,
            instName=InstName,
            expTypes="object",
            helpURL=HelpURL,
        )
        self.expWdg.numExpWdg.helpText = "# of exposures at each spacing"
        self.expWdg.grid(row=row, column=0, sticky="news")
        row += 1

        gr = self.expWdg.gridder

        # add etalon controls to exposure input widget
        self.begSeqIndWdg = RO.Wdg.IntEntry(
            master=self.expWdg,
            minValue=0,
            width=SpacingWidth,
            helpText="initial z index (to finish a partial run)",
            helpURL=HelpURL,
        )
        gr.gridWdg("Initial Index", self.begSeqIndWdg,
                   "(normally leave blank)")

        self.fpBegZWdg = RO.Wdg.IntEntry(
            master=self.expWdg,
            minValue=self.nicfpsModel.fpXYZLimConst[0],
            maxValue=self.nicfpsModel.fpXYZLimConst[1],
            width=SpacingWidth,
            helpText="initial etalon Z spacing",
            helpURL=HelpURL,
        )
        gr.gridWdg("Initial Z", self.fpBegZWdg, "steps")

        self.fpDeltaZWdg = RO.Wdg.IntEntry(
            master=self.expWdg,
            minValue=self.nicfpsModel.fpXYZLimConst[0],
            maxValue=self.nicfpsModel.fpXYZLimConst[1],
            width=SpacingWidth,
            helpText="etalon Z spacing interval",
            helpURL=HelpURL,
        )
        gr.gridWdg("Delta Z", self.fpDeltaZWdg, "steps")

        self.fpNumZWdg = RO.Wdg.IntEntry(
            master=self.expWdg,
            minValue=1,
            maxValue=9999,
            width=SpacingWidth,
            helpText="number of etalon Z spacings",
            helpURL=HelpURL,
        )
        gr.gridWdg("Num Zs", self.fpNumZWdg, "steps")

        self.fpEndZWdg = RO.Wdg.IntLabel(
            master=self.expWdg,
            width=SpacingWidth,
            helpText="final etalon Z spacing",
            helpURL=HelpURL,
            anchor="e",
        )
        self.fpEndZUnitsWdg = RO.Wdg.StrLabel(
            master=self.expWdg,
            text="steps",
            helpURL=HelpURL,
            anchor="w",
        )
        gr.gridWdg("Final Z", self.fpEndZWdg, self.fpEndZUnitsWdg)

        self.fpNumPassesWdg = RO.Wdg.OptionMenu(
            master=self.expWdg,
            items=("1", "2", "3"),
            defValue="2",
            helpText="number of passes in which to sample Z",
            helpURL=HelpURL,
        )
        gr.gridWdg("Num Passes", self.fpNumPassesWdg)

        self.currSeqIndWdg = RO.Wdg.IntLabel(
            master=self.expWdg,
            width=SpacingWidth,
            helpText="index of current Z spacing",
            helpURL=HelpURL,
            anchor="e",
        )
        gr.gridWdg("Current Index", self.currSeqIndWdg)

        fpCurrWdg = RO.Wdg.IntLabel(
            master=self.expWdg,
            width=SpacingWidth,
            helpText="current actual etalon Z spacing",
            helpURL=HelpURL,
            anchor="e",
        )
        gr.gridWdg("Current Z", fpCurrWdg, "steps")

        self.nicfpsModel.fpZ.addROWdg(fpCurrWdg)

        self.fpBegZWdg.addCallback(self.updEndZ, callNow=False)
        self.fpDeltaZWdg.addCallback(self.updEndZ, callNow=False)
        self.fpNumZWdg.addCallback(self.updEndZ, callNow=True)
Exemplo n.º 4
0
    def __init__(self, sr):
        """The setup script; run once when the script runner
        window is created.
        """
        # if sr.debug True, run in debug-only mode (which doesn't DO anything, it just pretends)
        sr.debug = False
        self.sr = sr

        self.begOffset = numpy.array((numpy.nan, numpy.nan))
        self.currOffset = self.begOffset[:]

        self.tccModel = TUI.TCC.TCCModel.getModel()
        self.expModel = TUI.Inst.ExposeModel.getModel(InstName)
    
        row=0
        
        # standard exposure status widget
        expStatusWdg = ExposeStatusWdg(
            master = sr.master,
            instName = InstName,
            helpURL = HelpURL,
        )
        expStatusWdg.grid(row=row, column=0, sticky="news")
        row += 1
        
        # create dither node controls
        ditherFrame = Tkinter.Frame(sr.master)
        
        # information about the dither nodes; each entry is:
        # - name of quadrant
        # - boresight offset multiplier in image x, image y
        ditherNodeData = [
            ("Ctr", (0, 0)),
            ("UL", (-1, 1)),
            ("UR", (1, 1)),
            ("LR", (1, -1)),
            ("LL", (-1, -1)),
        ]
        self.ditherWdgSet = [] # (stateWdg, orderWdg, boolWdg), one per dither node
        for name, offMult in ditherNodeData:
            nodeFrame = Tkinter.Frame(ditherFrame)

            stateWdg = RO.Wdg.StrLabel(
                master = nodeFrame,
                width = 7,
                relief = "flat",
                helpText = "State of node in dither sequence",
                helpURL = HelpURL,
            )
            orderWdg = RO.Wdg.IntLabel(
                master = nodeFrame,
                width = 1,
                relief = "flat",
                helpText = "Order of node in dither sequence",
                helpURL = HelpURL,
            )
            boolWdg = RO.Wdg.Checkbutton(
                master = nodeFrame,
                text = name,
                callFunc = self.updOrder,
                defValue = True,
                relief = "flat",
                helpText = "Check to use this dither node",
                helpURL = HelpURL,
            )
            # add attribute "offMult" to widget
            # so it can be read by "run"
            boolWdg.offMult = numpy.array(offMult, dtype=float)
            
            self.ditherWdgSet.append((stateWdg, orderWdg, boolWdg))

            stateWdg.pack(side="left")
            orderWdg.pack(side="left")
            boolWdg.pack(side="left")
            
            # display quadrant checkbutton in appropriate location
            row = 1 - offMult[1]
            col = 1 + offMult[0]
            nodeFrame.grid(row=row, column=col)
            
        
        ditherFrame.grid(row=row, column=0, sticky="news")
        row += 1
    
        # standard exposure input widget
        self.expWdg = ExposeInputWdg(
            master = sr.master,
            instName = InstName,
            expTypes = "object",
            helpURL = HelpURL,
        )
        self.expWdg.numExpWdg.helpText = "# of exposures at each point"
        self.expWdg.grid(row=row, column=0, sticky="news")
        row += 1
    
        # add controls to exposure input widget frame
        self.boxSizeWdg = RO.Wdg.IntEntry(
            master = self.expWdg,
            minValue = 0,
            defValue = DefBoxSize,
            helpText = "size of dither box",
            helpURL = HelpURL,
        )
        self.expWdg.gridder.gridWdg("Box Size", self.boxSizeWdg, "arcsec")
        
        self.doRandomWdg = RO.Wdg.Checkbutton(
            master = self.expWdg,
            defValue = DefDoRandom,
            helpText = "Add random scatter to dither pattern?",
            helpURL = HelpURL,
        )
        self.expWdg.gridder.gridWdg("Randomize?", self.doRandomWdg)
        
        if sr.debug:
            # set useful debug defaults
            self.expWdg.timeWdg.set("1.0")
            self.expWdg.numExpWdg.set(2)
            self.expWdg.fileNameWdg.set("debug")
            self.ditherWdgSet[1][-1].setBool(False)
            self.ditherWdgSet[3][-1].setBool(False)

        self.updOrder()