From c86cc3ae5a08df085d59caba949efce414b1c92d Mon Sep 17 00:00:00 2001 From: Dimitriovski Date: Fri, 10 Jan 2020 16:48:45 +0100 Subject: [PATCH 01/12] Added 'dismiss' link and logic for removing the item from the dialog CURA-7090 --- .../qml/dialogs/CompatibilityDialog.qml | 19 +++++++++++++- .../Toolbox/src/SubscribedPackagesModel.py | 26 +++++++++++++++++-- plugins/Toolbox/src/Toolbox.py | 5 ++++ 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml b/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml index a6ce7fc865..93945871a3 100644 --- a/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml +++ b/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml @@ -104,7 +104,7 @@ UM.Dialog{ { width: parent.width property int lineHeight: 60 - visible: !model.is_compatible + visible: !model.is_compatible && !model.is_dismissed height: visible ? (lineHeight + UM.Theme.getSize("default_margin").height) : 0 // We only show the incompatible packages here Image { @@ -117,6 +117,7 @@ UM.Dialog{ } Label { + id: packageName text: model.name font: UM.Theme.getFont("medium_bold") anchors.left: packageIcon.right @@ -125,6 +126,22 @@ UM.Dialog{ color: UM.Theme.getColor("text") elide: Text.ElideRight } + + Label + { + id: dismissLabel + text: "(Dismiss)" + font: UM.Theme.getFont("small") + anchors.right: parent.right + anchors.verticalCenter: packageIcon.verticalCenter + color: UM.Theme.getColor("text") + + MouseArea + { + anchors.fill: parent + onClicked: toolbox.dismissIncompatiblePackage(model.package_id) + } + } } } } diff --git a/plugins/Toolbox/src/SubscribedPackagesModel.py b/plugins/Toolbox/src/SubscribedPackagesModel.py index cf0d07c153..118048eec2 100644 --- a/plugins/Toolbox/src/SubscribedPackagesModel.py +++ b/plugins/Toolbox/src/SubscribedPackagesModel.py @@ -5,6 +5,10 @@ from PyQt5.QtCore import Qt from UM.Qt.ListModel import ListModel from cura import ApplicationMetadata +from PyQt5.QtCore import pyqtSlot + +from UM.Logger import Logger + class SubscribedPackagesModel(ListModel): def __init__(self, parent = None): @@ -18,6 +22,9 @@ class SubscribedPackagesModel(ListModel): self.addRoleName(Qt.UserRole + 1, "name") self.addRoleName(Qt.UserRole + 2, "icon_url") self.addRoleName(Qt.UserRole + 3, "is_compatible") + self.addRoleName(Qt.UserRole + 4, "is_dismissed") + self.addRoleName(Qt.UserRole + 5, "package_id") + def setMetadata(self, data): if self._metadata != data: @@ -33,7 +40,11 @@ class SubscribedPackagesModel(ListModel): for item in self._metadata: if item["package_id"] not in self._discrepancies: continue - package = {"name": item["display_name"], "sdk_versions": item["sdk_versions"]} + package = {"package_id": item["package_id"], + "name": item["display_name"], + "sdk_versions": item["sdk_versions"], + "is_dismissed": False + } if self._sdk_version not in item["sdk_versions"]: package.update({"is_compatible": False}) else: @@ -44,8 +55,10 @@ class SubscribedPackagesModel(ListModel): package.update({"icon_url": ""}) self._items.append(package) + print("All items:: %s" % self._items) self.setItems(self._items) + def hasCompatiblePackages(self) -> bool: has_compatible_items = False for item in self._items: @@ -58,4 +71,13 @@ class SubscribedPackagesModel(ListModel): for item in self._items: if item['is_compatible'] == False: has_incompatible_items = True - return has_incompatible_items \ No newline at end of file + return has_incompatible_items + + @pyqtSlot(str) + def setDismiss(self, package_id) -> None: + package_id_in_list_of_items = self.find(key="package_id", value=package_id) + if package_id_in_list_of_items != -1: + self.setProperty(package_id_in_list_of_items, property="is_dismissed", value=True) + Logger.debug("Package {} has been dismissed".format(package_id)) + + # Now store this package_id as DISMISSED somewhere in local files \ No newline at end of file diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py index f28178b99e..c77e148140 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -556,6 +556,11 @@ class Toolbox(QObject, Extension): populated += 1 return populated == len(self._server_response_data.items()) + @pyqtSlot(str) + def dismissIncompatiblePackage(self, package_id): + print("---in toolbox: %s" % package_id) + self._models["subscribed_packages"].setDismiss(package_id) + # Make API Calls # -------------------------------------------------------------------------- def _makeRequestByType(self, request_type: str) -> None: From 071326b890f92d8b16fb094a310f29ea03df9764 Mon Sep 17 00:00:00 2001 From: Dimitriovski Date: Sat, 11 Jan 2020 01:11:49 +0100 Subject: [PATCH 02/12] Added logic for dismissing packages from the Incompatible list CURA-7090 --- plugins/Toolbox/src/SubscribedPackagesModel.py | 8 +++++--- plugins/Toolbox/src/Toolbox.py | 11 ++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/plugins/Toolbox/src/SubscribedPackagesModel.py b/plugins/Toolbox/src/SubscribedPackagesModel.py index 118048eec2..d2ed486de2 100644 --- a/plugins/Toolbox/src/SubscribedPackagesModel.py +++ b/plugins/Toolbox/src/SubscribedPackagesModel.py @@ -55,7 +55,6 @@ class SubscribedPackagesModel(ListModel): package.update({"icon_url": ""}) self._items.append(package) - print("All items:: %s" % self._items) self.setItems(self._items) @@ -73,11 +72,14 @@ class SubscribedPackagesModel(ListModel): has_incompatible_items = True return has_incompatible_items - @pyqtSlot(str) def setDismiss(self, package_id) -> None: package_id_in_list_of_items = self.find(key="package_id", value=package_id) if package_id_in_list_of_items != -1: self.setProperty(package_id_in_list_of_items, property="is_dismissed", value=True) Logger.debug("Package {} has been dismissed".format(package_id)) - # Now store this package_id as DISMISSED somewhere in local files \ No newline at end of file + def addDismissed(self, list_of_dismissed) -> None: + for package in list_of_dismissed: + item = self.find(key="package_id", value=package) + if item != -1: + self.setProperty(item, property="is_dismissed", value=True) diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py index c77e148140..f12cc3ba3d 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -558,8 +558,8 @@ class Toolbox(QObject, Extension): @pyqtSlot(str) def dismissIncompatiblePackage(self, package_id): - print("---in toolbox: %s" % package_id) self._models["subscribed_packages"].setDismiss(package_id) + self._package_manager.setAsDismissed(package_id) # Make API Calls # -------------------------------------------------------------------------- @@ -668,12 +668,17 @@ class Toolbox(QObject, Extension): def _checkCompatibilities(self, json_data) -> None: user_subscribed_packages = [plugin["package_id"] for plugin in json_data] user_installed_packages = self._package_manager.getUserInstalledPackages() + user_dismissed_packages = list(self._package_manager.getDismissedPackages()) + + user_installed_packages += user_dismissed_packages # We check if there are packages installed in Cloud Marketplace but not in Cura marketplace (discrepancy) package_discrepancy = list(set(user_subscribed_packages).difference(user_installed_packages)) + if package_discrepancy: self._models["subscribed_packages"].addValue(package_discrepancy) self._models["subscribed_packages"].update() + self._models["subscribed_packages"].addDismissed(user_dismissed_packages) Logger.log("d", "Discrepancy found between Cloud subscribed packages and Cura installed packages") sync_message = Message(i18n_catalog.i18nc( "@info:generic", @@ -802,11 +807,11 @@ class Toolbox(QObject, Extension): return cast(SubscribedPackagesModel, self._models["subscribed_packages"]) @pyqtProperty(bool, constant=True) - def has_compatible_packages(self) -> str: + def has_compatible_packages(self) -> bool: return self._models["subscribed_packages"].hasCompatiblePackages() @pyqtProperty(bool, constant=True) - def has_incompatible_packages(self) -> str: + def has_incompatible_packages(self) -> bool: return self._models["subscribed_packages"].hasIncompatiblePackages() @pyqtProperty(QObject, constant = True) From fbe38dc6587053f6cf45f8b0aaac1c234c3dcf71 Mon Sep 17 00:00:00 2001 From: Dimitriovski Date: Mon, 13 Jan 2020 09:55:18 +0100 Subject: [PATCH 03/12] added typing, refactored some functions CURA-7090 --- .../qml/dialogs/CompatibilityDialog.qml | 6 +-- .../Toolbox/src/SubscribedPackagesModel.py | 51 +++++++++---------- plugins/Toolbox/src/Toolbox.py | 22 ++++---- 3 files changed, 36 insertions(+), 43 deletions(-) diff --git a/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml b/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml index 93945871a3..c2cc1ce4d6 100644 --- a/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml +++ b/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml @@ -74,7 +74,7 @@ UM.Dialog{ } Label { - text: model.name + text: model.display_name font: UM.Theme.getFont("medium_bold") anchors.left: packageIcon.right anchors.leftMargin: UM.Theme.getSize("default_margin").width @@ -117,8 +117,7 @@ UM.Dialog{ } Label { - id: packageName - text: model.name + text: model.display_name font: UM.Theme.getFont("medium_bold") anchors.left: packageIcon.right anchors.leftMargin: UM.Theme.getSize("default_margin").width @@ -129,7 +128,6 @@ UM.Dialog{ Label { - id: dismissLabel text: "(Dismiss)" font: UM.Theme.getFont("small") anchors.right: parent.right diff --git a/plugins/Toolbox/src/SubscribedPackagesModel.py b/plugins/Toolbox/src/SubscribedPackagesModel.py index d2ed486de2..acbf4c13f7 100644 --- a/plugins/Toolbox/src/SubscribedPackagesModel.py +++ b/plugins/Toolbox/src/SubscribedPackagesModel.py @@ -4,10 +4,8 @@ from PyQt5.QtCore import Qt from UM.Qt.ListModel import ListModel from cura import ApplicationMetadata - -from PyQt5.QtCore import pyqtSlot - from UM.Logger import Logger +from typing import List class SubscribedPackagesModel(ListModel): @@ -19,32 +17,30 @@ class SubscribedPackagesModel(ListModel): self._discrepancies = None self._sdk_version = ApplicationMetadata.CuraSDKVersion - self.addRoleName(Qt.UserRole + 1, "name") - self.addRoleName(Qt.UserRole + 2, "icon_url") - self.addRoleName(Qt.UserRole + 3, "is_compatible") - self.addRoleName(Qt.UserRole + 4, "is_dismissed") - self.addRoleName(Qt.UserRole + 5, "package_id") + self.addRoleName(Qt.UserRole + 1, "package_id") + self.addRoleName(Qt.UserRole + 2, "display_name") + self.addRoleName(Qt.UserRole + 3, "icon_url") + self.addRoleName(Qt.UserRole + 4, "is_compatible") + self.addRoleName(Qt.UserRole + 5, "is_dismissed") - - def setMetadata(self, data): + def setMetadata(self, data) -> None: if self._metadata != data: self._metadata = data - def addValue(self, discrepancy): + def addDiscrepancies(self, discrepancy: List[str]) -> None: if self._discrepancies != discrepancy: self._discrepancies = discrepancy - def update(self): + def initialize(self) -> None: self._items.clear() for item in self._metadata: if item["package_id"] not in self._discrepancies: continue - package = {"package_id": item["package_id"], - "name": item["display_name"], - "sdk_versions": item["sdk_versions"], - "is_dismissed": False - } + package = {"package_id": item["package_id"], + "display_name": item["display_name"], + "sdk_versions": item["sdk_versions"], + "is_dismissed": False} if self._sdk_version not in item["sdk_versions"]: package.update({"is_compatible": False}) else: @@ -57,7 +53,6 @@ class SubscribedPackagesModel(ListModel): self._items.append(package) self.setItems(self._items) - def hasCompatiblePackages(self) -> bool: has_compatible_items = False for item in self._items: @@ -72,14 +67,16 @@ class SubscribedPackagesModel(ListModel): has_incompatible_items = True return has_incompatible_items - def setDismiss(self, package_id) -> None: - package_id_in_list_of_items = self.find(key="package_id", value=package_id) - if package_id_in_list_of_items != -1: - self.setProperty(package_id_in_list_of_items, property="is_dismissed", value=True) + # Sets the "is_compatible" to True for the given package, in memory + def dismissPackage(self, package_id: str) -> None: + package = self.find(key="package_id", value=package_id) + if package != -1: + self.setProperty(package, property="is_dismissed", value=True) Logger.debug("Package {} has been dismissed".format(package_id)) - def addDismissed(self, list_of_dismissed) -> None: - for package in list_of_dismissed: - item = self.find(key="package_id", value=package) - if item != -1: - self.setProperty(item, property="is_dismissed", value=True) + # Reads the dismissed_packages from user config file and applies them so they won't be shown in the Compatibility Dialog + def applyDismissedPackages(self, dismissed_packages: List[str]) -> None: + for package in dismissed_packages: + exists = self.find(key="package_id", value=package) + if exists != -1: + self.setProperty(exists, property="is_dismissed", value=True) diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py index f12cc3ba3d..eaaf8d94e9 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -557,9 +557,9 @@ class Toolbox(QObject, Extension): return populated == len(self._server_response_data.items()) @pyqtSlot(str) - def dismissIncompatiblePackage(self, package_id): - self._models["subscribed_packages"].setDismiss(package_id) - self._package_manager.setAsDismissed(package_id) + def dismissIncompatiblePackage(self, package_id: str): + self._models["subscribed_packages"].dismissPackage(package_id) # sets "is_compatible" to True, in-memory + self._package_manager.dismissPackage(package_id) # adds this package_id as dismissed in the user config file # Make API Calls # -------------------------------------------------------------------------- @@ -668,17 +668,15 @@ class Toolbox(QObject, Extension): def _checkCompatibilities(self, json_data) -> None: user_subscribed_packages = [plugin["package_id"] for plugin in json_data] user_installed_packages = self._package_manager.getUserInstalledPackages() - user_dismissed_packages = list(self._package_manager.getDismissedPackages()) - - user_installed_packages += user_dismissed_packages - - # We check if there are packages installed in Cloud Marketplace but not in Cura marketplace (discrepancy) + user_dismissed_packages = self._package_manager.getDismissedPackages() + if user_dismissed_packages: + user_installed_packages += user_dismissed_packages + # We check if there are packages installed in Cloud Marketplace but not in Cura marketplace package_discrepancy = list(set(user_subscribed_packages).difference(user_installed_packages)) - if package_discrepancy: - self._models["subscribed_packages"].addValue(package_discrepancy) - self._models["subscribed_packages"].update() - self._models["subscribed_packages"].addDismissed(user_dismissed_packages) + self._models["subscribed_packages"].addDiscrepancies(package_discrepancy) + self._models["subscribed_packages"].initialize() + self._models["subscribed_packages"].applyDismissedPackages(user_dismissed_packages) Logger.log("d", "Discrepancy found between Cloud subscribed packages and Cura installed packages") sync_message = Message(i18n_catalog.i18nc( "@info:generic", From 071cf5517e759cdd41583587323065b05f64d9eb Mon Sep 17 00:00:00 2001 From: Dimitriovski Date: Mon, 13 Jan 2020 10:37:40 +0100 Subject: [PATCH 04/12] linting CURA-7090 --- plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml b/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml index c2cc1ce4d6..bd858b4fd9 100644 --- a/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml +++ b/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml @@ -125,7 +125,6 @@ UM.Dialog{ color: UM.Theme.getColor("text") elide: Text.ElideRight } - Label { text: "(Dismiss)" @@ -133,7 +132,6 @@ UM.Dialog{ anchors.right: parent.right anchors.verticalCenter: packageIcon.verticalCenter color: UM.Theme.getColor("text") - MouseArea { anchors.fill: parent From 7359492e115855a4fa3e943d91fe888c06a7727e Mon Sep 17 00:00:00 2001 From: Dimitriovski Date: Mon, 13 Jan 2020 11:44:23 +0100 Subject: [PATCH 05/12] Added a Tooltip over the Dismiss button. Changed the cursor on hover. --- .../qml/dialogs/CompatibilityDialog.qml | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml b/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml index bd858b4fd9..41020f2415 100644 --- a/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml +++ b/plugins/Toolbox/resources/qml/dialogs/CompatibilityDialog.qml @@ -125,17 +125,24 @@ UM.Dialog{ color: UM.Theme.getColor("text") elide: Text.ElideRight } - Label + UM.TooltipArea { - text: "(Dismiss)" - font: UM.Theme.getFont("small") + width: childrenRect.width; + height: childrenRect.height; + text: catalog.i18nc("@info:tooltip", "Dismisses the package and won't be shown in this dialog anymore") anchors.right: parent.right anchors.verticalCenter: packageIcon.verticalCenter - color: UM.Theme.getColor("text") - MouseArea + Label { - anchors.fill: parent - onClicked: toolbox.dismissIncompatiblePackage(model.package_id) + text: "(Dismiss)" + font: UM.Theme.getFont("small") + color: UM.Theme.getColor("text") + MouseArea + { + cursorShape: Qt.PointingHandCursor + anchors.fill: parent + onClicked: toolbox.dismissIncompatiblePackage(model.package_id) + } } } } From 122b6318feb590ee95a6da9f596ff38ab540fd86 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 13 Jan 2020 12:32:46 +0100 Subject: [PATCH 06/12] Remove dash if print job name is empty Otherwise it shows ' - Ultimaker Cura' here which looks a bit weird. --- resources/qml/Cura.qml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 8dcf60018f..326edb6e97 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2019 Ultimaker B.V. +// Copyright (c) 2020 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -21,7 +21,16 @@ UM.MainWindow id: base // Cura application window title - title: PrintInformation.jobName + " - " + catalog.i18nc("@title:window", CuraApplication.applicationDisplayName) + title: + { + let result = ""; + if(PrintInformation.jobName != "") + { + result += PrintInformation.jobName + " - "; + } + result += CuraApplication.applicationDisplayName; + return result; + } backgroundColor: UM.Theme.getColor("viewport_background") From 601a765f739341696f7c23b547da2a690aa87ee4 Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Mon, 13 Jan 2020 13:44:36 +0100 Subject: [PATCH 07/12] Fix typo in comment --- cura/Machines/Models/MaterialBrandsModel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Machines/Models/MaterialBrandsModel.py b/cura/Machines/Models/MaterialBrandsModel.py index 184d27f390..b0594cb286 100644 --- a/cura/Machines/Models/MaterialBrandsModel.py +++ b/cura/Machines/Models/MaterialBrandsModel.py @@ -34,7 +34,7 @@ class MaterialBrandsModel(BaseMaterialsModel): brand_item_list = [] brand_group_dict = {} - # Part 1: Generate the entire tree of brands -> material types -> spcific materials + # Part 1: Generate the entire tree of brands -> material types -> specific materials for root_material_id, container_node in self._available_materials.items(): # Do not include the materials from a to-be-removed package if bool(container_node.getMetaDataEntry("removed", False)): From d5cfca4df00f71269d1b6107050f0c763134e207 Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Mon, 13 Jan 2020 13:44:51 +0100 Subject: [PATCH 08/12] Fix loading machine specific materials The container registry was incorrectly being searched with a variant_name == None, which always returned an empty printer-specific materials list. As a result, the generic material settings were always being loaded if there was no variant specifically indicated inside the fdm_material file. The printer specific values were consistently being ignored. This commit fixes that by removing the search with a variant_name==None which correctly returns the printer-specific materials list while loading the materials from the variant nodes. CURA-7087 --- cura/Machines/VariantNode.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Machines/VariantNode.py b/cura/Machines/VariantNode.py index 550b5881a3..0f30782a91 100644 --- a/cura/Machines/VariantNode.py +++ b/cura/Machines/VariantNode.py @@ -51,7 +51,7 @@ class VariantNode(ContainerNode): # Find all the materials for this variant's name. else: # Printer has its own material profiles. Look for material profiles with this printer's definition. base_materials = container_registry.findInstanceContainersMetadata(type = "material", definition = "fdmprinter") - printer_specific_materials = container_registry.findInstanceContainersMetadata(type = "material", definition = self.machine.container_id, variant_name = None) + printer_specific_materials = container_registry.findInstanceContainersMetadata(type = "material", definition = self.machine.container_id) variant_specific_materials = container_registry.findInstanceContainersMetadata(type = "material", definition = self.machine.container_id, variant_name = self.variant_name) # If empty_variant, this won't return anything. materials_per_base_file = {material["base_file"]: material for material in base_materials} materials_per_base_file.update({material["base_file"]: material for material in printer_specific_materials}) # Printer-specific profiles override global ones. From b6216896cbeee47799671418ccc6fb0c5753d9a7 Mon Sep 17 00:00:00 2001 From: Nino van Hooff Date: Mon, 13 Jan 2020 14:43:11 +0100 Subject: [PATCH 09/12] Add a script to execute the CI scripts on a local Docker instance --- test-in-docker.sh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100755 test-in-docker.sh diff --git a/test-in-docker.sh b/test-in-docker.sh new file mode 100755 index 0000000000..e5a1116646 --- /dev/null +++ b/test-in-docker.sh @@ -0,0 +1,5 @@ +sudo rm -rf ./build ./Uranium +sudo docker run -it --rm \ + -v "$(pwd):/srv/cura" ultimaker/cura-build-environment \ + /srv/cura/docker/build.sh +sudo rm -rf ./build ./Uranium From e8f22beb276078a8abbae60a12583d7bacea699b Mon Sep 17 00:00:00 2001 From: Dimitriovski Date: Tue, 14 Jan 2020 11:50:47 +0100 Subject: [PATCH 10/12] Removed unnecessary function and a call to it. Added some typing. CURA-7090 --- plugins/Toolbox/src/SubscribedPackagesModel.py | 13 +++---------- plugins/Toolbox/src/Toolbox.py | 4 +--- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/plugins/Toolbox/src/SubscribedPackagesModel.py b/plugins/Toolbox/src/SubscribedPackagesModel.py index acbf4c13f7..53d6eba932 100644 --- a/plugins/Toolbox/src/SubscribedPackagesModel.py +++ b/plugins/Toolbox/src/SubscribedPackagesModel.py @@ -5,7 +5,7 @@ from PyQt5.QtCore import Qt from UM.Qt.ListModel import ListModel from cura import ApplicationMetadata from UM.Logger import Logger -from typing import List +from typing import List, Dict, Any class SubscribedPackagesModel(ListModel): @@ -23,12 +23,12 @@ class SubscribedPackagesModel(ListModel): self.addRoleName(Qt.UserRole + 4, "is_compatible") self.addRoleName(Qt.UserRole + 5, "is_dismissed") - def setMetadata(self, data) -> None: + def setMetadata(self, data: List[Dict[str, List[Any]]]) -> None: if self._metadata != data: self._metadata = data def addDiscrepancies(self, discrepancy: List[str]) -> None: - if self._discrepancies != discrepancy: + if set(self._discrepancies) != set(discrepancy): # convert to set() to check if they are same list, regardless of list order self._discrepancies = discrepancy def initialize(self) -> None: @@ -73,10 +73,3 @@ class SubscribedPackagesModel(ListModel): if package != -1: self.setProperty(package, property="is_dismissed", value=True) Logger.debug("Package {} has been dismissed".format(package_id)) - - # Reads the dismissed_packages from user config file and applies them so they won't be shown in the Compatibility Dialog - def applyDismissedPackages(self, dismissed_packages: List[str]) -> None: - for package in dismissed_packages: - exists = self.find(key="package_id", value=package) - if exists != -1: - self.setProperty(exists, property="is_dismissed", value=True) diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py index eaaf8d94e9..dd01458a32 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -676,8 +676,7 @@ class Toolbox(QObject, Extension): if package_discrepancy: self._models["subscribed_packages"].addDiscrepancies(package_discrepancy) self._models["subscribed_packages"].initialize() - self._models["subscribed_packages"].applyDismissedPackages(user_dismissed_packages) - Logger.log("d", "Discrepancy found between Cloud subscribed packages and Cura installed packages") + Logger.debug("Discrepancy found between Cloud subscribed packages and Cura installed packages") sync_message = Message(i18n_catalog.i18nc( "@info:generic", "\nDo you want to sync material and software packages with your account?"), @@ -688,7 +687,6 @@ class Toolbox(QObject, Extension): icon="", description="Sync your Cloud subscribed packages to your local environment.", button_align=Message.ActionButtonAlignment.ALIGN_RIGHT) - sync_message.actionTriggered.connect(self._onSyncButtonClicked) sync_message.show() From 3872e8ffa38622792285f47f38b20bc9a3e94e21 Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Tue, 14 Jan 2020 12:45:11 +0100 Subject: [PATCH 11/12] Move 'Toolbar' lower: Toolpanels could be obscured by objects-info. --- resources/qml/Cura.qml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 326edb6e97..d6f50f939b 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -253,23 +253,6 @@ UM.MainWindow } } - Toolbar - { - // The toolbar is the left bar that is populated by all the tools (which are dynamicly populated by - // plugins) - id: toolbar - - property int mouseX: base.mouseX - property int mouseY: base.mouseY - - anchors - { - verticalCenter: parent.verticalCenter - left: parent.left - } - visible: CuraApplication.platformActivity && !PrintInformation.preSliced - } - ObjectSelector { id: objectSelector @@ -311,6 +294,23 @@ UM.MainWindow } } + Toolbar + { + // The toolbar is the left bar that is populated by all the tools (which are dynamicly populated by + // plugins) + id: toolbar + + property int mouseX: base.mouseX + property int mouseY: base.mouseY + + anchors + { + verticalCenter: parent.verticalCenter + left: parent.left + } + visible: CuraApplication.platformActivity && !PrintInformation.preSliced + } + // A hint for the loaded content view. Overlay items / controls can safely be placed in this area Item { id: mainSafeArea From 15a3922436e82eff3371a840b99b1e77549860b8 Mon Sep 17 00:00:00 2001 From: Dimitriovski Date: Tue, 14 Jan 2020 14:07:55 +0100 Subject: [PATCH 12/12] Removed unnecessary checks CURA-7090 --- plugins/Toolbox/src/SubscribedPackagesModel.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/plugins/Toolbox/src/SubscribedPackagesModel.py b/plugins/Toolbox/src/SubscribedPackagesModel.py index 53d6eba932..e6886f23ce 100644 --- a/plugins/Toolbox/src/SubscribedPackagesModel.py +++ b/plugins/Toolbox/src/SubscribedPackagesModel.py @@ -24,16 +24,13 @@ class SubscribedPackagesModel(ListModel): self.addRoleName(Qt.UserRole + 5, "is_dismissed") def setMetadata(self, data: List[Dict[str, List[Any]]]) -> None: - if self._metadata != data: - self._metadata = data + self._metadata = data def addDiscrepancies(self, discrepancy: List[str]) -> None: - if set(self._discrepancies) != set(discrepancy): # convert to set() to check if they are same list, regardless of list order - self._discrepancies = discrepancy + self._discrepancies = discrepancy def initialize(self) -> None: self._items.clear() - for item in self._metadata: if item["package_id"] not in self._discrepancies: continue @@ -49,7 +46,6 @@ class SubscribedPackagesModel(ListModel): package.update({"icon_url": item["icon_url"]}) except KeyError: # There is no 'icon_url" in the response payload for this package package.update({"icon_url": ""}) - self._items.append(package) self.setItems(self._items)