; $Id: enterfunction.pro,v 1.1 2002/09/19 21:30:20 dimeo Exp $ ; ; ENTERFUNCTION.PRO ; ; This widget dialog allows the user to type in a fit expression, save it, ; and/or restore it. ; ; Written by R.M.Dimeo for OPAN__DEFINE.PRO ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; pro enterfunction_event,event widget_control,event.top,get_uvalue = pState widget_control,event.id,get_value = val case strupcase(val[0]) of 'ACCEPT': begin ;(*pState).out.accept = 1 (*pState).out.cancel = 0 widget_control,(*pState).expression,get_value = expr (*pState).out.expr = string(expr[0]) widget_control,event.top,/destroy end 'CANCEL': begin ;(*pState).out.accept = 0 (*pState).out.cancel = 1 (*pState).out.expr = '' widget_control,event.top,/destroy end 'SAVE EXPRESSION': $ begin widget_control,(*pState).expression,get_value = expr thisExpr = string(expr[0]) filename = DIALOG_PICKFILE(dialog_parent = event.top,$ title = 'Enter file name for your equation',$ /write,filter = '*.eq',$ path = (*pState).workDir) if filename eq '' or filename eq ' ' then return filename = filename + '.eq' openw,lun,filename,/get_lun printf,lun,thisExpr free_lun,lun end 'RESTORE EXPRESSION': $ begin filename = DIALOG_PICKFILE(dialog_parent = event.top,$ title = 'Select equation to restore',$ /read,filter = '*.eq',$ path = (*pState).workDir) if filename eq '' or filename eq ' ' then return thisExpr = '' openr,lun,filename,/get_lun readf,lun,thisExpr free_lun,lun widget_control,(*pState).expression,set_value = thisExpr end else: endcase return end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; function enterfunction,group_leader = group_leader,directory = directory if n_elements(group_leader) eq 0 then begin tlb = widget_base(/col,title = 'User function entry',/tlb_frame_attr) endif else begin tlb = widget_base(group_leader = group_leader, /col,/modal, $ title = 'User function entry',/tlb_frame_attr) endelse thisFont = "Comic Sans MS*22*Bold" expression = cw_field(tlb,title = 'e.g. p[0]+p[1]*x+p[2]*x^2', $ value = 'p[0]+p[1]*x+p[2]*x^2',/col,xsize = 50, $ fieldfont = thisFont,font = thisFont,ysize = 3) rowBase = widget_base(tlb,/row) void = widget_button(rowBase,value = 'Save Expression') void = widget_button(rowBase,value = 'Restore Expression') void = widget_button(rowBase,value = 'Accept') void = widget_button(rowBase,value = 'Cancel') widget_control,tlb,/realize out = {expr:'',cancel:1} state = {out:out,expression:expression,workDir:directory} pState = ptr_new(state,/no_copy) widget_control,tlb,set_uvalue = pState xmanager,'enterfunction',tlb out = (*pState).out ptr_free,pState return,out end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;