Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
63 changes: 44 additions & 19 deletions BlocksScreen/lib/panels/controlTab.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from __future__ import annotations

import re
import typing
from functools import partial
import logging

from helper_methods import normalize
from lib.moonrakerComm import MoonWebSocket
Expand All @@ -18,6 +18,9 @@
from PyQt6 import QtCore, QtGui, QtWidgets


_logger = logging.getLogger(__name__)


class ControlTab(QtWidgets.QStackedWidget):
"""Printer Control Stacked Widget"""

Expand Down Expand Up @@ -252,24 +255,6 @@ def __init__(
self.numpadPage.request_back.connect(self.request_back_button)
self.addWidget(self.numpadPage)

self.panel.extruder_temp_display.clicked.connect(
lambda: self.request_numpad[str, int, "PyQt_PyObject", int, int].emit(
"Extruder Temperature",
int(round(float(self.panel.extruder_temp_display.secondary_text))),
self.on_numpad_change,
0,
370, # TODO: Get this value from printer objects
)
)
self.panel.bed_temp_display.clicked.connect(
lambda: self.request_numpad[str, int, "PyQt_PyObject", int, int].emit(
"Bed Temperature",
int(round(float(self.panel.bed_temp_display.secondary_text))),
self.on_numpad_change,
0,
120, # TODO: Get this value from printer objects
)
)
self.request_numpad[str, int, "PyQt_PyObject", int, int].connect(
self.on_numpad_request
)
Expand Down Expand Up @@ -304,6 +289,8 @@ def __init__(
self.printer.fan_update[str, str, float].connect(self.on_fan_object_update)
self.printer.fan_update[str, str, int].connect(self.on_fan_object_update)

self.printer.printer_config.connect(self.on_printer_config)

def _handle_z_tilt_object_update(self, value, state):
if state:
self.call_load_panel.emit(False, "")
Expand Down Expand Up @@ -470,6 +457,44 @@ def _handle_gcode_response(self, messages: list):
f"Retries: {retries_done}/{retries_total} | Range: {probed_range:.6f} | Tolerance: {tolerance:.6f}",
)

@QtCore.pyqtSlot(dict, name="printer_config")
def on_printer_config(self, config: dict) -> None:
"""Slot that receives the full printer configuration,

Additionally, this method configures the signal connections
between controllable heaters and numpad calls
"""
try:
self.panel.extruder_temp_display.clicked.disconnect()
self.panel.bed_temp_display.clicked.disconnect()
except Exception:
_logger.debug("Signals were not connected")
extruder = config.get("extruder", None) or {}
bed = config.get("heater_bed", None) or {}
e_min_temp = extruder.get("min_temp", 0)
e_max_temp = extruder.get("max_temp", 300)
b_max_temp = bed.get("max_temp", 100)
b_min_temp = bed.get("min_temp", 0)
# Configure numpads
self.panel.extruder_temp_display.clicked.connect(
lambda: self.request_numpad[str, int, "PyQt_PyObject", int, int].emit(
"Extruder Temperature",
int(round(float(self.panel.extruder_temp_display.secondary_text))),
self.on_numpad_change,
int(e_min_temp),
int(e_max_temp),
)
)
self.panel.bed_temp_display.clicked.connect(
lambda: self.request_numpad[str, int, "PyQt_PyObject", int, int].emit(
"Bed Temperature",
int(round(float(self.panel.bed_temp_display.secondary_text))),
self.on_numpad_change,
int(b_min_temp),
int(b_max_temp),
)
)

def handle_ztilt(self):
"""Handle Z-Tilt Adjustment"""
self.call_load_panel.emit(True, "Please wait, performing Z-axis calibration.")
Expand Down
1 change: 1 addition & 0 deletions BlocksScreen/lib/panels/printTab.py
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ def __init__(
self.change_page(self.indexOf(self.print_page)) # force set the initial page
self.save_config_btn.clicked.connect(self.save_config)
self.BasePopup_z_offset.accepted.connect(self.update_configuration_file)
self.printer.printer_config.connect(self.tune_page.on_printer_config)

@QtCore.pyqtSlot(str, dict, name="on_print_stats_update")
@QtCore.pyqtSlot(str, float, name="on_print_stats_update")
Expand Down
56 changes: 40 additions & 16 deletions BlocksScreen/lib/panels/widgets/tunePage.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import re
import typing
import logging

from helper_methods import normalize
from lib.utils.blocks_button import BlocksCustomButton
Expand All @@ -8,6 +9,9 @@
from PyQt6 import QtCore, QtGui, QtWidgets


_logger = logging.getLogger(__name__)


class TuneWidget(QtWidgets.QWidget):
request_back: typing.ClassVar[QtCore.pyqtSignal] = QtCore.pyqtSignal(
name="request_back_page"
Expand Down Expand Up @@ -45,31 +49,51 @@ def __init__(self, parent) -> None:
self.sensors_menu_btn.clicked.connect(self.request_sensorsPage.emit)
self.tune_babystep_menu_btn.clicked.connect(self.request_bbpPage.emit)
self.tune_back_btn.clicked.connect(self.request_back)
self.bed_display.clicked.connect(
lambda: self.request_numpad[str, int, "PyQt_PyObject", int, int].emit(
"Bed",
int(round(self.bed_target)),
self.on_numpad_change,
0,
120, # TODO: Get this value from printer objects
self.speed_display.clicked.connect(
lambda: self.request_sliderPage[str, int, "PyQt_PyObject", int, int].emit(
"Speed",
int(self.speed_factor_override * 100),
self.on_slider_change,
10,
300,
)
)

@QtCore.pyqtSlot(dict, name="printer_config")
def on_printer_config(self, config: dict) -> None:
"""Slot that receives the full printer configuration,

Additionally, this method configures the signal connections
between controllable heaters and numpad calls
"""
try:
self.extruder_display.clicked.disconnect()
self.bed_display.clicked.disconnect()
except Exception:
_logger.debug("Signals were not connected")
extruder = config.get("extruder", None) or {}
bed = config.get("heater_bed", None) or {}
e_min_temp = extruder.get("min_temp", 0)
e_max_temp = extruder.get("max_temp", 300)
b_max_temp = bed.get("max_temp", 100)
b_min_temp = bed.get("min_temp", 0)
# Configure numpads
self.extruder_display.clicked.connect(
lambda: self.request_numpad[str, int, "PyQt_PyObject", int, int].emit(
"Extruder",
int(round(self.extruder_target)),
self.on_numpad_change,
0,
300, # TODO: Get this value from printer objects
int(e_min_temp),
int(e_max_temp),
)
)
self.speed_display.clicked.connect(
lambda: self.request_sliderPage[str, int, "PyQt_PyObject", int, int].emit(
"Speed",
int(self.speed_factor_override * 100),
self.on_slider_change,
10,
300,
self.bed_display.clicked.connect(
lambda: self.request_numpad[str, int, "PyQt_PyObject", int, int].emit(
"Bed",
int(round(self.bed_target)),
self.on_numpad_change,
int(b_min_temp),
int(b_max_temp),
)
)

Expand Down
Loading