--- 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