Package reflectometry :: Package model1d :: Package profileview :: Module plotReflBase

Source Code for Module reflectometry.model1d.profileview.plotReflBase

  1  """ 
  2  A base panel to draw the profile 
  3  """ 
  4   
  5  import wx 
  6  import wx.aui 
  7   
  8  import matplotlib 
  9  from matplotlib.figure import Figure 
 10  from matplotlib.axes   import Subplot 
 11  from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas 
 12  from matplotlib.backends.backend_wxagg import FigureManager 
 13  from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg 
 14   
 15  from auiPanel import AuiPanel 
 16   
 17   
 18  # ------------------------------------------------------------------------ 
19 -class PlotReflBase(AuiPanel):
20
21 - def __init__( self, 22 parent, 23 size=wx.DefaultSize 24 ):
25 super(PlotReflBase, self).__init__(parent, id=-1, size=size ) 26 27 # This make sure we can communicate between different panels. 28 self.parent = parent 29 30 # Fig 31 self.fig = Figure( figsize = (1,1), 32 dpi = 75, 33 facecolor = 'white', 34 edgecolor = 'white', 35 ) 36 # Canvas 37 self.canvas = FigureCanvas(self, -1, self.fig) 38 self.fig.set_canvas(self.canvas) 39 self.fig.add_axes( Subplot(self.fig, 111) ) 40 41 # Axes 42 self.axes = self.fig.get_axes()[0] 43 44 # Create a figure manager to manage things 45 self.figmgr = FigureManager( self.canvas, 1, self ) 46 47 self.sizer = wx.BoxSizer( wx.VERTICAL ) 48 self.sizer.Add( self.canvas,1, border=2, flag= wx.LEFT|wx.TOP|wx.GROW) 49 self.SetSizer( self.sizer) 50 self.Fit() 51 52 # Binds some events 53 self.canvas.Bind( wx.EVT_LEFT_DCLICK, self.OnLeftDClick ) 54 self.canvas.Bind( wx.EVT_RIGHT_DOWN, self.OnPanelRightDown ) 55 56 # Show toolbar or not? 57 self.toolbar = NavigationToolbar2WxAgg( self.canvas ) 58 self.toolbar.Show(False) 59 60 # Some global variables 61 self.current_layer = None 62 self.modelName = None
63 64
65 - def onPrinterSetup(self,event=None):
66 self.canvas.Printer_Setup(event=event)
67
68 - def onPrinterPreview(self,event=None):
69 self.canvas.Printer_Preview(event=event)
70
71 - def onPrint(self,event=None):
72 self.canvas.Printer_Print(event=event)
73 74
75 - def OnSaveFigureMenu(self, evt ):
76 """ 77 Save the current figure as an image file 78 """ 79 dlg = wx.FileDialog(self, 80 message="Save Figure as ...", 81 defaultDir=os.getcwd(), 82 defaultFile="", 83 wildcard="PNG files (*.png)|*.png|BMP files (*.bmp)|*.bmp|All files (*.*)|*.*", 84 style=wx.SAVE 85 ) 86 87 _val = dlg.ShowModal() 88 if _val == wx.ID_CANCEL: return #Do nothing 89 if _val == wx.ID_OK: 90 outfile = dlg.GetPath() 91 92 dlg.Destroy() 93 94 # Save 95 self.fig.savefig( outfile )
96 97
98 - def onKeyEvent(self, evt=None):
99 """ 100 Capture, act upon keystroke events 101 """ 102 if evt == None: 103 return 104 105 key = evt.KeyCode 106 if (key < wx.WXK_SPACE or key > 255): 107 return 108 109 if (evt.ControlDown() and chr(key)=='B'): # Ctrl-B 110 self.OnCopyFigureMenu(evt)
111 112
113 - def update(self, n):
114 """ 115 Update current layer number 116 """ 117 self.current_layer = n
118 119
120 - def GetToolBar(self):
121 """ 122 backend_wx call this function. KEEP it 123 """ 124 return None
125 126
127 - def OnLeftDClick(self, evt):
128 """ 129 FIXME, Do some meaningful things here. 130 print 'Left double click from canvas 131 """ 132 pass
133 134
135 - def OnPanelRightDown(self, evt ):
136 """ 137 On touch the right mouse 138 """ 139 pass
140 141
142 - def OnPanelFrameClose(self, evt):
143 """ 144 On Close this Frame 145 """ 146 self.Destroy() 147 evt.Skip()
148 149
150 - def OnCopyFigureMenu(self, evt ):
151 """ 152 Copy the current figure 153 """ 154 try: 155 CopyImage(self.canvas) 156 except: 157 print "Error in copy Image"
158 159
160 - def GetPlotCanvas(self):
161 """ 162 Return the plotting canvas which can be used to draw legends, 163 show the grid lines, etc. 164 """ 165 return self.canvas
166 167
168 - def CanShowContextMenu(self):
169 return True
170 171
172 - def getVal4Pms(self, pv, pm):
173 exe = "pm.%s"%(pv) 174 try: 175 return float( eval(exe) ) 176 except: 177 return 0.0
178 179
180 - def GetModelName(self):
181 """ 182 Get model name 183 """ 184 return self.modelName
185 186
187 - def _setModel(self):
188 """ 189 Set model 190 """ 191 pass
192