PRO xwidump,base,text,id,level,no_text=no_text default,level,0 IF level EQ 0 THEN id = [base] $ ELSE id = [id,base] IF NOT widget_info(base,/valid_id) THEN BEGIN print,"Non-valid widget ID passed to XWIDUMP" return END do_text = NOT keyword_set(no_text) IF do_text THEN BEGIN IF level GT 0 THEN pretext = string(replicate(32b,level)) $ ELSE pretext = "" IF level EQ 0 THEN text = [pretext+xwidump_text(base)] $ ELSE text = [text,pretext+xwidump_text(base)] pretext = pretext+" " END next = widget_info(base,/child) WHILE widget_info(next,/valid_id) DO BEGIN IF widget_info(next,/child) ne 0 THEN $ xwidump,next,text,id,level+1,no_text=no_text $ ELSE BEGIN IF do_text THEN text = [text,pretext+xwidump_text(next)] id = [id,next] END next = widget_info(next,/sibling) END IF do_text THEN BEGIN IF n_params() EQ 1 THEN BEGIN print,text,format='(A)' END END END PRO xwidump_test base = widget_base(/column) su = widget_base(base,/row,uvalue='SU') su1 = widget_base(su,/column,uvalue='SU1') but = widget_button(su1,value='Button',uvalue='BUT') su2 = widget_base(su,/column,uvalue='SU2') ; 06-Jun-2018, Gelu added bitmap button test but2 = widget_button(su2,value=filepath('view.bmp', subdirectory=['resource', 'bitmaps']),uvalue='BUT2',/bitmap) widget_control,base,/realize xwidump,base END