source: sasview/plottools/examples/test_copy_print.py @ aac129aa

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since aac129aa was 82a54b8, checked in by Mathieu Doucet <doucetm@…>, 13 years ago

adding plottools Part 2

  • Property mode set to 100755
File size: 3.3 KB
Line 
1"""
2Test application that uses plottools
3
4An application required by the REFL group and mainly test copy and print.
5   
6The following is a checklist of functionality to look for while testing:
71- Start the application:
8   the graph should have theory curve, experimental data, chisq
9   with a white background.
10
112- Hovering over any plotted data will highlight the whole data set
12   or line in yellow.
13
143- Left-clicking on the graph and dragging will drag the graph.
15
164- Using the mouse wheel will zoom in and out of the graph.
17
185- Right-clicking on the graph when no curve is highlighted will
19   pop up the context menu:
20   - 'copy image':    copy the bitmap of figure to system clipboard
21   - 'print Setup':   setup the size of figure for printing
22   - 'print preview': preview printer page
23   - 'print':         send figure to system printer.
24
25"""
26
27import wx
28from danse.common.plottools.PlotPanel import PlotPanel
29from danse.common.plottools.plottables import Plottable, Graph, Data1D, Theory1D
30import  sys
31sys.platform = 'win95'
32import numpy
33
34
35class TestPlotPanel(PlotPanel):
36   
37    def __init__(self, parent, id = -1,
38                 color = None,
39                 dpi = None,
40                 **kwargs):
41        PlotPanel.__init__(self, parent, id=id, color=color,
42                           dpi=dpi, **kwargs)
43       
44        # Keep track of the parent Frame
45        self.parent = parent
46       
47        # Internal list of plottable names (because graph
48        # doesn't have a dictionary of handles for the plottables)
49        self.plots = {}
50       
51               
52    def onContextMenu(self, event):
53        """
54        Default context menu for a plot panel
55        """
56        wxID_Copy  = wx.NewId()
57        wxID_Print = wx.NewId()
58        wxID_PrintPreview = wx.NewId()
59        wxID_PrintSetup   = wx.NewId()
60
61        _menu = wx.Menu()
62        _menu.Append(wxID_Copy,'&Copy Image', 'Copy image to Clipboard')
63        wx.EVT_MENU(self, wxID_Copy, self.OnCopyFigureMenu)
64       
65        _menu.AppendSeparator()
66        _menu.Append(wxID_PrintSetup, '&Print setup')
67        wx.EVT_MENU(self, wxID_PrintSetup, self.onPrinterSetup)
68       
69        _menu.Append(wxID_PrintPreview, '&Print preview ')
70        wx.EVT_MENU(self, wxID_PrintPreview, self.onPrinterPreview)
71
72        _menu.Append(wxID_Print, '&Print ')
73        wx.EVT_MENU(self, wxID_Print, self.onPrint)
74 
75        pos = event.GetPosition()
76        pos = self.ScreenToClient(pos)
77        self.PopupMenu(_menu, pos)
78       
79
80# ---------------------------------------------------------------
81def sample_graph():
82    # Construct a simple graph
83    x = numpy.linspace(0,2.0, 50)
84    y = numpy.sin(2*numpy.pi*x*2.8)
85    dy = numpy.sqrt(100*numpy.abs(y))/100
86   
87    from danse.common.plottools.plottables import Data1D, Theory1D,  Graph
88   
89    data = Data1D(x,y,dy=dy)
90    data.xaxis('distance', 'm')
91    data.yaxis('time', 's')
92   
93    graph = Graph()
94   
95    graph.add(data)
96    graph.add( Theory1D(x,y,dy=dy))
97
98    graph.title( 'Test Copy and Print Image' )
99    return graph
100
101
102def demo_plotter(graph):
103    # Make a frame to show it
104    app     = wx.PySimpleApp()
105    frame   = wx.Frame(None,-1,'Plottables')
106    plotter = TestPlotPanel(frame)
107    frame.Show()
108
109    # render the graph to the pylab plotter
110    graph.render(plotter)
111   
112    app.MainLoop()
113
114   
115if __name__ == "__main__":
116    pass
117    demo_plotter(sample_graph())
118
119           
Note: See TracBrowser for help on using the repository browser.