Skip to content

Commit 73751f3

Browse files
author
Roberto Martins
committed
ADD: write/read filament type
1 parent 691550e commit 73751f3

1 file changed

Lines changed: 47 additions & 18 deletions

File tree

BlocksScreen/lib/panels/filamentTab.py

Lines changed: 47 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@
1010
from PyQt6 import QtCore, QtGui, QtWidgets
1111

1212

13+
class FilamentTypes(enum.Enum):
14+
PLA = Filament(name="PLA", temperature=220)
15+
PETG = Filament(name="PETG", temperature=240)
16+
ABS = Filament(name="ABS", temperature=250)
17+
HIPS = Filament(name="HIPS", temperature=250)
18+
NYLON = Filament(name="NYLON", temperature=270)
19+
TPU = Filament(name="TPU", temperature=230)
20+
UNKNOWN = Filament(name="UNKNOWN", temperature=250)
21+
22+
1323
class FilamentTab(QtWidgets.QStackedWidget):
1424
request_filament_change_page = QtCore.pyqtSignal(name="filament_change_page")
1525
request_filament_load = QtCore.pyqtSignal(name="filament_load_t1")
@@ -19,9 +29,6 @@ class FilamentTab(QtWidgets.QStackedWidget):
1929
run_gcode = QtCore.pyqtSignal(str, name="run_gcode")
2030
call_load_panel = QtCore.pyqtSignal(bool, str, name="call-load-panel")
2131

22-
class FilamentTypes(enum.Enum):
23-
PLA = Filament(name="PLA", temperature=220)
24-
2532
class FilamentStates(enum.Enum):
2633
LOADED = enum.auto()
2734
UNLOADED = enum.auto()
@@ -44,30 +51,30 @@ def __init__(self, parent: QtWidgets.QWidget, printer: Printer, ws, /) -> None:
4451
self.has_load_unload_objects = None
4552
self._filament_state = self.FilamentStates.UNKNOWN
4653
self._sensor_states = {}
47-
self.filament_type: Filament | None = None
54+
self.filament_type = FilamentTypes.UNKNOWN
4855
self.panel.filament_page_load_btn.clicked.connect(
4956
partial(self.change_page, self.indexOf(self.panel.load_page))
5057
)
5158
self.panel.custom_filament_header_back_btn.clicked.connect(self.back_button)
5259
self.panel.load_custom_btn.hide()
5360
self.panel.load_header_back_button.clicked.connect(self.back_button)
5461
self.panel.load_pla_btn.clicked.connect(
55-
partial(self.load_filament, toolhead=0, temp=220)
62+
partial(self.load_filament, toolhead=0, filament=FilamentTypes.PLA)
5663
)
5764
self.panel.load_petg_btn.clicked.connect(
58-
partial(self.load_filament, toolhead=0, temp=240)
65+
partial(self.load_filament, toolhead=0, filament=FilamentTypes.PETG)
5966
)
6067
self.panel.load_abs_btn.clicked.connect(
61-
partial(self.load_filament, toolhead=0, temp=250)
68+
partial(self.load_filament, toolhead=0, filament=FilamentTypes.ABS)
6269
)
6370
self.panel.load_hips_btn.clicked.connect(
64-
partial(self.load_filament, toolhead=0, temp=250)
71+
partial(self.load_filament, toolhead=0, filament=FilamentTypes.HIPS)
6572
)
6673
self.panel.load_nylon_btn.clicked.connect(
67-
partial(self.load_filament, toolhead=0, temp=270)
74+
partial(self.load_filament, toolhead=0, filament=FilamentTypes.NYLON)
6875
)
6976
self.panel.load_tpu_btn.clicked.connect(
70-
partial(self.load_filament, toolhead=0, temp=230)
77+
partial(self.load_filament, toolhead=0, filament=FilamentTypes.TPU)
7178
)
7279
self.panel.filament_page_unload_btn.clicked.connect(
7380
lambda: self.unload_filament(toolhead=0, temp=250)
@@ -87,6 +94,18 @@ def __init__(self, parent: QtWidgets.QWidget, printer: Printer, ws, /) -> None:
8794
self.loadignore = True
8895
self.unloadignore = True
8996

97+
self.printer.save_variables_update.connect(self.on_save_variables_update)
98+
99+
def on_save_variables_update(self, save_variables: dict):
100+
"""Handle query response"""
101+
for i in FilamentTypes:
102+
if i.value.name in save_variables["variables"]["filament_type"]:
103+
self.filament_type = i
104+
break
105+
else:
106+
self.filament_type = FilamentTypes.UNKNOWN
107+
self.panel.label_2.setText(self.filament_type.value.name)
108+
90109
@QtCore.pyqtSlot(str, dict, name="on_print_stats_update")
91110
@QtCore.pyqtSlot(str, float, name="on_print_stats_update")
92111
@QtCore.pyqtSlot(str, str, name="on_print_stats_update")
@@ -177,7 +196,9 @@ def on_unload_filament(self, status: bool):
177196
self.handle_filament_state()
178197

179198
@QtCore.pyqtSlot(int, int, name="load_filament")
180-
def load_filament(self, toolhead: int = 0, temp: int = 220) -> None:
199+
def load_filament(
200+
self, toolhead: int = 0, filament: FilamentTypes = FilamentTypes.UNKNOWN
201+
) -> None:
181202
"""Handle load filament buttons clicked"""
182203
if not self.isVisible:
183204
return
@@ -196,7 +217,12 @@ def load_filament(self, toolhead: int = 0, temp: int = 220) -> None:
196217
return
197218
self.loadignore = False
198219
self.call_load_panel.emit(True, "Loading Filament")
199-
self.run_gcode.emit(f"LOAD_FILAMENT TOOLHEAD=load_toolhead TEMPERATURE={temp}")
220+
self.run_gcode.emit(
221+
f"""SAVE_VARIABLE VARIABLE=filament_type VALUE='"{filament.value.name}"'"""
222+
)
223+
self.run_gcode.emit(
224+
f"LOAD_FILAMENT TOOLHEAD=load_toolhead TEMPERATURE={filament.value.temperature}"
225+
)
200226

201227
@QtCore.pyqtSlot(str, int, name="unload_filament")
202228
def unload_filament(self, toolhead: int = 0, temp: int = 220) -> None:
@@ -220,19 +246,22 @@ def unload_filament(self, toolhead: int = 0, temp: int = 220) -> None:
220246
self.find_routine_objects()
221247
self.unloadignore = False
222248
self.call_load_panel.emit(True, "Unloading Filament")
249+
self.run_gcode.emit(
250+
f"""SAVE_VARIABLE VARIABLE=filament_type VALUE='"{FilamentTypes.UNKNOWN.value.name}"'"""
251+
)
223252
self.run_gcode.emit(f"UNLOAD_FILAMENT TEMPERATURE={temp}")
224253

225254
def handle_filament_state(self):
226255
"""Handle ui changes on filament states"""
227256
if self._filament_state == self.FilamentStates.LOADED:
228-
self.panel.filament_page_load_btn.setDisabled(True)
229-
self.panel.filament_page_load_btn.setDisabled(False)
257+
self.panel.filament_page_unload_btn.setEnabled(True)
258+
self.panel.filament_page_load_btn.setEnabled(False)
230259
elif self._filament_state == self.FilamentStates.UNLOADED:
231-
self.panel.filament_page_unload_btn.setDisabled(True)
232-
self.panel.filament_page_unload_btn.setDisabled(False)
260+
self.panel.filament_page_unload_btn.setEnabled(False)
261+
self.panel.filament_page_load_btn.setEnabled(True)
233262
else:
234-
self.panel.filament_page_load_btn.setDisabled(False)
235-
self.panel.filament_page_unload_btn.setDisabled(False)
263+
self.panel.filament_page_load_btn.setEnabled(True)
264+
self.panel.filament_page_unload_btn.setEnabled(True)
236265

237266
@property
238267
def filament_state(self):

0 commit comments

Comments
 (0)