;+ ; NAME: ; qEphem ; PURPOSE: ; Retrieves ephemeris information ; CATEGORY: ; Compound widget qImage_cw ; CALLING SEQUENCE: ; INPUTS: ; state array[1]; type: structure ; qImage_cw state structure ; event array[1]; type: structure ; event from state.wid_smei button ; OUTPUTS: ; Result scalar; type: byte ; 1B: display needs to be refreshed completely ; (by call to qImage_cw_Set_Value) ; 0B: display does not need to be redrawn ; CALLS: ; TimeGet, TimeUnit, TimeSystem ; PROCEDURE: ; MODIFICATION HISTORY: ; JUL-2005, Paul Hick (UCSD/CASS; pphick@ucsd.edu) ;- PRO qEphem_Event, event @compile_opt.pro ; On error, return to caller widget_control, event.top, get_uvalue=state, /no_copy kill = 0 send = 1 CASE event.id OF ; ID of widget that generated the message ; Intercepts WIDGET_KILL_REQUEST from top level widget event.top : kill = 1 state.wid_exit : kill = 1 state.wid_jpl : widget_control, state.wid_jpl , set_uvalue=event.select state.wid_usno : widget_control, state.wid_usno, set_uvalue=event.select state.wid_mpc : widget_control, state.wid_mpc , set_uvalue=event.select state.wid_star : widget_control, state.wid_star, set_uvalue=event.select state.wid_body : send = widget_info(state.wid_send, /valid) state.wid_time : send = widget_info(state.wid_send, /valid) state.wid_info : send = 0 state.wid_m_min : state.wid_m_max : state.wid_mark : BEGIN widget_control, state.wid_mark, get_value=mark, get_uvalue=mark_size mark = widget_info(state.wid_mark, /droplist_select) widget_control, state.wid_size, set_value=mark_size[mark] END state.wid_size : state.wid_center: ELSE : unexpected_event, event ENDCASE tmp = qEphem_State(state, event, send=send) CASE kill OF 0: widget_control, event.top, set_uvalue=state, /no_copy 1: widget_control, event.top, /destroy ENDCASE RETURN & END PRO qEphem, group=group, state=ephem_state, update=update, destroy=destroy @compile_opt.pro ; On error, return to caller InitVar, update , /key InitVar, destroy, /key qimage_cw_widget = IsType(ephem_state,/struct) IF qimage_cw_widget THEN qimage_cw_widget = tag_names(ephem_state,/structure) EQ 'QIMAGE_CW_EPHEM_STATE' CASE qimage_cw_widget OF 0: need_widget = 1 1: BEGIN wid_base = ephem_state.wid_base need_widget = 1-widget_info(wid_base, /valid) CASE need_widget OF 0: BEGIN IF destroy THEN BEGIN widget_control, wid_base, /destroy RETURN ENDIF END 1: IF update THEN RETURN ENDCASE END ENDCASE IF need_widget THEN BEGIN ; Create new widget state = {STATE_QEPHEMERIS,$ wid_exit : 0L , $ wid_info : 0L , $ wid_jpl : 0L , $ wid_usno : 0L , $ wid_mpc : 0L , $ wid_star : 0L , $ wid_m_min : 0L , $ wid_m_max : 0L , $ wid_body : 0L , $ wid_mark : 0L , $ wid_size : 0L , $ wid_time : 0L , $ wid_center : 0L , $ wid_send : -1L } IF qimage_cw_widget THEN state.wid_send = ephem_state.wid_send wid_base = widget_base(title='qEphem', /row, /tlb_kill_request_events) ;, frame=2) IF qimage_cw_widget THEN ephem_state.wid_base = wid_base root = filepath(root=getenv('SSW_SMEI_UCSD'),'image') state.wid_exit = widget_button(wid_base, value=filepath(root=root,'done.ico'), /bitmap) dummy = widget_base (wid_base, /row, /nonexclusive) state.wid_jpl = widget_button(dummy, value='JPL' , uvalue=0L) state.wid_usno = widget_button(dummy, value='USNO' , uvalue=0L) state.wid_mpc = widget_button(dummy, value='MPC' , uvalue=0L) state.wid_star = widget_button(dummy, value='Stars', uvalue=0L) state.wid_m_min = cw_field(wid_base, value=-2, /float, title='Mag', /row, xsize=4, /return_ev) state.wid_m_max = cw_field(wid_base, value= 1, /float, title='', /row, xsize=4, /return_ev) state.wid_body = cw_field(wid_base, value='', title='Body', /row, xsize=13, /return_ev) state.wid_mark = widget_droplist(wid_base, value=['Name','Box','Cross'], uvalue=[1,10,10]) state.wid_size = cw_field(wid_base, value=1, /float, title='', /row, xsize=4, /return_ev) dummy = TimeGet(TimeSystem(/silent),/ymd, upto=TimeUnit(/sec)) state.wid_time = cw_field(wid_base, value=dummy, title='Time', /row, xsize=20, return_ev=1-qimage_cw_widget) state.wid_center = widget_droplist(wid_base, value=['Earth','Sun','Coriolis']) state.wid_info = widget_button(wid_base, value=filepath(root=root,'info.ico'), /bitmap) widget_control, wid_base, set_uvalue=state, /no_copy widget_control, wid_base, /realize xmanager, 'qEphem', wid_base, event_handler='qEphem_Event', group=group, /no_block ENDIF IF qimage_cw_widget THEN BEGIN widget_control, wid_base, get_uvalue=state, /no_copy widget_control, state.wid_jpl , set_button=ephem_state.send.jpls , set_uvalue=ephem_state.send.jpls widget_control, state.wid_usno, set_button=ephem_state.send.usnos, set_uvalue=ephem_state.send.usnos widget_control, state.wid_mpc , set_button=ephem_state.send.mpcs , set_uvalue=ephem_state.send.mpcs widget_control, state.wid_star, set_button=ephem_state.send.stars, set_uvalue=ephem_state.send.stars widget_control, state.wid_m_min, set_value=ephem_state.send.m_min widget_control, state.wid_m_max, set_value=ephem_state.send.m_max widget_control, state.wid_time , set_value=TimeGet(ephem_state.send.time,/ymd,upto=TimeUnit(/sec)) widget_control, state.wid_body , set_value=ephem_state.send.body widget_control, state.wid_mark , get_value=list widget_control, state.wid_mark , set_droplist_select=(where(ephem_state.send.mark EQ list))[0] widget_control, state.wid_size , set_value=ephem_state.send.size widget_control, state.wid_center, get_value=list widget_control, state.wid_center, set_droplist_select=(where(ephem_state.send.center EQ list))[0] widget_control, wid_base, set_uvalue=state, /no_copy ENDIF RETURN & END