Skip to content

Commit 892d2e5

Browse files
author
Roberto Martins
committed
bugfix: changing page mid print
1 parent 68ff23f commit 892d2e5

5 files changed

Lines changed: 64 additions & 29 deletions

File tree

BlocksScreen/lib/panels/filamentTab.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class FilamentTab(QtWidgets.QStackedWidget):
2525
request_filament_load = QtCore.pyqtSignal(name="filament_load_t1")
2626
request_back = QtCore.pyqtSignal(name="request_back")
2727
request_change_page = QtCore.pyqtSignal(int, int, name="request_change_page")
28+
request_change_tab = QtCore.pyqtSignal(int, name="request_change_tab")
2829
request_toolhead_count = QtCore.pyqtSignal(int, name="toolhead_number_received")
2930
run_gcode = QtCore.pyqtSignal(str, name="run_gcode")
3031
call_load_panel = QtCore.pyqtSignal(bool, str, name="call-load-panel")
@@ -79,7 +80,9 @@ def __init__(self, parent: QtWidgets.QWidget, printer: Printer, ws, /) -> None:
7980
self.panel.filament_page_unload_btn.clicked.connect(
8081
lambda: self.unload_filament(toolhead=0, temp=250)
8182
)
82-
self.panel.load_header_back_button_2.clicked.connect(self.back_button)
83+
self.panel.main_back_button.clicked.connect(
84+
lambda: self.request_change_tab.emit(0)
85+
)
8386
self.run_gcode.connect(self.ws.api.run_gcode)
8487
self.printer.extruder_update.connect(self.on_extruder_update)
8588
self.printer.unload_filament_update.connect(self.on_unload_filament)
@@ -115,14 +118,23 @@ def on_print_stats_update(self, field: str, value: dict | float | str) -> None:
115118
if isinstance(value, str):
116119
if "state" in field:
117120
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)
121+
self.panel.main_back_button.show()
122+
self.panel.spacerItem1.changeSize(
123+
60,
124+
0,
125+
QtWidgets.QSizePolicy.Policy.Minimum,
126+
QtWidgets.QSizePolicy.Policy.Minimum,
127+
)
120128
if value in ("standby"):
121129
self.loadignore = True
122130
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-
131+
self.panel.main_back_button.hide()
132+
self.panel.spacerItem1.changeSize(
133+
0,
134+
0,
135+
QtWidgets.QSizePolicy.Policy.Minimum,
136+
QtWidgets.QSizePolicy.Policy.Minimum,
137+
)
126138

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

BlocksScreen/lib/panels/mainWindow.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,9 @@ def __init__(self):
247247
self.utilitiesPanel.call_load_panel.connect(self.show_LoadScreen)
248248
self.conn_window.call_load_panel.connect(self.show_LoadScreen)
249249

250+
self.filamentPanel.request_change_tab.connect(self.global_change_tab)
251+
self.printPanel.request_change_tab.connect(self.global_change_tab)
252+
250253
self.loadscreen = BasePopup(self, floating=False, dialog=False)
251254
self.loadwidget = LoadingOverlayWidget(
252255
self, LoadingOverlayWidget.AnimationGIF.DEFAULT
@@ -511,6 +514,22 @@ def global_change_page(self, tab_index: int, panel_index: int) -> None:
511514
f"Requested page change -> Tab index : {requested_page[0]} | panel index : {requested_page[1]}",
512515
)
513516

517+
def global_change_tab(self, tab_index: int) -> None:
518+
"""Changes the current tab while keeping the current panel page index if possible
519+
520+
Args:
521+
tab_index (int): The index of the tab to change to
522+
"""
523+
if not isinstance(tab_index, int):
524+
_logger.debug(
525+
"Tab index argument expected type int, got %s", str(type(tab_index))
526+
)
527+
return
528+
self.ui.main_content_widget.setCurrentIndex(tab_index)
529+
_logger.debug(
530+
f"Requested tab change -> Tab index : {tab_index}",
531+
)
532+
514533
@QtCore.pyqtSlot(name="request-back")
515534
def global_back(self) -> None:
516535
"""Requests to go back a page globally"""

BlocksScreen/lib/panels/printTab.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ class PrintTab(QtWidgets.QStackedWidget):
5656
int, int, name="request_change_page"
5757
)
5858

59+
request_change_tab: typing.ClassVar[QtCore.pyqtSignal] = QtCore.pyqtSignal(
60+
int, name="request_change_tab"
61+
)
62+
5963
run_gcode_signal: typing.ClassVar[QtCore.pyqtSignal] = QtCore.pyqtSignal(
6064
str, name="run_gcode"
6165
)
@@ -202,7 +206,7 @@ def __init__(
202206
self.tune_page = TuneWidget(self)
203207
self.addWidget(self.tune_page)
204208
self.tune_page.tune_change_filament_btn.clicked.connect(
205-
lambda: self.change_page(0,1)
209+
lambda: self.request_change_tab.emit(1)
206210
)
207211
self.jobStatusPage_widget.tune_clicked.connect(
208212
lambda: self.change_page(self.indexOf(self.tune_page))
@@ -407,13 +411,13 @@ def handle_cancel_print(self) -> None:
407411
self.ws.api.cancel_print()
408412
self.call_load_panel.emit(True, "Cancelling print...\nPlease wait")
409413

410-
def change_page(self, index: int , tab: int = 0) -> None:
414+
def change_page(self, index: int) -> None:
411415
"""Requests a page change page to the global manager
412416
413417
Args:
414418
index (int): page index
415419
"""
416-
self.request_change_page.emit(tab, index)
420+
self.request_change_page.emit(0, index)
417421

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

BlocksScreen/lib/ui/filamentStackedWidget.ui

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@
135135
</widget>
136136
</item>
137137
<item>
138-
<widget class="IconButton" name="load_header_back_button_2">
138+
<widget class="IconButton" name="main_back_button">
139139
<property name="sizePolicy">
140140
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
141141
<horstretch>0</horstretch>

BlocksScreen/lib/ui/filamentStackedWidget_ui.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -55,30 +55,30 @@ def setupUi(self, filamentStackedWidget):
5555
self.filament_page_header_title.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
5656
self.filament_page_header_title.setObjectName("filament_page_header_title")
5757
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)
58+
self.main_back_button = IconButton(parent=self.filament_control_page)
5959
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred)
6060
sizePolicy.setHorizontalStretch(0)
6161
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))
62+
sizePolicy.setHeightForWidth(self.main_back_button.sizePolicy().hasHeightForWidth())
63+
self.main_back_button.setSizePolicy(sizePolicy)
64+
self.main_back_button.setMinimumSize(QtCore.QSize(60, 60))
65+
self.main_back_button.setMaximumSize(QtCore.QSize(60, 60))
6666
font = QtGui.QFont()
6767
font.setFamily("Momcake")
6868
font.setPointSize(20)
6969
font.setItalic(False)
7070
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)
71+
self.main_back_button.setFont(font)
72+
self.main_back_button.setMouseTracking(False)
73+
self.main_back_button.setTabletTracking(True)
74+
self.main_back_button.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.NoContextMenu)
75+
self.main_back_button.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
76+
self.main_back_button.setStyleSheet("")
77+
self.main_back_button.setAutoDefault(False)
78+
self.main_back_button.setFlat(True)
79+
self.main_back_button.setProperty("icon_pixmap", QtGui.QPixmap(":/ui/media/btn_icons/back.svg"))
80+
self.main_back_button.setObjectName("main_back_button")
81+
self.filament_page_header_layout.addWidget(self.main_back_button)
8282
self.verticalLayout.addLayout(self.filament_page_header_layout)
8383
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
8484
self.verticalLayout.addItem(spacerItem2)
@@ -574,9 +574,9 @@ def retranslateUi(self, filamentStackedWidget):
574574
filamentStackedWidget.setWindowTitle(_translate("filamentStackedWidget", "StackedWidget"))
575575
self.filament_page_header_title.setText(_translate("filamentStackedWidget", "Filament Control"))
576576
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"))
577+
self.main_back_button.setText(_translate("filamentStackedWidget", "Back"))
578+
self.main_back_button.setProperty("class", _translate("filamentStackedWidget", "menu_btn"))
579+
self.main_back_button.setProperty("button_type", _translate("filamentStackedWidget", "icon"))
580580
self.filament_page_info_title_6.setText(_translate("filamentStackedWidget", "Loaded Filament Type"))
581581
self.label_2.setText(_translate("filamentStackedWidget", "..."))
582582
self.filament_page_load_btn.setText(_translate("filamentStackedWidget", "Load"))

0 commit comments

Comments
 (0)