From 588dd6cd78051f5fa5a4b49e396e4b1c1fd1874d Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 11 Apr 2019 11:32:02 +0200 Subject: [PATCH 1/6] Disable printers that are not host of a group CURA-6449 - Group printers into hosts and non-hosts and of unknown type. - Show available/connectable printers first in the list. - Show sections for connectable and non-connectable printers. --- .../Models/DiscoveredPrintersModel.py | 15 ++++++++++-- .../PrinterSelector/MachineSelectorButton.qml | 2 +- .../AddNetworkPrinterScrollView.qml | 23 ++++++++++++++++++- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/cura/Machines/Models/DiscoveredPrintersModel.py b/cura/Machines/Models/DiscoveredPrintersModel.py index aa372a49e8..e6bedbebde 100644 --- a/cura/Machines/Models/DiscoveredPrintersModel.py +++ b/cura/Machines/Models/DiscoveredPrintersModel.py @@ -66,12 +66,23 @@ class DiscoveredPrinter(QObject): @pyqtProperty(bool, notify = machineTypeChanged) def isUnknownMachineType(self) -> bool: - return self.readableMachineType.lower() == "unknown" + return self.readableMachineType == catalog.i18nc("@label", "Unknown") @pyqtProperty(QObject, constant = True) def device(self) -> "NetworkedPrinterOutputDevice": return self._device + @pyqtProperty(bool, constant = True) + def isHostOfGroup(self) -> bool: + return getattr(self._device, "clusterSize", 1) > 0 + + @pyqtProperty(str, constant = True) + def sectionName(self) -> str: + if self.isUnknownMachineType or not self.isHostOfGroup: + return catalog.i18nc("@label", "The printer(s) below cannot be connected because they are part of a group") + else: + return catalog.i18nc("@label", "Available network printers") + # # Discovered printers are all the printers that were found on the network, which provide a more convenient way @@ -90,7 +101,7 @@ class DiscoveredPrintersModel(QObject): @pyqtProperty(list, notify = discoveredPrintersChanged) def discoveredPrinters(self) -> List["DiscoveredPrinter"]: item_list = list(x for x in self._discovered_printer_by_ip_dict.values()) - item_list.sort(key = lambda x: x.device.name) + item_list.sort(key = lambda x: (int(not x.isUnknownMachineType), getattr(x.device, "clusterSize", 1), x.device.name), reverse = True) return item_list def addDiscoveredPrinter(self, ip_address: str, key: str, name: str, create_callback: Callable[[str], None], diff --git a/resources/qml/PrinterSelector/MachineSelectorButton.qml b/resources/qml/PrinterSelector/MachineSelectorButton.qml index 98e2042448..c37823ba82 100644 --- a/resources/qml/PrinterSelector/MachineSelectorButton.qml +++ b/resources/qml/PrinterSelector/MachineSelectorButton.qml @@ -53,7 +53,7 @@ Button verticalCenter: parent.verticalCenter } text: machineSelectorButton.text - color: UM.Theme.getColor("text") + color: enabled ? UM.Theme.getColor("text") : UM.Theme.getColor("small_button_text") font: UM.Theme.getFont("medium") visible: text != "" renderType: Text.NativeRendering diff --git a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml index 924eeb930d..78443385c2 100644 --- a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml +++ b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml @@ -71,6 +71,10 @@ Item anchors.fill: parent model: CuraApplication.getDiscoveredPrintersModel().discoveredPrinters + section.property: "modelData.sectionName" + section.criteria: ViewSection.FullString + section.delegate: sectionHeading + Component.onCompleted: { // Select the first one that's not "unknown" by default. @@ -84,6 +88,23 @@ Item } } + Component + { + id: sectionHeading + + Label + { + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + height: UM.Theme.getSize("setting_control").height + text: section + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("small_button_text") + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + } + } + delegate: MachineSelectorButton { text: modelData.device.name @@ -93,7 +114,7 @@ Item anchors.rightMargin: UM.Theme.getSize("default_margin").width outputDevice: modelData.device - enabled: !modelData.isUnknownMachineType + enabled: !modelData.isUnknownMachineType && modelData.isHostOfGroup printerTypeLabelAutoFit: true From 26205fbdce7090940f7947e5a837b5429c16cddd Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 12 Apr 2019 12:23:22 +0200 Subject: [PATCH 2/6] Remove translation for Unknown printer type CURA-6449 --- cura/Machines/Models/DiscoveredPrintersModel.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/Machines/Models/DiscoveredPrintersModel.py b/cura/Machines/Models/DiscoveredPrintersModel.py index e6bedbebde..e018cdf44e 100644 --- a/cura/Machines/Models/DiscoveredPrintersModel.py +++ b/cura/Machines/Models/DiscoveredPrintersModel.py @@ -61,12 +61,12 @@ class DiscoveredPrinter(QObject): from cura.CuraApplication import CuraApplication readable_type = CuraApplication.getInstance().getMachineManager().getMachineTypeNameFromId(self._machine_type) if not readable_type: - readable_type = catalog.i18nc("@label", "Unknown") + readable_type = "unknown" return readable_type @pyqtProperty(bool, notify = machineTypeChanged) def isUnknownMachineType(self) -> bool: - return self.readableMachineType == catalog.i18nc("@label", "Unknown") + return self.readableMachineType == "unknown" @pyqtProperty(QObject, constant = True) def device(self) -> "NetworkedPrinterOutputDevice": From 6383c77473956086c0119b4dd815822878b19c86 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 12 Apr 2019 12:25:36 +0200 Subject: [PATCH 3/6] Fix section text CURA-6449 --- cura/Machines/Models/DiscoveredPrintersModel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Machines/Models/DiscoveredPrintersModel.py b/cura/Machines/Models/DiscoveredPrintersModel.py index e018cdf44e..cf581b0e87 100644 --- a/cura/Machines/Models/DiscoveredPrintersModel.py +++ b/cura/Machines/Models/DiscoveredPrintersModel.py @@ -81,7 +81,7 @@ class DiscoveredPrinter(QObject): if self.isUnknownMachineType or not self.isHostOfGroup: return catalog.i18nc("@label", "The printer(s) below cannot be connected because they are part of a group") else: - return catalog.i18nc("@label", "Available network printers") + return catalog.i18nc("@label", "Available networked printers") # From ce5682aa74ffa7174b1cbaeeeb998b39a15d197e Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 17 Apr 2019 09:32:31 +0200 Subject: [PATCH 4/6] Check type by ID in isUnknownMachineType() CURA-6449 --- cura/Machines/Models/DiscoveredPrintersModel.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cura/Machines/Models/DiscoveredPrintersModel.py b/cura/Machines/Models/DiscoveredPrintersModel.py index 6c254510e1..68936fb714 100644 --- a/cura/Machines/Models/DiscoveredPrintersModel.py +++ b/cura/Machines/Models/DiscoveredPrintersModel.py @@ -62,12 +62,14 @@ class DiscoveredPrinter(QObject): from cura.CuraApplication import CuraApplication readable_type = CuraApplication.getInstance().getMachineManager().getMachineTypeNameFromId(self._machine_type) if not readable_type: - readable_type = "unknown" + readable_type = catalog.i18nc("@label", "Unknown") return readable_type @pyqtProperty(bool, notify = machineTypeChanged) def isUnknownMachineType(self) -> bool: - return self.readableMachineType == "unknown" + from cura.CuraApplication import CuraApplication + readable_type = CuraApplication.getInstance().getMachineManager().getMachineTypeNameFromId(self._machine_type) + return not readable_type @pyqtProperty(QObject, constant = True) def device(self) -> "NetworkedPrinterOutputDevice": From af42340e68b98a6d7a075c7228f6d15772426219 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 17 Apr 2019 12:48:22 +0200 Subject: [PATCH 5/6] Slightly increase resolution by default Most Marlin installations should be able to handle a bit more. Contributes to issue CURA-6458. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 809ed79c9c..b64d72d78d 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5853,7 +5853,7 @@ "description": "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway.", "type": "float", "unit": "mm", - "default_value": 0.25, + "default_value": 0.20, "minimum_value": "0.001", "minimum_value_warning": "0.02", "maximum_value_warning": "2", From 47f9741d9d8870326e7170dc8f6a3943b70ab26e Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 17 Apr 2019 13:35:37 +0200 Subject: [PATCH 6/6] Sort network printer names in list CURA-6449 --- cura/Machines/Models/DiscoveredPrintersModel.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/cura/Machines/Models/DiscoveredPrintersModel.py b/cura/Machines/Models/DiscoveredPrintersModel.py index 68936fb714..7e0721fcbe 100644 --- a/cura/Machines/Models/DiscoveredPrintersModel.py +++ b/cura/Machines/Models/DiscoveredPrintersModel.py @@ -105,8 +105,20 @@ class DiscoveredPrintersModel(QObject): def discoveredPrinters(self) -> List["DiscoveredPrinter"]: item_list = list( x for x in self._discovered_printer_by_ip_dict.values() if not parseBool(x.device.getProperty("temporary"))) - item_list.sort(key = lambda x: (int(not x.isUnknownMachineType), getattr(x.device, "clusterSize", 1), x.device.name), reverse = True) - return item_list + + # Split the printers into 2 lists and sort them ascending based on names. + available_list = [] + not_available_list = [] + for item in item_list: + if item.isUnknownMachineType or getattr(item.device, "clusterSize", 1) < 1: + not_available_list.append(item) + else: + available_list.append(item) + + available_list.sort(key = lambda x: x.device.name) + not_available_list.sort(key = lambda x: x.device.name) + + return available_list + not_available_list def addDiscoveredPrinter(self, ip_address: str, key: str, name: str, create_callback: Callable[[str], None], machine_type: str, device: "NetworkedPrinterOutputDevice") -> None: