GraphicViewer.py
changeset 722 8c098eb05498
parent 714 131ea7f237b9
child 724 57b6446d54f8
equal deleted inserted replaced
721:f3dffc1a5ffe 722:8c098eb05498
   243             for text, value in TIME_RANGE_VALUES:
   243             for text, value in TIME_RANGE_VALUES:
   244                 self.CanvasRange.Append(text)
   244                 self.CanvasRange.Append(text)
   245             self.CanvasRange.SetStringSelection(TIME_RANGE_VALUES[0][0])
   245             self.CanvasRange.SetStringSelection(TIME_RANGE_VALUES[0][0])
   246             self.CurrentRange = TIME_RANGE_VALUES[0][1] / self.Ticktime
   246             self.CurrentRange = TIME_RANGE_VALUES[0][1] / self.Ticktime
   247         
   247         
   248     def RefreshView(self, force=True):
   248     def RefreshView(self, force=False):
   249         self.Freeze()
   249         self.Freeze()
   250         if force or not self.Fixed or (len(self.Datas) > 0 and self.StartTick + self.CurrentRange > self.Datas[-1][0]):
   250         if force or not self.Fixed or (len(self.Datas) > 0 and self.StartTick + self.CurrentRange > self.Datas[-1][0]):
   251             if (self.MinValue is not None and 
   251             if (self.MinValue is not None and 
   252                 self.MaxValue is not None and 
   252                 self.MaxValue is not None and 
   253                 self.MinValue != self.MaxValue):
   253                 self.MinValue != self.MaxValue):
   254                 Yrange = float(self.MaxValue - self.MinValue) / self.CurrentZoom
   254                 Yrange = float(self.MaxValue - self.MinValue) / self.CurrentZoom
   255             else:
   255             else:
   256                 Yrange = 2. / self.CurrentZoom
   256                 Yrange = 2. / self.CurrentZoom
   257             
   257             
   258             if not self.Fixed and len(self.Datas) > 0:
   258             if not force and not self.Fixed and len(self.Datas) > 0:
   259                 self.YCenter = max(self.Datas[-1][1] - Yrange / 2, 
   259                 self.YCenter = max(self.Datas[-1][1] - Yrange / 2, 
   260                                min(self.YCenter, 
   260                                min(self.YCenter, 
   261                                    self.Datas[-1][1] + Yrange / 2))
   261                                    self.Datas[-1][1] + Yrange / 2))
   262             
   262             
   263             var_name = self.InstancePath.split(".")[-1]
   263             var_name = self.InstancePath.split(".")[-1]
   266             self.VariableGraphic = plot.PolyLine(self.Datas[self.StartIdx:self.EndIdx + 1], 
   266             self.VariableGraphic = plot.PolyLine(self.Datas[self.StartIdx:self.EndIdx + 1], 
   267                                                  legend=var_name, colour=colours[0])
   267                                                  legend=var_name, colour=colours[0])
   268             self.GraphicsObject = plot.PlotGraphics([self.VariableGraphic], _("%s Graphics") % var_name, _("Tick"), _("Values"))
   268             self.GraphicsObject = plot.PlotGraphics([self.VariableGraphic], _("%s Graphics") % var_name, _("Tick"), _("Values"))
   269             self.Canvas.Draw(self.GraphicsObject, 
   269             self.Canvas.Draw(self.GraphicsObject, 
   270                              xAxis=(self.StartTick, self.StartTick + self.CurrentRange),
   270                              xAxis=(self.StartTick, self.StartTick + self.CurrentRange),
   271                              yAxis=(self.YCenter - Yrange * 1.1 / 2, self.YCenter + Yrange * 1.1 / 2))
   271                              yAxis=(self.YCenter - Yrange * 1.1 / 2., self.YCenter + Yrange * 1.1 / 2.))
   272         
   272         
   273             # Reset and draw cursor 
   273             # Reset and draw cursor 
   274             self.ResetLastCursor()
   274             self.ResetLastCursor()
   275             self.RefreshCursor()
   275             self.RefreshCursor()
   276         
   276         
   319             self.ResetBounds()
   319             self.ResetBounds()
   320             if self.Fixed:
   320             if self.Fixed:
   321                 self.StartTick = min(self.StartTick, self.Datas[-1][0] - self.CurrentRange)
   321                 self.StartTick = min(self.StartTick, self.Datas[-1][0] - self.CurrentRange)
   322             else:
   322             else:
   323                 self.StartTick = max(self.Datas[0][0], self.Datas[-1][0] - self.CurrentRange)
   323                 self.StartTick = max(self.Datas[0][0], self.Datas[-1][0] - self.CurrentRange)
   324         self.NewDataAvailable(True)
   324         self.RefreshView(True)
   325 
   325 
   326     def OnRangeChanged(self, event):
   326     def OnRangeChanged(self, event):
   327         try:
   327         try:
   328             if self.Ticktime == 0:
   328             if self.Ticktime == 0:
   329                 self.CurrentRange = self.RangeValues[self.CanvasRange.GetSelection()][1]
   329                 self.CurrentRange = self.RangeValues[self.CanvasRange.GetSelection()][1]
   334         wx.CallAfter(self.RefreshRange)
   334         wx.CallAfter(self.RefreshRange)
   335         event.Skip()
   335         event.Skip()
   336     
   336     
   337     def OnZoomChanged(self, event):
   337     def OnZoomChanged(self, event):
   338         self.CurrentZoom = ZOOM_VALUES[self.CanvasZoom.GetSelection()][1]
   338         self.CurrentZoom = ZOOM_VALUES[self.CanvasZoom.GetSelection()][1]
   339         wx.CallAfter(self.NewDataAvailable, True)
   339         wx.CallAfter(self.RefreshView, True)
   340         event.Skip()
   340         event.Skip()
   341     
   341     
   342     def OnPositionChanging(self, event):
   342     def OnPositionChanging(self, event):
   343         self.ResetBounds()
   343         self.ResetBounds()
   344         self.StartTick = self.Datas[0][0] + event.GetPosition()
   344         self.StartTick = self.Datas[0][0] + event.GetPosition()
   420                         self.CurrentRange = self.RangeValues[new][1] / self.Ticktime
   420                         self.CurrentRange = self.RangeValues[new][1] / self.Ticktime
   421                     self.CanvasRange.SetStringSelection(self.RangeValues[new][0])
   421                     self.CanvasRange.SetStringSelection(self.RangeValues[new][0])
   422                     wx.CallAfter(self.RefreshRange)
   422                     wx.CallAfter(self.RefreshRange)
   423             else:
   423             else:
   424                 current = self.CanvasZoom.GetSelection()
   424                 current = self.CanvasZoom.GetSelection()
   425                 new = max(0, min(current - rotation, len(ZOOM_VALUES) - 1))
   425                 new = max(0, min(current + rotation, len(ZOOM_VALUES) - 1))
   426                 if new != current:
   426                 if new != current:
   427                     self.CurrentZoom = ZOOM_VALUES[new][1]
   427                     self.CurrentZoom = ZOOM_VALUES[new][1]
   428                     self.CanvasZoom.SetStringSelection(ZOOM_VALUES[new][0])
   428                     self.CanvasZoom.SetStringSelection(ZOOM_VALUES[new][0])
   429                     wx.CallAfter(self.NewDataAvailable, True)
   429                     wx.CallAfter(self.RefreshView, True)
   430         event.Skip()
   430         event.Skip()
   431 
   431 
   432     def OnCanvasResize(self, event):
   432     def OnCanvasResize(self, event):
   433         self.ResetLastCursor()
   433         self.ResetLastCursor()
   434         wx.CallAfter(self.RefreshCursor)
   434         wx.CallAfter(self.RefreshCursor)