-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathaddPointDigitizer.jy
68 lines (50 loc) · 2.2 KB
/
addPointDigitizer.jy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# title: Add Point Digitizer
# label: Point Digitizer
# Click events are registered on the tab "digitizer." If the data is a spectrogram,
# report the Z value as well. Note this will not work with the pitch angle distribution.
# This also provides feedback showing the digitized data and the data points selected in the
# digitizer tab.
from org.das2.components import DataPointRecorder
from org.virbo.dataset import SemanticOps
from org.das2.dataset import DataSetUpdateListener
from org.das2.graph import SpectrogramRenderer
import java.util.HashMap
uri= dom.dataSourceFilters[0].uri
setLayoutOverplot(3)
plot(0,uri)
dpr= DataPointRecorder()
addTab( 'digitizer', dpr )
class MyUpdateListener( DataSetUpdateListener ):
def dataSetUpdated( self, e ):
ds= dpr.getDataPoints()
print ds
if ( ds!=None ):
plot( 2, ds[:,0], ds[:,1], color=Color.GRAY, symbolSize=8, lineStyle='none' )
else:
plot( 2, "" )
dpr.addDataSetUpdateListener( MyUpdateListener() )
class MySelectionListener(DataSetUpdateListener):
def dataSetUpdated(self,event):
ds= dpr.getSelectedDataPoints()
if ( ds!=None ):
plot( 1, ds[:,0], ds[:,1], color=Color.YELLOW, symbolSize=11, lineStyle='none' )
else:
plot( 1, "" )
dpr.addSelectedDataSetUpdateListener( MySelectionListener() )
pp= dom.plots[0].controller.dasPlot
from org.das2.event import DataPointSelectorMouseModule
from org.das2.event import CrossHairRenderer
dprr= CrossHairRenderer( pp,None,pp.getXAxis(),pp.getYAxis() )
mm= DataPointSelectorMouseModule( pp, None, dprr, 'digitizer' )
def dataPointSelected(event):
x= event.getX()
y= event.getY()
pes= dom.controller.getPlotElementsFor(dom.plots[0])
dpr.addDataPoint( x, y )
mm.dataPointSelected=dataPointSelected
pp.dasMouseInputAdapter.primaryModule= mm
# make sure the focus is on the 0th plot element. The 2nd will be the selected points and above that is the digitized.
dom.controller.plotElement= dom.plotElements[0]
import javax
javax.swing.JOptionPane.showMessageDialog( getViewWindow(),'Click on the plot, and it will be recorded on the digitizer tab')
dom.plots[0].yaxis.autoRange= False