Skip to content

Commit 68ff23f

Browse files
author
Roberto Martins
committed
ADD: being able to change to filament tab
1 parent 73751f3 commit 68ff23f

5 files changed

Lines changed: 148 additions & 34 deletions

File tree

BlocksScreen/lib/panels/filamentTab.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ def __init__(self, parent: QtWidgets.QWidget, printer: Printer, ws, /) -> None:
7979
self.panel.filament_page_unload_btn.clicked.connect(
8080
lambda: self.unload_filament(toolhead=0, temp=250)
8181
)
82+
self.panel.load_header_back_button_2.clicked.connect(self.back_button)
8283
self.run_gcode.connect(self.ws.api.run_gcode)
8384
self.printer.extruder_update.connect(self.on_extruder_update)
8485
self.printer.unload_filament_update.connect(self.on_unload_filament)
@@ -113,9 +114,15 @@ def on_print_stats_update(self, field: str, value: dict | float | str) -> None:
113114
"""Handle print stats object update"""
114115
if isinstance(value, str):
115116
if "state" in field:
117+
if value in ("printing", "pausing", "paused", "resuming"):
118+
self.panel.load_header_back_button_2.show()
119+
self.panel.spacerItem1.changeSize(60, 0, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Minimum)
116120
if value in ("standby"):
117121
self.loadignore = True
118122
self.unloadignore = True
123+
self.panel.load_header_back_button_2.hide()
124+
self.panel.spacerItem1.changeSize(0, 0, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Minimum)
125+
119126

120127
@QtCore.pyqtSlot(str, str, bool, name="on_filament_sensor_update")
121128
def on_filament_sensor_update(self, sensor_name: str, parameter: str, value: bool):

BlocksScreen/lib/panels/mainWindow.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,8 @@ def __init__(self):
268268
self.file_data.fileinfo.connect(self.cancelpage._show_screen_thumbnail)
269269
self.printPanel.call_cancel_panel.connect(self.handle_cancel_print)
270270

271+
self.print_status = "idle"
272+
271273
if self.config.has_section("server"):
272274
self.bo_ws_startup.emit()
273275
self.reset_tab_indexes()
@@ -366,9 +368,6 @@ def enable_tab_bar(self) -> bool:
366368
bool: True if the TabBar was disabled
367369
"""
368370

369-
self.ui.main_content_widget.setTabEnabled(
370-
self.ui.main_content_widget.indexOf(self.ui.filamentTab), True
371-
)
372371
self.ui.main_content_widget.setTabEnabled(
373372
self.ui.main_content_widget.indexOf(self.ui.controlTab), True
374373
)
@@ -378,9 +377,6 @@ def enable_tab_bar(self) -> bool:
378377
self.ui.header_main_layout.setEnabled(True)
379378
return all(
380379
[
381-
not self.ui.main_content_widget.isTabEnabled(
382-
self.ui.main_content_widget.indexOf(self.ui.filamentTab)
383-
),
384380
not self.ui.main_content_widget.isTabEnabled(
385381
self.ui.main_content_widget.indexOf(self.ui.controlTab)
386382
),
@@ -402,9 +398,6 @@ def disable_tab_bar(self) -> bool:
402398
Returns:
403399
boolean: True if the TabBar was disabled
404400
"""
405-
self.ui.main_content_widget.setTabEnabled(
406-
self.ui.main_content_widget.indexOf(self.ui.filamentTab), False
407-
)
408401
self.ui.main_content_widget.setTabEnabled(
409402
self.ui.main_content_widget.indexOf(self.ui.controlTab), False
410403
)
@@ -414,9 +407,6 @@ def disable_tab_bar(self) -> bool:
414407
self.ui.header_main_layout.setEnabled(False)
415408
return all(
416409
[
417-
not self.ui.main_content_widget.isTabEnabled(
418-
self.ui.main_content_widget.indexOf(self.ui.filamentTab)
419-
),
420410
not self.ui.main_content_widget.isTabEnabled(
421411
self.ui.main_content_widget.indexOf(self.ui.controlTab)
422412
),
@@ -437,6 +427,8 @@ def reset_tab_indexes(self):
437427
Used to grantee all tabs reset to their
438428
first page once the user leaves the tab
439429
"""
430+
if self.print_status == "printing":
431+
return
440432
self.update_page.hide()
441433
self.printPanel.setCurrentIndex(0)
442434
self.filamentPanel.setCurrentIndex(0)
@@ -825,6 +817,7 @@ def event(self, event: QtCore.QEvent) -> bool:
825817
return True
826818
return False
827819
if event.type() == events.PrintStart.type():
820+
self.print_status = "printing"
828821
self.disable_tab_bar()
829822
self.ui.extruder_temp_display.clicked.disconnect()
830823
self.ui.bed_temp_display.clicked.disconnect()
@@ -849,6 +842,7 @@ def event(self, event: QtCore.QEvent) -> bool:
849842
events.PrintComplete.type(),
850843
events.PrintCancelled.type(),
851844
):
845+
self.print_status = "idle"
852846
if event.type() == events.PrintCancelled.type():
853847
self.handle_cancel_print()
854848
self.enable_tab_bar()

BlocksScreen/lib/panels/printTab.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,9 @@ def __init__(
201201
self.addWidget(self.babystepPage)
202202
self.tune_page = TuneWidget(self)
203203
self.addWidget(self.tune_page)
204+
self.tune_page.tune_change_filament_btn.clicked.connect(
205+
lambda: self.change_page(0,1)
206+
)
204207
self.jobStatusPage_widget.tune_clicked.connect(
205208
lambda: self.change_page(self.indexOf(self.tune_page))
206209
)
@@ -404,13 +407,13 @@ def handle_cancel_print(self) -> None:
404407
self.ws.api.cancel_print()
405408
self.call_load_panel.emit(True, "Cancelling print...\nPlease wait")
406409

407-
def change_page(self, index: int) -> None:
410+
def change_page(self, index: int , tab: int = 0) -> None:
408411
"""Requests a page change page to the global manager
409412
410413
Args:
411414
index (int): page index
412415
"""
413-
self.request_change_page.emit(0, index)
416+
self.request_change_page.emit(tab, index)
414417

415418
@QtCore.pyqtSlot(name="request-back")
416419
def back_button(self) -> None:

BlocksScreen/lib/ui/filamentStackedWidget.ui

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,26 @@
7575
</item>
7676
<item>
7777
<layout class="QHBoxLayout" name="filament_page_header_layout">
78+
<item>
79+
<spacer name="test">
80+
<property name="orientation">
81+
<enum>Qt::Horizontal</enum>
82+
</property>
83+
<property name="sizeType">
84+
<enum>QSizePolicy::Minimum</enum>
85+
</property>
86+
<property name="sizeHint" stdset="0">
87+
<size>
88+
<width>60</width>
89+
<height>0</height>
90+
</size>
91+
</property>
92+
</spacer>
93+
</item>
7894
<item alignment="Qt::AlignHCenter|Qt::AlignVCenter">
7995
<widget class="QLabel" name="filament_page_header_title">
8096
<property name="sizePolicy">
81-
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
97+
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
8298
<horstretch>0</horstretch>
8399
<verstretch>0</verstretch>
84100
</sizepolicy>
@@ -118,6 +134,69 @@
118134
</property>
119135
</widget>
120136
</item>
137+
<item>
138+
<widget class="IconButton" name="load_header_back_button_2">
139+
<property name="sizePolicy">
140+
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
141+
<horstretch>0</horstretch>
142+
<verstretch>0</verstretch>
143+
</sizepolicy>
144+
</property>
145+
<property name="minimumSize">
146+
<size>
147+
<width>60</width>
148+
<height>60</height>
149+
</size>
150+
</property>
151+
<property name="maximumSize">
152+
<size>
153+
<width>60</width>
154+
<height>60</height>
155+
</size>
156+
</property>
157+
<property name="font">
158+
<font>
159+
<family>Momcake</family>
160+
<pointsize>20</pointsize>
161+
<italic>false</italic>
162+
<stylestrategy>PreferAntialias</stylestrategy>
163+
</font>
164+
</property>
165+
<property name="mouseTracking">
166+
<bool>false</bool>
167+
</property>
168+
<property name="tabletTracking">
169+
<bool>true</bool>
170+
</property>
171+
<property name="contextMenuPolicy">
172+
<enum>Qt::NoContextMenu</enum>
173+
</property>
174+
<property name="layoutDirection">
175+
<enum>Qt::LeftToRight</enum>
176+
</property>
177+
<property name="styleSheet">
178+
<string notr="true"/>
179+
</property>
180+
<property name="text">
181+
<string>Back</string>
182+
</property>
183+
<property name="autoDefault">
184+
<bool>false</bool>
185+
</property>
186+
<property name="flat">
187+
<bool>true</bool>
188+
</property>
189+
<property name="class" stdset="0">
190+
<string>menu_btn</string>
191+
</property>
192+
<property name="button_type" stdset="0">
193+
<string>icon</string>
194+
</property>
195+
<property name="icon_pixmap" stdset="0">
196+
<pixmap resource="resources/icon_resources.qrc">:/ui/media/btn_icons/back.svg</pixmap>
197+
</property>
198+
</widget>
199+
</item>
121200
</layout>
122201
</item>
123202
<item>
@@ -1505,6 +1584,8 @@ Filament</string>
15051584
<include location="resources/icon_resources.qrc"/>
15061585
<include location="resources/button_resources.qrc"/>
15071586
<include location="resources/icon_resources.qrc"/>
1587+
<include location="../../../../.designer/backup/resources/icon_resources.qrc"/>
1588+
<include location="BlocksScreen/lib/ui/resources/icon_resources.qrc"/>
15081589
</resources>
15091590
<connections/>
15101591
</ui>

BlocksScreen/lib/ui/filamentStackedWidget_ui.py

Lines changed: 48 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Form implementation generated from reading ui file 'BlocksScreen/lib/ui/filamentStackedWidget.ui'
1+
# Form implementation generated from reading ui file 'filamentStackedWidget.ui'
22
#
33
# Created by: PyQt6 UI code generator 6.10.0
44
#
@@ -36,8 +36,10 @@ def setupUi(self, filamentStackedWidget):
3636
self.verticalLayout.addItem(spacerItem)
3737
self.filament_page_header_layout = QtWidgets.QHBoxLayout()
3838
self.filament_page_header_layout.setObjectName("filament_page_header_layout")
39+
self.spacerItem1 = QtWidgets.QSpacerItem(60, 0, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Minimum)
40+
self.filament_page_header_layout.addItem(self.spacerItem1)
3941
self.filament_page_header_title = QtWidgets.QLabel(parent=self.filament_control_page)
40-
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Minimum)
42+
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Maximum)
4143
sizePolicy.setHorizontalStretch(0)
4244
sizePolicy.setVerticalStretch(0)
4345
sizePolicy.setHeightForWidth(self.filament_page_header_title.sizePolicy().hasHeightForWidth())
@@ -53,15 +55,39 @@ def setupUi(self, filamentStackedWidget):
5355
self.filament_page_header_title.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
5456
self.filament_page_header_title.setObjectName("filament_page_header_title")
5557
self.filament_page_header_layout.addWidget(self.filament_page_header_title, 0, QtCore.Qt.AlignmentFlag.AlignHCenter|QtCore.Qt.AlignmentFlag.AlignVCenter)
58+
self.load_header_back_button_2 = IconButton(parent=self.filament_control_page)
59+
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred)
60+
sizePolicy.setHorizontalStretch(0)
61+
sizePolicy.setVerticalStretch(0)
62+
sizePolicy.setHeightForWidth(self.load_header_back_button_2.sizePolicy().hasHeightForWidth())
63+
self.load_header_back_button_2.setSizePolicy(sizePolicy)
64+
self.load_header_back_button_2.setMinimumSize(QtCore.QSize(60, 60))
65+
self.load_header_back_button_2.setMaximumSize(QtCore.QSize(60, 60))
66+
font = QtGui.QFont()
67+
font.setFamily("Momcake")
68+
font.setPointSize(20)
69+
font.setItalic(False)
70+
font.setStyleStrategy(QtGui.QFont.StyleStrategy.PreferAntialias)
71+
self.load_header_back_button_2.setFont(font)
72+
self.load_header_back_button_2.setMouseTracking(False)
73+
self.load_header_back_button_2.setTabletTracking(True)
74+
self.load_header_back_button_2.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.NoContextMenu)
75+
self.load_header_back_button_2.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
76+
self.load_header_back_button_2.setStyleSheet("")
77+
self.load_header_back_button_2.setAutoDefault(False)
78+
self.load_header_back_button_2.setFlat(True)
79+
self.load_header_back_button_2.setProperty("icon_pixmap", QtGui.QPixmap(":/ui/media/btn_icons/back.svg"))
80+
self.load_header_back_button_2.setObjectName("load_header_back_button_2")
81+
self.filament_page_header_layout.addWidget(self.load_header_back_button_2)
5682
self.verticalLayout.addLayout(self.filament_page_header_layout)
57-
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
58-
self.verticalLayout.addItem(spacerItem1)
83+
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
84+
self.verticalLayout.addItem(spacerItem2)
5985
self.verticalLayout_4 = QtWidgets.QVBoxLayout()
6086
self.verticalLayout_4.setObjectName("verticalLayout_4")
6187
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
6288
self.verticalLayout_3.setObjectName("verticalLayout_3")
63-
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
64-
self.verticalLayout_3.addItem(spacerItem2)
89+
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
90+
self.verticalLayout_3.addItem(spacerItem3)
6591
self.frame_7 = BlocksCustomFrame(parent=self.filament_control_page)
6692
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Expanding)
6793
sizePolicy.setHorizontalStretch(0)
@@ -99,8 +125,8 @@ def setupUi(self, filamentStackedWidget):
99125
self.line_2.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
100126
self.line_2.setObjectName("line_2")
101127
self.verticalLayout_3.addWidget(self.frame_7, 0, QtCore.Qt.AlignmentFlag.AlignHCenter)
102-
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
103-
self.verticalLayout_3.addItem(spacerItem3)
128+
spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
129+
self.verticalLayout_3.addItem(spacerItem4)
104130
self.horizontalLayout = QtWidgets.QHBoxLayout()
105131
self.horizontalLayout.setObjectName("horizontalLayout")
106132
self.filament_page_load_btn = BlocksCustomButton(parent=self.filament_control_page)
@@ -154,10 +180,10 @@ def setupUi(self, filamentStackedWidget):
154180
self.verticalLayout_3.addLayout(self.horizontalLayout)
155181
self.verticalLayout_4.addLayout(self.verticalLayout_3)
156182
self.verticalLayout.addLayout(self.verticalLayout_4)
157-
spacerItem4 = QtWidgets.QSpacerItem(20, 26, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Minimum)
158-
self.verticalLayout.addItem(spacerItem4)
159-
spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
183+
spacerItem5 = QtWidgets.QSpacerItem(20, 26, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Minimum)
160184
self.verticalLayout.addItem(spacerItem5)
185+
spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
186+
self.verticalLayout.addItem(spacerItem6)
161187
filamentStackedWidget.addWidget(self.filament_control_page)
162188
self.load_page = QtWidgets.QWidget()
163189
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.MinimumExpanding, QtWidgets.QSizePolicy.Policy.MinimumExpanding)
@@ -171,12 +197,12 @@ def setupUi(self, filamentStackedWidget):
171197
self.load_page.setObjectName("load_page")
172198
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.load_page)
173199
self.verticalLayout_2.setObjectName("verticalLayout_2")
174-
spacerItem6 = QtWidgets.QSpacerItem(20, 24, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Minimum)
175-
self.verticalLayout_2.addItem(spacerItem6)
200+
spacerItem7 = QtWidgets.QSpacerItem(20, 24, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Minimum)
201+
self.verticalLayout_2.addItem(spacerItem7)
176202
self.load_page_header_layout = QtWidgets.QHBoxLayout()
177203
self.load_page_header_layout.setObjectName("load_page_header_layout")
178-
spacerItem7 = QtWidgets.QSpacerItem(60, 20, QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Minimum)
179-
self.load_page_header_layout.addItem(spacerItem7)
204+
spacerItem8 = QtWidgets.QSpacerItem(60, 20, QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Minimum)
205+
self.load_page_header_layout.addItem(spacerItem8)
180206
self.load_header_page_title = QtWidgets.QLabel(parent=self.load_page)
181207
self.load_header_page_title.setMinimumSize(QtCore.QSize(0, 60))
182208
font = QtGui.QFont()
@@ -212,8 +238,8 @@ def setupUi(self, filamentStackedWidget):
212238
self.load_header_back_button.setObjectName("load_header_back_button")
213239
self.load_page_header_layout.addWidget(self.load_header_back_button)
214240
self.verticalLayout_2.addLayout(self.load_page_header_layout)
215-
spacerItem8 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
216-
self.verticalLayout_2.addItem(spacerItem8)
241+
spacerItem9 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
242+
self.verticalLayout_2.addItem(spacerItem9)
217243
self.load_page_content_layout = QtWidgets.QGridLayout()
218244
self.load_page_content_layout.setContentsMargins(5, 5, 5, 5)
219245
self.load_page_content_layout.setHorizontalSpacing(6)
@@ -389,8 +415,8 @@ def setupUi(self, filamentStackedWidget):
389415
self.load_custom_btn.setObjectName("load_custom_btn")
390416
self.load_page_footer_layout.addWidget(self.load_custom_btn)
391417
self.verticalLayout_2.addLayout(self.load_page_footer_layout)
392-
spacerItem9 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
393-
self.verticalLayout_2.addItem(spacerItem9)
418+
spacerItem10 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
419+
self.verticalLayout_2.addItem(spacerItem10)
394420
filamentStackedWidget.addWidget(self.load_page)
395421
self.custom_filament_page = QtWidgets.QWidget()
396422
self.custom_filament_page.setMinimumSize(QtCore.QSize(710, 400))
@@ -548,6 +574,9 @@ def retranslateUi(self, filamentStackedWidget):
548574
filamentStackedWidget.setWindowTitle(_translate("filamentStackedWidget", "StackedWidget"))
549575
self.filament_page_header_title.setText(_translate("filamentStackedWidget", "Filament Control"))
550576
self.filament_page_header_title.setProperty("class", _translate("filamentStackedWidget", "title_text"))
577+
self.load_header_back_button_2.setText(_translate("filamentStackedWidget", "Back"))
578+
self.load_header_back_button_2.setProperty("class", _translate("filamentStackedWidget", "menu_btn"))
579+
self.load_header_back_button_2.setProperty("button_type", _translate("filamentStackedWidget", "icon"))
551580
self.filament_page_info_title_6.setText(_translate("filamentStackedWidget", "Loaded Filament Type"))
552581
self.label_2.setText(_translate("filamentStackedWidget", "..."))
553582
self.filament_page_load_btn.setText(_translate("filamentStackedWidget", "Load"))

0 commit comments

Comments
 (0)