always maintain printers data, should avoid a bunch of issues
This commit is contained in:
parent
18af1d1410
commit
0f0c6f9b6e
@ -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']
|
||||
|
66
screen.py
66
screen.py
@ -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)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user