示例#1
0
 def getDevice(self, device=None):
     """Starting with stdgraph, drill until a device is found in
     the graphcap or isn't"""
     if not device:
         device = iraf.envget("stdgraph","")
     graphcap = getGraphcap()
     # protect against circular definitions
     devstr = device
     tried = {devstr: None}
     while not graphcap.has_key(devstr):
         pdevstr = devstr
         devstr = iraf.envget(pdevstr,"")
         if not devstr:
             raise iraf.IrafError(
                 "No entry found for specified stdgraph device `%s'" %
                 device)
         elif tried.has_key(devstr):
             # track back through circular definition
             s = [devstr]
             next = pdevstr
             while next and (next != devstr):
                 s.append(next)
                 next = tried[next]
             if next: s.append(next)
             s.reverse()
             raise iraf.IrafError(
                 "Circular definition in graphcap for device\n%s"
                 % (string.join(s,' -> '),))
         else:
             tried[devstr] = pdevstr
     return devstr
示例#2
0
    def do_exit(self, line='', i=0):
        """Exit from PyRAF and then Python"""
        if self.debug>1: self.write('do_exit: %s\n' % line[i:])

        # write out history - ignore write errors
        hfile = os.getenv('HOME','.')+os.sep+'.pyraf_history'
        hlen = 1000 # High default.  Note this setting itself may cause
                    # confusion between this history and the IRAF history cmd.
        try:
            hlen = int(iraf.envget('histfilesize'))
        except (KeyError, ValueError):
            pass
        try:
            import readline
            readline.set_history_length(hlen)  # hlen<0 means unlimited
            readline.write_history_file(hfile) # clobber any old version
        except (ImportError, IOError):
            pass

        # any irafinst tmp files?
        irafinst.cleanup() # any irafinst tmp files?

        # graphics
        wutil.closeGraphics()

        # leave
        raise SystemExit
示例#3
0
    def do_exit(self, line='', i=0):
        """Exit from PyRAF and then Python"""
        if self.debug > 1: self.write('do_exit: %s\n' % line[i:])

        # write out history - ignore write errors
        hfile = os.getenv('HOME', '.') + os.sep + '.pyraf_history'
        hlen = 1000  # High default.  Note this setting itself may cause
        # confusion between this history and the IRAF history cmd.
        try:
            hlen = int(iraf.envget('histfilesize'))
        except (KeyError, ValueError):
            pass
        try:
            import readline
            readline.set_history_length(hlen)  # hlen<0 means unlimited
            readline.write_history_file(hfile)  # clobber any old version
        except (ImportError, IOError):
            pass

        # any irafinst tmp files?
        irafinst.cleanup()  # any irafinst tmp files?

        # graphics
        wutil.closeGraphics()

        # leave
        raise SystemExit
示例#4
0
def printPlot(window=None):

    """Print contents of window (default active window) to stdplot

    window must be a GkiKernel object (with a gkibuffer attribute.)
    """

    if window is None:
        window = gwm.getActiveGraphicsWindow()
        if window is None: return
    gkibuff = window.gkibuffer.get()
    if gkibuff:
        graphcap = getGraphcap()
        stdplot = iraf.envget('stdplot','')
        if not stdplot:
            msg = "No hardcopy device defined in stdplot"
        elif not graphcap.has_key(stdplot):
            msg = "Unknown hardcopy device stdplot=`%s'" % stdplot
        else:
            printer = gkiiraf.GkiIrafKernel(stdplot)
            printer.append(gkibuff)
            printer.flush()
            msg = "snap completed"
    stdout = kernel.getStdout(default=sys.stdout)
    stdout.write("%s\n" % msg)
示例#5
0
def getGraphcap(filename=None):
    """Get graphcap file from filename (or cached version if possible)"""
    if filename is None:
        filename = iraf.osfn(iraf.envget('graphcap','dev$graphcap'))
    if not graphcapDict.has_key(filename):
        graphcapDict[filename] = graphcap.GraphCap(filename)
    return graphcapDict[filename]
示例#6
0
 def _getSaveAsFilter(self):
     """ Return a string to be used as the filter arg to the save file
         dialog during Save-As. """
     filt = '*.par'
     upx = iraf.envget("uparm_aux","")
     if 'UPARM_AUX' in os.environ: upx = os.environ['UPARM_AUX']
     if len(upx) > 0:  filt = iraf.Expand(upx)+"/*.par"
     return filt
示例#7
0
def _getDevice(displayname=None):
    """Get device object for this display"""
    if displayname is None:
        displayname = iraf.envget("stdimage")
    try:
        return _devices[displayname]
    except KeyError:
        pass

    # look up display info in graphcap
    try:
        device = gwm.gki.getGraphcap()[displayname]
        dd = device['DD'].split(',')
        if len(dd)>1 and dd[1] != '':
            imtdev = 'fifo:%si:%so' % (dd[1],dd[1])
        else:
            imtdev = None
        # multiple stdimage/graphcap entries can share the same device
        if not imtdev in _devices:
            _devices[imtdev] = irafdisplay.ImageDisplayProxy(imtdev)
        device = _devices[displayname] = _devices[imtdev]
        return device
    except (KeyError, IOError, OSError), error:
        pass
示例#8
0
def _getDevice(displayname=None):
    """Get device object for this display"""
    if displayname is None:
        displayname = iraf.envget("stdimage")
    try:
        return _devices[displayname]
    except KeyError:
        pass

    # look up display info in graphcap
    try:
        device = gwm.gki.getGraphcap()[displayname]
        dd = device['DD'].split(',')
        if len(dd) > 1 and dd[1] != '':
            imtdev = 'fifo:%si:%so' % (dd[1], dd[1])
        else:
            imtdev = None
        # multiple stdimage/graphcap entries can share the same device
        if not imtdev in _devices:
            _devices[imtdev] = irafdisplay.ImageDisplayProxy(imtdev)
        device = _devices[displayname] = _devices[imtdev]
        return device
    except (KeyError, IOError, OSError), error:
        pass
示例#9
0
    def __init__(self,  taskName):

        MODE_KEYS_EMACS = [ "esc"]

        MODE_KEYS_VI = ["esc", "tab",
                        "ctrl u", "ctrl U",
                        "ctrl t", "ctrl T"]

        TPAR_BINDINGS = {  # Page level bindings
                          "quit"   : self.QUIT,
                          "exit "  : self.EXIT,
                          "help"   : self.HELP,
                          "end" : self.MOVE_END,
                          "home" : self.MOVE_START,
                         }

        # Get the Iraftask object
        if isinstance(taskName, irafpar.IrafParList):
            # IrafParList acts as an IrafTask for our purposes
            self.taskObject = taskName
        else:
            # taskName must be a string or an IrafTask object
            self.taskObject = iraf.getTask(taskName)

        # Now go back and ensure we have the full taskname
        self.taskName = self.taskObject.getName()
        self.pkgName = self.taskObject.getPkgname()
        self.paramList = self.taskObject.getParList(docopy=1)

        # See if there exist any special versions on disk to load
        self.__areAnyToLoad = irafpar.haveSpecialVersions(self.taskName,
                              self.pkgName) # irafpar caches them

        # Ignore the last parameter which is $nargs
        self.numParams = len(self.paramList) - 1

        # Get default parameter values for unlearn
        self.get_default_param_list()
        self.make_entries()

        self.escape = False

        if URWID_PRE_9P9:
            self._createButtonsOld()
        else:
            self._createButtons()


        self.colon_edit = PyrafEdit("", "", wrap="clip", align="left", inform=self.inform)
        self.listitems = [urwid.Divider(" ")] + self.entryNo + \
                         [urwid.Divider(" "), self.colon_edit,
                          self.buttons]
        self.listbox = urwid.ListBox( self.listitems )

        self.listbox.set_focus(1)
        self.footer = urwid.Text("")
        self.header = TparHeader(self.pkgName, self.taskName)

        self.view = urwid.Frame(
                                self.listbox,
                                header=self.header,
                                footer=self.footer)

        self._editor = iraf.envget("editor")
        BINDINGS = {}
        BINDINGS.update(TPAR_BINDINGS)
        if self._editor == "vi":
            BINDINGS.update(TPAR_BINDINGS_VI)
            MODE_KEYS = MODE_KEYS_VI
        else:
            BINDINGS.update(TPAR_BINDINGS_EMACS)
            MODE_KEYS = MODE_KEYS_EMACS
        Binder.__init__(self, BINDINGS, self.inform, MODE_KEYS)
示例#10
0
文件: tpar.py 项目: rendinam/pyraf
    def __init__(self, taskName):

        MODE_KEYS_EMACS = ["esc"]

        MODE_KEYS_VI = ["esc", "tab", "ctrl u", "ctrl U", "ctrl t", "ctrl T"]

        TPAR_BINDINGS = {  # Page level bindings
                          "quit"   : self.QUIT,
                          "exit "  : self.EXIT,
                          "help"   : self.HELP,
                          "end" : self.MOVE_END,
                          "home" : self.MOVE_START,
                         }

        # Get the Iraftask object
        if isinstance(taskName, irafpar.IrafParList):
            # IrafParList acts as an IrafTask for our purposes
            self.taskObject = taskName
        else:
            # taskName must be a string or an IrafTask object
            self.taskObject = iraf.getTask(taskName)

        # Now go back and ensure we have the full taskname
        self.taskName = self.taskObject.getName()
        self.pkgName = self.taskObject.getPkgname()
        self.paramList = self.taskObject.getParList(docopy=1)

        # See if there exist any special versions on disk to load
        self.__areAnyToLoad = irafpar.haveSpecialVersions(
            self.taskName, self.pkgName)  # irafpar caches them

        # Ignore the last parameter which is $nargs
        self.numParams = len(self.paramList) - 1

        # Get default parameter values for unlearn
        self.get_default_param_list()
        self.make_entries()

        self.escape = False

        if URWID_PRE_9P9:
            self._createButtonsOld()
        else:
            self._createButtons()

        self.colon_edit = PyrafEdit("",
                                    "",
                                    wrap="clip",
                                    align="left",
                                    inform=self.inform)
        self.listitems = [urwid.Divider(" ")] + self.entryNo + \
                         [urwid.Divider(" "), self.colon_edit,
                          self.buttons]
        self.listbox = urwid.ListBox(self.listitems)

        self.listbox.set_focus(1)
        self.footer = urwid.Text("")
        self.header = TparHeader(self.pkgName, self.taskName)

        self.view = urwid.Frame(self.listbox,
                                header=self.header,
                                footer=self.footer)

        self._editor = iraf.envget("editor")
        BINDINGS = {}
        BINDINGS.update(TPAR_BINDINGS)
        if self._editor == "vi":
            BINDINGS.update(TPAR_BINDINGS_VI)
            MODE_KEYS = MODE_KEYS_VI
        else:
            BINDINGS.update(TPAR_BINDINGS_EMACS)
            MODE_KEYS = MODE_KEYS_EMACS
        Binder.__init__(self, BINDINGS, self.inform, MODE_KEYS)