Skip to content

Commit df8b7e6

Browse files
author
Roberto Martins
committed
add: added more features
1 parent 61988f7 commit df8b7e6

3 files changed

Lines changed: 33 additions & 81 deletions

File tree

BlocksScreen/lib/panels/filamentTab.py

Lines changed: 21 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ def __init__(self, parent: QtWidgets.QWidget, printer: Printer, ws, /) -> None:
9292
lambda: self.request_change_tab.emit(0)
9393
)
9494
self.run_gcode.connect(self.ws.api.run_gcode)
95-
self.printer.extruder_update.connect(self.on_extruder_update)
9695
self.printer.unload_filament_update.connect(self.on_unload_filament)
9796
self.printer.load_filament_update.connect(self.on_load_filament)
9897
self.printer.filament_switch_sensor_update.connect(
@@ -103,10 +102,9 @@ def __init__(self, parent: QtWidgets.QWidget, printer: Printer, ws, /) -> None:
103102
self.printer.print_stats_update[str, dict].connect(self.on_print_stats_update)
104103
self.printer.print_stats_update[str, float].connect(self.on_print_stats_update)
105104

106-
self.loadignore = True
107-
self.unloadignore = True
108105

109106
self.printer.save_variables_update.connect(self.on_save_variables_update)
107+
self.state = "standby"
110108

111109
def on_save_variables_update(self, save_variables: dict):
112110
"""Handle query response"""
@@ -125,6 +123,7 @@ def on_print_stats_update(self, field: str, value: dict | float | str) -> None:
125123
"""Handle print stats object update"""
126124
if isinstance(value, str):
127125
if "state" in field:
126+
self.state = value
128127
if value in ("printing", "pausing", "paused", "resuming"):
129128
self.panel.main_back_button.show()
130129
self.panel.spacerItem1.changeSize(
@@ -134,8 +133,6 @@ def on_print_stats_update(self, field: str, value: dict | float | str) -> None:
134133
QtWidgets.QSizePolicy.Policy.Minimum,
135134
)
136135
if value in ("standby"):
137-
self.loadignore = True
138-
self.unloadignore = True
139136
self.panel.main_back_button.hide()
140137
self.panel.spacerItem1.changeSize(
141138
0,
@@ -160,63 +157,29 @@ def on_filament_sensor_update(self, sensor_name: str, parameter: str, value: boo
160157
return
161158
self.handle_filament_state()
162159

163-
@QtCore.pyqtSlot(str, str, float, name="on_extruder_update")
164-
def on_extruder_update(
165-
self, extruder_name: str, field: str, new_value: float
166-
) -> None:
167-
"""Handle extruder update"""
168-
if not self.isVisible:
169-
return
170-
if not self.loadignore or not self.unloadignore:
171-
if self.target_temp != 0:
172-
if self.current_temp == self.target_temp:
173-
if self.isVisible:
174-
self.call_load_panel.emit(
175-
True, "Extruder heated up \n Please wait"
176-
)
177-
return
178-
if field == "temperature":
179-
self.current_temp = round(new_value, 0)
180-
if self.isVisible:
181-
self.call_load_panel.emit(
182-
True,
183-
f"Heating up ({new_value}/{self.target_temp}) \n Please wait",
184-
)
185-
if field == "target":
186-
self.target_temp = round(new_value, 0)
187-
if self.isVisible:
188-
self.call_load_panel.emit(True, "Heating up \n Please wait")
189-
190-
@QtCore.pyqtSlot(bool, name="on_load_filament")
191-
def on_load_filament(self, status: bool):
160+
161+
@QtCore.pyqtSlot(dict, name="on_load_filament")
162+
def on_load_filament(self, status: dict):
192163
"""Handle load filament object updated"""
193-
if not self.isVisible:
194-
return
195-
if self.loadignore:
196-
return
197-
if status:
198-
self.call_load_panel.emit(True, "Loading Filament")
199-
else:
200-
self.loadignore = True
201-
self.target_temp = 0
202-
self.call_load_panel.emit(False, "")
203-
self._filament_state = self.FilamentStates.LOADED
164+
if "state" in status.keys():
165+
if not status["state"]:
166+
self.target_temp = 0
167+
self.call_load_panel.emit(False, "")
168+
if self.state == "printing":
169+
self.request_change_tab.emit(0)
170+
return
171+
self.call_load_panel.emit(True, f"Loading Filament\n{status['step'].capitalize()}")
204172
self.handle_filament_state()
205173

206-
@QtCore.pyqtSlot(bool, name="on_unload_filament")
207-
def on_unload_filament(self, status: bool):
174+
@QtCore.pyqtSlot(dict, name="on_unload_filament")
175+
def on_unload_filament(self, status: dict):
208176
"""Handle unload filament object updated"""
209-
if not self.isVisible:
210-
return
211-
if self.unloadignore:
212-
return
213-
if status:
214-
self.call_load_panel.emit(True, "Unloading Filament")
215-
else:
216-
self.unloadignore = True
217-
self.call_load_panel.emit(False, "")
218-
self.target_temp = 0
219-
self._filament_state = self.FilamentStates.UNLOADED
177+
if "state" in status.keys():
178+
if not status["state"]:
179+
self.target_temp = 0
180+
self.call_load_panel.emit(False, "")
181+
return
182+
self.call_load_panel.emit(True, f"Unloading Filament\n{status['step'].capitalize()}")
220183
self.handle_filament_state()
221184

222185
@QtCore.pyqtSlot(int, int, name="load_filament")
@@ -239,7 +202,6 @@ def load_filament(
239202
message="Filament is already loaded.",
240203
)
241204
return
242-
self.loadignore = False
243205
self.call_load_panel.emit(True, "Loading Filament")
244206
self.run_gcode.emit(
245207
f"""SAVE_VARIABLE VARIABLE=filament_type VALUE='"{filament.value.name}"'"""
@@ -268,7 +230,6 @@ def unload_filament(self, toolhead: int = 0, temp: int = 220) -> None:
268230
return
269231

270232
self.find_routine_objects()
271-
self.unloadignore = False
272233
self.call_load_panel.emit(True, "Unloading Filament")
273234
self.run_gcode.emit(
274235
f"""SAVE_VARIABLE VARIABLE=filament_type VALUE='"{FilamentTypes.UNKNOWN.value.name}"'"""

BlocksScreen/lib/panels/mainWindow.py

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ def __init__(self):
175175
self.ui.filament_type_icon.clicked.connect(
176176
lambda: self.global_change_page(
177177
self.ui.main_content_widget.indexOf(self.ui.filamentTab),
178-
self.filamentPanel.indexOf(self.filamentPanel.panel.load_page),
178+
self.filamentPanel.indexOf(self.filamentPanel),
179179
)
180180
)
181181
self.ui.filament_type_icon.setText("PLA")
@@ -294,10 +294,6 @@ def handle_cancel_print(self, show: bool = True):
294294
def show_LoadScreen(self, show: bool = True, msg: str = ""):
295295
"""Show or hide the loading overlay, guarded by the calling panel's visibility."""
296296
_sender = self.sender()
297-
298-
if _sender == self.filamentPanel:
299-
if not self.filamentPanel.isVisible():
300-
return
301297
if _sender == self.controlPanel:
302298
if not self.controlPanel.isVisible():
303299
return
@@ -307,7 +303,6 @@ def show_LoadScreen(self, show: bool = True, msg: str = ""):
307303
if _sender == self.utilitiesPanel:
308304
if not self.utilitiesPanel.isVisible():
309305
return
310-
311306
self.loadwidget.set_status_message(msg)
312307
if show:
313308
self.loadscreen.show()
@@ -341,8 +336,6 @@ def on_cancel_print(self):
341336
self.enable_tab_bar()
342337
self.ui.extruder_temp_display.clicked.disconnect()
343338
self.ui.bed_temp_display.clicked.disconnect()
344-
self.ui.filament_type_icon.setDisabled(False)
345-
self.ui.nozzle_size_icon.setDisabled(False)
346339
self.ui.extruder_temp_display.clicked.connect(
347340
lambda: self.global_change_page(
348341
self.ui.main_content_widget.indexOf(self.ui.controlTab),
@@ -430,14 +423,18 @@ def reset_tab_indexes(self):
430423
Used to grantee all tabs reset to their
431424
first page once the user leaves the tab
432425
"""
426+
self.filamentPanel.setCurrentIndex(0)
427+
433428
if self.print_status == "printing":
429+
self.printPanel.setCurrentIndex(self.printPanel.indexOf(self.printPanel.jobStatusPage_widget))
434430
return
435-
self.update_page.hide()
436431
self.printPanel.setCurrentIndex(0)
437-
self.filamentPanel.setCurrentIndex(0)
438432
self.controlPanel.setCurrentIndex(0)
439433
self.utilitiesPanel.setCurrentIndex(0)
440-
self.networkPanel.setCurrentIndex(0)
434+
self.networkPanel.setCurrentIndex(0)
435+
self.update_page.hide()
436+
437+
441438

442439
def current_panel_index(self) -> int:
443440
"""Helper function to get the index of the current page in the current tab
@@ -840,8 +837,6 @@ def event(self, event: QtCore.QEvent) -> bool:
840837
self.disable_tab_bar()
841838
self.ui.extruder_temp_display.clicked.disconnect()
842839
self.ui.bed_temp_display.clicked.disconnect()
843-
self.ui.filament_type_icon.setDisabled(True)
844-
self.ui.nozzle_size_icon.setDisabled(True)
845840
self.ui.extruder_temp_display.clicked.connect(
846841
lambda: self.global_change_page(
847842
self.ui.main_content_widget.indexOf(self.ui.printTab),
@@ -867,8 +862,6 @@ def event(self, event: QtCore.QEvent) -> bool:
867862
self.enable_tab_bar()
868863
self.ui.extruder_temp_display.clicked.disconnect()
869864
self.ui.bed_temp_display.clicked.disconnect()
870-
self.ui.filament_type_icon.setDisabled(False)
871-
self.ui.nozzle_size_icon.setDisabled(False)
872865
self.ui.extruder_temp_display.clicked.connect(
873866
lambda: self.global_change_page(
874867
self.ui.main_content_widget.indexOf(self.ui.controlTab),

BlocksScreen/lib/printer.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ class Printer(QtCore.QObject):
6464
gcode_macro_update = QtCore.pyqtSignal(str, dict, name="gcode_macro_update")
6565
webhooks_update = QtCore.pyqtSignal(str, str, name="webhooks_update")
6666

67-
load_filament_update = QtCore.pyqtSignal(bool, name="load_filament_update")
68-
unload_filament_update = QtCore.pyqtSignal(bool, name="unload_filament_update")
67+
load_filament_update = QtCore.pyqtSignal(dict, name="load_filament_update")
68+
unload_filament_update = QtCore.pyqtSignal(dict, name="unload_filament_update")
6969

7070
query_printer_object = QtCore.pyqtSignal(dict, name="query_printer_object")
7171
save_config_pending: typing.ClassVar[QtCore.pyqtSignal] = QtCore.pyqtSignal(
@@ -741,9 +741,7 @@ def _temperature_probe_object_updated(self, values: dict, name: str) -> None:
741741

742742
# TODO: testing needed here idk if does work
743743
def _unload_filament_object_updated(self, values: dict, name: str) -> None:
744-
if "state" in values.keys():
745-
self.unload_filament_update[bool].emit(values["state"])
744+
self.unload_filament_update[dict].emit(values)
746745

747746
def _load_filament_object_updated(self, values: dict, name: str) -> None:
748-
if "state" in values.keys():
749-
self.load_filament_update[bool].emit(values["state"])
747+
self.load_filament_update[dict].emit(values)

0 commit comments

Comments
 (0)