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
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
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
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)
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]
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
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
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
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)
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)