diff -r 365bb7496697 -r 5f6a743dcde5 GraphicViewer.py --- a/GraphicViewer.py Mon Jun 11 01:30:03 2012 +0200 +++ b/GraphicViewer.py Thu Jun 14 18:13:32 2012 +0200 @@ -22,10 +22,13 @@ #License along with this library; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +import numpy +import math + import wx import wx.lib.plot as plot -import numpy -import math +import wx.lib.buttons + from graphics.GraphicCommons import DebugViewer, MODE_SELECTION, MODE_MOTION from controls import EditorPanel @@ -48,60 +51,16 @@ [("%dm" % i, i * MINUTE) for i in (1, 2, 5, 10, 20, 30)] + \ [("%dh" % i, i * HOUR) for i in (1, 2, 3, 6, 12, 24)] -[ID_GRAPHICVIEWER, ID_GRAPHICVIEWERCANVAS, - ID_GRAPHICVIEWERCANVASRANGE, ID_GRAPHICVIEWERCANVASZOOM, - ID_GRAPHICVIEWERCANVASPOSITION, ID_GRAPHICVIEWERRESETBUTTON, - ID_GRAPHICVIEWERCURRENTBUTTON, ID_GRAPHICVIEWERSTATICTEXT1, - ID_GRAPHICVIEWERSTATICTEXT2, ID_GRAPHICVIEWERSTATICTEXT3, -] = [wx.NewId() for _init_ctrls in range(10)] - class GraphicViewer(EditorPanel, DebugViewer): - def _init_coll_MainGridSizer_Items(self, parent): - # generated method, don't edit - parent.AddWindow(self.Canvas, 0, border=0, flag=wx.GROW) - parent.AddSizer(self.RangeSizer, 0, border=0, flag=wx.GROW) - - def _init_coll_MainGridSizer_Growables(self, parent): - # generated method, don't edit - parent.AddGrowableCol(0) - parent.AddGrowableRow(0) - - def _init_coll_RangeSizer_Items(self, parent): - # generated method, don't edit - parent.AddWindow(self.staticbox1, 0, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) - parent.AddWindow(self.CanvasRange, 0, border=5, flag=wx.ALL) - parent.AddWindow(self.staticbox3, 0, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) - parent.AddWindow(self.CanvasZoom, 0, border=5, flag=wx.ALL) - parent.AddWindow(self.staticText2, 0, border=5, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALL) - parent.AddWindow(self.CanvasPosition, 0, border=5, flag=wx.GROW|wx.ALL) - parent.AddWindow(self.ResetButton, 0, border=5, flag=wx.ALL) - parent.AddWindow(self.CurrentButton, 0, border=5, flag=wx.ALL) - - def _init_coll_RangeSizer_Growables(self, parent): - # generated method, don't edit - parent.AddGrowableCol(5) - parent.AddGrowableRow(0) - - def _init_sizers(self): - # generated method, don't edit - self.MainGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0) - self.RangeSizer = wx.FlexGridSizer(cols=8, hgap=0, rows=1, vgap=0) - - self._init_coll_MainGridSizer_Items(self.MainGridSizer) - self._init_coll_MainGridSizer_Growables(self.MainGridSizer) - self._init_coll_RangeSizer_Items(self.RangeSizer) - self._init_coll_RangeSizer_Growables(self.RangeSizer) - - self.Editor.SetSizer(self.MainGridSizer) - def _init_Editor(self, prnt): - self.Editor = wx.Panel(prnt, ID_GRAPHICVIEWER, wx.DefaultPosition, - wx.DefaultSize, 0) - - self.Canvas = plot.PlotCanvas(id=ID_GRAPHICVIEWERCANVAS, - name='Canvas', parent=self.Editor, pos=wx.Point(0, 0), - size=wx.Size(0, 0), style=0) + self.Editor = wx.Panel(prnt) + + main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0) + main_sizer.AddGrowableCol(0) + main_sizer.AddGrowableRow(0) + + self.Canvas = plot.PlotCanvas(self.Editor, name='Canvas') def _axisInterval(spec, lower, upper): if spec == 'border': if lower == upper: @@ -118,55 +77,63 @@ self.Canvas.canvas.Bind(wx.EVT_MOTION, self.OnCanvasMotion) self.Canvas.canvas.Bind(wx.EVT_MOUSEWHEEL, self.OnCanvasMouseWheel) self.Canvas.canvas.Bind(wx.EVT_SIZE, self.OnCanvasResize) - - self.staticbox1 = wx.StaticText(id=ID_GRAPHICVIEWERSTATICTEXT1, - label=_('Range:'), name='staticText1', parent=self.Editor, - pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) - - self.CanvasRange = wx.ComboBox(id=ID_GRAPHICVIEWERCANVASRANGE, - name='CanvasRange', parent=self.Editor, pos=wx.Point(0, 0), + main_sizer.AddWindow(self.Canvas, 0, border=0, flag=wx.GROW) + + range_sizer = wx.FlexGridSizer(cols=9, hgap=5, rows=1, vgap=0) + range_sizer.AddGrowableCol(5) + range_sizer.AddGrowableRow(0) + main_sizer.AddSizer(range_sizer, 0, border=5, flag=wx.GROW|wx.ALL) + + range_label = wx.StaticText(self.Editor, label=_('Range:')) + range_sizer.AddWindow(range_label, 0, border=0, flag=wx.ALIGN_CENTER_VERTICAL) + + self.CanvasRange = wx.ComboBox(self.Editor, size=wx.Size(100, 28), style=wx.CB_READONLY) - self.Bind(wx.EVT_COMBOBOX, self.OnRangeChanged, id=ID_GRAPHICVIEWERCANVASRANGE) - - self.staticbox3 = wx.StaticText(id=ID_GRAPHICVIEWERSTATICTEXT3, - label=_('Zoom:'), name='staticText3', parent=self.Editor, - pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) - - self.CanvasZoom = wx.ComboBox(id=ID_GRAPHICVIEWERCANVASZOOM, - name='CanvasZoom', parent=self.Editor, pos=wx.Point(0, 0), + self.Bind(wx.EVT_COMBOBOX, self.OnRangeChanged, self.CanvasRange) + range_sizer.AddWindow(self.CanvasRange, 0, border=0, flag=0) + + zoom_label = wx.StaticText(self.Editor, label=_('Zoom:')) + range_sizer.AddWindow(zoom_label, 0, border=0, flag=wx.ALIGN_CENTER_VERTICAL) + + self.CanvasZoom = wx.ComboBox(self.Editor, size=wx.Size(70, 28), style=wx.CB_READONLY) - self.Bind(wx.EVT_COMBOBOX, self.OnZoomChanged, id=ID_GRAPHICVIEWERCANVASZOOM) - - self.staticText2 = wx.StaticText(id=ID_GRAPHICVIEWERSTATICTEXT2, - label=_('Position:'), name='staticText2', parent=self.Editor, - pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) - - self.CanvasPosition = wx.ScrollBar(id=ID_GRAPHICVIEWERCANVASPOSITION, - name='Position', parent=self.Editor, pos=wx.Point(0, 0), + self.Bind(wx.EVT_COMBOBOX, self.OnZoomChanged, self.CanvasZoom) + range_sizer.AddWindow(self.CanvasZoom, 0, border=0, flag=0) + + position_label = wx.StaticText(self.Editor, label=_('Position:')) + range_sizer.AddWindow(position_label, 0, border=0, flag=wx.ALIGN_CENTER_VERTICAL) + + self.CanvasPosition = wx.ScrollBar(self.Editor, size=wx.Size(0, 16), style=wx.SB_HORIZONTAL) self.CanvasPosition.SetScrollbar(0, 10, 100, 10) - self.CanvasPosition.Bind(wx.EVT_SCROLL_THUMBTRACK, self.OnPositionChanging, - id = ID_GRAPHICVIEWERCANVASPOSITION) - self.CanvasPosition.Bind(wx.EVT_SCROLL_LINEUP, self.OnPositionChanging, - id = ID_GRAPHICVIEWERCANVASPOSITION) - self.CanvasPosition.Bind(wx.EVT_SCROLL_LINEDOWN, self.OnPositionChanging, - id = ID_GRAPHICVIEWERCANVASPOSITION) - self.CanvasPosition.Bind(wx.EVT_SCROLL_PAGEUP, self.OnPositionChanging, - id = ID_GRAPHICVIEWERCANVASPOSITION) - self.CanvasPosition.Bind(wx.EVT_SCROLL_PAGEDOWN, self.OnPositionChanging, - id = ID_GRAPHICVIEWERCANVASPOSITION) - - self.ResetButton = wx.Button(id=ID_GRAPHICVIEWERRESETBUTTON, label='Reset', - name='ResetButton', parent=self.Editor, pos=wx.Point(0, 0), - size=wx.Size(72, 24), style=0) - self.Bind(wx.EVT_BUTTON, self.OnResetButton, id=ID_GRAPHICVIEWERRESETBUTTON) - - self.CurrentButton = wx.Button(id=ID_GRAPHICVIEWERCURRENTBUTTON, label='Current', - name='CurrentButton', parent=self.Editor, pos=wx.Point(0, 0), - size=wx.Size(72, 24), style=0) - self.Bind(wx.EVT_BUTTON, self.OnCurrentButton, id=ID_GRAPHICVIEWERCURRENTBUTTON) - - self._init_sizers() + self.CanvasPosition.Bind(wx.EVT_SCROLL_THUMBTRACK, + self.OnPositionChanging, self.CanvasPosition) + self.CanvasPosition.Bind(wx.EVT_SCROLL_LINEUP, + self.OnPositionChanging, self.CanvasPosition) + self.CanvasPosition.Bind(wx.EVT_SCROLL_LINEDOWN, + self.OnPositionChanging, self.CanvasPosition) + self.CanvasPosition.Bind(wx.EVT_SCROLL_PAGEUP, + self.OnPositionChanging, self.CanvasPosition) + self.CanvasPosition.Bind(wx.EVT_SCROLL_PAGEDOWN, + self.OnPositionChanging, self.CanvasPosition) + range_sizer.AddWindow(self.CanvasPosition, 0, border=5, flag=wx.GROW|wx.ALL) + + self.ResetButton = wx.Button(self.Editor, label='Reset', size=wx.Size(72, 24)) + self.Bind(wx.EVT_BUTTON, self.OnResetButton, self.ResetButton) + range_sizer.AddWindow(self.ResetButton, 0, border=0, flag=0) + + self.CurrentButton = wx.Button(self.Editor, label='Current', size=wx.Size(72, 24)) + self.Bind(wx.EVT_BUTTON, self.OnCurrentButton, self.CurrentButton) + range_sizer.AddWindow(self.CurrentButton, 0, border=0, flag=0) + + self.ExportGraphButton = wx.lib.buttons.GenBitmapButton(self.Editor, + bitmap=self.ParentWindow.GenerateBitmap("export_graph"), + size=wx.Size(28, 28), style=wx.NO_BORDER) + self.Bind(wx.EVT_BUTTON, self.OnExportGraphButtonClick, + self.ExportGraphButton) + range_sizer.AddWindow(self.ExportGraphButton, 0, border=0, flag=0) + + self.Editor.SetSizer(main_sizer) def __init__(self, parent, window, producer, instancepath = ""): EditorPanel.__init__(self, parent, "", window, None) @@ -385,6 +352,14 @@ self.Fixed = False self.NewDataAvailable(True) event.Skip() + + def OnExportGraphButtonClick(self, event): + data_copy = self.Datas[:] + text = "tick;%s;\n" % self.InstancePath + for tick, value in data_copy: + text += "%d;%.3f;\n" % (tick, value) + self.ParentWindow.SetCopyBuffer(text) + event.Skip() def OnCanvasLeftDown(self, event): self.Fixed = True