Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
e14dc70
bugfix: fix 30+ Pi runtime crashes across UI panels and widgets
gmmcosta15 Apr 13, 2026
bc9f17c
test: update networkWindow QTimer patch path to QtCore.QTimer
gmmcosta15 Apr 13, 2026
965193b
fix: add set_filament_state to SensorWidget; remove dead change_fil_s…
gmmcosta15 Apr 13, 2026
f1ebc12
Merge branch 'dev' into bugfix/ui-panel-crashes
gmmcosta15 May 25, 2026
4686a2b
Merge remote-tracking branch 'origin/dev' into bugfix/ui-panel-crashes
gmmcosta15 Jun 16, 2026
ae97e93
fix:resolve conflicts in filamentTab/mainWindow/connectionPage/notifi…
gmmcosta15 Jun 16, 2026
61c40c5
Merge branch 'dev' into bugfix/ui-panel-crashes
gmmcosta15 Jun 16, 2026
e26bdae
Merge branch 'dev' into bugfix/ui-panel-crashes
gmmcosta15 Jun 16, 2026
fca4c48
Merge branch 'dev' into bugfix/ui-panel-crashes
gmmcosta15 Jun 17, 2026
ecde9eb
Merge remote-tracking branch 'origin/dev' into bugfix/ui-panel-crashes
gmmcosta15 Jun 19, 2026
23c0ffe
Merge branch 'dev' into bugfix/ui-panel-crashes
gmmcosta15 Jun 19, 2026
49c65e1
Merge remote-tracking branch 'origin/dev' into bugfix/ui-panel-crashes
gmmcosta15 Jun 30, 2026
077da1e
Merge branch 'bugfix/ui-panel-crashes' into dev
gmmcosta15 Aug 20, 2026
d53f7a1
Merge remote-tracking branch 'origin/dev' into dev
gmmcosta15 Aug 20, 2026
2e96451
style: ruff format after origin/dev merge
gmmcosta15 Aug 20, 2026
357846b
debug: add DIAG state-transition logging for cancel-page completion-t…
gmmcosta15 Aug 28, 2026
37e095d
fix(cancelPage): clear stale reason text on new print + reword comple…
gmmcosta15 Aug 31, 2026
bfde643
Merge branch 'dev' into fix/cancel-page-completion-text
gmmcosta15 Sep 24, 2026
136b0a1
Merge branch 'dev' into fix/cancel-page-completion-text
gmmcosta15 Sep 24, 2026
9aac5fc
Merge branch 'dev' into fix/cancel-page-completion-text
gmmcosta15 Sep 24, 2026
80d3632
fix(cancelPage): merge dev, restore dev widgets, Cancelled spelling, …
gmmcosta15 Sep 28, 2026
9b6e857
Merge branch 'dev' into fix/cancel-page-completion-text
gmmcosta15 Sep 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions BlocksScreen/lib/panels/widgets/cancelPage.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ def _handle_refuse(self):
self.run_gcode.emit("SDCARD_RESET_FILE")

_REASON_HEADERS: typing.ClassVar[dict[str, str]] = {
"complete": "Print Completed",
"complete": "Print Finished",
"error": "Print Error",
"cancelled": "Print job was\ncancelled",
"cancelled": "Print Cancelled",
}

@QtCore.pyqtSlot(str, dict, name="on_print_stats_update")
Expand All @@ -56,8 +56,12 @@ def on_print_stats_update(self, field: str, value: dict | float | str) -> None:
self.filename = value
if self.isVisible():
self.set_file_name(value)
elif "state" in field and value in self._REASON_HEADERS:
self.cf_info_tf.setText(self._REASON_HEADERS[value])
elif "state" in field:
if value in self._REASON_HEADERS:
self.cf_info_tf.setText(self._REASON_HEADERS[value])
elif value == "printing":
# New job: drop the previous job's reason so it cannot leak.
self.cf_info_tf.clear()

def show(self):
self.request_file_info.emit(self.filename)
Expand Down Expand Up @@ -171,7 +175,7 @@ def _setupUI(self) -> None:
self.info_layout = QtWidgets.QVBoxLayout(self.info_frame)

self.cf_info_tf = QtWidgets.QLabel(parent=self.info_frame)
self.cf_info_tf.setText("Print job was\ncancelled")
self.cf_info_tf.setText(self._REASON_HEADERS["cancelled"])
font = QtGui.QFont()
font.setFamily("Momcake")
font.setPointSize(20)
Expand Down
46 changes: 46 additions & 0 deletions tests/widgets/test_cancel_page_unit.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
"""Unit tests for CancelPage reason headers (cancelPage.py)"""

import pytest
from PyQt6 import QtWidgets

from BlocksScreen.lib.panels.widgets.cancelPage import CancelPage


@pytest.fixture
def page(qtbot):
parent = QtWidgets.QWidget()
qtbot.addWidget(parent)
yield CancelPage(parent)


@pytest.mark.parametrize(
("state", "text"),
[
("complete", "Print Finished"),
("error", "Print Error"),
("cancelled", "Print Cancelled"),
],
)
def test_finish_state_sets_reason(page, state, text):
page.on_print_stats_update("state", state)
assert page.cf_info_tf.text() == text


def test_printing_clears_previous_reason(page):
page.on_print_stats_update("state", "complete")
page.on_print_stats_update("state", "printing")
assert page.cf_info_tf.text() == ""


@pytest.mark.parametrize("state", ["paused", "standby"])
def test_other_states_keep_reason(page, state):
page.on_print_stats_update("state", "error")
page.on_print_stats_update("state", state)
assert page.cf_info_tf.text() == "Print Error"


def test_filename_update_does_not_touch_reason(page):
page.on_print_stats_update("state", "cancelled")
page.on_print_stats_update("filename", "part.gcode")
assert page.filename == "part.gcode"
assert page.cf_info_tf.text() == "Print Cancelled"
Loading