controls/DebugVariablePanel.py
changeset 932 ebe63100b6d7
parent 931 da4970f6c46c
child 934 fc00c11feff5
equal deleted inserted replaced
931:da4970f6c46c 932:ebe63100b6d7
   967                     self.Canvas.DismissContextualButtons()
   967                     self.Canvas.DismissContextualButtons()
   968                     xw, yw = self.GetPosition()
   968                     xw, yw = self.GetPosition()
   969                     self.ParentWindow.StartDragNDrop(self, 
   969                     self.ParentWindow.StartDragNDrop(self, 
   970                         self.Items[item_idx], x + xw, y + yw, x + xw, y + yw)
   970                         self.Items[item_idx], x + xw, y + yw, x + xw, y + yw)
   971                 elif event.button == 1 and event.inaxes == self.Axes:
   971                 elif event.button == 1 and event.inaxes == self.Axes:
       
   972                     self.StartCursorTick = self.CursorTick
   972                     self.HandleCursorMove(event)
   973                     self.HandleCursorMove(event)
   973                 elif event.button == 2 and self.GraphType == GRAPH_PARALLEL:
   974                 elif event.button == 2 and self.GraphType == GRAPH_PARALLEL:
   974                     width, height = self.Canvas.GetSize()
   975                     width, height = self.Canvas.GetSize()
   975                     start_tick, end_tick = self.ParentWindow.GetRange()
   976                     start_tick, end_tick = self.ParentWindow.GetRange()
   976                     self.MouseStartPos = wx.Point(x, y)
   977                     self.MouseStartPos = wx.Point(x, y)
  1002                     if event.inaxes == self.Axes:
  1003                     if event.inaxes == self.Axes:
  1003                         if self.MouseStartPos is not None:
  1004                         if self.MouseStartPos is not None:
  1004                             self.HandleCursorMove(event)
  1005                             self.HandleCursorMove(event)
  1005                     elif self.MouseStartPos is not None and len(self.Items) == 1:
  1006                     elif self.MouseStartPos is not None and len(self.Items) == 1:
  1006                         xw, yw = self.GetPosition()
  1007                         xw, yw = self.GetPosition()
       
  1008                         self.ParentWindow.SetCursorTick(self.StartCursorTick)
  1007                         self.ParentWindow.StartDragNDrop(self, 
  1009                         self.ParentWindow.StartDragNDrop(self, 
  1008                             self.Items[0],
  1010                             self.Items[0],
  1009                             event.x + xw, height - event.y + yw, 
  1011                             event.x + xw, height - event.y + yw, 
  1010                             self.MouseStartPos.x + xw, self.MouseStartPos.y + yw)
  1012                             self.MouseStartPos.x + xw, self.MouseStartPos.y + yw)
  1011                 elif event.button == 2 and self.GraphType == GRAPH_PARALLEL:
  1013                 elif event.button == 2 and self.GraphType == GRAPH_PARALLEL:
  1084                 data = self.Items[0].GetData(start_tick, end_tick)
  1086                 data = self.Items[0].GetData(start_tick, end_tick)
  1085                 if len(data) > 0:
  1087                 if len(data) > 0:
  1086                     cursor_tick = data[numpy.argmin(numpy.abs(data[:,0] - event.xdata)), 0]
  1088                     cursor_tick = data[numpy.argmin(numpy.abs(data[:,0] - event.xdata)), 0]
  1087             if cursor_tick is not None:
  1089             if cursor_tick is not None:
  1088                 self.ParentWindow.SetCursorTick(cursor_tick)
  1090                 self.ParentWindow.SetCursorTick(cursor_tick)
  1089         
       
  1090         def DoDragDrop(self, item_idx):
       
  1091             self.Canvas.ShowButtons(False)
       
  1092             self.Canvas.DismissContextualButtons()
       
  1093             data = wx.TextDataObject(str((self.Items[item_idx].GetVariable(), "debug", "move")))
       
  1094             dragSource = wx.DropSource(self.Canvas)
       
  1095             dragSource.SetData(data)
       
  1096             dragSource.DoDragDrop()
       
  1097         
  1091         
  1098         def OnAxesMotion(self, event):
  1092         def OnAxesMotion(self, event):
  1099             if self.Is3DCanvas():
  1093             if self.Is3DCanvas():
  1100                 current_time = gettime()
  1094                 current_time = gettime()
  1101                 if current_time - self.LastMotionTime > REFRESH_PERIOD:
  1095                 if current_time - self.LastMotionTime > REFRESH_PERIOD:
  1814             self.PopupMenu(menu)
  1808             self.PopupMenu(menu)
  1815             
  1809             
  1816             menu.Destroy()
  1810             menu.Destroy()
  1817         event.Skip()
  1811         event.Skip()
  1818     
  1812     
  1819     def ChangeRange(self, dir, tick):
  1813     def ChangeRange(self, dir, tick=None):
  1820         current_range = self.CurrentRange
  1814         current_range = self.CurrentRange
  1821         current_range_idx = self.CanvasRange.GetSelection()
  1815         current_range_idx = self.CanvasRange.GetSelection()
  1822         new_range_idx = max(0, min(current_range_idx + dir, len(self.RangeValues) - 1))
  1816         new_range_idx = max(0, min(current_range_idx + dir, len(self.RangeValues) - 1))
  1823         if new_range_idx != current_range_idx:
  1817         if new_range_idx != current_range_idx:
  1824             self.CanvasRange.SetSelection(new_range_idx)
  1818             self.CanvasRange.SetSelection(new_range_idx)
  1825             if self.Ticktime == 0:
  1819             if self.Ticktime == 0:
  1826                 self.CurrentRange = self.RangeValues[new_range_idx][1]
  1820                 self.CurrentRange = self.RangeValues[new_range_idx][1]
  1827             else:
  1821             else:
  1828                 self.CurrentRange = self.RangeValues[new_range_idx][1] / self.Ticktime
  1822                 self.CurrentRange = self.RangeValues[new_range_idx][1] / self.Ticktime
  1829             if len(self.Ticks) > 0:
  1823             if len(self.Ticks) > 0:
       
  1824                 if tick is None:
       
  1825                     tick = self.StartTick + self.CurrentRange / 2.
  1830                 new_start_tick = tick - (tick - self.StartTick) * self.CurrentRange / current_range 
  1826                 new_start_tick = tick - (tick - self.StartTick) * self.CurrentRange / current_range 
  1831                 self.StartTick = self.Ticks[numpy.argmin(numpy.abs(self.Ticks - new_start_tick))]
  1827                 self.StartTick = self.Ticks[numpy.argmin(numpy.abs(self.Ticks - new_start_tick))]
  1832                 self.Fixed = self.StartTick < self.Ticks[-1] - self.CurrentRange
  1828                 self.Fixed = self.StartTick < self.Ticks[-1] - self.CurrentRange
  1833             self.ForceRefresh()
  1829             self.ForceRefresh()
  1834     
  1830