Content of Wave Reference Waves

Apologies if I missed an option in the documentation, but is there a way to view the content of wave reference waves, i.e. to see full paths of referenced waves in a table? 

If not, could this information maybe be stored as wave note?

You can grab the full path from the wave reference wave yourself as in

 

Function Dostuff()

	Make/FREE dataFree = p 
	Make/O dataPerm = p^2
	
	Make/O/WAVE container = {dataFree, dataPerm}
	
	Edit container.ld

	printf "Path %s\r", GetWavesDataFolder(container[0], 2)
	printf "Path %s\r", GetWavesDataFolder(container[1], 2)
End

which outputs

 

  Path 
  Path root:dataPerm

as only permanent waves have a datafolder where they reside in.

Try this:

Make jack, fred
Make/WAVE ww = {jack, fred}
Edit ww

Now choose Table->Show Column Info Tags.

Now hover the mouse over the two wave elements in the table. The column info tag shows the wave to which the element points.

Thanks Thomas and Howard!

I was looking for an option to quickly see the content based out of the data browser without dealing with commands. The last option kind of works for me but it's not as quick as I wished.

PS: Well, actually something like this works better


#if IgorVersion() >= 9
menu "DataBrowserObjectsPopup"
	"Show Wave References", /Q, ShowWRefWaves()
end

function ShowWRefWaves()
	string item = GetBrowserSelection(0)
	if (strlen(item) == 0)
		return 0
	endif
	
	wave/wave/z w=$item 
	if(wavetype(w, 1) != 4)
		print "Wrong wave/object type!"
		return -1
	endif

	variable i, nPts=numPnts(w)
	for(i=0; i<nPts(w); i++)
		print GetWavesDataFolder(w[i], 2)
	endfor
	return 1
end

 

PPS: "DataBrowserObjectsPopup" --> great feature!!

 

 

 

In reply to by ChrLie

If you want to make this a bit fancier, you can use this code:

#if IgorVersion() >= 9
Menu "DataBrowserObjectsPopup", dynamic
	// This menu item is displayed if a single wave reference wave is selected
	DisplayWaveRefMenuItemString(), /Q, DisplayWaveReferences()
End

// If only one wave reference wave is selected in the Data Browser
// object list, this function returns the selected wave
// via w1 and returns 1. Otherwise the function returns 0
// and the w1 parameter may be null.
static Function GetSelectedWaveRefWave(WAVE/Z &w1)
	if (strlen(GetBrowserSelection(-1)) == 0)
		return 0	// Data Browser is not open
	endif

	WAVE/Z w1 = $(GetBrowserSelection(0))	// May be null

	if (!WaveExists(w1) || strlen(GetBrowserSelection(1)) > 0)
		return 0		// Too few or too many waves selected
	endif

	if (WaveType(w1,1)!=4)
		return 0		// Wave is not a wave reference wave
	endif

	return 1
End

Function/S DisplayWaveRefMenuItemString()
	WAVE/Z w1, w2
	int oneWaveRefWaveSelected = GetSelectedWaveRefWave(w1)
	if (!oneWaveRefWaveSelected)
		return ""
	endif

	String menuText
	sprintf menuText, "Show Wave References"
	return menuText
End


Function DisplayWaveReferences()
	WAVE/Z w1
	int oneWaveRefWaveSelected = GetSelectedWaveRefWave(w1)
	if (oneWaveRefWaveSelected)
		WAVE/WAVE w1Ref = w1
		variable i, nPts=numPnts(w1Ref)
		for(i=0; i<nPts; i++)
			WAVE/Z thisWave = w1Ref[i]
			if (WaveExists(thisWave))
				print GetWavesDataFolder(thisWave, 2)
			else
				print "<null>"
			endif
		endfor
	endif
End
#endif		// IP9+

That will cause the "Show Wave References" contextual menu item to be hidden except when only one wave reference wave is selected.