diff --git a/plugins/GCodeReader/FlavorParser.py b/plugins/GCodeReader/FlavorParser.py index ac24ce3184..555d9d594e 100644 --- a/plugins/GCodeReader/FlavorParser.py +++ b/plugins/GCodeReader/FlavorParser.py @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Ultimaker B.V. +# Copyright (c) 2022 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import math @@ -31,6 +31,8 @@ Position = NamedTuple("Position", [("x", float), ("y", float), ("z", float), ("f class FlavorParser: """This parser is intended to interpret the common firmware codes among all the different flavors""" + MAX_EXTRUDER_COUNT = 16 + def __init__(self) -> None: CuraApplication.getInstance().hideMessageSignal.connect(self._onHideMessage) self._cancelled = False @@ -53,7 +55,7 @@ class FlavorParser: def _clearValues(self) -> None: self._extruder_number = 0 - self._extrusion_length_offset = [0] * 8 # type: List[float] + self._extrusion_length_offset = [0] * self.MAX_EXTRUDER_COUNT # type: List[float] self._layer_type = LayerPolygon.Inset0Type self._layer_number = 0 self._previous_z = 0 # type: float @@ -355,7 +357,7 @@ class FlavorParser: Logger.log("d", "Parsing g-code...") - current_position = Position(0, 0, 0, 0, [0] * 8) + current_position = Position(0, 0, 0, 0, [0] * self.MAX_EXTRUDER_COUNT) current_path = [] #type: List[List[float]] min_layer_number = 0 negative_layers = 0 diff --git a/plugins/Marketplace/Marketplace.py b/plugins/Marketplace/Marketplace.py index 2d98947572..b9632e5fb0 100644 --- a/plugins/Marketplace/Marketplace.py +++ b/plugins/Marketplace/Marketplace.py @@ -31,8 +31,11 @@ class Marketplace(Extension, QObject): # Not entirely the cleanest code, since the localPackage list also checks the server if there are updates # Since that in turn will trigger notifications to be shown, we do need to construct it here and make sure # that it checks for updates... + preferences = CuraApplication.getInstance().getPreferences() + preferences.addPreference("info/automatic_plugin_update_check", True) self._local_package_list = LocalPackageList(self) - self._local_package_list.checkForUpdates(self._package_manager.local_packages) + if preferences.getValue("info/automatic_plugin_update_check"): + self._local_package_list.checkForUpdates(self._package_manager.local_packages) self._package_manager.installedPackagesChanged.connect(self.checkIfRestartNeeded) diff --git a/plugins/Marketplace/resources/qml/PackageCardHeader.qml b/plugins/Marketplace/resources/qml/PackageCardHeader.qml index 013704793f..1c39d4b063 100644 --- a/plugins/Marketplace/resources/qml/PackageCardHeader.qml +++ b/plugins/Marketplace/resources/qml/PackageCardHeader.qml @@ -24,7 +24,7 @@ Item height: UM.Theme.getSize("card").height // card icon - Image + Item { id: packageItem anchors @@ -35,19 +35,36 @@ Item } width: UM.Theme.getSize("card_icon").width height: width - sourceSize.height: height - sourceSize.width: width - source: + + property bool packageHasIcon: packageData.iconUrl != "" + + Image { - if (packageData.iconUrl != "") + visible: parent.packageHasIcon + anchors.fill: parent + source: packageData.iconUrl + sourceSize.height: height + sourceSize.width: width + } + + UM.RecolorImage + { + visible: !parent.packageHasIcon + anchors.fill: parent + sourceSize.height: height + sourceSize.width: width + color: UM.Theme.getColor("text") + source: { - return packageData.iconUrl - } - switch (packageData.packageType) - { - case "plugin": return "../images/Plugin.svg"; - case "material": return "../images/Spool.svg"; - default: return "../images/placeholder.svg"; + switch (packageData.packageType) + { + case "plugin": + return "../images/Plugin.svg"; + case "material": + return "../images/Spool.svg"; + default: + return "../images/placeholder.svg"; + } } } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml index 343e3f79e1..47586f3925 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml @@ -5,6 +5,7 @@ import QtQuick 2.3 import QtQuick.Controls 2.4 import QtQuick.Layouts 1.3 import UM 1.5 as UM +import Cura 1.5 as Cura UM.Dialog { @@ -17,12 +18,21 @@ UM.Dialog width: minimumWidth height: minimumHeight title: catalog.i18nc("@title:window", "Configuration Changes") + buttonSpacing: UM.Theme.getSize("narrow_margin").width rightButtons: [ - Button + Cura.TertiaryButton + { + id: cancelButton + text: catalog.i18nc("@action:button", "Cancel") + onClicked: + { + overrideConfirmationDialog.reject() + } + }, + Cura.PrimaryButton { id: overrideButton - anchors.margins: UM.Theme.getSize("default_margin").width text: catalog.i18nc("@action:button", "Override") onClicked: { @@ -49,16 +59,6 @@ UM.Dialog } return true } - }, - Button - { - id: cancelButton - anchors.margins: UM.Theme.getSize("default_margin").width - text: catalog.i18nc("@action:button", "Cancel") - onClicked: - { - overrideConfirmationDialog.reject() - } } ] diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index ec25eb8abb..90d1d549e2 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -79,7 +79,7 @@ Item { id: showTroubleShootingAction onTriggered: Qt.openUrlExternally("https://ultimaker.com/en/troubleshooting?utm_source=cura&utm_medium=software&utm_campaign=dropdown-troubleshooting") - text: catalog.i18nc("@action:inmenu", "Show Online Troubleshooting Guide") + text: catalog.i18nc("@action:inmenu", "Show Online Troubleshooting") } Action diff --git a/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml b/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml index 11aeac1722..0e2985ae32 100644 --- a/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml +++ b/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml @@ -20,7 +20,7 @@ UM.Dialog minimumHeight: UM.Theme.getSize("popup_dialog").height width: minimumWidth height: minimumHeight - + backgroundColor: UM.Theme.getColor("background_1") margin: UM.Theme.getSize("thick_margin").width property var changesModel: Cura.UserChangesModel { id: userChangesModel } diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index 03978cb69e..1a5f40466a 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -58,16 +58,24 @@ Item } } - TextField + Cura.TextField { id: printJobTextfield anchors.left: printJobPencilIcon.right anchors.leftMargin: UM.Theme.getSize("narrow_margin").width height: UM.Theme.getSize("jobspecs_line").height - width: Math.max(contentWidth + UM.Theme.getSize("default_margin").width, 50) + width: Math.max(contentWidth + UM.Theme.getSize("default_margin").width + 2, 50) // add two pixels to width to prevent inner text from shifting maximumLength: 120 text: PrintInformation === null ? "" : PrintInformation.jobName horizontalAlignment: TextInput.AlignLeft + onTextChanged: + { + if (!activeFocus) + { + // Text is changed from outside, reset the cursor position. + cursorPosition = 0 + } + } property string textBeforeEdit: "" @@ -86,12 +94,12 @@ Item PrintInformation.setJobName(new_name, true) } printJobTextfield.focus = false + cursorPosition = 0 } validator: RegExpValidator { regExp: /^[^\\\/\*\?\|\[\]]*$/ } - font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_scene") background: Item {} selectByMouse: true diff --git a/resources/qml/MainWindow/ApplicationMenu.qml b/resources/qml/MainWindow/ApplicationMenu.qml index bf3781331a..3598447d88 100644 --- a/resources/qml/MainWindow/ApplicationMenu.qml +++ b/resources/qml/MainWindow/ApplicationMenu.qml @@ -34,14 +34,16 @@ Item { text: menuBarItem.text.replace(new RegExp("&([A-Za-z])"), function (match, character) { - return `${character}`; + return `${character}` }) horizontalAlignment: Text.AlignLeft verticalAlignment: Text.AlignVCenter } - + leftPadding: UM.Theme.getSize("default_margin").width + rightPadding: UM.Theme.getSize("default_margin").width background: Rectangle { + color: menuBarItem.highlighted ? UM.Theme.getColor("background_2") : "transparent" } } diff --git a/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml b/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml index f3cef1a819..4b2b84d39e 100644 --- a/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml +++ b/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml @@ -285,10 +285,11 @@ Item Cura.MaterialMenu { id: materialsMenu + width: materialSelection.width extruderIndex: Cura.ExtruderManager.activeExtruderIndex updateModels: materialSelection.visible } - onClicked: materialsMenu.popup() + onClicked: materialsMenu.popup(0, height - UM.Theme.getSize("default_lining").height) } Item @@ -341,8 +342,9 @@ Item { id: nozzlesMenu extruderIndex: Cura.ExtruderManager.activeExtruderIndex + width: variantSelection.width } - onClicked: nozzlesMenu.popup() + onClicked: nozzlesMenu.popup(0, height - UM.Theme.getSize("default_lining").height) } } diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index b1a5d7f19b..28568d041b 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -21,6 +21,7 @@ UM.ManagementPage activeId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id: "" activeIndex: activeMachineIndex() onHamburgeButtonClicked: menu.popup(content_item, content_item.width - menu.width, hamburger_button.height) + hamburgerButtonVisible: Cura.MachineManager.activeMachine !== null function activeMachineIndex() { diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index e5848a86c7..2a6b317314 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -76,10 +76,10 @@ UM.ManagementPage enabled: !Cura.MachineManager.stacksHaveErrors visible: base.canCreateProfile - + tooltip: catalog.i18nc("@action:tooltip", "Create new profile from current settings/overrides") onClicked: { - createQualityDialog.object = Cura.ContainerManager.makeUniqueName(base.currentItem.name) + createQualityDialog.object = Cura.ContainerManager.makeUniqueName("") createQualityDialog.open() createQualityDialog.selectText() } @@ -315,6 +315,13 @@ UM.ManagementPage font: UM.Theme.getFont("large_bold") elide: Text.ElideRight } + UM.Label + { + anchors.left: parent.left + anchors.right: parent.right + text: catalog.i18nc("@action:label", "Some settings from current profile were overwritten.") + visible: currentSettingsActions.visible + } Flow { @@ -322,12 +329,13 @@ UM.ManagementPage width: parent.width visible: base.hasCurrentItem && base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName && base.currentItem.intent_category == Cura.MachineManager.activeIntentCategory - + spacing: UM.Theme.getSize("default_margin").width Cura.SecondaryButton { - text: catalog.i18nc("@action:button", "Update profile with current settings/overrides") + text: catalog.i18nc("@action:button", "Update profile.") enabled: Cura.MachineManager.hasUserSettings && objectList.currentIndex && !objectList.currentIndex.is_read_only onClicked: Cura.ContainerManager.updateQualityChanges() + tooltip: catalog.i18nc("@action:tooltip", "Update profile with current settings/overrides") } Cura.SecondaryButton diff --git a/resources/qml/SecondaryButton.qml b/resources/qml/SecondaryButton.qml index d8027af3fc..068d65c7b8 100644 --- a/resources/qml/SecondaryButton.qml +++ b/resources/qml/SecondaryButton.qml @@ -12,7 +12,8 @@ Cura.ActionButton color: UM.Theme.getColor("secondary_button") textColor: UM.Theme.getColor("secondary_button_text") outlineColor: UM.Theme.getColor("border_accent_1") - disabledColor: UM.Theme.getColor("action_button_disabled") + disabledColor: UM.Theme.getColor("secondary_button") textDisabledColor: UM.Theme.getColor("action_button_disabled_text") hoverColor: UM.Theme.getColor("secondary_button_hover") + outlineDisabledColor: UM.Theme.getColor("action_button_disabled_text") } \ No newline at end of file diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 4c1b6ff109..ecafd25913 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -180,6 +180,7 @@ Item ListView { id: contents + maximumFlickVelocity: 1000 anchors { top: filterContainer.bottom diff --git a/resources/qml/Widgets/ComboBox.qml b/resources/qml/Widgets/ComboBox.qml index 5d31348597..698eb4ec10 100644 --- a/resources/qml/Widgets/ComboBox.qml +++ b/resources/qml/Widgets/ComboBox.qml @@ -57,9 +57,7 @@ ComboBox contentItem: UM.Label { id: contentLabel - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width - anchors.verticalCenter: parent.verticalCenter + leftPadding: UM.Theme.getSize("setting_unit_margin").width + UM.Theme.getSize("default_margin").width anchors.right: downArrow.left wrapMode: Text.NoWrap text: diff --git a/resources/qml/Widgets/MenuSeparator.qml b/resources/qml/Widgets/MenuSeparator.qml index ad79fccd6d..b39f958c69 100644 --- a/resources/qml/Widgets/MenuSeparator.qml +++ b/resources/qml/Widgets/MenuSeparator.qml @@ -18,4 +18,5 @@ MenuSeparator implicitHeight: UM.Theme.getSize("default_lining").height color: UM.Theme.getColor("setting_control_border") } + height: visible ? implicitHeight: 0 } \ No newline at end of file diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index dc6e81c2b2..5583053ea2 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -639,6 +639,8 @@ "banner_icon_size": [2.0, 2.0], - "marketplace_large_icon": [4.0, 4.0] + "marketplace_large_icon": [4.0, 4.0], + + "preferences_page_list_item": [8.0, 2.0] } }