always maintain printers data, should avoid a bunch of issues

This commit is contained in:
alfrix 2022-12-14 11:31:40 -03:00 committed by Alfredo Monclus
parent 18af1d1410
commit 0f0c6f9b6e
2 changed files with 38 additions and 61 deletions

View File

@ -7,12 +7,12 @@ from gi.repository import GLib
class Printer:
def __init__(self, state_cb):
self.config = None
self.data = None
def __init__(self, state_cb, state_callbacks, busy_cb):
self.config = {}
self.data = {}
self.state = "disconnected"
self.state_cb = state_cb
self.state_callbacks = None
self.state_callbacks = state_callbacks
self.devices = {}
self.power_devices = {}
self.tools = []
@ -22,28 +22,9 @@ class Printer:
self.output_pin_count = 0
self.store_timeout = None
self.tempstore = {}
self.busy_cb = None
self.busy = None
self.temperature_store_size = None
def reset(self):
self.config = None
self.data = None
self.state = None
self.state_cb = None
self.state_callbacks = None
self.devices = None
self.power_devices = None
self.tools = None
self.extrudercount = None
self.tempdevcount = None
self.fancount = None
self.output_pin_count = None
self.store_timeout = None
self.tempstore = None
self.busy_cb = None
self.busy = None
self.temperature_store_size = None
self.busy_cb = busy_cb
self.busy = False
self.tempstore_size = 1200
def reinit(self, printer_info, data):
self.config = data['configfile']['config']

View File

@ -82,7 +82,7 @@ class KlipperScreen(Gtk.Window):
panels = {}
popup_message = None
screensaver = None
printer = None
printers = printer = None
subscriptions = []
updating = False
_ws = None
@ -151,13 +151,24 @@ class KlipperScreen(Gtk.Window):
self.initial_connection()
def initial_connection(self):
printers = self._config.get_printers()
self.printers = self._config.get_printers()
state_callbacks = {
"disconnected": self.state_disconnected,
"error": self.state_error,
"paused": self.state_paused,
"printing": self.state_printing,
"ready": self.state_ready,
"startup": self.state_startup,
"shutdown": self.state_shutdown
}
for printer in self.printers:
printer["data"] = Printer(state_execute, state_callbacks, self.process_busy_state)
default_printer = self._config.get_main_config().get('default_printer')
logging.debug(f"Default printer: {default_printer}")
if [True for p in printers if default_printer in p]:
if [True for p in self.printers if default_printer in p]:
self.connect_printer(default_printer)
elif len(printers) == 1:
pname = list(printers[0])[0]
elif len(self.printers) == 1:
pname = list(self.printers[0])[0]
self.connect_printer(pname)
else:
self.base_panel.show_printer_select(True)
@ -168,40 +179,27 @@ class KlipperScreen(Gtk.Window):
if self._ws is not None and self._ws.connected:
self._ws.close()
self.connected_printer = None
self.printer.state = "disconnected"
if self.files:
self.files.reset()
self.files = None
if self.printer:
self.printer.reset()
self.printer = None
self.connecting = True
self.initialized = False
data = {
"moonraker_host": "127.0.0.1",
"moonraker_port": "7125",
"moonraker_api_key": False
}
logging.info(f"Connecting to printer: {name}")
for printer in self._config.get_printers():
pname = list(printer)[0]
if pname != name:
continue
data = printer[pname]
break
for printer in self.printers:
if name == list(printer)[0]:
ind = self.printers.index(printer)
break
self.printer = self.printers[ind]["data"]
self.apiclient = KlippyRest(
self.printers[ind][name]["moonraker_host"],
self.printers[ind][name]["moonraker_port"],
self.printers[ind][name]["moonraker_api_key"],
)
self.apiclient = KlippyRest(data["moonraker_host"], data["moonraker_port"], data["moonraker_api_key"])
self.printer = Printer(state_execute)
self.printer.state_callbacks = {
"disconnected": self.state_disconnected,
"error": self.state_error,
"paused": self.state_paused,
"printing": self.state_printing,
"ready": self.state_ready,
"startup": self.state_startup,
"shutdown": self.state_shutdown
}
self.printer.busy_cb = self.process_busy_state
self.printer_initializing(_("Connecting to %s") % name, remove=True)
self._ws = KlippyWebsocket(self,
@ -210,8 +208,8 @@ class KlipperScreen(Gtk.Window):
"on_message": self._websocket_callback,
"on_close": self.websocket_disconnected
},
data["moonraker_host"],
data["moonraker_port"]
self.printers[ind][name]["moonraker_host"],
self.printers[ind][name]["moonraker_port"],
)
self.files = KlippyFiles(self)
@ -627,8 +625,6 @@ class KlipperScreen(Gtk.Window):
self.connected_printer = None
self.files.reset()
self.files = None
self.printer.reset()
self.printer = None
self.initialized = False
self.connect_printer(self.connecting_to_printer)