# Path: debugger/enums.py
# class ProcessState(Enum):
#     """
#     Represents the debugged process' state.
#     """
#     Attaching = 3
#     Connected = 2
#     Crashed = 8
#     Detached = 9
#     Exited = 10
#     Invalid = 0
#     Launching = 4
#     Running = 6
#     Stepping = 7
#     Stopped = 5
#     Suspended = 11
#     Unloaded = 1


import abc
from gi.repository import Gtk
from debugger.enums import ProcessState
from gui_util import run_on_gui, require_gui_thread, truncate
        row = FrameListRow(frame)

        frame_desc = str(frame)
        frame_desc_trunc = truncate(frame_desc, 53, "...")

        label = Gtk.Label(frame_desc_trunc)
        label.set_tooltip_text(frame_desc)
        row.add(label)

        self.add(row)
        self.show_all()

        return row

    def _handle_frame_change(self, frame):
        run_on_gui(self._load_frames)

    def _handle_thread_change(self, thread):
        run_on_gui(self._load_frames)

    def _handle_row_selected(self, row):
        """
        @type row: FrameListRow
        """
        if row is None or self._is_auto_select_on():
            return

        self.debugger.thread_manager.change_frame(row.get_index())

    def _handle_process_change(self, state, event):

# Path: debugger/enums.py
# class ProcessState(Enum):
#     """
#     Represents the debugged process' state.
#     """
#     Attaching = 3
#     Connected = 2
#     Crashed = 8
#     Detached = 9
#     Exited = 10
#     Invalid = 0
#     Launching = 4
#     Running = 6
#     Stepping = 7
#     Stopped = 5
#     Suspended = 11
#     Unloaded = 1


# Path: gui/selector.py
import abc
from gi.repository import Gtk
from debugger.enums import ProcessState
from gui_util import run_on_gui, require_gui_thread, truncate

        row = FrameListRow(frame)

        frame_desc = str(frame)
        frame_desc_trunc = truncate(frame_desc, 53, "...")

        label = Gtk.Label(frame_desc_trunc)
        label.set_tooltip_text(frame_desc)
        row.add(label)

        self.add(row)
        self.show_all()

        return row

    def _handle_frame_change(self, frame):
        run_on_gui(self._load_frames)

    def _handle_thread_change(self, thread):
        run_on_gui(self._load_frames)

    def _handle_row_selected(self, row):
        """
        @type row: FrameListRow
        """
        if row is None or self._is_auto_select_on():
            return

        self.debugger.thread_manager.change_frame(row.get_index())

    def _handle_process_change(self, state, event):

        if state == ProcessState.Exited: