; $Id: Julianday.pro,v 5.4 24/9/2001 $ ; ; (c) 2004 Javier G Corripio ; Javier.Corripio@ethz.ch ;+ ; NAME: ; ROUTINE_NAME ; ; PURPOSE: ; widget to compute julian day ; ; CATEGORY: ; calendar, widgets ; ; CALLING SEQUENCE: ; ; JULIANDAY ; ; INPUTS: ; Day, month, year from window interface (widget) ; ; ; OUTPUTS: ; Day of the year and Julian day ; ; NOTES: ; for more info click button info ; ; ; MODIFICATION HISTORY: ; Written by: Javier G. Corripio September, 2001 ; modified December, 2004 ; ;- PRO julianday_event,ev COMMON julianday_block, hourw,dayw,monthw,yearw,JDw,yearJDw widget_control, ev.id, get_uvalue=value if (n_elements(value) eq 0) then value = '' name= widget_info(ev.id,/uname) case (name) of "DONE":begin WIDGET_CONTROL, /destroy, ev.top end "INFO":begin cd,CURRENT=pwd XDISPLAYFILE, FILEPATH('infoJD.hlp',ROOT_DIR='D:\IDLlibrary\helpfiles'), $ GROUP = ev.top, TITLE = 'Julian Day calculation' end "COMPUTEJD": begin WIDGET_CONTROL, hourw, GET_VALUE = hourv WIDGET_CONTROL, dayw, GET_VALUE = dayv WIDGET_CONTROL, monthw, GET_VALUE = monthv WIDGET_CONTROL, yearw, GET_VALUE = yearv hour=FIX(hourv[0]) day=FIX(dayv[0]) month=FIX(monthv[0]) year=FIX(yearv[0]) TJD=JulDay(month,day,year,hour) JD=TJD-JulDay(1,1,year,12) + 1. WIDGET_CONTROL,JDw,SET_VALUE = JD WIDGET_CONTROL, yearJDw, GET_VALUE = yearv end "COMPUTECAL": begin WIDGET_CONTROL, JDw, GET_VALUE = jdv WIDGET_CONTROL, yearJDw, GET_VALUE = yearjdv jdv = jdv[0]-1. yearjdv = FIX(yearjdv[0]) truejdv = jdv + JULDAY(1,1,yearjdv,12) CALDAT, truejdv, monthv,dayv, yearv,hourv hourv = fix(hourv) dayv = fix(dayv) monthv = fix(monthv) yearv = fix(yearv) WIDGET_CONTROL, hourw, SET_VALUE = hourv WIDGET_CONTROL, dayw, SET_VALUE = dayv WIDGET_CONTROL, monthw, SET_VALUE = monthv WIDGET_CONTROL, yearw, SET_VALUE = yearv end ELSE: ENDCASE END pro julianday COMMON julianday_block today=BIN_DATE(SYSTIME()) thishour=FIX(today[3]) thisyear=FIX(today[0]) thisday=FIX(today[2]) thismonth=FIX(today[1]) TJD=JulDay(thismonth,thisday,thisyear,thishour) JD=TJD-JulDay(1,1,thisyear,12) + 1. JD = FLOAT(JD) ; just to homogenise num of decimal figures base = WIDGET_BASE(title='Compute Julian Day', /row) WIDGET_CONTROL, /MANAGED, base b1 = WIDGET_BASE(base, /frame, /column) a1 = WIDGET_BASE(b1, /row, /ALIGN_RIGHT) info = widget_button(a1, xsize=50,value = "Info",UNAME="INFO") hourw = cw_field(b1,xsize=15,ysize=1,value=thishour,$ title='Time: ',/integer,UNAME="COMPUTEJD",/RETURN_EVENTS) dayw = cw_field(b1,xsize=15,ysize=1,value=thisday,$ title='Day: ',/integer,UNAME="COMPUTEJD",/RETURN_EVENTS) a2 = WIDGET_BASE(b1, /row, /ALIGN_LEFT) monthw = cw_field(a2,xsize=15,ysize=1,value=thismonth,$ title='Month: ',/integer,UNAME="COMPUTEJD",/RETURN_EVENTS) label=widget_label(a2,value=" ") JDw = cw_field(a2,xsize=15,ysize=1,value=JD,$ title='Julian Day: ',/float,UNAME="COMPUTECAL",/RETURN_EVENTS) a3 = WIDGET_BASE(b1, /row, /ALIGN_LEFT) yearw = cw_field(a3,xsize=15,ysize=1,value=thisyear,$ title='Year: ',/integer) label=widget_label(a3,value=" ") yearJDw = cw_field(a3,xsize=15,ysize=1,value=thisyear,$ title='Year: ',/integer,UNAME="COMPUTECAL",/RETURN_EVENTS) a4 = WIDGET_BASE(b1, /row, /ALIGN_LEFT) compute = widget_button(a4, value = "Compute Julian Day", uvalue = "COMPUTEJD", $ UNAME="COMPUTEJD",FRAME=5, xsize=150,/ALIGN_LEFT) label=widget_label(a4,value=" ") compute = widget_button(a4, value = "Compute Calendar Day", uvalue = "COMPUTECAL", $ UNAME="COMPUTECAL",FRAME=5, xsize=150,/ALIGN_LEFT) label=widget_label(b1,value=" ") done = widget_button(b1, value = "DONE", uvalue = "DONE", $ UNAME="DONE",FRAME=5, xsize=150,/ALIGN_CENTER) widget_control, base, /realize XMANAGER, 'julianday', base, /NO_BLOCK END