Fix IndexError when cursor_index > data[0].size in spline UI
Change-Id: I95a2a6141648b8028208c55cb4b02f33e9c2a9de
Signed-off-by: Ryan Yin <100028731@mvla.net>
diff --git a/frc971/control_loops/python/graph.py b/frc971/control_loops/python/graph.py
index 178b63d..1cc6f57 100644
--- a/frc971/control_loops/python/graph.py
+++ b/frc971/control_loops/python/graph.py
@@ -49,12 +49,15 @@
if self.data is None:
return None
cursor_index = int(self.cursor / self.dt)
- if cursor_index > self.data.size:
+ if self.data[0].size < cursor_index:
return None
# use the time to index into the position data
- distance_at_cursor = self.data[0][cursor_index - 1]
- multispline_index = int(self.data[5][cursor_index - 1])
- return (multispline_index, distance_at_cursor)
+ try:
+ distance_at_cursor = self.data[0][cursor_index - 1]
+ multispline_index = int(self.data[5][cursor_index - 1])
+ return (multispline_index, distance_at_cursor)
+ except IndexError:
+ return None
def place_cursor(self, multispline_index, distance):
"""Places the cursor at a certain distance along the spline"""
diff --git a/frc971/control_loops/python/path_edit.py b/frc971/control_loops/python/path_edit.py
index b66a668..c1b4fcf 100755
--- a/frc971/control_loops/python/path_edit.py
+++ b/frc971/control_loops/python/path_edit.py
@@ -233,8 +233,11 @@
multispline, result = Multispline.nearest_distance(
self.multisplines, mouse)
- if self.graph.cursor is not None and self.graph.data is not None:
- multispline_index, x = self.graph.find_cursor()
+ if self.graph.cursor is not None:
+ cursor = self.graph.find_cursor()
+ if cursor is None:
+ return
+ multispline_index, x = cursor
distance_spline = DistanceSpline(
self.multisplines[multispline_index].getLibsplines())