mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 07:27:29 -06:00
Correctly set up the cluster output device instances with the cluster size
This fixes the Cura Connect messages shown in the network printer selection dialog. CL-555
This commit is contained in:
parent
bb1dd0e3d4
commit
427afdbe23
1 changed files with 18 additions and 4 deletions
|
@ -153,7 +153,18 @@ class NetworkPrinterOutputDevicePlugin(QObject, OutputDevicePlugin):
|
||||||
if status_code == 200:
|
if status_code == 200:
|
||||||
# We know it's a cluster printer
|
# We know it's a cluster printer
|
||||||
Logger.log("d", "Cluster printer detected: [%s]", reply.url())
|
Logger.log("d", "Cluster printer detected: [%s]", reply.url())
|
||||||
|
|
||||||
|
try:
|
||||||
|
cluster_printers_list = json.loads(bytes(reply.readAll()).decode("utf-8"))
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
Logger.log("e", "Printer returned invalid JSON.")
|
||||||
|
return
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
Logger.log("e", "Printer returned incorrect UTF-8.")
|
||||||
|
return
|
||||||
|
|
||||||
self._network_requests_buffer[address]["cluster"] = True
|
self._network_requests_buffer[address]["cluster"] = True
|
||||||
|
self._network_requests_buffer[address]["cluster_size"] = len(cluster_printers_list)
|
||||||
else:
|
else:
|
||||||
Logger.log("d", "This url is not from a cluster printer: [%s]", reply.url())
|
Logger.log("d", "This url is not from a cluster printer: [%s]", reply.url())
|
||||||
self._network_requests_buffer[address]["cluster"] = False
|
self._network_requests_buffer[address]["cluster"] = False
|
||||||
|
@ -165,7 +176,6 @@ class NetworkPrinterOutputDevicePlugin(QObject, OutputDevicePlugin):
|
||||||
|
|
||||||
instance_name = "manual:%s" % address
|
instance_name = "manual:%s" % address
|
||||||
system_info = self._network_requests_buffer[address]["system"]
|
system_info = self._network_requests_buffer[address]["system"]
|
||||||
is_cluster = self._network_requests_buffer[address]["cluster"]
|
|
||||||
machine = "unknown"
|
machine = "unknown"
|
||||||
if "variant" in system_info:
|
if "variant" in system_info:
|
||||||
variant = system_info["variant"]
|
variant = system_info["variant"]
|
||||||
|
@ -181,10 +191,14 @@ class NetworkPrinterOutputDevicePlugin(QObject, OutputDevicePlugin):
|
||||||
b"manual": b"true",
|
b"manual": b"true",
|
||||||
b"machine": machine.encode("utf-8")
|
b"machine": machine.encode("utf-8")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if self._network_requests_buffer[address]["cluster"]:
|
||||||
|
properties[b"cluster_size"] = self._network_requests_buffer[address]["cluster_size"]
|
||||||
|
|
||||||
if instance_name in self._printers:
|
if instance_name in self._printers:
|
||||||
# Only replace the printer if it is still in the list of (manual) printers
|
# Only replace the printer if it is still in the list of (manual) printers
|
||||||
self.removePrinter(instance_name)
|
self.removePrinter(instance_name)
|
||||||
self.addPrinter(instance_name, address, properties, force_cluster=is_cluster)
|
self.addPrinter(instance_name, address, properties)
|
||||||
|
|
||||||
del self._network_requests_buffer[address]
|
del self._network_requests_buffer[address]
|
||||||
|
|
||||||
|
@ -215,9 +229,9 @@ class NetworkPrinterOutputDevicePlugin(QObject, OutputDevicePlugin):
|
||||||
self._printers[key].connectionStateChanged.disconnect(self._onPrinterConnectionStateChanged)
|
self._printers[key].connectionStateChanged.disconnect(self._onPrinterConnectionStateChanged)
|
||||||
|
|
||||||
## Because the model needs to be created in the same thread as the QMLEngine, we use a signal.
|
## Because the model needs to be created in the same thread as the QMLEngine, we use a signal.
|
||||||
def addPrinter(self, name, address, properties, force_cluster=False):
|
def addPrinter(self, name, address, properties):
|
||||||
cluster_size = int(properties.get(b"cluster_size", -1))
|
cluster_size = int(properties.get(b"cluster_size", -1))
|
||||||
if force_cluster or cluster_size >= 0:
|
if cluster_size >= 0:
|
||||||
printer = NetworkClusterPrinterOutputDevice.NetworkClusterPrinterOutputDevice(
|
printer = NetworkClusterPrinterOutputDevice.NetworkClusterPrinterOutputDevice(
|
||||||
name, address, properties, self._api_prefix)
|
name, address, properties, self._api_prefix)
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue