Skip to content

Commit b2374b8

Browse files
authored
User 00001 (#96)
* formatting, typo * Always return bool in all paths * Del unused code * Del return * Del unused file, formatting * refactor, change where Print Events are sent * add doc * Del: currently only one extruder is supported * Refactor: decrease complexity * Always return a dict * Refactor dangerous default value error * Refacto, pythonic * clear log * Del: todo * Clear todo * Del comments * separate event dispacher * declare event dispacher before handling * change log formatting * del comment * Capture cutter object
1 parent 2d523c2 commit b2374b8

4 files changed

Lines changed: 213 additions & 753 deletions

File tree

BlocksScreen/lib/panels/filamentTab.py

Lines changed: 59 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -32,40 +32,27 @@ def __repr__(self) -> str:
3232

3333
def __init__(self, parent: QtWidgets.QWidget, printer: Printer, ws, /) -> None:
3434
super().__init__(parent)
35-
3635
self.panel = Ui_filamentStackedWidget()
3736
self.panel.setupUi(self)
3837
self.setCurrentIndex(0)
39-
4038
self.ws = ws
4139
self.printer = printer
4240
self.toolhead_count: int = 0
43-
4441
self.target_temp: int = 0
4542
self.current_temp: int = 0
46-
4743
self.popup = Popup(self)
48-
49-
5044
self.loadscreen = LoadScreen(self, LoadScreen.AnimationGIF.DEFAULT)
5145
self.addWidget(self.loadscreen)
52-
53-
5446
self.has_load_unload_objects = None
5547
self._filament_state = self.FilamentStates.UNKNOWN
56-
self._sensor_states = {}
48+
self._sensor_states = {}
5749
self.filament_type: Filament | None = None
58-
5950
self.panel.filament_page_load_btn.clicked.connect(
6051
partial(self.change_page, self.indexOf(self.panel.load_page))
6152
)
62-
self.panel.custom_filament_header_back_btn.clicked.connect(
63-
self.back_button
64-
)
65-
# REFACTOR self.panel.load_custom_btn.clicked.connect(partial(self.change_page, 2))
53+
self.panel.custom_filament_header_back_btn.clicked.connect(self.back_button)
6654
self.panel.load_custom_btn.hide()
6755
self.panel.load_header_back_button.clicked.connect(self.back_button)
68-
6956
self.panel.load_pla_btn.clicked.connect(
7057
partial(self.load_filament, toolhead=0, temp=220)
7158
)
@@ -84,79 +71,76 @@ def __init__(self, parent: QtWidgets.QWidget, printer: Printer, ws, /) -> None:
8471
self.panel.load_tpu_btn.clicked.connect(
8572
partial(self.load_filament, toolhead=0, temp=230)
8673
)
87-
8874
self.panel.filament_page_unload_btn.clicked.connect(
8975
lambda: self.unload_filament(toolhead=0, temp=250)
9076
)
9177
self.run_gcode.connect(self.ws.api.run_gcode)
92-
9378
self.printer.extruder_update.connect(self.on_extruder_update)
94-
9579
self.printer.unload_filament_update.connect(self.on_unload_filament)
9680
self.printer.load_filament_update.connect(self.on_load_filament)
97-
self.printer.filament_switch_sensor_update.connect(self.on_filament_sensor_update)
98-
99-
#IF nothings shows is bc of the connection between printer.py and this ,MAYbe the load and unload file itself with printer idk should work tho
81+
self.printer.filament_switch_sensor_update.connect(
82+
self.on_filament_sensor_update
83+
)
84+
self.printer.filament_motion_sensor_update.connect(
85+
self.on_filament_sensor_update
86+
)
10087

10188
@QtCore.pyqtSlot(str, str, bool, name="on_filament_sensor_update")
102-
def on_filament_sensor_update(self, sensor_name: str, parameter: str, value: bool):
89+
def on_filament_sensor_update(self, sensor_name: str, parameter: str, value: bool):
90+
"""Handles filament sensor updates"""
10391
if parameter == "filament_detected":
10492
if not isinstance(value, bool):
10593
self._filament_state = self.FilamentStates.UNKNOWN
106-
self.handle_filamment_state()
94+
self.handle_filament_state()
10795
return
108-
self._sensor_states[sensor_name] = value
96+
self._sensor_states.update({sensor_name: value})
10997
if not self._sensor_states:
11098
new_state = self.FilamentStates.UNKNOWN
111-
elif all(self._sensor_states.values()):
99+
elif all(self._sensor_states.values()): # All sensors detect filament
112100
new_state = self.FilamentStates.LOADED
113-
else:
101+
else: # No filament sensors detect filament
114102
new_state = self.FilamentStates.UNLOADED
115-
116103
if self._filament_state != new_state:
117104
self._filament_state = new_state
118-
self.handle_filamment_state()
119-
105+
self.handle_filament_state()
120106

121107
@QtCore.pyqtSlot(str, str, float, name="on_extruder_update")
122108
def on_extruder_update(
123109
self, extruder_name: str, field: str, new_value: float
124110
) -> None:
111+
"""Handles extruder updates"""
125112
if not self.isVisible:
126113
return
127114

128115
if self.target_temp != 0:
129116
if self.current_temp == self.target_temp:
130117
self.loadscreen.set_status_message("Extruder heated up \n Please wait")
131118
return
132-
133119
if field == "temperature":
134-
self.current_temp = round(new_value,0) #somehow this works
135-
self.loadscreen.set_status_message(f"Heating up ({new_value}/{self.target_temp}) \n Please wait")
136-
137-
138-
120+
self.current_temp = round(new_value, 0) # somehow this works
121+
self.loadscreen.set_status_message(
122+
f"Heating up ({new_value}/{self.target_temp}) \n Please wait"
123+
)
139124
if field == "target":
140-
self.target_temp = round(new_value,0) #somehow this works again
125+
self.target_temp = round(new_value, 0) # somehow this works again
141126
self.loadscreen.set_status_message("Heating up \n Please wait")
142127

143-
144128
@QtCore.pyqtSlot(bool, name="on_load_filament")
145-
def on_load_filament(self,status:bool):
129+
def on_load_filament(self, status: bool):
130+
"""Handles load filament update"""
146131
if not self.isVisible:
147132
return
148-
149-
150133
if status:
151134
self.loadscreen.show()
152135
else:
153136
self.current_temp = 0
154137
self.loadscreen.hide()
155138
self._filament_state = self.FilamentStates.LOADED
156-
self.handle_filamment_state()
139+
self.handle_filament_state()
157140

158141
@QtCore.pyqtSlot(bool, name="on_unload_filament")
159-
def on_unload_filament(self,status:bool):
142+
def on_unload_filament(self, status: bool):
143+
"""Handle unload filament update"""
160144
if not self.isVisible:
161145
return
162146

@@ -166,42 +150,50 @@ def on_unload_filament(self,status:bool):
166150
self.loadscreen.hide()
167151
self.current_temp = 0
168152
self._filament_state = self.FilamentStates.UNLOADED
169-
self.handle_filamment_state()
170-
171-
153+
self.handle_filament_state()
172154

173155
@QtCore.pyqtSlot(int, int, name="load_filament")
174156
def load_filament(self, toolhead: int = 0, temp: int = 220) -> None:
157+
"""Issues a signal for load filament macro, handles states accordingly"""
175158
if not self.isVisible:
176159
return
177160

178161
if self._filament_state == self.FilamentStates.UNKNOWN:
179-
self.popup.new_message(message_type=Popup.MessageType.ERROR , message="Unable to detect whether the filament is loaded or unloaded.",)
180-
162+
self.popup.new_message(
163+
message_type=Popup.MessageType.ERROR,
164+
message="Unable to detect whether the filament is loaded or unloaded.",
165+
)
166+
181167
if self._filament_state == self.FilamentStates.LOADED:
182-
self.popup.new_message(message_type=Popup.MessageType.ERROR , message="Filament is already loaded.",)
183-
return
184-
185-
self.run_gcode.emit(
186-
f"LOAD_FILAMENT TOOLHEAD=load_toolhead TEMPERATURE={temp}"
187-
)
168+
self.popup.new_message(
169+
message_type=Popup.MessageType.ERROR,
170+
message="Filament is already loaded.",
171+
)
172+
return
173+
174+
self.run_gcode.emit(f"LOAD_FILAMENT TOOLHEAD=load_toolhead TEMPERATURE={temp}")
188175

189176
@QtCore.pyqtSlot(str, int, name="unload_filament")
190177
def unload_filament(self, toolhead: int = 0, temp: int = 220) -> None:
178+
"""Issues unload filament macro, handles state accordingly"""
191179
if not self.isVisible:
192180
return
193-
194181
if self._filament_state == self.FilamentStates.UNKNOWN:
195-
self.popup.new_message(message_type=Popup.MessageType.ERROR , message="Unable to detect whether the filament is loaded or unloaded.",)
196-
182+
self.popup.new_message(
183+
message_type=Popup.MessageType.ERROR,
184+
message="Unable to detect whether the filament is loaded or unloaded.",
185+
)
197186
if self._filament_state == self.FilamentStates.UNLOADED:
198-
self.popup.new_message(message_type=Popup.MessageType.ERROR , message="Filament is already unloaded.",)
199-
return
200-
187+
self.popup.new_message(
188+
message_type=Popup.MessageType.ERROR,
189+
message="Filament is already unloaded.",
190+
)
191+
return
201192
self.find_routine_objects()
202193
self.run_gcode.emit(f"UNLOAD_FILAMENT TEMPERATURE={temp}")
203-
204-
def handle_filamment_state(self):
194+
195+
def handle_filament_state(self):
196+
"""Handles filament states"""
205197
if self._filament_state == self.FilamentStates.LOADED:
206198
self.panel.filament_page_load_btn.setDisabled(True)
207199
self.panel.filament_page_load_btn.setDisabled(False)
@@ -212,41 +204,29 @@ def handle_filamment_state(self):
212204
self.panel.filament_page_load_btn.setDisabled(False)
213205
self.panel.filament_page_unload_btn.setDisabled(False)
214206

215-
216-
217207
@property
218208
def filament_state(self):
209+
"""Filament state property"""
219210
return self._filament_state
220211

221212
def change_page(self, index):
213+
"""Requests to change page"""
222214
self.request_change_page.emit(1, index)
223215

224216
def back_button(self):
217+
"""Requests going back a page"""
225218
self.request_back.emit()
226219

227-
def sizeHint(self) -> QtCore.QSize:
228-
return super().sizeHint()
229-
230220
def paintEvent(self, a0: QtGui.QPaintEvent | None) -> None:
221+
"""Paints the widget"""
231222
if self.panel.load_page.isVisible() and self.toolhead_count == 1:
232223
self.panel.load_header_page_title.setText("Load Toolhead")
233-
if a0 is not None:
234-
return super().paintEvent(a0)
235-
236-
def removeWidget(self, w: QtWidgets.QWidget | None) -> None:
237-
if w is not None:
238-
return super().removeWidget(w)
239-
240-
def resizeEvent(self, a0: QtGui.QResizeEvent | None) -> None:
241-
if a0 is not None:
242-
return super().resizeEvent(a0)
243224

244225
def find_routine_objects(self):
226+
"""Finds if objects necessary for loading and unloading exist"""
245227
if not self.printer:
246-
return
247-
228+
return False
248229
_available_objects = self.printer.available_objects.copy()
249-
250230
if "load_filament" in _available_objects.keys():
251231
self.has_load_unload_objects = True
252232
return True
@@ -257,5 +237,4 @@ def find_routine_objects(self):
257237
return True
258238
if "gcode_macro UNLOAD_FILAMENT" in _available_objects.keys():
259239
return True
260-
261240
return False

0 commit comments

Comments
 (0)