Changeset d3d67f0 in sasview for src/sas/plottools/toolbar.py
- Timestamp:
- Jul 10, 2015 6:27:04 PM (9 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- a7aa5c7
- Parents:
- 098f3d2
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/plottools/toolbar.py
r1170492 rd3d67f0 31 31 def _init_toolbar(self): 32 32 self._parent = self.canvas.GetParent() 33 _NTB2_HOME = wx.NewId()33 self._NTB2_HOME = wx.NewId() 34 34 self._NTB2_BACK = wx.NewId() 35 35 self._NTB2_FORWARD = wx.NewId() 36 36 self._NTB2_PAN = wx.NewId() 37 37 self._NTB2_ZOOM = wx.NewId() 38 _NTB2_SAVE = wx.NewId()39 _NTB2_PRINT = wx.NewId()40 _NTB2_RESET = wx.NewId()38 self._NTB2_SAVE = wx.NewId() 39 self._NTB2_PRINT = wx.NewId() 40 self._NTB2_RESET = wx.NewId() 41 41 42 42 # for mpl 1.2+ compatibility … … 53 53 context_tip += ' right-click the data symbols.' 54 54 context = wx.ArtProvider.GetBitmap(wx.ART_LIST_VIEW, wx.ART_TOOLBAR) 55 self.AddSimpleTool( _NTB2_HOME, context, context_tip, context_tip)55 self.AddSimpleTool(self._NTB2_HOME, context, context_tip, context_tip) 56 56 57 57 self.InsertSeparator(1) … … 69 69 70 70 self.AddSeparator() 71 self.AddSimpleTool( _NTB2_SAVE, _load_bitmap('filesave.png'),71 self.AddSimpleTool(self._NTB2_SAVE, _load_bitmap('filesave.png'), 72 72 'Save', 'Save plot contents to file') 73 73 74 74 print_bmp = wx.ArtProvider.GetBitmap(wx.ART_PRINT, wx.ART_TOOLBAR) 75 self.AddSimpleTool( _NTB2_PRINT, print_bmp, 'Print', 'Print plot')75 self.AddSimpleTool(self._NTB2_PRINT, print_bmp, 'Print', 'Print plot') 76 76 77 77 reset_bmp = wx.ArtProvider.GetBitmap(wx.ART_GO_HOME, wx.ART_TOOLBAR) 78 self.AddSimpleTool( _NTB2_RESET, reset_bmp, 'Reset', 'Reset graph range')78 self.AddSimpleTool(self._NTB2_RESET, reset_bmp, 'Reset', 'Reset graph range') 79 79 80 bind(self, wx.EVT_TOOL, self. on_menu, id=_NTB2_HOME)80 bind(self, wx.EVT_TOOL, self.context_menu, id=self._NTB2_HOME) 81 81 bind(self, wx.EVT_TOOL, self.forward, id=self._NTB2_FORWARD) 82 82 bind(self, wx.EVT_TOOL, self.back, id=self._NTB2_BACK) 83 83 bind(self, wx.EVT_TOOL, self.zoom, id=self._NTB2_ZOOM) 84 84 bind(self, wx.EVT_TOOL, self.pan, id=self._NTB2_PAN) 85 bind(self, wx.EVT_TOOL, self.save_figure, id= _NTB2_SAVE)86 bind(self, wx.EVT_TOOL, self. on_print, id=_NTB2_PRINT)87 bind(self, wx.EVT_TOOL, self. on_reset, id=_NTB2_RESET)85 bind(self, wx.EVT_TOOL, self.save_figure, id=self._NTB2_SAVE) 86 bind(self, wx.EVT_TOOL, self.print_figure, id=self._NTB2_PRINT) 87 bind(self, wx.EVT_TOOL, self.home, id=self._NTB2_RESET) 88 88 89 89 self.Realize() 90 90 91 91 def on_menu(self, event): 92 """93 Plot menu94 """95 92 try: 96 93 self._parent.onToolContextMenu(event=event) … … 98 95 logging.error("Plot toolbar could not show menu") 99 96 100 def on_reset(self, event):97 def context_menu(self, event): 101 98 """ 102 Reset plot 99 Default context menu for a plot panel 100 103 101 """ 102 # Slicer plot popup menu 103 wx_id = wx.NewId() 104 popup = wx.Menu() 105 popup.Append(wx_id, '&Save image', 'Save image as PNG') 106 wx.EVT_MENU(self, wx_id, self.save_figure) 107 108 wx_id = wx.NewId() 109 popup.Append(wx_id, '&Print image', 'Print image ') 110 wx.EVT_MENU(self, wx_id, self.print_figure) 111 112 wx_id = wx.NewId() 113 popup.Append(wx_id, '&Copy to Clipboard', 'Copy image to the clipboard') 114 wx.EVT_MENU(self, wx_id, self.copy_figure) 115 116 # Show the popup menu relative to the location of the toolbar 117 self.PopupMenu(popup, (0,0)) 118 119 120 def print_figure(self, event): 104 121 try: 105 self._parent.onResetGraph(event=event) 122 _printer = wx.Printer() 123 _printer.Print(self.canvas, PlotPrintout(self.canvas), True) 106 124 except: 107 logging.error("Plot toolbar could not reset plot") 125 import traceback 126 logging.error(traceback.format_exc()) 108 127 109 def on_print(self, event): 128 def copy_figure(self, event): 129 copy_image_to_clipboard(self.canvas) 130 131 class PlotPrintout(wx.Printout): 132 """ 133 Create the wx.Printout object for matplotlib figure from the PlotPanel. 134 Provides the required OnPrintPage and HasPage overrides. Other methods 135 may be added/overriden in the future. 136 :TODO: this needs LOTS of TLC .. but fixes immediate problem 137 """ 138 def __init__(self, canvas): 110 139 """ 111 Print140 Initialize wx.Printout and get passed figure object 112 141 """ 113 try: 114 self._parent.onPrint(event=event) 115 except: 116 logging.error("Plot toolbar could not print") 142 wx.Printout.__init__(self) 143 self.canvas = canvas 144 145 def OnPrintPage(self, page): 146 """ 147 Most rudimentry OnPrintPage overide. instatiates a dc object, gets 148 its size, gets the size of the figure object, scales it to the dc 149 canvas size keeping the aspect ratio intact, then prints as bitmap 150 """ 151 _dc = self.GetDC() 152 (_dcX, _dcY) = _dc.GetSizeTuple() 153 (_bmpX,_bmpY) = self.canvas.GetSize() 154 _scale = min(_dcX/_bmpX, _dcY/_bmpY) 155 _dc.SetUserScale(_scale, _scale) 156 _dc.DrawBitmap(self.canvas.bitmap, 0, 0, False,) 157 return True 158 159 def GetPageInfo(self): 160 """ 161 just sets the page to 1 - no flexibility for now 162 """ 163 return (1, 1, 1, 1) 164 165 166 def copy_image_to_clipboard(canvas): 167 bmp = wx.BitmapDataObject() 168 bmp.SetBitmap(canvas.bitmap) 169 170 wx.TheClipboard.Open() 171 wx.TheClipboard.SetData(bmp) 172 wx.TheClipboard.Close() 173 174
Note: See TracChangeset
for help on using the changeset viewer.