refactor: using @dataclass actually broke the singleton

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
dw-0
2024-03-31 17:57:01 +02:00
parent e50ce1fc71
commit b2dd5d8ed7
2 changed files with 55 additions and 11 deletions

View File

@@ -7,7 +7,7 @@
# This file may be distributed under the terms of the GNU GPLv3 license #
# ======================================================================= #
from dataclasses import field, dataclass
from dataclasses import field
from enum import Enum
from typing import Union, List
@@ -28,15 +28,14 @@ class ConnectionType(Enum):
UART = "UART"
@dataclass
class FlashOptions:
_instance = None
flash_method: Union[FlashMethod, None] = None
flash_command: Union[FlashCommand, None] = None
connection_type: Union[ConnectionType, None] = None
mcu_list: List[str] = field(default_factory=list)
selected_mcu: str = ""
selected_board: str = ""
_flash_method: Union[FlashMethod, None] = None
_flash_command: Union[FlashCommand, None] = None
_connection_type: Union[ConnectionType, None] = None
_mcu_list: List[str] = field(default_factory=list)
_selected_mcu: str = ""
_selected_board: str = ""
def __new__(cls, *args, **kwargs):
if not cls._instance:
@@ -46,3 +45,51 @@ class FlashOptions:
@classmethod
def destroy(cls):
cls._instance = None
@property
def flash_method(self) -> Union[FlashMethod, None]:
return self._flash_method
@flash_method.setter
def flash_method(self, value: Union[FlashMethod, None]):
self._flash_method = value
@property
def flash_command(self) -> Union[FlashCommand, None]:
return self._flash_command
@flash_command.setter
def flash_command(self, value: Union[FlashCommand, None]):
self._flash_command = value
@property
def connection_type(self) -> Union[ConnectionType, None]:
return self._connection_type
@connection_type.setter
def connection_type(self, value: Union[ConnectionType, None]):
self._connection_type = value
@property
def mcu_list(self) -> List[str]:
return self._mcu_list
@mcu_list.setter
def mcu_list(self, value: List[str]) -> None:
self._mcu_list = value
@property
def selected_mcu(self) -> str:
return self._selected_mcu
@selected_mcu.setter
def selected_mcu(self, value: str) -> None:
self._selected_mcu = value
@property
def selected_board(self) -> str:
return self._selected_board
@selected_board.setter
def selected_board(self, value: str) -> None:
self._selected_board = value

View File

@@ -184,8 +184,6 @@ class KlipperSelectMcuConnectionMenu(BaseMenu):
Logger.print_status("Identifying MCU connected via USB in DFU mode ...")
self.flash_options.mcu_list = find_usb_dfu_device()
print(self.flash_options.mcu_list)
if len(self.flash_options.mcu_list) < 1:
Logger.print_warn("No MCUs found!")
Logger.print_warn("Make sure they are connected and repeat this step.")
@@ -205,7 +203,6 @@ class KlipperSelectMcuIdMenu(BaseMenu):
self.previous_menu: BaseMenu = previous_menu
self.flash_options = FlashOptions()
self.mcu_list = self.flash_options.mcu_list
print(self.mcu_list)
options = {f"{index}": self.flash_mcu for index in range(len(self.mcu_list))}
self.options = options
self.input_label_txt = "Select MCU to flash"