From 615241a416d27566e48656b1b930bdf3858d4a6d Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 20 Mar 2019 13:39:08 +0100 Subject: [PATCH 1/6] Fix module renaming --- cura/CuraApplication.py | 26 +++++++++---------- cura/Scene/CuraSceneController.py | 2 +- .../CustomQualityProfilesDropDownMenuModel.py | 2 +- .../MachineModels/FavoriteMaterialsModel.py | 2 +- .../UI/MachineModels/GenericMaterialsModel.py | 2 +- cura/UI/MachineModels/MaterialBrandsModel.py | 2 +- .../CuraEngineBackend/CuraEngineBackend.py | 2 +- .../Settings/TestSettingVisibilityPresets.py | 2 +- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index a05e73fe95..d997a88fb6 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -66,19 +66,19 @@ from UM.Settings.SettingFunction import SettingFunction from cura.Settings.CuraContainerRegistry import CuraContainerRegistry from cura.Settings.MachineNameValidator import MachineNameValidator -from cura.UI.Models.BuildPlateModel import BuildPlateModel -from cura.UI.Models.NozzleModel import NozzleModel -from cura.UI.Models.QualityProfilesDropDownMenuModel import QualityProfilesDropDownMenuModel -from cura.UI.Models.CustomQualityProfilesDropDownMenuModel import CustomQualityProfilesDropDownMenuModel -from cura.UI.Models.MultiBuildPlateModel import MultiBuildPlateModel -from cura.UI.Models.FavoriteMaterialsModel import FavoriteMaterialsModel -from cura.UI.Models.GenericMaterialsModel import GenericMaterialsModel -from cura.UI.Models.MaterialBrandsModel import MaterialBrandsModel -from cura.UI.Models import QualityManagementModel -from cura.UI.Models.QualitySettingsModel import QualitySettingsModel -from cura.UI.Models.MachineManagementModel import MachineManagementModel +from cura.UI.MachineModels.BuildPlateModel import BuildPlateModel +from cura.UI.MachineModels.NozzleModel import NozzleModel +from cura.UI.MachineModels.QualityProfilesDropDownMenuModel import QualityProfilesDropDownMenuModel +from cura.UI.MachineModels.CustomQualityProfilesDropDownMenuModel import CustomQualityProfilesDropDownMenuModel +from cura.UI.MachineModels.MultiBuildPlateModel import MultiBuildPlateModel +from cura.UI.MachineModels.FavoriteMaterialsModel import FavoriteMaterialsModel +from cura.UI.MachineModels.GenericMaterialsModel import GenericMaterialsModel +from cura.UI.MachineModels.MaterialBrandsModel import MaterialBrandsModel +from cura.UI.MachineModels.QualityManagementModel import QualityManagementModel +from cura.UI.MachineModels.QualitySettingsModel import QualitySettingsModel +from cura.UI.MachineModels.MachineManagementModel import MachineManagementModel -from cura.UI.Models.SettingVisibilityPresetsModel import SettingVisibilityPresetsModel +from cura.UI.MachineModels.SettingVisibilityPresetsModel import SettingVisibilityPresetsModel from cura.Machines.MachineErrorChecker import MachineErrorChecker @@ -111,7 +111,7 @@ from cura.Settings.CuraFormulaFunctions import CuraFormulaFunctions from cura.UI.ObjectsModel import ObjectsModel -from cura.UI.Models.DiscoveredPrintersModel import DiscoveredPrintersModel +from cura.UI.MachineModels.DiscoveredPrintersModel import DiscoveredPrintersModel from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice from cura.PrinterOutput.NetworkMJPGImage import NetworkMJPGImage diff --git a/cura/Scene/CuraSceneController.py b/cura/Scene/CuraSceneController.py index e331a109ec..b0e9e10c32 100644 --- a/cura/Scene/CuraSceneController.py +++ b/cura/Scene/CuraSceneController.py @@ -5,7 +5,7 @@ from PyQt5.QtWidgets import QApplication from UM.Scene.Camera import Camera from cura.UI.ObjectsModel import ObjectsModel -from cura.UI.Models.MultiBuildPlateModel import MultiBuildPlateModel +from cura.UI.MachineModels.MultiBuildPlateModel import MultiBuildPlateModel from UM.Application import Application from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator diff --git a/cura/UI/MachineModels/CustomQualityProfilesDropDownMenuModel.py b/cura/UI/MachineModels/CustomQualityProfilesDropDownMenuModel.py index 9a31256ec3..387182dd90 100644 --- a/cura/UI/MachineModels/CustomQualityProfilesDropDownMenuModel.py +++ b/cura/UI/MachineModels/CustomQualityProfilesDropDownMenuModel.py @@ -3,7 +3,7 @@ from UM.Logger import Logger -from cura.UI.Models.QualityProfilesDropDownMenuModel import QualityProfilesDropDownMenuModel +from cura.UI.MachineModels.QualityProfilesDropDownMenuModel import QualityProfilesDropDownMenuModel # diff --git a/cura/UI/MachineModels/FavoriteMaterialsModel.py b/cura/UI/MachineModels/FavoriteMaterialsModel.py index 2540fd0608..b81c25a2b4 100644 --- a/cura/UI/MachineModels/FavoriteMaterialsModel.py +++ b/cura/UI/MachineModels/FavoriteMaterialsModel.py @@ -1,7 +1,7 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from cura.UI.Models.BaseMaterialsModel import BaseMaterialsModel +from cura.UI.MachineModels.BaseMaterialsModel import BaseMaterialsModel ## Model that shows the list of favorite materials. class FavoriteMaterialsModel(BaseMaterialsModel): diff --git a/cura/UI/MachineModels/GenericMaterialsModel.py b/cura/UI/MachineModels/GenericMaterialsModel.py index a99cdfc8eb..122bb3fc8f 100644 --- a/cura/UI/MachineModels/GenericMaterialsModel.py +++ b/cura/UI/MachineModels/GenericMaterialsModel.py @@ -1,7 +1,7 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from cura.UI.Models.BaseMaterialsModel import BaseMaterialsModel +from cura.UI.MachineModels.BaseMaterialsModel import BaseMaterialsModel class GenericMaterialsModel(BaseMaterialsModel): diff --git a/cura/UI/MachineModels/MaterialBrandsModel.py b/cura/UI/MachineModels/MaterialBrandsModel.py index 7f02dd5302..bd641d29e7 100644 --- a/cura/UI/MachineModels/MaterialBrandsModel.py +++ b/cura/UI/MachineModels/MaterialBrandsModel.py @@ -3,7 +3,7 @@ from PyQt5.QtCore import Qt, pyqtSignal from UM.Qt.ListModel import ListModel -from cura.UI.Models.BaseMaterialsModel import BaseMaterialsModel +from cura.UI.MachineModels.BaseMaterialsModel import BaseMaterialsModel class MaterialTypesModel(ListModel): diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 3d0d4fb11e..0527b4534e 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -30,7 +30,7 @@ from .StartSliceJob import StartSliceJob, StartJobResult import Arcus if TYPE_CHECKING: - from cura.UI.Models.MultiBuildPlateModel import MultiBuildPlateModel + from cura.UI.MachineModels.MultiBuildPlateModel import MultiBuildPlateModel from cura.Machines.MachineErrorChecker import MachineErrorChecker from UM.Scene.Scene import Scene from UM.Settings.ContainerStack import ContainerStack diff --git a/tests/Settings/TestSettingVisibilityPresets.py b/tests/Settings/TestSettingVisibilityPresets.py index 079bda3912..13089e8aa6 100644 --- a/tests/Settings/TestSettingVisibilityPresets.py +++ b/tests/Settings/TestSettingVisibilityPresets.py @@ -5,7 +5,7 @@ import os.path from UM.Preferences import Preferences from UM.Resources import Resources from cura.CuraApplication import CuraApplication -from cura.UI.Models.SettingVisibilityPresetsModel import SettingVisibilityPresetsModel +from cura.UI.MachineModels.SettingVisibilityPresetsModel import SettingVisibilityPresetsModel from cura.Settings.SettingVisibilityPreset import SettingVisibilityPreset setting_visibility_preset_test_settings = {"test", "zomg", "derp", "yay", "whoo"} From 95a0a5fb2437f4596df54cfead95c6366d3cc0e4 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 20 Mar 2019 13:46:54 +0100 Subject: [PATCH 2/6] Theme window_disabled_background --- resources/qml/Cura.qml | 2 +- resources/themes/cura-light/theme.json | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 3a69523ced..99858c5331 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -53,7 +53,7 @@ UM.MainWindow id: greyOutBackground anchors.fill: parent visible: welcomeDialog.visible - color: "black" + color: UM.Theme.getColor("window_disabled_background") opacity: 0.7 z: stageMenu.z + 1 } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 9ef6993bdc..cfdf03bcaf 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -191,6 +191,8 @@ "printer_type_label_background": [228, 228, 242, 255], + "window_disabled_background": [0, 0, 0, 255], + "text_light_blue": [50, 130, 255, 255], "text": [25, 25, 25, 255], From 428fb5a3a1c8924382f6f046ec538723bfea40cc Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 20 Mar 2019 13:49:14 +0100 Subject: [PATCH 3/6] Use Item instead of transparent Rectangle --- resources/qml/WelcomePages/AddLocalPrinterScrollView.qml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml index 2eb05a0530..9007756e38 100644 --- a/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml +++ b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml @@ -146,10 +146,9 @@ ScrollView font: UM.Theme.getFont("default") visible: base.currentSection == section - background: Rectangle + background: Item { anchors.fill: parent - color: "transparent" } indicator: Rectangle From 8cc05a2a62462b098b0c104a67bc50b89c9af543 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 20 Mar 2019 14:04:59 +0100 Subject: [PATCH 4/6] Bind no printer label visible to item count --- resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml index 0d2aaca994..6cbfe46902 100644 --- a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml +++ b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml @@ -45,7 +45,7 @@ Item text: catalog.i18nc("@label", "There is no printer found over your network.") renderType: Text.NativeRendering verticalAlignment: Text.AlignVCenter - visible: !networkPrinterScrollView.visible + visible: networkPrinterListView.count == 0 // Do not show if there are discovered devices. } ScrollView From c6bd31e5f6a94bf812e24cbe8cd3630d1e764f99 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 20 Mar 2019 14:07:13 +0100 Subject: [PATCH 5/6] Simplify code --- resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml index 6cbfe46902..2275d3646e 100644 --- a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml +++ b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml @@ -61,7 +61,7 @@ Item property int maxItemCountAtOnce: 8 // show at max 8 items at once, otherwise you need to scroll. height: maxItemCountAtOnce * UM.Theme.getSize("action_button").height - visible: networkPrinterListView.model.length > 0 + visible: networkPrinterListView.count > 0 clip: true From 5d45dba8f3cc3a18f98a0cdb2f0bd0924b1a780e Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 20 Mar 2019 15:58:04 +0100 Subject: [PATCH 6/6] Fix DiscoveredMachineModel test --- .../MachineModels/DiscoveredPrintersModel.py | 10 ++++--- tests/TestMachineManager.py | 17 ------------ .../TestDiscoveredPrintersModel.py | 27 +++++++++++++++++++ 3 files changed, 33 insertions(+), 21 deletions(-) create mode 100644 tests/UI/MachineModels/TestDiscoveredPrintersModel.py diff --git a/cura/UI/MachineModels/DiscoveredPrintersModel.py b/cura/UI/MachineModels/DiscoveredPrintersModel.py index da16435605..0998a2aa3a 100644 --- a/cura/UI/MachineModels/DiscoveredPrintersModel.py +++ b/cura/UI/MachineModels/DiscoveredPrintersModel.py @@ -11,6 +11,8 @@ from UM.Logger import Logger if TYPE_CHECKING: from PyQt5.QtCore import QObject + from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice + catalog = i18nCatalog("cura") @@ -18,7 +20,7 @@ catalog = i18nCatalog("cura") class DiscoveredPrinter(QObject): def __init__(self, ip_address: str, key: str, name: str, create_callback: Callable[[str], None], machine_type: str, - device, parent = None) -> None: + device: "NetworkedPrinterOutputDevice", parent: Optional["QObject"] = None) -> None: super().__init__(parent) self._ip_address = ip_address @@ -67,7 +69,7 @@ class DiscoveredPrinter(QObject): return self.readable_machine_type.lower() == "unknown" @pyqtProperty(QObject, constant = True) - def device(self): + def device(self) -> "NetworkedPrinterOutputDevice": return self._device @@ -78,7 +80,7 @@ class DiscoveredPrinter(QObject): # class DiscoveredPrintersModel(QObject): - def __init__(self, parent: Optional["QObject"]) -> None: + def __init__(self, parent: Optional["QObject"] = None) -> None: super().__init__(parent) self._discovered_printer_by_ip_dict = dict() # type: Dict[str, DiscoveredPrinter] @@ -92,7 +94,7 @@ class DiscoveredPrintersModel(QObject): return item_list def addDiscoveredPrinter(self, ip_address: str, key: str, name: str, create_callback: Callable[[str], None], - machine_type: str, device) -> None: + machine_type: str, device: "NetworkedPrinterOutputDevice") -> None: if ip_address in self._discovered_printer_by_ip_dict: Logger.log("e", "Printer with ip [%s] has already been added", ip_address) return diff --git a/tests/TestMachineManager.py b/tests/TestMachineManager.py index 36ffe01b96..f261ce1b41 100644 --- a/tests/TestMachineManager.py +++ b/tests/TestMachineManager.py @@ -45,20 +45,3 @@ def test_setActiveMachine(machine_manager): # Although we mocked the application away, we still want to know if it was notified about the attempted change. machine_manager._application.setGlobalContainerStack.assert_called_with(mocked_global_stack) - - -def test_discoveredMachine(machine_manager): - mocked_callback = MagicMock() - machine_manager.addDiscoveredPrinter("test", "zomg", mocked_callback, "derp") - machine_manager.addMachineFromDiscoveredPrinter("test") - mocked_callback.assert_called_with("test") - - assert len(machine_manager.discoveredPrinters) == 1 - - # Test if removing it works - machine_manager.removeDiscoveredPrinter("test") - assert len(machine_manager.discoveredPrinters) == 0 - - # Just in case, nothing should happen. - machine_manager.addMachineFromDiscoveredPrinter("test") - assert mocked_callback.call_count == 1 diff --git a/tests/UI/MachineModels/TestDiscoveredPrintersModel.py b/tests/UI/MachineModels/TestDiscoveredPrintersModel.py new file mode 100644 index 0000000000..2fa5701b7b --- /dev/null +++ b/tests/UI/MachineModels/TestDiscoveredPrintersModel.py @@ -0,0 +1,27 @@ + +from unittest.mock import MagicMock + +import pytest + +from cura.UI.MachineModels.DiscoveredPrintersModel import DiscoveredPrintersModel + + +@pytest.fixture() +def discovered_printer_model(application) -> DiscoveredPrintersModel: + return DiscoveredPrintersModel() + + +def test_discoveredPrinters(discovered_printer_model): + mocked_device = MagicMock() + + mocked_callback = MagicMock() + discovered_printer_model.addDiscoveredPrinter("ip", "key", "name", mocked_callback, "machine_type", mocked_device) + device = discovered_printer_model.discovered_printers[0] + discovered_printer_model.createMachineFromDiscoveredPrinter(device) + mocked_callback.assert_called_with("key") + + assert len(discovered_printer_model.discovered_printers) == 1 + + # Test if removing it works + discovered_printer_model.removeDiscoveredPrinter("ip") + assert len(discovered_printer_model.discovered_printers) == 0