import os from enum import Enum from PyQt5 import QtWidgets, uic from clusterview_ui import Ui_MainWindow class Mode(Enum): """ Class to make it easier to figure out what mode we are operating in when the OpenGL window is clicked """ OFF = 0 ADD = 1 EDIT = 2 DELETE = 3 class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): """ A wrapper class for handling creating a window based on the `clusterview_ui.py` code generated from `clusterview.ui`. """ __mode = Mode.OFF def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) # ------------------------------------- # UI Handlers # ------------------------------------- self.action_add_points.triggered.connect(self.__add_points) self.action_edit_points.triggered.connect(self.__edit_points) self.action_delete_points.triggered.connect(self.__delete_points) self.action_solve.triggered.connect(self.__solve_launcher) # TODO: These handlers should probably be broken out into classes # Such as "GraphicsDrawer", etc that implements these functions # in isolation so this file remains relatively clean aside from # the UI hooks to the functions above. def __add_points(self): self.__mode = Mode.ADD print("ADDING POINT MODE ENABLED!") def __edit_points(self): self.__mode = Mode.EDIT print("EDITING POINT MODE ENABLED!") def __delete_points(self): self.__mode = Mode.DELETE print("DELETE POINT MODE ENABLED!") def __solve_launcher(self): """ Launched the solve menu. This function will call into a subclass of the solve dialog widget from the UI. TODO: Write the subclass once you know the parameters for the solve window. """ print("LAUNCHING SOLVE DIALOG...")