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:
|
class Printer:
|
||||||
def __init__(self, state_cb):
|
def __init__(self, state_cb, state_callbacks, busy_cb):
|
||||||
self.config = None
|
self.config = {}
|
||||||
self.data = None
|
self.data = {}
|
||||||
self.state = "disconnected"
|
self.state = "disconnected"
|
||||||
self.state_cb = state_cb
|
self.state_cb = state_cb
|
||||||
self.state_callbacks = None
|
self.state_callbacks = state_callbacks
|
||||||
self.devices = {}
|
self.devices = {}
|
||||||
self.power_devices = {}
|
self.power_devices = {}
|
||||||
self.tools = []
|
self.tools = []
|
||||||
@ -22,28 +22,9 @@ class Printer:
|
|||||||
self.output_pin_count = 0
|
self.output_pin_count = 0
|
||||||
self.store_timeout = None
|
self.store_timeout = None
|
||||||
self.tempstore = {}
|
self.tempstore = {}
|
||||||
self.busy_cb = None
|
self.busy_cb = busy_cb
|
||||||
self.busy = None
|
self.busy = False
|
||||||
self.temperature_store_size = None
|
self.tempstore_size = 1200
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
def reinit(self, printer_info, data):
|
def reinit(self, printer_info, data):
|
||||||
self.config = data['configfile']['config']
|
self.config = data['configfile']['config']
|
||||||
|
64
screen.py
64
screen.py
@ -82,7 +82,7 @@ class KlipperScreen(Gtk.Window):
|
|||||||
panels = {}
|
panels = {}
|
||||||
popup_message = None
|
popup_message = None
|
||||||
screensaver = None
|
screensaver = None
|
||||||
printer = None
|
printers = printer = None
|
||||||
subscriptions = []
|
subscriptions = []
|
||||||
updating = False
|
updating = False
|
||||||
_ws = None
|
_ws = None
|
||||||
@ -151,13 +151,24 @@ class KlipperScreen(Gtk.Window):
|
|||||||
self.initial_connection()
|
self.initial_connection()
|
||||||
|
|
||||||
def initial_connection(self):
|
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')
|
default_printer = self._config.get_main_config().get('default_printer')
|
||||||
logging.debug(f"Default printer: {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)
|
self.connect_printer(default_printer)
|
||||||
elif len(printers) == 1:
|
elif len(self.printers) == 1:
|
||||||
pname = list(printers[0])[0]
|
pname = list(self.printers[0])[0]
|
||||||
self.connect_printer(pname)
|
self.connect_printer(pname)
|
||||||
else:
|
else:
|
||||||
self.base_panel.show_printer_select(True)
|
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:
|
if self._ws is not None and self._ws.connected:
|
||||||
self._ws.close()
|
self._ws.close()
|
||||||
self.connected_printer = None
|
self.connected_printer = None
|
||||||
|
self.printer.state = "disconnected"
|
||||||
if self.files:
|
if self.files:
|
||||||
self.files.reset()
|
self.files.reset()
|
||||||
self.files = None
|
self.files = None
|
||||||
if self.printer:
|
|
||||||
self.printer.reset()
|
|
||||||
self.printer = None
|
|
||||||
self.connecting = True
|
self.connecting = True
|
||||||
self.initialized = False
|
self.initialized = False
|
||||||
data = {
|
|
||||||
"moonraker_host": "127.0.0.1",
|
|
||||||
"moonraker_port": "7125",
|
|
||||||
"moonraker_api_key": False
|
|
||||||
}
|
|
||||||
|
|
||||||
logging.info(f"Connecting to printer: {name}")
|
logging.info(f"Connecting to printer: {name}")
|
||||||
for printer in self._config.get_printers():
|
for printer in self.printers:
|
||||||
pname = list(printer)[0]
|
if name == list(printer)[0]:
|
||||||
if pname != name:
|
ind = self.printers.index(printer)
|
||||||
continue
|
|
||||||
data = printer[pname]
|
|
||||||
break
|
break
|
||||||
|
|
||||||
self.apiclient = KlippyRest(data["moonraker_host"], data["moonraker_port"], data["moonraker_api_key"])
|
self.printer = self.printers[ind]["data"]
|
||||||
self.printer = Printer(state_execute)
|
self.apiclient = KlippyRest(
|
||||||
self.printer.state_callbacks = {
|
self.printers[ind][name]["moonraker_host"],
|
||||||
"disconnected": self.state_disconnected,
|
self.printers[ind][name]["moonraker_port"],
|
||||||
"error": self.state_error,
|
self.printers[ind][name]["moonraker_api_key"],
|
||||||
"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.printer_initializing(_("Connecting to %s") % name, remove=True)
|
||||||
|
|
||||||
self._ws = KlippyWebsocket(self,
|
self._ws = KlippyWebsocket(self,
|
||||||
@ -210,8 +208,8 @@ class KlipperScreen(Gtk.Window):
|
|||||||
"on_message": self._websocket_callback,
|
"on_message": self._websocket_callback,
|
||||||
"on_close": self.websocket_disconnected
|
"on_close": self.websocket_disconnected
|
||||||
},
|
},
|
||||||
data["moonraker_host"],
|
self.printers[ind][name]["moonraker_host"],
|
||||||
data["moonraker_port"]
|
self.printers[ind][name]["moonraker_port"],
|
||||||
)
|
)
|
||||||
|
|
||||||
self.files = KlippyFiles(self)
|
self.files = KlippyFiles(self)
|
||||||
@ -627,8 +625,6 @@ class KlipperScreen(Gtk.Window):
|
|||||||
self.connected_printer = None
|
self.connected_printer = None
|
||||||
self.files.reset()
|
self.files.reset()
|
||||||
self.files = None
|
self.files = None
|
||||||
self.printer.reset()
|
|
||||||
self.printer = None
|
|
||||||
self.initialized = False
|
self.initialized = False
|
||||||
self.connect_printer(self.connecting_to_printer)
|
self.connect_printer(self.connecting_to_printer)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user