author | Edouard Tisserant |
Wed, 02 Apr 2014 21:07:35 +0200 | |
changeset 1405 | 0b9cd761a356 |
parent 1394 | d11ca4dd5135 |
child 1431 | df59be5afb08 |
permissions | -rw-r--r-- |
814 | 1 |
#!/usr/bin/env python |
2 |
# -*- coding: utf-8 -*- |
|
3 |
||
4 |
#This file is part of PLCOpenEditor, a library implementing an IEC 61131-3 editor |
|
5 |
#based on the plcopen standard. |
|
6 |
# |
|
7 |
#Copyright (C) 2012: Edouard TISSERANT and Laurent BESSARD |
|
8 |
# |
|
9 |
#See COPYING file for copyrights details. |
|
10 |
# |
|
11 |
#This library is free software; you can redistribute it and/or |
|
12 |
#modify it under the terms of the GNU General Public |
|
13 |
#License as published by the Free Software Foundation; either |
|
14 |
#version 2.1 of the License, or (at your option) any later version. |
|
15 |
# |
|
16 |
#This library is distributed in the hope that it will be useful, |
|
17 |
#but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
18 |
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
19 |
#General Public License for more details. |
|
20 |
# |
|
21 |
#You should have received a copy of the GNU General Public |
|
22 |
#License along with this library; if not, write to the Free Software |
|
23 |
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
24 |
||
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
25 |
from types import TupleType |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
26 |
import math |
887
d3c6c4ab8b28
Adding support for displaying graphs of debugged numeric variables in 2D and 3D in DebugVariablePanel
Laurent Bessard
parents:
878
diff
changeset
|
27 |
import numpy |
814 | 28 |
|
29 |
import wx |
|
30 |
import wx.lib.buttons |
|
888
baf5dbfd28f4
Adding support for disabling 2D and 3D graphics in DebugVariablePanel when matplotlib is not installed
Laurent Bessard
parents:
887
diff
changeset
|
31 |
|
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
32 |
import matplotlib |
1394
d11ca4dd5135
Fix matplotlib exception when launching on XP
Edouard Tisserant
parents:
1365
diff
changeset
|
33 |
matplotlib.use('WX') |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
34 |
import matplotlib.pyplot |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
35 |
from matplotlib.backends.backend_wxagg import _convert_agg_to_wx_bitmap |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
36 |
|
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
37 |
from editors.DebugViewer import DebugViewer |
814 | 38 |
from util.BitmapLibrary import GetBitmap |
39 |
||
1199
fc0e7d80494f
Move GraphButton from DebugVariableGraphicPanel to separate file
Laurent Bessard
parents:
1198
diff
changeset
|
40 |
from DebugVariableItem import DebugVariableItem |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
41 |
from DebugVariableTextViewer import DebugVariableTextViewer |
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
42 |
from DebugVariableGraphicViewer import * |
1199
fc0e7d80494f
Move GraphButton from DebugVariableGraphicPanel to separate file
Laurent Bessard
parents:
1198
diff
changeset
|
43 |
|
1215 | 44 |
MILLISECOND = 1000000 # Number of nanosecond in a millisecond |
45 |
SECOND = 1000 * MILLISECOND # Number of nanosecond in a second |
|
46 |
MINUTE = 60 * SECOND # Number of nanosecond in a minute |
|
47 |
HOUR = 60 * MINUTE # Number of nanosecond in a hour |
|
48 |
DAY = 24 * HOUR # Number of nanosecond in a day |
|
49 |
||
50 |
# List of values possible for graph range |
|
51 |
# Format is [(time_in_plain_text, value_in_nanosecond),...] |
|
52 |
RANGE_VALUES = \ |
|
53 |
[("%dms" % i, i * MILLISECOND) for i in (10, 20, 50, 100, 200, 500)] + \ |
|
54 |
[("%ds" % i, i * SECOND) for i in (1, 2, 5, 10, 20, 30)] + \ |
|
55 |
[("%dm" % i, i * MINUTE) for i in (1, 2, 5, 10, 20, 30)] + \ |
|
56 |
[("%dh" % i, i * HOUR) for i in (1, 2, 3, 6, 12, 24)] |
|
57 |
||
58 |
# Scrollbar increment in pixel |
|
59 |
SCROLLBAR_UNIT = 10 |
|
60 |
||
61 |
def compute_mask(x, y): |
|
62 |
return [(xp if xp == yp else "*") |
|
63 |
for xp, yp in zip(x, y)] |
|
64 |
||
65 |
def NextTick(variables): |
|
66 |
next_tick = None |
|
67 |
for item, data in variables: |
|
68 |
if len(data) == 0: |
|
69 |
continue |
|
70 |
||
1231 | 71 |
next_tick = (data[0][0] |
72 |
if next_tick is None |
|
73 |
else min(next_tick, data[0][0])) |
|
1215 | 74 |
|
75 |
return next_tick |
|
76 |
||
77 |
#------------------------------------------------------------------------------- |
|
78 |
# Debug Variable Graphic Panel Drop Target |
|
79 |
#------------------------------------------------------------------------------- |
|
80 |
||
81 |
""" |
|
82 |
Class that implements a custom drop target class for Debug Variable Graphic |
|
83 |
Panel |
|
84 |
""" |
|
85 |
||
814 | 86 |
class DebugVariableDropTarget(wx.TextDropTarget): |
87 |
||
1215 | 88 |
def __init__(self, window): |
89 |
""" |
|
90 |
Constructor |
|
91 |
@param window: Reference to the Debug Variable Panel |
|
92 |
""" |
|
814 | 93 |
wx.TextDropTarget.__init__(self) |
1215 | 94 |
self.ParentWindow = window |
814 | 95 |
|
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
96 |
def __del__(self): |
1215 | 97 |
""" |
98 |
Destructor |
|
99 |
""" |
|
100 |
# Remove reference to Debug Variable Panel |
|
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
101 |
self.ParentWindow = None |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
102 |
|
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
103 |
def OnDragOver(self, x, y, d): |
1215 | 104 |
""" |
105 |
Function called when mouse is dragged over Drop Target |
|
106 |
@param x: X coordinate of mouse pointer |
|
107 |
@param y: Y coordinate of mouse pointer |
|
108 |
@param d: Suggested default for return value |
|
109 |
""" |
|
110 |
# Signal Debug Variable Panel to refresh highlight giving mouse position |
|
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
111 |
self.ParentWindow.RefreshHighlight(x, y) |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
112 |
return wx.TextDropTarget.OnDragOver(self, x, y, d) |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
113 |
|
814 | 114 |
def OnDropText(self, x, y, data): |
1215 | 115 |
""" |
116 |
Function called when mouse is released in Drop Target |
|
117 |
@param x: X coordinate of mouse pointer |
|
118 |
@param y: Y coordinate of mouse pointer |
|
119 |
@param data: Text associated to drag'n drop |
|
120 |
""" |
|
1218 | 121 |
# Signal Debug Variable Panel to reset highlight |
122 |
self.ParentWindow.ResetHighlight() |
|
123 |
||
814 | 124 |
message = None |
1215 | 125 |
|
126 |
# Check that data is valid regarding DebugVariablePanel |
|
814 | 127 |
try: |
128 |
values = eval(data) |
|
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
129 |
if not isinstance(values, TupleType): |
1207 | 130 |
raise ValueError |
814 | 131 |
except: |
132 |
message = _("Invalid value \"%s\" for debug variable")%data |
|
133 |
values = None |
|
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
134 |
|
1215 | 135 |
# Display message if data is invalid |
814 | 136 |
if message is not None: |
137 |
wx.CallAfter(self.ShowMessage, message) |
|
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
138 |
|
1215 | 139 |
# Data contain a reference to a variable to debug |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
140 |
elif values[1] == "debug": |
1215 | 141 |
|
142 |
# Drag'n Drop is an internal is an internal move inside Debug |
|
143 |
# Variable Panel |
|
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
144 |
if len(values) > 2 and values[2] == "move": |
945
c1159acb0886
Added support for drag'n dropping non-numeric variables
Laurent Bessard
parents:
943
diff
changeset
|
145 |
self.ParentWindow.MoveValue(values[0]) |
1215 | 146 |
|
147 |
# Drag'n Drop was initiated by another control of Beremiz |
|
945
c1159acb0886
Added support for drag'n dropping non-numeric variables
Laurent Bessard
parents:
943
diff
changeset
|
148 |
else: |
c1159acb0886
Added support for drag'n dropping non-numeric variables
Laurent Bessard
parents:
943
diff
changeset
|
149 |
self.ParentWindow.InsertValue(values[0], force=True) |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
150 |
|
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
151 |
def OnLeave(self): |
1215 | 152 |
""" |
153 |
Function called when mouse is leave Drop Target |
|
154 |
""" |
|
155 |
# Signal Debug Variable Panel to reset highlight |
|
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
156 |
self.ParentWindow.ResetHighlight() |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
157 |
return wx.TextDropTarget.OnLeave(self) |
934
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
158 |
|
814 | 159 |
def ShowMessage(self, message): |
1215 | 160 |
""" |
161 |
Show error message in Error Dialog |
|
162 |
@param message: Error message to display |
|
163 |
""" |
|
1227
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
164 |
dialog = wx.MessageDialog(self.ParentWindow, |
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
165 |
message, |
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
166 |
_("Error"), |
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
167 |
wx.OK|wx.ICON_ERROR) |
814 | 168 |
dialog.ShowModal() |
169 |
dialog.Destroy() |
|
170 |
||
1215 | 171 |
|
172 |
#------------------------------------------------------------------------------- |
|
173 |
# Debug Variable Graphic Panel Class |
|
174 |
#------------------------------------------------------------------------------- |
|
175 |
||
176 |
""" |
|
177 |
Class that implements a Viewer that display variable values as a graphs |
|
178 |
""" |
|
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
179 |
|
1364
e9e17d3b2849
Remove old debug panels and viewers not using matplotlib
Laurent Bessard
parents:
1363
diff
changeset
|
180 |
class DebugVariablePanel(wx.Panel, DebugViewer): |
814 | 181 |
|
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
182 |
def __init__(self, parent, producer, window): |
1215 | 183 |
""" |
184 |
Constructor |
|
185 |
@param parent: Reference to the parent wx.Window |
|
186 |
@param producer: Object receiving debug value and dispatching them to |
|
187 |
consumers |
|
188 |
@param window: Reference to Beremiz frame |
|
189 |
""" |
|
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
190 |
wx.Panel.__init__(self, parent, style=wx.SP_3D|wx.TAB_TRAVERSAL) |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
191 |
|
1215 | 192 |
# Save Reference to Beremiz frame |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
193 |
self.ParentWindow = window |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
194 |
|
1215 | 195 |
# Variable storing flag indicating that variable displayed in table |
196 |
# received new value and then table need to be refreshed |
|
814 | 197 |
self.HasNewData = False |
1215 | 198 |
|
199 |
# Variable storing flag indicating that refresh has been forced, and |
|
200 |
# that next time refresh is possible, it will be done even if no new |
|
201 |
# data is available |
|
1008
1e5d285864f6
Fixed bugs in DebugVariablePanel when matplotlib not installed
Laurent Bessard
parents:
988
diff
changeset
|
202 |
self.Force = False |
887
d3c6c4ab8b28
Adding support for displaying graphs of debugged numeric variables in 2D and 3D in DebugVariablePanel
Laurent Bessard
parents:
878
diff
changeset
|
203 |
|
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
204 |
self.SetBackgroundColour(wx.WHITE) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
205 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
206 |
main_sizer = wx.BoxSizer(wx.VERTICAL) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
207 |
|
1215 | 208 |
self.Ticks = numpy.array([]) # List of tick received |
209 |
self.StartTick = 0 # Tick starting range of data displayed |
|
210 |
self.Fixed = False # Flag that range of data is fixed |
|
211 |
self.CursorTick = None # Tick of cursor for displaying values |
|
212 |
||
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
213 |
self.DraggingAxesPanel = None |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
214 |
self.DraggingAxesBoundingBox = None |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
215 |
self.DraggingAxesMousePos = None |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
216 |
self.VetoScrollEvent = False |
1215 | 217 |
|
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
218 |
self.VariableNameMask = [] |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
219 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
220 |
self.GraphicPanels = [] |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
221 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
222 |
graphics_button_sizer = wx.BoxSizer(wx.HORIZONTAL) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
223 |
main_sizer.AddSizer(graphics_button_sizer, border=5, flag=wx.GROW|wx.ALL) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
224 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
225 |
range_label = wx.StaticText(self, label=_('Range:')) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
226 |
graphics_button_sizer.AddWindow(range_label, flag=wx.ALIGN_CENTER_VERTICAL) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
227 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
228 |
self.CanvasRange = wx.ComboBox(self, style=wx.CB_READONLY) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
229 |
self.Bind(wx.EVT_COMBOBOX, self.OnRangeChanged, self.CanvasRange) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
230 |
graphics_button_sizer.AddWindow(self.CanvasRange, 1, |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
231 |
border=5, flag=wx.LEFT|wx.ALIGN_CENTER_VERTICAL) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
232 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
233 |
self.CanvasRange.Clear() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
234 |
default_range_idx = 0 |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
235 |
for idx, (text, value) in enumerate(RANGE_VALUES): |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
236 |
self.CanvasRange.Append(text) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
237 |
if text == "1s": |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
238 |
default_range_idx = idx |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
239 |
self.CanvasRange.SetSelection(default_range_idx) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
240 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
241 |
for name, bitmap, help in [ |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
242 |
("CurrentButton", "current", _("Go to current value")), |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
243 |
("ExportGraphButton", "export_graph", _("Export graph values to clipboard"))]: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
244 |
button = wx.lib.buttons.GenBitmapButton(self, |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
245 |
bitmap=GetBitmap(bitmap), |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
246 |
size=wx.Size(28, 28), style=wx.NO_BORDER) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
247 |
button.SetToolTipString(help) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
248 |
setattr(self, name, button) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
249 |
self.Bind(wx.EVT_BUTTON, getattr(self, "On" + name), button) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
250 |
graphics_button_sizer.AddWindow(button, border=5, flag=wx.LEFT) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
251 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
252 |
self.CanvasPosition = wx.ScrollBar(self, |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
253 |
size=wx.Size(0, 16), style=wx.SB_HORIZONTAL) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
254 |
self.CanvasPosition.Bind(wx.EVT_SCROLL_THUMBTRACK, |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
255 |
self.OnPositionChanging, self.CanvasPosition) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
256 |
self.CanvasPosition.Bind(wx.EVT_SCROLL_LINEUP, |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
257 |
self.OnPositionChanging, self.CanvasPosition) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
258 |
self.CanvasPosition.Bind(wx.EVT_SCROLL_LINEDOWN, |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
259 |
self.OnPositionChanging, self.CanvasPosition) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
260 |
self.CanvasPosition.Bind(wx.EVT_SCROLL_PAGEUP, |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
261 |
self.OnPositionChanging, self.CanvasPosition) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
262 |
self.CanvasPosition.Bind(wx.EVT_SCROLL_PAGEDOWN, |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
263 |
self.OnPositionChanging, self.CanvasPosition) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
264 |
main_sizer.AddWindow(self.CanvasPosition, border=5, flag=wx.GROW|wx.LEFT|wx.RIGHT|wx.BOTTOM) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
265 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
266 |
self.TickSizer = wx.BoxSizer(wx.HORIZONTAL) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
267 |
main_sizer.AddSizer(self.TickSizer, border=5, flag=wx.ALL|wx.GROW) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
268 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
269 |
self.TickLabel = wx.StaticText(self) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
270 |
self.TickSizer.AddWindow(self.TickLabel, border=5, flag=wx.RIGHT) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
271 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
272 |
self.MaskLabel = wx.TextCtrl(self, style=wx.TE_READONLY|wx.TE_CENTER|wx.NO_BORDER) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
273 |
self.TickSizer.AddWindow(self.MaskLabel, 1, border=5, flag=wx.RIGHT|wx.GROW) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
274 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
275 |
self.TickTimeLabel = wx.StaticText(self) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
276 |
self.TickSizer.AddWindow(self.TickTimeLabel) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
277 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
278 |
self.GraphicsWindow = wx.ScrolledWindow(self, style=wx.HSCROLL|wx.VSCROLL) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
279 |
self.GraphicsWindow.SetBackgroundColour(wx.WHITE) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
280 |
self.GraphicsWindow.SetDropTarget(DebugVariableDropTarget(self)) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
281 |
self.GraphicsWindow.Bind(wx.EVT_ERASE_BACKGROUND, self.OnGraphicsWindowEraseBackground) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
282 |
self.GraphicsWindow.Bind(wx.EVT_PAINT, self.OnGraphicsWindowPaint) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
283 |
self.GraphicsWindow.Bind(wx.EVT_SIZE, self.OnGraphicsWindowResize) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
284 |
self.GraphicsWindow.Bind(wx.EVT_MOUSEWHEEL, self.OnGraphicsWindowMouseWheel) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
285 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
286 |
main_sizer.AddWindow(self.GraphicsWindow, 1, flag=wx.GROW) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
287 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
288 |
self.GraphicsSizer = wx.BoxSizer(wx.VERTICAL) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
289 |
self.GraphicsWindow.SetSizer(self.GraphicsSizer) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
290 |
|
1192
d8783c0c7d80
Fixed bugs in DebugVariablePanel with ticktime modifications
Laurent Bessard
parents:
1191
diff
changeset
|
291 |
DebugViewer.__init__(self, producer, True) |
d8783c0c7d80
Fixed bugs in DebugVariablePanel with ticktime modifications
Laurent Bessard
parents:
1191
diff
changeset
|
292 |
|
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
293 |
self.SetSizer(main_sizer) |
1192
d8783c0c7d80
Fixed bugs in DebugVariablePanel with ticktime modifications
Laurent Bessard
parents:
1191
diff
changeset
|
294 |
|
d8783c0c7d80
Fixed bugs in DebugVariablePanel with ticktime modifications
Laurent Bessard
parents:
1191
diff
changeset
|
295 |
def SetTickTime(self, ticktime=0): |
1215 | 296 |
""" |
297 |
Set Ticktime for calculate data range according to time range selected |
|
298 |
@param ticktime: Ticktime to apply to range (default: 0) |
|
299 |
""" |
|
300 |
# Save ticktime |
|
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
301 |
self.Ticktime = ticktime |
1215 | 302 |
|
303 |
# Set ticktime to millisecond if undefined |
|
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
304 |
if self.Ticktime == 0: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
305 |
self.Ticktime = MILLISECOND |
1215 | 306 |
|
307 |
# Calculate range to apply to data |
|
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
308 |
self.CurrentRange = RANGE_VALUES[ |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
309 |
self.CanvasRange.GetSelection()][1] / self.Ticktime |
1192
d8783c0c7d80
Fixed bugs in DebugVariablePanel with ticktime modifications
Laurent Bessard
parents:
1191
diff
changeset
|
310 |
|
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
311 |
def SetDataProducer(self, producer): |
1215 | 312 |
""" |
313 |
Set Data Producer |
|
314 |
@param producer: Data Producer |
|
315 |
""" |
|
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
316 |
DebugViewer.SetDataProducer(self, producer) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
317 |
|
1215 | 318 |
# Set ticktime if data producer is available |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
319 |
if self.DataProducer is not None: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
320 |
self.SetTickTime(self.DataProducer.GetTicktime()) |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
321 |
|
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
322 |
def RefreshNewData(self, *args, **kwargs): |
1215 | 323 |
""" |
324 |
Called to refresh Panel according to values received by variables |
|
325 |
Can receive any parameters (not used here) |
|
326 |
""" |
|
327 |
# Refresh graphs if new data is available or refresh is forced |
|
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
328 |
if self.HasNewData or self.Force: |
814 | 329 |
self.HasNewData = False |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
330 |
self.RefreshView() |
1215 | 331 |
|
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
332 |
DebugViewer.RefreshNewData(self, *args, **kwargs) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
333 |
|
1363
e87e0166d0a7
Added new debug process separating non-wx thread extracting debug values from connector and 10 Hz wx timer refreshing Beremiz debug Viewers and communicating throw double-buffering, to avoid segmentation faults and optimize CPU usage
Laurent Bessard
parents:
1362
diff
changeset
|
334 |
def NewDataAvailable(self, ticks, *args, **kwargs): |
1215 | 335 |
""" |
336 |
Called by DataProducer for each tick captured or by panel to refresh |
|
337 |
graphs |
|
338 |
@param tick: PLC tick captured |
|
339 |
All other parameters are passed to refresh function |
|
340 |
""" |
|
341 |
# If tick given |
|
1363
e87e0166d0a7
Added new debug process separating non-wx thread extracting debug values from connector and 10 Hz wx timer refreshing Beremiz debug Viewers and communicating throw double-buffering, to avoid segmentation faults and optimize CPU usage
Laurent Bessard
parents:
1362
diff
changeset
|
342 |
if ticks is not None: |
e87e0166d0a7
Added new debug process separating non-wx thread extracting debug values from connector and 10 Hz wx timer refreshing Beremiz debug Viewers and communicating throw double-buffering, to avoid segmentation faults and optimize CPU usage
Laurent Bessard
parents:
1362
diff
changeset
|
343 |
tick = ticks[-1] |
1215 | 344 |
|
345 |
# Save tick as start tick for range if data is still empty |
|
927 | 346 |
if len(self.Ticks) == 0: |
1363
e87e0166d0a7
Added new debug process separating non-wx thread extracting debug values from connector and 10 Hz wx timer refreshing Beremiz debug Viewers and communicating throw double-buffering, to avoid segmentation faults and optimize CPU usage
Laurent Bessard
parents:
1362
diff
changeset
|
347 |
self.StartTick = ticks[0] |
1215 | 348 |
|
349 |
# Add tick to list of ticks received |
|
1363
e87e0166d0a7
Added new debug process separating non-wx thread extracting debug values from connector and 10 Hz wx timer refreshing Beremiz debug Viewers and communicating throw double-buffering, to avoid segmentation faults and optimize CPU usage
Laurent Bessard
parents:
1362
diff
changeset
|
350 |
self.Ticks = numpy.append(self.Ticks, ticks) |
1215 | 351 |
|
352 |
# Update start tick for range if range follow ticks received |
|
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
353 |
if not self.Fixed or tick < self.StartTick + self.CurrentRange: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
354 |
self.StartTick = max(self.StartTick, tick - self.CurrentRange) |
1215 | 355 |
|
356 |
# Force refresh if graph is fixed because range of data received |
|
357 |
# is too small to fill data range selected |
|
358 |
if self.Fixed and \ |
|
359 |
self.Ticks[-1] - self.Ticks[0] < self.CurrentRange: |
|
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
360 |
self.Force = True |
1363
e87e0166d0a7
Added new debug process separating non-wx thread extracting debug values from connector and 10 Hz wx timer refreshing Beremiz debug Viewers and communicating throw double-buffering, to avoid segmentation faults and optimize CPU usage
Laurent Bessard
parents:
1362
diff
changeset
|
361 |
|
e87e0166d0a7
Added new debug process separating non-wx thread extracting debug values from connector and 10 Hz wx timer refreshing Beremiz debug Viewers and communicating throw double-buffering, to avoid segmentation faults and optimize CPU usage
Laurent Bessard
parents:
1362
diff
changeset
|
362 |
self.HasNewData = False |
e87e0166d0a7
Added new debug process separating non-wx thread extracting debug values from connector and 10 Hz wx timer refreshing Beremiz debug Viewers and communicating throw double-buffering, to avoid segmentation faults and optimize CPU usage
Laurent Bessard
parents:
1362
diff
changeset
|
363 |
self.RefreshView() |
e87e0166d0a7
Added new debug process separating non-wx thread extracting debug values from connector and 10 Hz wx timer refreshing Beremiz debug Viewers and communicating throw double-buffering, to avoid segmentation faults and optimize CPU usage
Laurent Bessard
parents:
1362
diff
changeset
|
364 |
|
e87e0166d0a7
Added new debug process separating non-wx thread extracting debug values from connector and 10 Hz wx timer refreshing Beremiz debug Viewers and communicating throw double-buffering, to avoid segmentation faults and optimize CPU usage
Laurent Bessard
parents:
1362
diff
changeset
|
365 |
else: |
e87e0166d0a7
Added new debug process separating non-wx thread extracting debug values from connector and 10 Hz wx timer refreshing Beremiz debug Viewers and communicating throw double-buffering, to avoid segmentation faults and optimize CPU usage
Laurent Bessard
parents:
1362
diff
changeset
|
366 |
DebugViewer.NewDataAvailable(self, ticks, *args, **kwargs) |
814 | 367 |
|
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
368 |
def ForceRefresh(self): |
1215 | 369 |
""" |
370 |
Called to force refresh of graphs |
|
371 |
""" |
|
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
372 |
self.Force = True |
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
373 |
wx.CallAfter(self.NewDataAvailable, None, True) |
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
374 |
|
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
375 |
def SetCursorTick(self, cursor_tick): |
1227
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
376 |
""" |
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
377 |
Set Cursor for displaying values of items at a tick given |
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
378 |
@param cursor_tick: Tick of cursor |
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
379 |
""" |
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
380 |
# Save cursor tick |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
381 |
self.CursorTick = cursor_tick |
1209 | 382 |
self.Fixed = cursor_tick is not None |
1084
baa09a1c7b15
Fixed bug in DebugVariablePanel, cursor not reset when graphs were reset
Laurent Bessard
parents:
1044
diff
changeset
|
383 |
self.UpdateCursorTick() |
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
384 |
|
1174
9cc1a3fa9619
Add support for moving cursor in Debug Graphs using arrow keys
Laurent Bessard
parents:
1102
diff
changeset
|
385 |
def MoveCursorTick(self, move): |
9cc1a3fa9619
Add support for moving cursor in Debug Graphs using arrow keys
Laurent Bessard
parents:
1102
diff
changeset
|
386 |
if self.CursorTick is not None: |
9cc1a3fa9619
Add support for moving cursor in Debug Graphs using arrow keys
Laurent Bessard
parents:
1102
diff
changeset
|
387 |
cursor_tick = max(self.Ticks[0], |
9cc1a3fa9619
Add support for moving cursor in Debug Graphs using arrow keys
Laurent Bessard
parents:
1102
diff
changeset
|
388 |
min(self.CursorTick + move, |
9cc1a3fa9619
Add support for moving cursor in Debug Graphs using arrow keys
Laurent Bessard
parents:
1102
diff
changeset
|
389 |
self.Ticks[-1])) |
1192
d8783c0c7d80
Fixed bugs in DebugVariablePanel with ticktime modifications
Laurent Bessard
parents:
1191
diff
changeset
|
390 |
cursor_tick_idx = numpy.argmin(numpy.abs(self.Ticks - cursor_tick)) |
d8783c0c7d80
Fixed bugs in DebugVariablePanel with ticktime modifications
Laurent Bessard
parents:
1191
diff
changeset
|
391 |
if self.Ticks[cursor_tick_idx] == self.CursorTick: |
d8783c0c7d80
Fixed bugs in DebugVariablePanel with ticktime modifications
Laurent Bessard
parents:
1191
diff
changeset
|
392 |
cursor_tick_idx = max(0, |
d8783c0c7d80
Fixed bugs in DebugVariablePanel with ticktime modifications
Laurent Bessard
parents:
1191
diff
changeset
|
393 |
min(cursor_tick_idx + abs(move) / move, |
d8783c0c7d80
Fixed bugs in DebugVariablePanel with ticktime modifications
Laurent Bessard
parents:
1191
diff
changeset
|
394 |
len(self.Ticks) - 1)) |
d8783c0c7d80
Fixed bugs in DebugVariablePanel with ticktime modifications
Laurent Bessard
parents:
1191
diff
changeset
|
395 |
self.CursorTick = self.Ticks[cursor_tick_idx] |
1174
9cc1a3fa9619
Add support for moving cursor in Debug Graphs using arrow keys
Laurent Bessard
parents:
1102
diff
changeset
|
396 |
self.StartTick = max(self.Ticks[ |
9cc1a3fa9619
Add support for moving cursor in Debug Graphs using arrow keys
Laurent Bessard
parents:
1102
diff
changeset
|
397 |
numpy.argmin(numpy.abs(self.Ticks - |
9cc1a3fa9619
Add support for moving cursor in Debug Graphs using arrow keys
Laurent Bessard
parents:
1102
diff
changeset
|
398 |
self.CursorTick + self.CurrentRange))], |
9cc1a3fa9619
Add support for moving cursor in Debug Graphs using arrow keys
Laurent Bessard
parents:
1102
diff
changeset
|
399 |
min(self.StartTick, self.CursorTick)) |
9cc1a3fa9619
Add support for moving cursor in Debug Graphs using arrow keys
Laurent Bessard
parents:
1102
diff
changeset
|
400 |
self.RefreshCanvasPosition() |
9cc1a3fa9619
Add support for moving cursor in Debug Graphs using arrow keys
Laurent Bessard
parents:
1102
diff
changeset
|
401 |
self.UpdateCursorTick() |
9cc1a3fa9619
Add support for moving cursor in Debug Graphs using arrow keys
Laurent Bessard
parents:
1102
diff
changeset
|
402 |
|
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
403 |
def ResetCursorTick(self): |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
404 |
self.CursorTick = None |
1227
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
405 |
self.Fixed = False |
1084
baa09a1c7b15
Fixed bug in DebugVariablePanel, cursor not reset when graphs were reset
Laurent Bessard
parents:
1044
diff
changeset
|
406 |
self.UpdateCursorTick() |
baa09a1c7b15
Fixed bug in DebugVariablePanel, cursor not reset when graphs were reset
Laurent Bessard
parents:
1044
diff
changeset
|
407 |
|
baa09a1c7b15
Fixed bug in DebugVariablePanel, cursor not reset when graphs were reset
Laurent Bessard
parents:
1044
diff
changeset
|
408 |
def UpdateCursorTick(self): |
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
409 |
for panel in self.GraphicPanels: |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
410 |
if isinstance(panel, DebugVariableGraphicViewer): |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
411 |
panel.SetCursorTick(self.CursorTick) |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
412 |
self.ForceRefresh() |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
413 |
|
929
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
414 |
def StartDragNDrop(self, panel, item, x_mouse, y_mouse, x_mouse_start, y_mouse_start): |
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
415 |
if len(panel.GetItems()) > 1: |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
416 |
self.DraggingAxesPanel = DebugVariableGraphicViewer(self.GraphicsWindow, self, [item], GRAPH_PARALLEL) |
929
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
417 |
self.DraggingAxesPanel.SetCursorTick(self.CursorTick) |
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
418 |
width, height = panel.GetSize() |
943
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
419 |
self.DraggingAxesPanel.SetSize(wx.Size(width, height)) |
1044 | 420 |
self.DraggingAxesPanel.ResetGraphics() |
929
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
421 |
self.DraggingAxesPanel.SetPosition(wx.Point(0, -height)) |
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
422 |
else: |
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
423 |
self.DraggingAxesPanel = panel |
1212 | 424 |
self.DraggingAxesBoundingBox = panel.GetAxesBoundingBox(parent_coordinate=True) |
925
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
425 |
self.DraggingAxesMousePos = wx.Point( |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
426 |
x_mouse_start - self.DraggingAxesBoundingBox.x, |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
427 |
y_mouse_start - self.DraggingAxesBoundingBox.y) |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
428 |
self.MoveDragNDrop(x_mouse, y_mouse) |
925
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
429 |
|
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
430 |
def MoveDragNDrop(self, x_mouse, y_mouse): |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
431 |
self.DraggingAxesBoundingBox.x = x_mouse - self.DraggingAxesMousePos.x |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
432 |
self.DraggingAxesBoundingBox.y = y_mouse - self.DraggingAxesMousePos.y |
934
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
433 |
self.RefreshHighlight(x_mouse, y_mouse) |
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
434 |
|
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
435 |
def RefreshHighlight(self, x_mouse, y_mouse): |
929
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
436 |
for idx, panel in enumerate(self.GraphicPanels): |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
437 |
x, y = panel.GetPosition() |
943
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
438 |
width, height = panel.GetSize() |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
439 |
rect = wx.Rect(x, y, width, height) |
929
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
440 |
if (rect.InsideXY(x_mouse, y_mouse) or |
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
441 |
idx == 0 and y_mouse < 0 or |
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
442 |
idx == len(self.GraphicPanels) - 1 and y_mouse > panel.GetPosition()[1]): |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
443 |
panel.RefreshHighlight(x_mouse - x, y_mouse - y) |
943
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
444 |
else: |
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
445 |
panel.SetHighlight(HIGHLIGHT_NONE) |
962
c0dcbbdb0bb1
Fix bug on Windows when drag'n dropping variable to DebugVariablePanel, panel not refreshed
Laurent Bessard
parents:
952
diff
changeset
|
446 |
if wx.Platform == "__WXMSW__": |
c0dcbbdb0bb1
Fix bug on Windows when drag'n dropping variable to DebugVariablePanel, panel not refreshed
Laurent Bessard
parents:
952
diff
changeset
|
447 |
self.RefreshView() |
c0dcbbdb0bb1
Fix bug on Windows when drag'n dropping variable to DebugVariablePanel, panel not refreshed
Laurent Bessard
parents:
952
diff
changeset
|
448 |
else: |
c0dcbbdb0bb1
Fix bug on Windows when drag'n dropping variable to DebugVariablePanel, panel not refreshed
Laurent Bessard
parents:
952
diff
changeset
|
449 |
self.ForceRefresh() |
934
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
450 |
|
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
451 |
def ResetHighlight(self): |
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
452 |
for panel in self.GraphicPanels: |
943
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
453 |
panel.SetHighlight(HIGHLIGHT_NONE) |
962
c0dcbbdb0bb1
Fix bug on Windows when drag'n dropping variable to DebugVariablePanel, panel not refreshed
Laurent Bessard
parents:
952
diff
changeset
|
454 |
if wx.Platform == "__WXMSW__": |
c0dcbbdb0bb1
Fix bug on Windows when drag'n dropping variable to DebugVariablePanel, panel not refreshed
Laurent Bessard
parents:
952
diff
changeset
|
455 |
self.RefreshView() |
c0dcbbdb0bb1
Fix bug on Windows when drag'n dropping variable to DebugVariablePanel, panel not refreshed
Laurent Bessard
parents:
952
diff
changeset
|
456 |
else: |
c0dcbbdb0bb1
Fix bug on Windows when drag'n dropping variable to DebugVariablePanel, panel not refreshed
Laurent Bessard
parents:
952
diff
changeset
|
457 |
self.ForceRefresh() |
925
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
458 |
|
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
459 |
def IsDragging(self): |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
460 |
return self.DraggingAxesPanel is not None |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
461 |
|
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
462 |
def GetDraggingAxesClippingRegion(self, panel): |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
463 |
x, y = panel.GetPosition() |
943
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
464 |
width, height = panel.GetSize() |
925
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
465 |
bbox = wx.Rect(x, y, width, height) |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
466 |
bbox = bbox.Intersect(self.DraggingAxesBoundingBox) |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
467 |
bbox.x -= x |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
468 |
bbox.y -= y |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
469 |
return bbox |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
470 |
|
943
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
471 |
def GetDraggingAxesPosition(self, panel): |
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
472 |
x, y = panel.GetPosition() |
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
473 |
return wx.Point(self.DraggingAxesBoundingBox.x - x, |
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
474 |
self.DraggingAxesBoundingBox.y - y) |
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
475 |
|
925
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
476 |
def StopDragNDrop(self, variable, x_mouse, y_mouse): |
943
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
477 |
if self.DraggingAxesPanel not in self.GraphicPanels: |
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
478 |
self.DraggingAxesPanel.Destroy() |
925
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
479 |
self.DraggingAxesPanel = None |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
480 |
self.DraggingAxesBoundingBox = None |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
481 |
self.DraggingAxesMousePos = None |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
482 |
for idx, panel in enumerate(self.GraphicPanels): |
943
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
483 |
panel.SetHighlight(HIGHLIGHT_NONE) |
925
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
484 |
xw, yw = panel.GetPosition() |
943
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
485 |
width, height = panel.GetSize() |
925
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
486 |
bbox = wx.Rect(xw, yw, width, height) |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
487 |
if bbox.InsideXY(x_mouse, y_mouse): |
943
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
488 |
panel.ShowButtons(True) |
925
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
489 |
merge_type = GRAPH_PARALLEL |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
490 |
if isinstance(panel, DebugVariableTextViewer) or panel.Is3DCanvas(): |
925
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
491 |
if y_mouse > yw + height / 2: |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
492 |
idx += 1 |
1214
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
493 |
wx.CallAfter(self.MoveValue, variable, idx, True) |
925
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
494 |
else: |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
495 |
rect = panel.GetAxesBoundingBox(True) |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
496 |
if rect.InsideXY(x_mouse, y_mouse): |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
497 |
merge_rect = wx.Rect(rect.x, rect.y, rect.width / 2., rect.height) |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
498 |
if merge_rect.InsideXY(x_mouse, y_mouse): |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
499 |
merge_type = GRAPH_ORTHOGONAL |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
500 |
wx.CallAfter(self.MergeGraphs, variable, idx, merge_type, force=True) |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
501 |
else: |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
502 |
if y_mouse > yw + height / 2: |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
503 |
idx += 1 |
1214
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
504 |
wx.CallAfter(self.MoveValue, variable, idx, True) |
929
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
505 |
self.ForceRefresh() |
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
506 |
return |
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
507 |
width, height = self.GraphicsWindow.GetVirtualSize() |
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
508 |
rect = wx.Rect(0, 0, width, height) |
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
509 |
if rect.InsideXY(x_mouse, y_mouse): |
1214
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
510 |
wx.CallAfter(self.MoveValue, variable, len(self.GraphicPanels), True) |
925
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
511 |
self.ForceRefresh() |
5f9dd88a605b
Added support for drag'n drop variable from one graph to another with visible graph
Laurent Bessard
parents:
924
diff
changeset
|
512 |
|
1218 | 513 |
def RefreshGraphicsSizer(self): |
514 |
self.GraphicsSizer.Clear() |
|
515 |
||
516 |
for panel in self.GraphicPanels: |
|
517 |
self.GraphicsSizer.AddWindow(panel, flag=wx.GROW) |
|
518 |
||
519 |
self.GraphicsSizer.Layout() |
|
520 |
self.RefreshGraphicsWindowScrollbars() |
|
521 |
||
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
522 |
def RefreshView(self): |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
523 |
self.RefreshCanvasPosition() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
524 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
525 |
width, height = self.GraphicsWindow.GetVirtualSize() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
526 |
bitmap = wx.EmptyBitmap(width, height) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
527 |
dc = wx.BufferedDC(wx.ClientDC(self.GraphicsWindow), bitmap) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
528 |
dc.Clear() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
529 |
dc.BeginDrawing() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
530 |
if self.DraggingAxesPanel is not None: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
531 |
destBBox = self.DraggingAxesBoundingBox |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
532 |
srcBBox = self.DraggingAxesPanel.GetAxesBoundingBox() |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
533 |
|
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
534 |
srcBmp = _convert_agg_to_wx_bitmap(self.DraggingAxesPanel.get_renderer(), None) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
535 |
srcDC = wx.MemoryDC() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
536 |
srcDC.SelectObject(srcBmp) |
929
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
537 |
|
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
538 |
dc.Blit(destBBox.x, destBBox.y, |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
539 |
int(destBBox.width), int(destBBox.height), |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
540 |
srcDC, srcBBox.x, srcBBox.y) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
541 |
dc.EndDrawing() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
542 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
543 |
if not self.Fixed or self.Force: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
544 |
self.Force = False |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
545 |
refresh_graphics = True |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
546 |
else: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
547 |
refresh_graphics = False |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
548 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
549 |
if self.DraggingAxesPanel is not None and self.DraggingAxesPanel not in self.GraphicPanels: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
550 |
self.DraggingAxesPanel.RefreshViewer(refresh_graphics) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
551 |
for panel in self.GraphicPanels: |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
552 |
if isinstance(panel, DebugVariableGraphicViewer): |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
553 |
panel.RefreshViewer(refresh_graphics) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
554 |
else: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
555 |
panel.RefreshViewer() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
556 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
557 |
if self.CursorTick is not None: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
558 |
tick = self.CursorTick |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
559 |
elif len(self.Ticks) > 0: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
560 |
tick = self.Ticks[-1] |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
561 |
else: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
562 |
tick = None |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
563 |
if tick is not None: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
564 |
self.TickLabel.SetLabel("Tick: %d" % tick) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
565 |
tick_duration = int(tick * self.Ticktime) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
566 |
not_null = False |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
567 |
duration = "" |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
568 |
for value, format in [(tick_duration / DAY, "%dd"), |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
569 |
((tick_duration % DAY) / HOUR, "%dh"), |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
570 |
((tick_duration % HOUR) / MINUTE, "%dm"), |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
571 |
((tick_duration % MINUTE) / SECOND, "%ds")]: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
572 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
573 |
if value > 0 or not_null: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
574 |
duration += format % value |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
575 |
not_null = True |
929
c562031146e4
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
928
diff
changeset
|
576 |
|
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
577 |
duration += "%gms" % (float(tick_duration % SECOND) / MILLISECOND) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
578 |
self.TickTimeLabel.SetLabel("t: %s" % duration) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
579 |
else: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
580 |
self.TickLabel.SetLabel("") |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
581 |
self.TickTimeLabel.SetLabel("") |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
582 |
self.TickSizer.Layout() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
583 |
|
1207 | 584 |
def SubscribeAllDataConsumers(self): |
585 |
DebugViewer.SubscribeAllDataConsumers(self) |
|
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
586 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
587 |
if self.DataProducer is not None: |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
588 |
if self.DataProducer is not None: |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
589 |
self.SetTickTime(self.DataProducer.GetTicktime()) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
590 |
|
1271
757b83fd2173
Fix bug when transferring PLC and orthogonal graph is displayed with cursor
Laurent Bessard
parents:
1266
diff
changeset
|
591 |
self.ResetCursorTick() |
757b83fd2173
Fix bug when transferring PLC and orthogonal graph is displayed with cursor
Laurent Bessard
parents:
1266
diff
changeset
|
592 |
|
1266
4282f62c1cf0
Fixed bug when removing obsolete variables from Debug Variable Panel
Laurent Bessard
parents:
1265
diff
changeset
|
593 |
for panel in self.GraphicPanels[:]: |
1207 | 594 |
panel.SubscribeAllDataConsumers() |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
595 |
if panel.ItemsIsEmpty(): |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
596 |
if panel.HasCapture(): |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
597 |
panel.ReleaseMouse() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
598 |
self.GraphicPanels.remove(panel) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
599 |
panel.Destroy() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
600 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
601 |
self.ResetVariableNameMask() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
602 |
self.RefreshGraphicsSizer() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
603 |
self.ForceRefresh() |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
604 |
|
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
605 |
def ResetView(self): |
1176
f4b434672204
Moved and rewrote DebugViewer and DebusDataConsumer classes
Laurent Bessard
parents:
1174
diff
changeset
|
606 |
self.UnsubscribeAllDataConsumers() |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
607 |
|
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
608 |
self.Fixed = False |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
609 |
for panel in self.GraphicPanels: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
610 |
panel.Destroy() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
611 |
self.GraphicPanels = [] |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
612 |
self.ResetVariableNameMask() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
613 |
self.RefreshGraphicsSizer() |
814 | 614 |
|
1218 | 615 |
def SetCanvasPosition(self, tick): |
616 |
tick = max(self.Ticks[0], min(tick, self.Ticks[-1] - self.CurrentRange)) |
|
617 |
self.StartTick = self.Ticks[numpy.argmin(numpy.abs(self.Ticks - tick))] |
|
618 |
self.Fixed = True |
|
619 |
self.RefreshCanvasPosition() |
|
620 |
self.ForceRefresh() |
|
621 |
||
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
622 |
def RefreshCanvasPosition(self): |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
623 |
if len(self.Ticks) > 0: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
624 |
pos = int(self.StartTick - self.Ticks[0]) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
625 |
range = int(self.Ticks[-1] - self.Ticks[0]) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
626 |
else: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
627 |
pos = 0 |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
628 |
range = 0 |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
629 |
self.CanvasPosition.SetScrollbar(pos, self.CurrentRange, range, self.CurrentRange) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
630 |
|
932
ebe63100b6d7
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
931
diff
changeset
|
631 |
def ChangeRange(self, dir, tick=None): |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
632 |
current_range = self.CurrentRange |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
633 |
current_range_idx = self.CanvasRange.GetSelection() |
1191
5237f87e035f
Fixed values in DebugVariablePanel range selection ComboBox
Laurent Bessard
parents:
1190
diff
changeset
|
634 |
new_range_idx = max(0, min(current_range_idx + dir, len(RANGE_VALUES) - 1)) |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
635 |
if new_range_idx != current_range_idx: |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
636 |
self.CanvasRange.SetSelection(new_range_idx) |
1191
5237f87e035f
Fixed values in DebugVariablePanel range selection ComboBox
Laurent Bessard
parents:
1190
diff
changeset
|
637 |
self.CurrentRange = RANGE_VALUES[new_range_idx][1] / self.Ticktime |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
638 |
if len(self.Ticks) > 0: |
932
ebe63100b6d7
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
931
diff
changeset
|
639 |
if tick is None: |
ebe63100b6d7
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
931
diff
changeset
|
640 |
tick = self.StartTick + self.CurrentRange / 2. |
1213
599e43ec921b
Fixed bug when scroll in and out using wheel mouse in graph, range of data displayed could be out of bounds of whole data stored range
Laurent Bessard
parents:
1212
diff
changeset
|
641 |
new_start_tick = min(tick - (tick - self.StartTick) * self.CurrentRange / current_range, |
599e43ec921b
Fixed bug when scroll in and out using wheel mouse in graph, range of data displayed could be out of bounds of whole data stored range
Laurent Bessard
parents:
1212
diff
changeset
|
642 |
self.Ticks[-1] - self.CurrentRange) |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
643 |
self.StartTick = self.Ticks[numpy.argmin(numpy.abs(self.Ticks - new_start_tick))] |
1213
599e43ec921b
Fixed bug when scroll in and out using wheel mouse in graph, range of data displayed could be out of bounds of whole data stored range
Laurent Bessard
parents:
1212
diff
changeset
|
644 |
self.Fixed = new_start_tick < self.Ticks[-1] - self.CurrentRange |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
645 |
self.ForceRefresh() |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
646 |
|
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
647 |
def RefreshRange(self): |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
648 |
if len(self.Ticks) > 0: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
649 |
if self.Fixed and self.Ticks[-1] - self.Ticks[0] < self.CurrentRange: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
650 |
self.Fixed = False |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
651 |
if self.Fixed: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
652 |
self.StartTick = min(self.StartTick, self.Ticks[-1] - self.CurrentRange) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
653 |
else: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
654 |
self.StartTick = max(self.Ticks[0], self.Ticks[-1] - self.CurrentRange) |
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
655 |
self.ForceRefresh() |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
656 |
|
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
657 |
def OnRangeChanged(self, event): |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
658 |
try: |
1191
5237f87e035f
Fixed values in DebugVariablePanel range selection ComboBox
Laurent Bessard
parents:
1190
diff
changeset
|
659 |
self.CurrentRange = RANGE_VALUES[self.CanvasRange.GetSelection()][1] / self.Ticktime |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
660 |
except ValueError, e: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
661 |
self.CanvasRange.SetValue(str(self.CurrentRange)) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
662 |
wx.CallAfter(self.RefreshRange) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
663 |
event.Skip() |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
664 |
|
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
665 |
def OnCurrentButton(self, event): |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
666 |
if len(self.Ticks) > 0: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
667 |
self.StartTick = max(self.Ticks[0], self.Ticks[-1] - self.CurrentRange) |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
668 |
self.ResetCursorTick() |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
669 |
event.Skip() |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
670 |
|
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
671 |
def CopyDataToClipboard(self, variables): |
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
672 |
text = "tick;%s;\n" % ";".join([item.GetVariable() for item, data in variables]) |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
673 |
next_tick = NextTick(variables) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
674 |
while next_tick is not None: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
675 |
values = [] |
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
676 |
for item, data in variables: |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
677 |
if len(data) > 0: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
678 |
if next_tick == data[0][0]: |
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
679 |
var_type = item.GetVariableType() |
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
680 |
if var_type in ["STRING", "WSTRING"]: |
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
681 |
value = item.GetRawValue(int(data.pop(0)[2])) |
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
682 |
if var_type == "STRING": |
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
683 |
values.append("'%s'" % value) |
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
684 |
else: |
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
685 |
values.append('"%s"' % value) |
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
686 |
else: |
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
687 |
values.append("%.3f" % data.pop(0)[1]) |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
688 |
else: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
689 |
values.append("") |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
690 |
else: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
691 |
values.append("") |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
692 |
text += "%d;%s;\n" % (next_tick, ";".join(values)) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
693 |
next_tick = NextTick(variables) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
694 |
self.ParentWindow.SetCopyBuffer(text) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
695 |
|
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
696 |
def OnExportGraphButton(self, event): |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
697 |
items = reduce(lambda x, y: x + y, |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
698 |
[panel.GetItems() for panel in self.GraphicPanels], |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
699 |
[]) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
700 |
variables = [(item, [entry for entry in item.GetData()]) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
701 |
for item in items |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
702 |
if item.IsNumVariable()] |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
703 |
wx.CallAfter(self.CopyDataToClipboard, variables) |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
704 |
event.Skip() |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
705 |
|
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
706 |
def OnPositionChanging(self, event): |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
707 |
if len(self.Ticks) > 0: |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
708 |
self.StartTick = self.Ticks[0] + event.GetPosition() |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
709 |
self.Fixed = True |
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
710 |
self.ForceRefresh() |
902
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
711 |
event.Skip() |
ffa8ee5ee2fe
Adding support for defining a time range for DebugVariablePanel graphics and navigating across the recording.
Laurent Bessard
parents:
898
diff
changeset
|
712 |
|
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
713 |
def GetRange(self): |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
714 |
return self.StartTick, self.StartTick + self.CurrentRange |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
715 |
|
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
716 |
def GetViewerIndex(self, viewer): |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
717 |
if viewer in self.GraphicPanels: |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
718 |
return self.GraphicPanels.index(viewer) |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
719 |
return None |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
720 |
|
934
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
721 |
def IsViewerFirst(self, viewer): |
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
722 |
return viewer == self.GraphicPanels[0] |
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
723 |
|
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
724 |
def HighlightPreviousViewer(self, viewer): |
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
725 |
if self.IsViewerFirst(viewer): |
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
726 |
return |
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
727 |
idx = self.GetViewerIndex(viewer) |
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
728 |
if idx is None: |
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
729 |
return |
943
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
730 |
self.GraphicPanels[idx-1].SetHighlight(HIGHLIGHT_AFTER) |
934
fc00c11feff5
Fixed highlights for dropping graphs between the others
Laurent Bessard
parents:
932
diff
changeset
|
731 |
|
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
732 |
def ResetVariableNameMask(self): |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
733 |
items = [] |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
734 |
for panel in self.GraphicPanels: |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
735 |
items.extend(panel.GetItems()) |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
736 |
if len(items) > 1: |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
737 |
self.VariableNameMask = reduce(compute_mask, |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
738 |
[item.GetVariable().split('.') for item in items]) |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
739 |
elif len(items) > 0: |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
740 |
self.VariableNameMask = items[0].GetVariable().split('.')[:-1] + ['*'] |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
741 |
else: |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
742 |
self.VariableNameMask = [] |
931
da4970f6c46c
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
930
diff
changeset
|
743 |
self.MaskLabel.ChangeValue(".".join(self.VariableNameMask)) |
da4970f6c46c
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
930
diff
changeset
|
744 |
self.MaskLabel.SetInsertionPoint(self.MaskLabel.GetLastPosition()) |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
745 |
|
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
746 |
def GetVariableNameMask(self): |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
747 |
return self.VariableNameMask |
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
748 |
|
1214
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
749 |
def InsertValue(self, iec_path, idx = None, force=False, graph=False): |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
750 |
for panel in self.GraphicPanels: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
751 |
if panel.GetItem(iec_path) is not None: |
1217
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
752 |
if graph and isinstance(panel, DebugVariableTextViewer): |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
753 |
self.ToggleViewerType(panel) |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
754 |
return |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
755 |
if idx is None: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
756 |
idx = len(self.GraphicPanels) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
757 |
item = DebugVariableItem(self, iec_path, True) |
1365
debc97102b23
Added support for optimizing debug, preventing to filling buffers with only the last value for debug data consumers that only show the current state
Laurent Bessard
parents:
1364
diff
changeset
|
758 |
result = self.AddDataConsumer(iec_path.upper(), item, True) |
814 | 759 |
if result is not None or force: |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
760 |
|
1209 | 761 |
self.Freeze() |
1214
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
762 |
if item.IsNumVariable() and graph: |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
763 |
panel = DebugVariableGraphicViewer(self.GraphicsWindow, self, [item], GRAPH_PARALLEL) |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
764 |
if self.CursorTick is not None: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
765 |
panel.SetCursorTick(self.CursorTick) |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
766 |
else: |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
767 |
panel = DebugVariableTextViewer(self.GraphicsWindow, self, [item]) |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
768 |
if idx is not None: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
769 |
self.GraphicPanels.insert(idx, panel) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
770 |
else: |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
771 |
self.GraphicPanels.append(panel) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
772 |
self.ResetVariableNameMask() |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
773 |
self.RefreshGraphicsSizer() |
1209 | 774 |
self.Thaw() |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
775 |
self.ForceRefresh() |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
776 |
|
1214
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
777 |
def MoveValue(self, iec_path, idx = None, graph=False): |
919
4a36e38e51d3
Fix bug in DebugVariablePanel when manipulating graph layout and adding drag'n drop graph from parallel graphs and moving graphs order
Laurent Bessard
parents:
916
diff
changeset
|
778 |
if idx is None: |
4a36e38e51d3
Fix bug in DebugVariablePanel when manipulating graph layout and adding drag'n drop graph from parallel graphs and moving graphs order
Laurent Bessard
parents:
916
diff
changeset
|
779 |
idx = len(self.GraphicPanels) |
4a36e38e51d3
Fix bug in DebugVariablePanel when manipulating graph layout and adding drag'n drop graph from parallel graphs and moving graphs order
Laurent Bessard
parents:
916
diff
changeset
|
780 |
source_panel = None |
4a36e38e51d3
Fix bug in DebugVariablePanel when manipulating graph layout and adding drag'n drop graph from parallel graphs and moving graphs order
Laurent Bessard
parents:
916
diff
changeset
|
781 |
item = None |
4a36e38e51d3
Fix bug in DebugVariablePanel when manipulating graph layout and adding drag'n drop graph from parallel graphs and moving graphs order
Laurent Bessard
parents:
916
diff
changeset
|
782 |
for panel in self.GraphicPanels: |
4a36e38e51d3
Fix bug in DebugVariablePanel when manipulating graph layout and adding drag'n drop graph from parallel graphs and moving graphs order
Laurent Bessard
parents:
916
diff
changeset
|
783 |
item = panel.GetItem(iec_path) |
4a36e38e51d3
Fix bug in DebugVariablePanel when manipulating graph layout and adding drag'n drop graph from parallel graphs and moving graphs order
Laurent Bessard
parents:
916
diff
changeset
|
784 |
if item is not None: |
4a36e38e51d3
Fix bug in DebugVariablePanel when manipulating graph layout and adding drag'n drop graph from parallel graphs and moving graphs order
Laurent Bessard
parents:
916
diff
changeset
|
785 |
source_panel = panel |
4a36e38e51d3
Fix bug in DebugVariablePanel when manipulating graph layout and adding drag'n drop graph from parallel graphs and moving graphs order
Laurent Bessard
parents:
916
diff
changeset
|
786 |
break |
4a36e38e51d3
Fix bug in DebugVariablePanel when manipulating graph layout and adding drag'n drop graph from parallel graphs and moving graphs order
Laurent Bessard
parents:
916
diff
changeset
|
787 |
if source_panel is not None: |
1214
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
788 |
source_panel_idx = self.GraphicPanels.index(source_panel) |
1217
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
789 |
|
1218 | 790 |
if (len(source_panel.GetItems()) == 1): |
791 |
||
792 |
if source_panel_idx < idx: |
|
793 |
self.GraphicPanels.insert(idx, source_panel) |
|
794 |
self.GraphicPanels.pop(source_panel_idx) |
|
795 |
elif source_panel_idx > idx: |
|
796 |
self.GraphicPanels.pop(source_panel_idx) |
|
797 |
self.GraphicPanels.insert(idx, source_panel) |
|
798 |
else: |
|
799 |
return |
|
1217
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
800 |
|
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
801 |
else: |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
802 |
source_panel.RemoveItem(item) |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
803 |
source_size = source_panel.GetSize() |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
804 |
if item.IsNumVariable() and graph: |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
805 |
panel = DebugVariableGraphicViewer(self.GraphicsWindow, self, [item], GRAPH_PARALLEL) |
1264 | 806 |
panel.SetCanvasHeight(source_size.height) |
1217
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
807 |
if self.CursorTick is not None: |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
808 |
panel.SetCursorTick(self.CursorTick) |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
809 |
|
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
810 |
else: |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
811 |
panel = DebugVariableTextViewer(self.GraphicsWindow, self, [item]) |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
812 |
|
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
813 |
self.GraphicPanels.insert(idx, panel) |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
814 |
|
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
815 |
if source_panel.ItemsIsEmpty(): |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
816 |
if source_panel.HasCapture(): |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
817 |
source_panel.ReleaseMouse() |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
818 |
source_panel.Destroy() |
b64dcc1a011f
Fixed bug when moving TextViewer and replacing right click by double click when adding graph in Debug Variable Panel
Laurent Bessard
parents:
1216
diff
changeset
|
819 |
self.GraphicPanels.remove(source_panel) |
1215 | 820 |
|
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
821 |
self.ResetVariableNameMask() |
919
4a36e38e51d3
Fix bug in DebugVariablePanel when manipulating graph layout and adding drag'n drop graph from parallel graphs and moving graphs order
Laurent Bessard
parents:
916
diff
changeset
|
822 |
self.RefreshGraphicsSizer() |
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
823 |
self.ForceRefresh() |
919
4a36e38e51d3
Fix bug in DebugVariablePanel when manipulating graph layout and adding drag'n drop graph from parallel graphs and moving graphs order
Laurent Bessard
parents:
916
diff
changeset
|
824 |
|
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
825 |
def MergeGraphs(self, source, target_idx, merge_type, force=False): |
909
852af7c6f0ef
Adding support for change DebugVariablePanel 2D graphs layout using drag'n drop
Laurent Bessard
parents:
907
diff
changeset
|
826 |
source_item = None |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
827 |
source_panel = None |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
828 |
for panel in self.GraphicPanels: |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
829 |
source_item = panel.GetItem(source) |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
830 |
if source_item is not None: |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
831 |
source_panel = panel |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
832 |
break |
909
852af7c6f0ef
Adding support for change DebugVariablePanel 2D graphs layout using drag'n drop
Laurent Bessard
parents:
907
diff
changeset
|
833 |
if source_item is None: |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
834 |
item = DebugVariableItem(self, source, True) |
909
852af7c6f0ef
Adding support for change DebugVariablePanel 2D graphs layout using drag'n drop
Laurent Bessard
parents:
907
diff
changeset
|
835 |
if item.IsNumVariable(): |
1365
debc97102b23
Added support for optimizing debug, preventing to filling buffers with only the last value for debug data consumers that only show the current state
Laurent Bessard
parents:
1364
diff
changeset
|
836 |
result = self.AddDataConsumer(source.upper(), item, True) |
909
852af7c6f0ef
Adding support for change DebugVariablePanel 2D graphs layout using drag'n drop
Laurent Bessard
parents:
907
diff
changeset
|
837 |
if result is not None or force: |
852af7c6f0ef
Adding support for change DebugVariablePanel 2D graphs layout using drag'n drop
Laurent Bessard
parents:
907
diff
changeset
|
838 |
source_item = item |
945
c1159acb0886
Added support for drag'n dropping non-numeric variables
Laurent Bessard
parents:
943
diff
changeset
|
839 |
if source_item is not None and source_item.IsNumVariable(): |
1041
736ec395399a
Fixed graph panel size when modifying DebugVariablePanel layout
Laurent Bessard
parents:
1040
diff
changeset
|
840 |
if source_panel is not None: |
736ec395399a
Fixed graph panel size when modifying DebugVariablePanel layout
Laurent Bessard
parents:
1040
diff
changeset
|
841 |
source_size = source_panel.GetSize() |
736ec395399a
Fixed graph panel size when modifying DebugVariablePanel layout
Laurent Bessard
parents:
1040
diff
changeset
|
842 |
else: |
736ec395399a
Fixed graph panel size when modifying DebugVariablePanel layout
Laurent Bessard
parents:
1040
diff
changeset
|
843 |
source_size = None |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
844 |
target_panel = self.GraphicPanels[target_idx] |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
845 |
graph_type = target_panel.GraphType |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
846 |
if target_panel != source_panel: |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
847 |
if (merge_type == GRAPH_PARALLEL and graph_type != merge_type or |
909
852af7c6f0ef
Adding support for change DebugVariablePanel 2D graphs layout using drag'n drop
Laurent Bessard
parents:
907
diff
changeset
|
848 |
merge_type == GRAPH_ORTHOGONAL and |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
849 |
(graph_type == GRAPH_PARALLEL and len(target_panel.Items) > 1 or |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
850 |
graph_type == GRAPH_ORTHOGONAL and len(target_panel.Items) >= 3)): |
909
852af7c6f0ef
Adding support for change DebugVariablePanel 2D graphs layout using drag'n drop
Laurent Bessard
parents:
907
diff
changeset
|
851 |
return |
852af7c6f0ef
Adding support for change DebugVariablePanel 2D graphs layout using drag'n drop
Laurent Bessard
parents:
907
diff
changeset
|
852 |
|
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
853 |
if source_panel is not None: |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
854 |
source_panel.RemoveItem(source_item) |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
855 |
if source_panel.ItemsIsEmpty(): |
943
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
856 |
if source_panel.HasCapture(): |
da7f80e04a54
Fixed panels displaying non-numeric variables in DebugVariablePanel
Laurent Bessard
parents:
938
diff
changeset
|
857 |
source_panel.ReleaseMouse() |
1216
598ff0043ad3
Fixed bug in DebugVariablePanel on Windows
Laurent Bessard
parents:
1215
diff
changeset
|
858 |
source_panel.Destroy() |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
859 |
self.GraphicPanels.remove(source_panel) |
936
364d178df2d3
Added button for exporting individual graph values to clipboard
Laurent Bessard
parents:
935
diff
changeset
|
860 |
elif (merge_type != graph_type and len(target_panel.Items) == 2): |
364d178df2d3
Added button for exporting individual graph values to clipboard
Laurent Bessard
parents:
935
diff
changeset
|
861 |
target_panel.RemoveItem(source_item) |
364d178df2d3
Added button for exporting individual graph values to clipboard
Laurent Bessard
parents:
935
diff
changeset
|
862 |
else: |
364d178df2d3
Added button for exporting individual graph values to clipboard
Laurent Bessard
parents:
935
diff
changeset
|
863 |
target_panel = None |
364d178df2d3
Added button for exporting individual graph values to clipboard
Laurent Bessard
parents:
935
diff
changeset
|
864 |
|
364d178df2d3
Added button for exporting individual graph values to clipboard
Laurent Bessard
parents:
935
diff
changeset
|
865 |
if target_panel is not None: |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
866 |
target_panel.AddItem(source_item) |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
867 |
target_panel.GraphType = merge_type |
1041
736ec395399a
Fixed graph panel size when modifying DebugVariablePanel layout
Laurent Bessard
parents:
1040
diff
changeset
|
868 |
size = target_panel.GetSize() |
736ec395399a
Fixed graph panel size when modifying DebugVariablePanel layout
Laurent Bessard
parents:
1040
diff
changeset
|
869 |
if merge_type == GRAPH_ORTHOGONAL: |
1264 | 870 |
target_panel.SetCanvasHeight(size.width) |
871 |
elif source_size is not None and source_panel != target_panel: |
|
872 |
target_panel.SetCanvasHeight(size.height + source_size.height) |
|
1265
242512c56ea1
Fix bug in graphic viewer height when drag'n dropping variable in parallel mode
Laurent Bessard
parents:
1264
diff
changeset
|
873 |
else: |
242512c56ea1
Fix bug in graphic viewer height when drag'n dropping variable in parallel mode
Laurent Bessard
parents:
1264
diff
changeset
|
874 |
target_panel.SetCanvasHeight(size.height) |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
875 |
target_panel.ResetGraphics() |
909
852af7c6f0ef
Adding support for change DebugVariablePanel 2D graphs layout using drag'n drop
Laurent Bessard
parents:
907
diff
changeset
|
876 |
|
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
877 |
self.ResetVariableNameMask() |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
878 |
self.RefreshGraphicsSizer() |
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
879 |
self.ForceRefresh() |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
880 |
|
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
881 |
def DeleteValue(self, source_panel, item=None): |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
882 |
source_idx = self.GetViewerIndex(source_panel) |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
883 |
if source_idx is not None: |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
884 |
|
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
885 |
if item is None: |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
886 |
source_panel.ClearItems() |
1216
598ff0043ad3
Fixed bug in DebugVariablePanel on Windows
Laurent Bessard
parents:
1215
diff
changeset
|
887 |
source_panel.Destroy() |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
888 |
self.GraphicPanels.remove(source_panel) |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
889 |
self.ResetVariableNameMask() |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
890 |
self.RefreshGraphicsSizer() |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
891 |
else: |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
892 |
source_panel.RemoveItem(item) |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
893 |
if source_panel.ItemsIsEmpty(): |
1216
598ff0043ad3
Fixed bug in DebugVariablePanel on Windows
Laurent Bessard
parents:
1215
diff
changeset
|
894 |
source_panel.Destroy() |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
895 |
self.GraphicPanels.remove(source_panel) |
928
a94e7fea7051
Improved matplotlib graphic debug panel implementation
Laurent Bessard
parents:
927
diff
changeset
|
896 |
self.ResetVariableNameMask() |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
897 |
self.RefreshGraphicsSizer() |
1227
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
898 |
if len(self.GraphicPanels) == 0: |
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
899 |
self.Fixed = False |
01e86190f8c7
Fixed tick not refreshed when in DebugVariablePanel when variable in it
Laurent Bessard
parents:
1218
diff
changeset
|
900 |
self.ResetCursorTick() |
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
901 |
self.ForceRefresh() |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
902 |
|
1214
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
903 |
def ToggleViewerType(self, panel): |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
904 |
panel_idx = self.GetViewerIndex(panel) |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
905 |
if panel_idx is not None: |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
906 |
self.GraphicPanels.remove(panel) |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
907 |
items = panel.GetItems() |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
908 |
if isinstance(panel, DebugVariableGraphicViewer): |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
909 |
for idx, item in enumerate(items): |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
910 |
new_panel = DebugVariableTextViewer(self.GraphicsWindow, self, [item]) |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
911 |
self.GraphicPanels.insert(panel_idx + idx, new_panel) |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
912 |
else: |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
913 |
new_panel = DebugVariableGraphicViewer(self.GraphicsWindow, self, items, GRAPH_PARALLEL) |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
914 |
self.GraphicPanels.insert(panel_idx, new_panel) |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
915 |
panel.Destroy() |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
916 |
self.RefreshGraphicsSizer() |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
917 |
self.ForceRefresh() |
2ef048b5383c
Added support for opening text viewer by default and toggling between GraphicViewer and TextViewer
Laurent Bessard
parents:
1213
diff
changeset
|
918 |
|
887
d3c6c4ab8b28
Adding support for displaying graphs of debugged numeric variables in 2D and 3D in DebugVariablePanel
Laurent Bessard
parents:
878
diff
changeset
|
919 |
def ResetGraphicsValues(self): |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
920 |
self.Ticks = numpy.array([]) |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
921 |
self.StartTick = 0 |
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
922 |
for panel in self.GraphicPanels: |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
923 |
panel.ResetItemsData() |
1198
8b4e6bd0aa92
Separated old table debug variable panel and new graphic debug variable panel
Laurent Bessard
parents:
1194
diff
changeset
|
924 |
self.ResetCursorTick() |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
925 |
|
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
926 |
def RefreshGraphicsWindowScrollbars(self): |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
927 |
xstart, ystart = self.GraphicsWindow.GetViewStart() |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
928 |
window_size = self.GraphicsWindow.GetClientSize() |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
929 |
vwidth, vheight = self.GraphicsSizer.GetMinSize() |
887
d3c6c4ab8b28
Adding support for displaying graphs of debugged numeric variables in 2D and 3D in DebugVariablePanel
Laurent Bessard
parents:
878
diff
changeset
|
930 |
posx = max(0, min(xstart, (vwidth - window_size[0]) / SCROLLBAR_UNIT)) |
d3c6c4ab8b28
Adding support for displaying graphs of debugged numeric variables in 2D and 3D in DebugVariablePanel
Laurent Bessard
parents:
878
diff
changeset
|
931 |
posy = max(0, min(ystart, (vheight - window_size[1]) / SCROLLBAR_UNIT)) |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
932 |
self.GraphicsWindow.Scroll(posx, posy) |
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
933 |
self.GraphicsWindow.SetScrollbars(SCROLLBAR_UNIT, SCROLLBAR_UNIT, |
887
d3c6c4ab8b28
Adding support for displaying graphs of debugged numeric variables in 2D and 3D in DebugVariablePanel
Laurent Bessard
parents:
878
diff
changeset
|
934 |
vwidth / SCROLLBAR_UNIT, vheight / SCROLLBAR_UNIT, posx, posy) |
d3c6c4ab8b28
Adding support for displaying graphs of debugged numeric variables in 2D and 3D in DebugVariablePanel
Laurent Bessard
parents:
878
diff
changeset
|
935 |
|
988
30e7571c10d0
Reduced flicker on LogViewer and DebugGraphPanel on Windows
Laurent Bessard
parents:
980
diff
changeset
|
936 |
def OnGraphicsWindowEraseBackground(self, event): |
30e7571c10d0
Reduced flicker on LogViewer and DebugGraphPanel on Windows
Laurent Bessard
parents:
980
diff
changeset
|
937 |
pass |
30e7571c10d0
Reduced flicker on LogViewer and DebugGraphPanel on Windows
Laurent Bessard
parents:
980
diff
changeset
|
938 |
|
30e7571c10d0
Reduced flicker on LogViewer and DebugGraphPanel on Windows
Laurent Bessard
parents:
980
diff
changeset
|
939 |
def OnGraphicsWindowPaint(self, event): |
30e7571c10d0
Reduced flicker on LogViewer and DebugGraphPanel on Windows
Laurent Bessard
parents:
980
diff
changeset
|
940 |
self.RefreshView() |
30e7571c10d0
Reduced flicker on LogViewer and DebugGraphPanel on Windows
Laurent Bessard
parents:
980
diff
changeset
|
941 |
event.Skip() |
30e7571c10d0
Reduced flicker on LogViewer and DebugGraphPanel on Windows
Laurent Bessard
parents:
980
diff
changeset
|
942 |
|
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
943 |
def OnGraphicsWindowResize(self, event): |
1041
736ec395399a
Fixed graph panel size when modifying DebugVariablePanel layout
Laurent Bessard
parents:
1040
diff
changeset
|
944 |
size = self.GetSize() |
736ec395399a
Fixed graph panel size when modifying DebugVariablePanel layout
Laurent Bessard
parents:
1040
diff
changeset
|
945 |
for panel in self.GraphicPanels: |
736ec395399a
Fixed graph panel size when modifying DebugVariablePanel layout
Laurent Bessard
parents:
1040
diff
changeset
|
946 |
panel_size = panel.GetSize() |
1200
501cb0bb4c05
Splitted DebugVariableGraphicPanel.py into several files
Laurent Bessard
parents:
1199
diff
changeset
|
947 |
if (isinstance(panel, DebugVariableGraphicViewer) and |
1193
59c196884fec
Moved and start to rewrite DebugVariablePanel splitting it into multiple files
Laurent Bessard
parents:
1192
diff
changeset
|
948 |
panel.GraphType == GRAPH_ORTHOGONAL and |
59c196884fec
Moved and start to rewrite DebugVariablePanel splitting it into multiple files
Laurent Bessard
parents:
1192
diff
changeset
|
949 |
panel_size.width == panel_size.height): |
1264 | 950 |
panel.SetCanvasHeight(size.width) |
916
697d8b77d716
Improved matplotlib graphic debug panel implementation, adding force, release, split and delete graph buttons, replacing data grid by adding panel displaying non-numeric data between graphs
Laurent Bessard
parents:
912
diff
changeset
|
951 |
self.RefreshGraphicsWindowScrollbars() |
1194
0cf48602ee24
Fixed bug with moving cursor with keyboard in DebugVariablePanel
Laurent Bessard
parents:
1193
diff
changeset
|
952 |
self.GraphicsSizer.Layout() |
924
5f2cc382be8c
Added support for displaying string variables variations in a graph and cursor on graphs
Laurent Bessard
parents:
919
diff
changeset
|
953 |
event.Skip() |
1040
af8a1aee3584
Fixed MouseWheel behavior in DebugVariablePanel, change graph range only if CTRL is pressed
Laurent Bessard
parents:
1008
diff
changeset
|
954 |
|
af8a1aee3584
Fixed MouseWheel behavior in DebugVariablePanel, change graph range only if CTRL is pressed
Laurent Bessard
parents:
1008
diff
changeset
|
955 |
def OnGraphicsWindowMouseWheel(self, event): |
af8a1aee3584
Fixed MouseWheel behavior in DebugVariablePanel, change graph range only if CTRL is pressed
Laurent Bessard
parents:
1008
diff
changeset
|
956 |
if self.VetoScrollEvent: |
af8a1aee3584
Fixed MouseWheel behavior in DebugVariablePanel, change graph range only if CTRL is pressed
Laurent Bessard
parents:
1008
diff
changeset
|
957 |
self.VetoScrollEvent = False |
af8a1aee3584
Fixed MouseWheel behavior in DebugVariablePanel, change graph range only if CTRL is pressed
Laurent Bessard
parents:
1008
diff
changeset
|
958 |
else: |
af8a1aee3584
Fixed MouseWheel behavior in DebugVariablePanel, change graph range only if CTRL is pressed
Laurent Bessard
parents:
1008
diff
changeset
|
959 |
event.Skip() |