pro tplot_names, datanames , time_range=times, names=names, verbose=verbose, $
sort=sortit, tsort=tsort, asort=asort, $
reverse=rev, create_time=create_time,all=all,current=current
;+
;PROCEDURE: tplot_names [, datanames ]
;PURPOSE:
; Lists current stored data names that can be plotted with the TPLOT routines.
;INPUT: (Optional) An string (or array of strings) to be displayed
; The strings may contain wildcard characters.
;Optional array of strings. Each string should be associated with a data
; quantity. (see the "store_data" and "get_data" routines)
;KEYWORDS:
; TIME_RANGE: Set this keyword to print out the time range for each quantity.
; CREATE_TIME: Set to print creation time.
; VERBOSE: Set this keyword to print out more info on the data structures
; NAMES: Named variable in which the array of valid data names is returned.
; ASORT: Set to sort by name.
; TSORT: Set to sort by creation time.
; CURRENT: Set to display only names in last call to tplot.
;EXAMPLE
; tplot_names,'*3dp*' ; display all names with '3dp' in the name
;CREATED BY: Davin Larson
;SEE ALSO: "TNAMES" "TPLOT"
;MODS: Accepts wildcards
;LAST MODIFICATION: @(#)tplot_names.pro 1.19 01/10/08
;-
@tplot_com.pro
if n_elements(data_quants) eq 0 then begin
print,"No data has been saved yet"
return
endif
; The following section could eventually be replaced by tnames()
names = tnames(datanames,nd,ind=ind,all=all,tplot=current)
if keyword_set(sortit) or keyword_set(asort) then begin
s = sort(names)
names = names[s]
ind = ind[s]
endif
if keyword_set(tsort) then begin
s = sort(data_quants[ind].create_time)
names = names[s]
ind = ind[s]
endif
if keyword_set(rev) then begin
names = reverse(names)
ind = reverse(ind)
endif
mx = max(strlen(names)) ;maximum number of characters in the set of names to be listed
column2_offset=strtrim((mx+6) > 10,2) ;sets the number of characters before the next column begins(for example if /time_range is set)
;if the current set of tplot names contains one long name, the /time_range column will be shifted over substantially.(an alternative fix to this problem would truncate strings to prevent the shift)
format1='($,i4," ",a,T' +column2_offset+'," ")'
format2='($," ",a," ",a)'
for k=0,nd-1 do begin
i=ind[k]
dq = data_quants[i]
tr = time_string(dq.trange)
n = dq.name
dc = dq.dtype
dp = dq.dh
ndp = n_elements(*dp)
print,i,n ,format=format1
if keyword_set(times) then print,tr[0],tr[1],format=format2
if keyword_set(create_time) then print,systime(0,dq.create_time),format='($," ",a)'
if dc eq 3 then for j=0,ndp-1 do print,(*dp)[j],format='($," ",a)'
print
if keyword_set(verbose) then begin
printdat,dq,level=' ' ;,'DQ'
; printdat,*dq.dl,level=' ','DLIMIT'
; printdat,*dq.lh,level=' ','LIMIT'
; printdat,*dq.dh,level=' ','DATA'
endif
endfor
end