diff --git a/y2023/control_loops/python/graph_edit.py b/y2023/control_loops/python/graph_edit.py
index f18a0b6..82961fb 100644
--- a/y2023/control_loops/python/graph_edit.py
+++ b/y2023/control_loops/python/graph_edit.py
@@ -192,10 +192,45 @@
 DRIVER_CAM_HEIGHT = DRIVER_CAM_POINTS[-1][1] - DRIVER_CAM_POINTS[0][1]
 
 
+class SegmentSelector(basic_window.BaseWindow):
+
+    def __init__(self, segments):
+        super(SegmentSelector, self).__init__()
+
+        self.window = Gtk.Window()
+        self.window.set_title("Segment Selector")
+
+        self.segments = segments
+
+        self.segment_store = Gtk.ListStore(int, str)
+
+        for i, segment in enumerate(segments):
+            self.segment_store.append([i, segment.name])
+
+        self.segment_box = Gtk.ComboBox.new_with_model_and_entry(
+            self.segment_store)
+        self.segment_box.connect("changed", self.on_combo_changed)
+        self.segment_box.set_entry_text_column(1)
+
+        self.current_path_index = None
+
+        self.window.add(self.segment_box)
+        self.window.show_all()
+
+    def on_combo_changed(self, combo):
+        iter = combo.get_active_iter()
+
+        if iter is not None:
+            model = combo.get_model()
+            id, name = model[iter][:2]
+            print("Selected: ID=%d, name=%s" % (id, name))
+            self.current_path_index = id
+
+
 # Create a GTK+ widget on which we will draw using Cairo
 class ArmUi(basic_window.BaseWindow):
 
-    def __init__(self):
+    def __init__(self, segments):
         super(ArmUi, self).__init__()
 
         self.window = Gtk.Window()
@@ -221,7 +256,7 @@
         self.circular_index_select = 1
 
         # Extra stuff for drawing lines.
-        self.segments = []
+        self.segments = segments
         self.prev_segment_pt = None
         self.now_segment_pt = None
         self.spline_edit = 0
@@ -247,6 +282,9 @@
                                     [DRIVER_CAM_X, DRIVER_CAM_Y],
                                     DRIVER_CAM_WIDTH, DRIVER_CAM_HEIGHT)
 
+        self.segment_selector = SegmentSelector(self.segments)
+        self.segment_selector.show()
+
     def _do_button_press_internal(self, event):
         o_x = event.x
         o_y = event.y
@@ -295,6 +333,8 @@
     # Handle the expose-event by drawing
     def handle_draw(self, cr):
         # use "with px(cr): blah;" to transform to pixel coordinates.
+        if self.segment_selector.current_path_index is not None:
+            self.index = self.segment_selector.current_path_index
 
         # Fill the background color of the window with grey
         set_color(cr, palette["GREY"])
@@ -563,8 +603,7 @@
         self.redraw()
 
 
-arm_ui = ArmUi()
-arm_ui.segments = graph_paths.segments
+arm_ui = ArmUi(graph_paths.segments)
 print('Starting with segment: ', arm_ui.segments[arm_ui.index].name)
 arm_ui.segments[arm_ui.index].Print(graph_paths.points)
 basic_window.RunApp()
