23 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
23 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
24 |
24 |
25 import wx |
25 import wx |
26 import wx.lib.plot as plot |
26 import wx.lib.plot as plot |
27 from graphics.GraphicCommons import DebugViewer |
27 from graphics.GraphicCommons import DebugViewer |
28 |
28 from controls import EditorPanel |
29 |
29 |
30 colours = ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'brown', 'cyan', |
30 colours = ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'brown', 'cyan', |
31 'pink', 'grey'] |
31 'pink', 'grey'] |
32 markers = ['circle', 'dot', 'square', 'triangle', 'triangle_down', 'cross', 'plus', 'circle'] |
32 markers = ['circle', 'dot', 'square', 'triangle', 'triangle_down', 'cross', 'plus', 'circle'] |
33 |
33 |
43 ID_GRAPHICVIEWERCANVASRANGE, ID_GRAPHICVIEWERCANVASPOSITION, |
43 ID_GRAPHICVIEWERCANVASRANGE, ID_GRAPHICVIEWERCANVASPOSITION, |
44 ID_GRAPHICVIEWERRESETBUTTON, ID_GRAPHICVIEWERCURRENTBUTTON, |
44 ID_GRAPHICVIEWERRESETBUTTON, ID_GRAPHICVIEWERCURRENTBUTTON, |
45 ID_GRAPHICVIEWERSTATICTEXT1, ID_GRAPHICVIEWERSTATICTEXT2, |
45 ID_GRAPHICVIEWERSTATICTEXT1, ID_GRAPHICVIEWERSTATICTEXT2, |
46 ] = [wx.NewId() for _init_ctrls in range(8)] |
46 ] = [wx.NewId() for _init_ctrls in range(8)] |
47 |
47 |
48 class GraphicViewer(wx.Panel, DebugViewer): |
48 class GraphicViewer(EditorPanel, DebugViewer): |
49 |
49 |
50 def _init_coll_MainGridSizer_Items(self, parent): |
50 def _init_coll_MainGridSizer_Items(self, parent): |
51 # generated method, don't edit |
51 # generated method, don't edit |
52 parent.AddWindow(self.Canvas, 0, border=0, flag=wx.GROW) |
52 parent.AddWindow(self.Canvas, 0, border=0, flag=wx.GROW) |
53 parent.AddSizer(self.RangeSizer, 0, border=0, flag=wx.GROW) |
53 parent.AddSizer(self.RangeSizer, 0, border=0, flag=wx.GROW) |
79 self._init_coll_MainGridSizer_Items(self.MainGridSizer) |
79 self._init_coll_MainGridSizer_Items(self.MainGridSizer) |
80 self._init_coll_MainGridSizer_Growables(self.MainGridSizer) |
80 self._init_coll_MainGridSizer_Growables(self.MainGridSizer) |
81 self._init_coll_RangeSizer_Items(self.RangeSizer) |
81 self._init_coll_RangeSizer_Items(self.RangeSizer) |
82 self._init_coll_RangeSizer_Growables(self.RangeSizer) |
82 self._init_coll_RangeSizer_Growables(self.RangeSizer) |
83 |
83 |
84 self.SetSizer(self.MainGridSizer) |
84 self.Editor.SetSizer(self.MainGridSizer) |
85 |
85 |
86 def _init_ctrls(self, prnt): |
86 def _init_Editor(self, prnt): |
87 wx.Panel.__init__(self, prnt, ID_GRAPHICVIEWER, wx.DefaultPosition, |
87 self.Editor = wx.Panel(prnt, ID_GRAPHICVIEWER, wx.DefaultPosition, |
88 wx.DefaultSize, 0) |
88 wx.DefaultSize, 0) |
89 |
89 |
90 self.Canvas = plot.PlotCanvas(id=ID_GRAPHICVIEWERCANVAS, |
90 self.Canvas = plot.PlotCanvas(id=ID_GRAPHICVIEWERCANVAS, |
91 name='Canvas', parent=self, pos=wx.Point(0, 0), |
91 name='Canvas', parent=self.Editor, pos=wx.Point(0, 0), |
92 size=wx.Size(0, 0), style=0) |
92 size=wx.Size(0, 0), style=0) |
93 def _axisInterval(spec, lower, upper): |
93 def _axisInterval(spec, lower, upper): |
94 if spec == 'border': |
94 if spec == 'border': |
95 if lower == upper: |
95 if lower == upper: |
96 return lower - 0.5, upper + 0.5 |
96 return lower - 0.5, upper + 0.5 |
101 return plot.PlotCanvas._axisInterval(self.Canvas, spec, lower, upper) |
101 return plot.PlotCanvas._axisInterval(self.Canvas, spec, lower, upper) |
102 self.Canvas._axisInterval = _axisInterval |
102 self.Canvas._axisInterval = _axisInterval |
103 self.Canvas.SetYSpec('border') |
103 self.Canvas.SetYSpec('border') |
104 |
104 |
105 self.staticbox1 = wx.StaticText(id=ID_GRAPHICVIEWERSTATICTEXT1, |
105 self.staticbox1 = wx.StaticText(id=ID_GRAPHICVIEWERSTATICTEXT1, |
106 label=_('Range:'), name='staticText1', parent=self, |
106 label=_('Range:'), name='staticText1', parent=self.Editor, |
107 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
107 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
108 |
108 |
109 self.CanvasRange = wx.ComboBox(id=ID_GRAPHICVIEWERCANVASRANGE, |
109 self.CanvasRange = wx.ComboBox(id=ID_GRAPHICVIEWERCANVASRANGE, |
110 name='CanvasRange', parent=self, pos=wx.Point(0, 0), |
110 name='CanvasRange', parent=self.Editor, pos=wx.Point(0, 0), |
111 size=wx.Size(100, 28), choices=RANGE_VALUES, style=0) |
111 size=wx.Size(100, 28), choices=RANGE_VALUES, style=0) |
112 self.CanvasRange.SetStringSelection("25") |
112 self.CanvasRange.SetStringSelection("25") |
113 self.Bind(wx.EVT_COMBOBOX, self.OnRangeChanged, id=ID_GRAPHICVIEWERCANVASRANGE) |
113 self.Bind(wx.EVT_COMBOBOX, self.OnRangeChanged, id=ID_GRAPHICVIEWERCANVASRANGE) |
114 self.Bind(wx.EVT_TEXT_ENTER, self.OnRangeChanged, id=ID_GRAPHICVIEWERCANVASRANGE) |
114 self.Bind(wx.EVT_TEXT_ENTER, self.OnRangeChanged, id=ID_GRAPHICVIEWERCANVASRANGE) |
115 |
115 |
116 self.staticText2 = wx.StaticText(id=ID_GRAPHICVIEWERSTATICTEXT2, |
116 self.staticText2 = wx.StaticText(id=ID_GRAPHICVIEWERSTATICTEXT2, |
117 label=_('Position:'), name='staticText2', parent=self, |
117 label=_('Position:'), name='staticText2', parent=self.Editor, |
118 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
118 pos=wx.Point(0, 0), size=wx.DefaultSize, style=0) |
119 |
119 |
120 self.CanvasPosition = wx.ScrollBar(id=ID_GRAPHICVIEWERCANVASPOSITION, |
120 self.CanvasPosition = wx.ScrollBar(id=ID_GRAPHICVIEWERCANVASPOSITION, |
121 name='Position', parent=self, pos=wx.Point(0, 0), |
121 name='Position', parent=self.Editor, pos=wx.Point(0, 0), |
122 size=wx.Size(0, 16), style=wx.SB_HORIZONTAL) |
122 size=wx.Size(0, 16), style=wx.SB_HORIZONTAL) |
123 self.CanvasPosition.SetScrollbar(0, 10, 100, 10) |
123 self.CanvasPosition.SetScrollbar(0, 10, 100, 10) |
124 self.CanvasPosition.Bind(wx.EVT_SCROLL_THUMBTRACK, self.OnPositionChanging, |
124 self.CanvasPosition.Bind(wx.EVT_SCROLL_THUMBTRACK, self.OnPositionChanging, |
125 id = ID_GRAPHICVIEWERCANVASPOSITION) |
125 id = ID_GRAPHICVIEWERCANVASPOSITION) |
126 self.CanvasPosition.Bind(wx.EVT_SCROLL_LINEUP, self.OnPositionChanging, |
126 self.CanvasPosition.Bind(wx.EVT_SCROLL_LINEUP, self.OnPositionChanging, |
131 id = ID_GRAPHICVIEWERCANVASPOSITION) |
131 id = ID_GRAPHICVIEWERCANVASPOSITION) |
132 self.CanvasPosition.Bind(wx.EVT_SCROLL_PAGEDOWN, self.OnPositionChanging, |
132 self.CanvasPosition.Bind(wx.EVT_SCROLL_PAGEDOWN, self.OnPositionChanging, |
133 id = ID_GRAPHICVIEWERCANVASPOSITION) |
133 id = ID_GRAPHICVIEWERCANVASPOSITION) |
134 |
134 |
135 self.ResetButton = wx.Button(id=ID_GRAPHICVIEWERRESETBUTTON, label='Reset', |
135 self.ResetButton = wx.Button(id=ID_GRAPHICVIEWERRESETBUTTON, label='Reset', |
136 name='ResetButton', parent=self, pos=wx.Point(0, 0), |
136 name='ResetButton', parent=self.Editor, pos=wx.Point(0, 0), |
137 size=wx.Size(72, 24), style=0) |
137 size=wx.Size(72, 24), style=0) |
138 self.Bind(wx.EVT_BUTTON, self.OnResetButton, id=ID_GRAPHICVIEWERRESETBUTTON) |
138 self.Bind(wx.EVT_BUTTON, self.OnResetButton, id=ID_GRAPHICVIEWERRESETBUTTON) |
139 |
139 |
140 self.CurrentButton = wx.Button(id=ID_GRAPHICVIEWERCURRENTBUTTON, label='Current', |
140 self.CurrentButton = wx.Button(id=ID_GRAPHICVIEWERCURRENTBUTTON, label='Current', |
141 name='CurrentButton', parent=self, pos=wx.Point(0, 0), |
141 name='CurrentButton', parent=self.Editor, pos=wx.Point(0, 0), |
142 size=wx.Size(72, 24), style=0) |
142 size=wx.Size(72, 24), style=0) |
143 self.Bind(wx.EVT_BUTTON, self.OnCurrentButton, id=ID_GRAPHICVIEWERCURRENTBUTTON) |
143 self.Bind(wx.EVT_BUTTON, self.OnCurrentButton, id=ID_GRAPHICVIEWERCURRENTBUTTON) |
144 |
144 |
145 self._init_sizers() |
145 self._init_sizers() |
146 |
146 |
147 def __init__(self, parent, window, producer, instancepath = ""): |
147 def __init__(self, parent, window, producer, instancepath = ""): |
148 self._init_ctrls(parent) |
148 EditorPanel.__init__(self, parent, "", window, None) |
149 DebugViewer.__init__(self, producer, True, False) |
149 DebugViewer.__init__(self, producer, True, False) |
150 |
150 |
151 self.ParentWindow = window |
|
152 self.InstancePath = instancepath |
151 self.InstancePath = instancepath |
153 |
152 |
154 self.Datas = [] |
153 self.Datas = [] |
155 self.CurrentValue = 0 |
154 self.CurrentValue = 0 |
156 self.CurrentRange = 25 |
155 self.CurrentRange = 25 |
190 end = 25. |
194 end = 25. |
191 self.Canvas.Draw(self.GraphicsObject, xAxis=(start, end)) |
195 self.Canvas.Draw(self.GraphicsObject, xAxis=(start, end)) |
192 self.RefreshScrollBar() |
196 self.RefreshScrollBar() |
193 self.Thaw() |
197 self.Thaw() |
194 |
198 |
195 def SetMode(self, mode): |
|
196 pass |
|
197 |
|
198 def GetTagName(self): |
|
199 return "" |
|
200 |
|
201 def GetInstancePath(self): |
199 def GetInstancePath(self): |
202 return self.InstancePath |
200 return self.InstancePath |
203 |
201 |
204 def IsViewing(self, tagname): |
202 def IsViewing(self, tagname): |
205 return self.InstancePath == tagname |
203 return self.InstancePath == tagname |
206 |
|
207 def ResetBuffer(self): |
|
208 pass |
|
209 |
|
210 def RefreshScaling(self, refresh=True): |
|
211 pass |
|
212 |
|
213 def SelectAll(self): |
|
214 pass |
|
215 |
|
216 def ClearErrors(self): |
|
217 pass |
|
218 |
204 |
219 def NewValue(self, tick, value, forced=False): |
205 def NewValue(self, tick, value, forced=False): |
220 self.Datas.append((float(tick), {True:1., False:0.}.get(value, float(value)))) |
206 self.Datas.append((float(tick), {True:1., False:0.}.get(value, float(value)))) |
221 if self.CurrentValue + self.CurrentRange == len(self.Datas) - 1: |
207 if self.CurrentValue + self.CurrentRange == len(self.Datas) - 1: |
222 self.CurrentValue += 1 |
208 self.CurrentValue += 1 |