From a20dac4c9b95d8308f38af08397318ee23599e45 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 15:08:06 +0100 Subject: [PATCH 01/14] Update ReadOnlyTextArea to controls 2 CURA-8685 --- .../qml/Preferences/Materials/MaterialsView.qml | 11 ++++++----- resources/qml/Preferences/ReadOnlyTextArea.qml | 17 +++++++++++------ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/resources/qml/Preferences/Materials/MaterialsView.qml b/resources/qml/Preferences/Materials/MaterialsView.qml index 6d153f5960..ecb9870fcf 100644 --- a/resources/qml/Preferences/Materials/MaterialsView.qml +++ b/resources/qml/Preferences/Materials/MaterialsView.qml @@ -363,10 +363,11 @@ Item ReadOnlyTextArea { text: properties.description; - width: 2 * informationPage.columnWidth + width: informationPage.columnWidth * 2 + height: 0.75 * informationPage.columnWidth wrapMode: Text.WordWrap - readOnly: !base.editingEnabled; + readOnly: !base.editingEnabled onEditingFinished: base.setMetaDataEntry("description", properties.description, text) } @@ -375,11 +376,11 @@ Item ReadOnlyTextArea { - text: properties.adhesion_info; + text: properties.adhesion_info width: 2 * informationPage.columnWidth wrapMode: Text.WordWrap - - readOnly: !base.editingEnabled; + height: 0.75 * informationPage.columnWidth + readOnly: !base.editingEnabled onEditingFinished: base.setMetaDataEntry("adhesion_info", properties.adhesion_info, text) } diff --git a/resources/qml/Preferences/ReadOnlyTextArea.qml b/resources/qml/Preferences/ReadOnlyTextArea.qml index 2c553ac2ca..97a89ff080 100644 --- a/resources/qml/Preferences/ReadOnlyTextArea.qml +++ b/resources/qml/Preferences/ReadOnlyTextArea.qml @@ -2,9 +2,9 @@ // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.1 -import QtQuick.Controls 1.1 +import QtQuick.Controls 2.15 -Item +ScrollView { id: base @@ -15,17 +15,22 @@ Item property bool readOnly: false - width: textArea.width - height: textArea.height - TextArea { id: textArea enabled: !base.readOnly opacity: base.readOnly ? 0.5 : 1.0 + selectByMouse: true - anchors.fill: parent + background: Rectangle + { + radius: UM.Theme.getSize("setting_control_radius").width + color: enabled ? UM.Theme.getColor("setting_control_disabled") : UM.Theme.getColor("setting_control") + } + + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") Keys.onReturnPressed: { From da96cb833c11594cf10fba73431ebbeb97bf2652 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 15:16:16 +0100 Subject: [PATCH 02/14] Swap ReadOnlyTextfield to controls 2 CURA-8685 --- .../qml/Preferences/ReadOnlyTextArea.qml | 3 ++- .../qml/Preferences/ReadOnlyTextField.qml | 25 +++++++------------ 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/resources/qml/Preferences/ReadOnlyTextArea.qml b/resources/qml/Preferences/ReadOnlyTextArea.qml index 97a89ff080..e2a0da24f2 100644 --- a/resources/qml/Preferences/ReadOnlyTextArea.qml +++ b/resources/qml/Preferences/ReadOnlyTextArea.qml @@ -3,6 +3,7 @@ import QtQuick 2.1 import QtQuick.Controls 2.15 +import UM 1.5 as UM ScrollView { @@ -26,7 +27,7 @@ ScrollView background: Rectangle { radius: UM.Theme.getSize("setting_control_radius").width - color: enabled ? UM.Theme.getColor("setting_control_disabled") : UM.Theme.getColor("setting_control") + color: textArea.enabled ? UM.Theme.getColor("setting_control") : UM.Theme.getColor("setting_control_disabled") } color: UM.Theme.getColor("text") diff --git a/resources/qml/Preferences/ReadOnlyTextField.qml b/resources/qml/Preferences/ReadOnlyTextField.qml index 6f5a66d2a9..cc8e83647b 100644 --- a/resources/qml/Preferences/ReadOnlyTextField.qml +++ b/resources/qml/Preferences/ReadOnlyTextField.qml @@ -3,7 +3,8 @@ // Different than the name suggests, it is not always read-only. import QtQuick 2.1 -import QtQuick.Controls 1.1 +import QtQuick.Controls 2.1 +import UM 1.5 as UM Item { @@ -23,26 +24,18 @@ Item id: textField enabled: !base.readOnly - opacity: base.readOnly ? 0.5 : 1.0 + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") anchors.fill: parent onEditingFinished: base.editingFinished() Keys.onEnterPressed: base.editingFinished() Keys.onReturnPressed: base.editingFinished() + background: Rectangle + { + radius: UM.Theme.getSize("setting_control_radius").width + color: textField.enabled ? UM.Theme.getColor("setting_control") : UM.Theme.getColor("setting_control_disabled") + } } - - Label - { - visible: base.readOnly - text: textField.text - - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: textField.__panel ? textField.__panel.leftMargin : 0 - - color: palette.buttonText - } - - SystemPalette { id: palette } } From 6be75c75f8fb6fbed0e5ab1c0856dd68ca569026 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 15:18:04 +0100 Subject: [PATCH 03/14] Simpify Readonly textarea CURA-8685 --- resources/qml/Preferences/ReadOnlyTextArea.qml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/resources/qml/Preferences/ReadOnlyTextArea.qml b/resources/qml/Preferences/ReadOnlyTextArea.qml index e2a0da24f2..c6f253f0ca 100644 --- a/resources/qml/Preferences/ReadOnlyTextArea.qml +++ b/resources/qml/Preferences/ReadOnlyTextArea.qml @@ -21,7 +21,6 @@ ScrollView id: textArea enabled: !base.readOnly - opacity: base.readOnly ? 0.5 : 1.0 selectByMouse: true background: Rectangle @@ -33,15 +32,9 @@ ScrollView color: UM.Theme.getColor("text") font: UM.Theme.getFont("default") - Keys.onReturnPressed: - { - base.editingFinished() - } + Keys.onReturnPressed: base.editingFinished() - Keys.onEnterPressed: - { - base.editingFinished() - } + Keys.onEnterPressed: base.editingFinished() onActiveFocusChanged: { From 77b46868a6b0eb232ae1d0df7757ed2d83a3633c Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 15:24:30 +0100 Subject: [PATCH 04/14] Replace imagereader controls with styled variants CURA-8685 --- plugins/ImageReader/ConfigUI.qml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/plugins/ImageReader/ConfigUI.qml b/plugins/ImageReader/ConfigUI.qml index ecfc86fc05..c169f7648a 100644 --- a/plugins/ImageReader/ConfigUI.qml +++ b/plugins/ImageReader/ConfigUI.qml @@ -26,7 +26,7 @@ UM.Dialog rowSpacing: UM.Theme.getSize("thin_margin").height columns: 2 - Label + UM.Label { Layout.fillWidth: true text: catalog.i18nc("@action:label", "Height (mm)") @@ -39,7 +39,7 @@ UM.Dialog } } - TextField + Cura.TextField { id: peak_height Layout.fillWidth: true @@ -57,7 +57,7 @@ UM.Dialog y: peak_height.y + peak_height.height + UM.Theme.getSize("default_margin").height } - Label + UM.Label { Layout.fillWidth: true text: catalog.i18nc("@action:label", "Base (mm)") @@ -71,7 +71,7 @@ UM.Dialog } } - TextField + Cura.TextField { id: base_height selectByMouse: true @@ -89,7 +89,7 @@ UM.Dialog y: base_height.y + base_height.height + UM.Theme.getSize("default_margin").height } - Label + UM.Label { Layout.fillWidth: true text: catalog.i18nc("@action:label", "Width (mm)") @@ -102,7 +102,7 @@ UM.Dialog } } - TextField + Cura.TextField { id: width selectByMouse: true @@ -121,7 +121,7 @@ UM.Dialog y: width.y + width.height + UM.Theme.getSize("default_margin").height } - Label + UM.Label { Layout.fillWidth: true text: catalog.i18nc("@action:label", "Depth (mm)") @@ -134,7 +134,7 @@ UM.Dialog } } - TextField + Cura.TextField { id: depth Layout.fillWidth: true @@ -153,7 +153,7 @@ UM.Dialog y: depth.y + depth.height + UM.Theme.getSize("default_margin").height } - Label + UM.Label { Layout.fillWidth: true text: "" @@ -166,7 +166,7 @@ UM.Dialog } } - ComboBox + Cura.ComboBox { id: lighter_is_higher Layout.fillWidth: true @@ -184,7 +184,7 @@ UM.Dialog y: lighter_is_higher.y + lighter_is_higher.height + UM.Theme.getSize("default_margin").height } - Label + UM.Label { Layout.fillWidth: true text: catalog.i18nc("@action:label", "Color Model") @@ -197,7 +197,7 @@ UM.Dialog } } - ComboBox + Cura.ComboBox { id: color_model Layout.fillWidth: true @@ -215,7 +215,7 @@ UM.Dialog y: color_model.y + color_model.height + UM.Theme.getSize("default_margin").height } - Label + UM.Label { Layout.fillWidth: true text: catalog.i18nc("@action:label", "1mm Transmittance (%)") @@ -228,7 +228,7 @@ UM.Dialog } } - TextField + Cura.TextField { id: transmittance Layout.fillWidth: true @@ -246,7 +246,7 @@ UM.Dialog y: transmittance.y + transmittance.height + UM.Theme.getSize("default_margin").height } - Label + UM.Label { Layout.fillWidth: true text: catalog.i18nc("@action:label", "Smoothing") From b45b3faa3c92664c39db25eea883fb0389150617 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 15:32:29 +0100 Subject: [PATCH 05/14] Replace textField in JobSpecs CURA-8685 --- plugins/ImageReader/ConfigUI.qml | 2 ++ resources/qml/JobSpecs.qml | 30 ++++++++++-------------------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/plugins/ImageReader/ConfigUI.qml b/plugins/ImageReader/ConfigUI.qml index c169f7648a..4b3035f271 100644 --- a/plugins/ImageReader/ConfigUI.qml +++ b/plugins/ImageReader/ConfigUI.qml @@ -18,6 +18,8 @@ UM.Dialog width: minimumWidth height: minimumHeight + + GridLayout { UM.I18nCatalog { id: catalog; name: "cura" } diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index 878051a4d0..2fe0c7c4a8 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -1,9 +1,8 @@ -// Copyright (c) 2021 Ultimaker B.V. +// Copyright (c) 2022 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 +import QtQuick.Controls 2.1 import QtQuick.Layouts 1.1 import UM 1.5 as UM @@ -29,7 +28,8 @@ Item { if (!activity) { - //When there is no mesh in the buildplate; the printJobTextField is set to an empty string so it doesn't set an empty string as a jobName (which is later used for saving the file) + // When there is no mesh in the buildplate; the printJobTextField is set to an empty string so it doesn't + // set an empty string as a jobName (which is later used for saving the file) PrintInformation.baseName = "" } } @@ -66,7 +66,7 @@ Item height: UM.Theme.getSize("jobspecs_line").height width: Math.max(__contentWidth + UM.Theme.getSize("default_margin").width, 50) maximumLength: 120 - text: (PrintInformation === null) ? "" : PrintInformation.jobName + text: PrintInformation === null ? "" : PrintInformation.jobName horizontalAlignment: TextInput.AlignLeft property string textBeforeEdit: "" @@ -91,17 +91,10 @@ Item validator: RegExpValidator { regExp: /^[^\\\/\*\?\|\[\]]*$/ } - - style: TextFieldStyle - { - textColor: UM.Theme.getColor("text_scene") - font: UM.Theme.getFont("default") - background: Rectangle - { - opacity: 0 - border.width: 0 - } - } + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text_scene") + background: Item {} + selectByMouse: true } } @@ -125,10 +118,7 @@ Item anchors.leftMargin: UM.Theme.getSize("default_margin").width } - Component.onCompleted: - { - base.addAdditionalComponents("jobSpecsButton") - } + Component.onCompleted: base.addAdditionalComponents("jobSpecsButton") Connections { From 713a5cb4e5500e7f96ca7139eb122ce068f0c456 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 15:38:08 +0100 Subject: [PATCH 06/14] Ensure that settingPickDialog uses the themed controls CURA-8685 --- plugins/PerObjectSettingsTool/PerObjectCategory.qml | 6 +++--- plugins/PerObjectSettingsTool/PerObjectItem.qml | 3 ++- plugins/PerObjectSettingsTool/SettingPickDialog.qml | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/plugins/PerObjectSettingsTool/PerObjectCategory.qml b/plugins/PerObjectSettingsTool/PerObjectCategory.qml index d23b0b9458..3f95d4e021 100644 --- a/plugins/PerObjectSettingsTool/PerObjectCategory.qml +++ b/plugins/PerObjectSettingsTool/PerObjectCategory.qml @@ -4,8 +4,8 @@ import QtQuick 2.2 import QtQuick.Controls 2.1 -import UM 1.1 as UM - +import UM 1.5 as UM +import Cura 1.0 as Cura import ".." Button { @@ -33,7 +33,7 @@ Button { source: UM.Theme.getIcon(definition.icon) color: base.hovered ? palette.highlight : palette.buttonText } - Label + UM.Label { id: label anchors.verticalCenter: parent.verticalCenter diff --git a/plugins/PerObjectSettingsTool/PerObjectItem.qml b/plugins/PerObjectSettingsTool/PerObjectItem.qml index dd74721464..5c67a42d01 100644 --- a/plugins/PerObjectSettingsTool/PerObjectItem.qml +++ b/plugins/PerObjectSettingsTool/PerObjectItem.qml @@ -6,6 +6,7 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.1 import UM 1.2 as UM +import Cura 1.0 as Cura UM.TooltipArea { @@ -15,7 +16,7 @@ UM.TooltipArea width: childrenRect.width; height: childrenRect.height; - CheckBox + Cura.CheckBox { id: check diff --git a/plugins/PerObjectSettingsTool/SettingPickDialog.qml b/plugins/PerObjectSettingsTool/SettingPickDialog.qml index 1c79a02c97..46c9825334 100644 --- a/plugins/PerObjectSettingsTool/SettingPickDialog.qml +++ b/plugins/PerObjectSettingsTool/SettingPickDialog.qml @@ -42,7 +42,7 @@ UM.Dialog listview.model.filter = new_filter } - TextField + Cura.TextField { id: filterInput selectByMouse: true @@ -60,7 +60,7 @@ UM.Dialog onTextChanged: settingPickDialog.updateFilter() } - CheckBox + Cura.CheckBox { id: toggleShowAll anchors From 40f835ed13ceca40b95c70defcfc3acd3044e978 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 15:50:48 +0100 Subject: [PATCH 07/14] Replace labels for UM.Label in DiscoverUM3Action CURA-8685 --- .../resources/qml/DiscoverUM3Action.qml | 68 ++++++------------- 1 file changed, 21 insertions(+), 47 deletions(-) diff --git a/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml b/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml index 94e265e4b8..2ddb0f7f58 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml @@ -37,22 +37,17 @@ Cura.MachineAction SystemPalette { id: palette } UM.I18nCatalog { id: catalog; name:"cura" } - Label + UM.Label { id: pageTitle width: parent.width text: catalog.i18nc("@title:window", "Connect to Networked Printer") - wrapMode: Text.WordWrap - renderType: Text.NativeRendering - font.pointSize: 18 } - Label + UM.Label { id: pageDescription width: parent.width - wrapMode: Text.WordWrap - renderType: Text.NativeRendering text: catalog.i18nc("@label", "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.") + "\n\n" + catalog.i18nc("@label", "Select your printer from the list below:") } @@ -158,13 +153,11 @@ Cura.MachineAction } } } - Label + UM.Label { id: discoveryTip anchors.left: parent.left anchors.right: parent.right - wrapMode: Text.WordWrap - renderType: Text.NativeRendering text: catalog.i18nc("@label", "If your printer is not listed, read the network printing troubleshooting guide").arg("https://ultimaker.com/en/cura/troubleshooting/network?utm_source=cura&utm_medium=software&utm_campaign=manage-network-printer"); onLinkActivated: Qt.openUrlExternally(link) } @@ -175,32 +168,27 @@ Cura.MachineAction width: Math.round(parent.width * 0.5) visible: base.selectedDevice ? true : false spacing: UM.Theme.getSize("default_margin").height - Label + UM.Label { width: parent.width - wrapMode: Text.WordWrap text: base.selectedDevice ? base.selectedDevice.name : "" font: UM.Theme.getFont("large_bold") elide: Text.ElideRight - renderType: Text.NativeRendering } Grid { visible: base.completeProperties width: parent.width columns: 2 - Label + property real labelWidth: Math.round(width * 0.5) + UM.Label { - width: Math.round(parent.width * 0.5) - wrapMode: Text.WordWrap - renderType: Text.NativeRendering + width: labelWidth text: catalog.i18nc("@label", "Type") } - Label + UM.Label { - width: Math.round(parent.width * 0.5) - wrapMode: Text.WordWrap - renderType: Text.NativeRendering + width: labelWidth text: { if (base.selectedDevice) { @@ -209,41 +197,31 @@ Cura.MachineAction return "" } } - Label + UM.Label { - width: Math.round(parent.width * 0.5) - wrapMode: Text.WordWrap - renderType: Text.NativeRendering + width: labelWidth text: catalog.i18nc("@label", "Firmware version") } - Label + UM.Label { - width: Math.round(parent.width * 0.5) - wrapMode: Text.WordWrap - renderType: Text.NativeRendering + width: labelWidth text: base.selectedDevice ? base.selectedDevice.firmwareVersion : "" } - Label + UM.Label { - width: Math.round(parent.width * 0.5) - wrapMode: Text.WordWrap - renderType: Text.NativeRendering + width: labelWidth text: catalog.i18nc("@label", "Address") } - Label + UM.Label { - width: Math.round(parent.width * 0.5) - wrapMode: Text.WordWrap - renderType: Text.NativeRendering + width: labelWidth text: base.selectedDevice ? base.selectedDevice.ipAddress : "" } } - Label + UM.Label { width: parent.width - wrapMode: Text.WordWrap - renderType: Text.NativeRendering text:{ // The property cluster size does not exist for older UM3 devices. if(!base.selectedDevice || base.selectedDevice.clusterSize == null || base.selectedDevice.clusterSize == 1) @@ -261,11 +239,9 @@ Cura.MachineAction } } - Label + UM.Label { width: parent.width - wrapMode: Text.WordWrap - renderType: Text.NativeRendering visible: base.selectedDevice != null && !base.completeProperties text: catalog.i18nc("@label", "The printer at this address has not yet responded." ) } @@ -316,15 +292,13 @@ Cura.MachineAction anchors.fill: parent spacing: UM.Theme.getSize("default_margin").height - Label + UM.Label { text: catalog.i18nc("@label", "Enter the IP address of your printer on the network.") - width: parent.width - wrapMode: Text.WordWrap renderType: Text.NativeRendering } - TextField + Cura.TextField { id: addressField width: parent.width From 6ea7622a55d545f508ca46dc94c2ce0773ecd3da Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 15:57:50 +0100 Subject: [PATCH 08/14] Fix reference to property that didn't exist CURA-8685 --- resources/qml/JobSpecs.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index 2fe0c7c4a8..03978cb69e 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -64,7 +64,7 @@ Item 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, 50) maximumLength: 120 text: PrintInformation === null ? "" : PrintInformation.jobName horizontalAlignment: TextInput.AlignLeft From d7758c0ee967e011dbefa084b9c5540573c77488 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 16:11:06 +0100 Subject: [PATCH 09/14] Swap out the GeneralPage items to use the themed ones CURA-8685 --- resources/qml/Preferences/GeneralPage.qml | 80 +++++++++++------------ 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index b2461aad30..243dc384b7 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -148,7 +148,7 @@ UM.PreferencesPage UM.I18nCatalog{id: catalog; name: "cura"} width: preferencesScrollView.width - preferencesScrollBar.width - Label + UM.Label { font.bold: true text: catalog.i18nc("@label", "Interface") @@ -160,7 +160,7 @@ UM.PreferencesPage columns: 4 width: parent.width - Label + UM.Label { id: languageLabel text: "Language:" //Don't translate this, to make it easier to find the language drop-down if you can't read the current language. @@ -202,7 +202,7 @@ UM.PreferencesPage } } - ComboBox + Cura.ComboBox { id: languageComboBox @@ -233,13 +233,13 @@ UM.PreferencesPage } } - Label + UM.Label { id: currencyLabel text: catalog.i18nc("@label", "Currency:") } - TextField + Cura.TextField { id: currencyField selectByMouse: true @@ -247,7 +247,7 @@ UM.PreferencesPage onTextChanged: UM.Preferences.setValue("cura/currency", text) } - Label + UM.Label { id: themeLabel text: catalog.i18nc("@label","Theme:") @@ -266,7 +266,7 @@ UM.PreferencesPage } } - ComboBox + Cura.ComboBox { id: themeComboBox @@ -290,7 +290,7 @@ UM.PreferencesPage } } - Label + UM.Label { id: languageCaption @@ -314,7 +314,7 @@ UM.PreferencesPage text: catalog.i18nc("@info:tooltip", "Slice automatically when changing settings.") - CheckBox + Cura.CheckBox { id: autoSliceCheckbox checked: boolCheck(UM.Preferences.getValue("general/auto_slice")) @@ -331,7 +331,7 @@ UM.PreferencesPage width: UM.Theme.getSize("default_margin").width } - Label + UM.Label { font.bold: true text: catalog.i18nc("@label", "Viewport behavior") @@ -344,7 +344,7 @@ UM.PreferencesPage text: catalog.i18nc("@info:tooltip", "Highlight unsupported areas of the model in red. Without support these areas will not print properly.") - CheckBox + Cura.CheckBox { id: showOverhangCheckbox @@ -363,7 +363,7 @@ UM.PreferencesPage text: catalog.i18nc("@info:tooltip", "Highlight missing or extraneous surfaces of the model using warning signs. The toolpaths will often be missing parts of the intended geometry.") - CheckBox + Cura.CheckBox { id: showXrayErrorCheckbox @@ -380,7 +380,7 @@ UM.PreferencesPage height: childrenRect.height; text: catalog.i18nc("@info:tooltip", "Moves the camera so the model is in the center of the view when a model is selected") - CheckBox + Cura.CheckBox { id: centerOnSelectCheckbox text: catalog.i18nc("@action:button","Center camera when item is selected"); @@ -395,7 +395,7 @@ UM.PreferencesPage height: childrenRect.height; text: catalog.i18nc("@info:tooltip", "Should the default zoom behavior of cura be inverted?") - CheckBox + Cura.CheckBox { id: invertZoomCheckbox text: catalog.i18nc("@action:button", "Invert the direction of camera zoom."); @@ -416,7 +416,7 @@ UM.PreferencesPage height: childrenRect.height; text: zoomToMouseCheckbox.enabled ? catalog.i18nc("@info:tooltip", "Should zooming move in the direction of the mouse?") : catalog.i18nc("@info:tooltip", "Zooming towards the mouse is not supported in the orthographic perspective.") - CheckBox + Cura.CheckBox { id: zoomToMouseCheckbox text: catalog.i18nc("@action:button", "Zoom toward mouse direction") @@ -447,7 +447,7 @@ UM.PreferencesPage height: childrenRect.height text: catalog.i18nc("@info:tooltip", "Should models on the platform be moved so that they no longer intersect?") - CheckBox + Cura.CheckBox { id: pushFreeCheckbox text: catalog.i18nc("@option:check", "Ensure models are kept apart") @@ -461,7 +461,7 @@ UM.PreferencesPage height: childrenRect.height text: catalog.i18nc("@info:tooltip", "Should models on the platform be moved down to touch the build plate?") - CheckBox + Cura.CheckBox { id: dropDownCheckbox text: catalog.i18nc("@option:check", "Automatically drop models to the build plate") @@ -478,7 +478,7 @@ UM.PreferencesPage text: catalog.i18nc("@info:tooltip","Show caution message in g-code reader.") - CheckBox + Cura.CheckBox { id: gcodeShowCautionCheckbox @@ -495,7 +495,7 @@ UM.PreferencesPage height: childrenRect.height text: catalog.i18nc("@info:tooltip", "Should layer be forced into compatibility mode?") - CheckBox + Cura.CheckBox { id: forceLayerViewCompatibilityModeCheckbox text: catalog.i18nc("@option:check", "Force layer view compatibility mode (restart required)") @@ -510,7 +510,7 @@ UM.PreferencesPage height: childrenRect.height text: catalog.i18nc("@info:tooltip", "Should Cura open at the location it was closed?") - CheckBox + Cura.CheckBox { id: restoreWindowPositionCheckbox text: catalog.i18nc("@option:check", "Restore window position on start") @@ -528,7 +528,7 @@ UM.PreferencesPage { spacing: 4 * screenScaleFactor - Label + UM.Label { text: catalog.i18nc("@window:text", "Camera rendering:") } @@ -542,7 +542,7 @@ UM.PreferencesPage } } - ComboBox + Cura.ComboBox { id: cameraComboBox @@ -573,7 +573,7 @@ UM.PreferencesPage width: UM.Theme.getSize("default_margin").height } - Label + UM.Label { font.bold: true text: catalog.i18nc("@label","Opening and saving files") @@ -585,7 +585,7 @@ UM.PreferencesPage height: childrenRect.height text: catalog.i18nc("@info:tooltip","Should opening files from the desktop or external applications open in the same instance of Cura?") - CheckBox + Cura.CheckBox { id: singleInstanceCheckbox text: catalog.i18nc("@option:check","Use a single instance of Cura") @@ -601,7 +601,7 @@ UM.PreferencesPage text: catalog.i18nc("@info:tooltip","Should the build plate be cleared before loading a new model in the single instance of Cura?") enabled: singleInstanceCheckbox.checked - CheckBox + Cura.CheckBox { id: singleInstanceClearBeforeLoadCheckbox text: catalog.i18nc("@option:check","Clear buildplate before loading model into the single instance") @@ -616,7 +616,7 @@ UM.PreferencesPage height: childrenRect.height text: catalog.i18nc("@info:tooltip","Should models be scaled to the build volume if they are too large?") - CheckBox + Cura.CheckBox { id: scaleToFitCheckbox text: catalog.i18nc("@option:check","Scale large models") @@ -631,7 +631,7 @@ UM.PreferencesPage height: childrenRect.height text: catalog.i18nc("@info:tooltip","An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?") - CheckBox + Cura.CheckBox { id: scaleTinyCheckbox text: catalog.i18nc("@option:check","Scale extremely small models") @@ -646,7 +646,7 @@ UM.PreferencesPage height: childrenRect.height text: catalog.i18nc("@info:tooltip","Should models be selected after they are loaded?") - CheckBox + Cura.CheckBox { id: selectModelsOnLoadCheckbox text: catalog.i18nc("@option:check","Select models when loaded") @@ -661,7 +661,7 @@ UM.PreferencesPage height: childrenRect.height text: catalog.i18nc("@info:tooltip", "Should a prefix based on the printer name be added to the print job name automatically?") - CheckBox + Cura.CheckBox { id: prefixJobNameCheckbox text: catalog.i18nc("@option:check", "Add machine prefix to job name") @@ -676,7 +676,7 @@ UM.PreferencesPage height: childrenRect.height text: catalog.i18nc("@info:tooltip", "Should a summary be shown when saving a project file?") - CheckBox + Cura.CheckBox { text: catalog.i18nc("@option:check", "Show summary dialog when saving project") checked: boolCheck(UM.Preferences.getValue("cura/dialog_on_project_save")) @@ -694,12 +694,12 @@ UM.PreferencesPage { spacing: 4 * screenScaleFactor - Label + UM.Label { text: catalog.i18nc("@window:text", "Default behavior when opening a project file: ") } - ComboBox + Cura.ComboBox { id: choiceOnOpenProjectDropDownButton width: Math.round(250 * screenScaleFactor) @@ -755,18 +755,18 @@ UM.PreferencesPage { spacing: 4 * screenScaleFactor - Label + UM.Label { font.bold: true text: catalog.i18nc("@label", "Profiles") } - Label + UM.Label { text: catalog.i18nc("@window:text", "Default behavior for changed setting values when switching to a different profile: ") } - ComboBox + Cura.ComboBox { id: choiceOnProfileOverrideDropDownButton width: Math.round(250 * screenScaleFactor) @@ -810,7 +810,7 @@ UM.PreferencesPage width: UM.Theme.getSize("default_margin").height } - Label + UM.Label { font.bold: true text: catalog.i18nc("@label", "Privacy") @@ -821,7 +821,7 @@ UM.PreferencesPage height: visible ? childrenRect.height : 0 text: catalog.i18nc("@info:tooltip", "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored.") - CheckBox + Cura.CheckBox { id: sendDataCheckbox text: catalog.i18nc("@option:check","Send (anonymous) print information") @@ -848,7 +848,7 @@ UM.PreferencesPage width: UM.Theme.getSize("default_margin").height } - Label + UM.Label { font.bold: true text: catalog.i18nc("@label", "Updates") @@ -860,7 +860,7 @@ UM.PreferencesPage height: visible ? childrenRect.height : 0 text: catalog.i18nc("@info:tooltip", "Should Cura check for updates when the program is started?") - CheckBox + Cura.CheckBox { id: checkUpdatesCheckbox text: catalog.i18nc("@option:check","Check for updates on start") @@ -913,7 +913,7 @@ UM.PreferencesPage height: visible ? childrenRect.height : 0 text: catalog.i18nc("@info:tooltip", "Should an automatic check for new plugins be done every time Cura is started? It is highly recommended that you do not disable this!") - CheckBox + Cura.CheckBox { id: pluginNotificationsUpdateCheckbox text: catalog.i18nc("@option:check", "Get notifications for plugin updates") From eb7ab657fe985bbca11b883f216eeb55cc727f4b Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 16:26:58 +0100 Subject: [PATCH 10/14] Use Cura.Textfield in readonlyTextfield Less code duplication, which is always good CURA-8685 --- resources/qml/Preferences/ReadOnlyTextField.qml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/resources/qml/Preferences/ReadOnlyTextField.qml b/resources/qml/Preferences/ReadOnlyTextField.qml index cc8e83647b..57789cea3c 100644 --- a/resources/qml/Preferences/ReadOnlyTextField.qml +++ b/resources/qml/Preferences/ReadOnlyTextField.qml @@ -5,6 +5,7 @@ import QtQuick 2.1 import QtQuick.Controls 2.1 import UM 1.5 as UM +import Cura 1.0 as Cura Item { @@ -19,23 +20,16 @@ Item width: textField.width height: textField.height - TextField + Cura.TextField { id: textField enabled: !base.readOnly - color: UM.Theme.getColor("text") - font: UM.Theme.getFont("default") anchors.fill: parent onEditingFinished: base.editingFinished() Keys.onEnterPressed: base.editingFinished() Keys.onReturnPressed: base.editingFinished() - background: Rectangle - { - radius: UM.Theme.getSize("setting_control_radius").width - color: textField.enabled ? UM.Theme.getColor("setting_control") : UM.Theme.getColor("setting_control_disabled") - } } } From 13227249b5c971112e3741751dd39a1653712755 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 16:28:29 +0100 Subject: [PATCH 11/14] Remove catalog from Textfield The creation of the catalog is rather slow, so it's better not to create it for every component --- resources/qml/Preferences/ReadOnlyTextField.qml | 2 +- resources/qml/Widgets/TextField.qml | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/resources/qml/Preferences/ReadOnlyTextField.qml b/resources/qml/Preferences/ReadOnlyTextField.qml index 57789cea3c..325081dd13 100644 --- a/resources/qml/Preferences/ReadOnlyTextField.qml +++ b/resources/qml/Preferences/ReadOnlyTextField.qml @@ -13,7 +13,7 @@ Item property alias text: textField.text - signal editingFinished(); + signal editingFinished() property bool readOnly: false diff --git a/resources/qml/Widgets/TextField.qml b/resources/qml/Widgets/TextField.qml index c126c8a6e0..9cb9a021e7 100644 --- a/resources/qml/Widgets/TextField.qml +++ b/resources/qml/Widgets/TextField.qml @@ -16,9 +16,7 @@ TextField id: textField property alias leftIcon: iconLeft.source - - UM.I18nCatalog { id: catalog; name: "cura" } - + hoverEnabled: true selectByMouse: true font: UM.Theme.getFont("default") From 821581bc65f8f072d1146e1cd92a454922087f2e Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 17:07:22 +0100 Subject: [PATCH 12/14] Remove ProgressBar style and use UM.ProgressBar instead CURA-8685 --- .../FirmwareUpdaterMachineAction.qml | 4 +- resources/qml/MonitorButton.qml | 4 +- resources/qml/Widgets/TextField.qml | 2 +- resources/themes/cura-light/styles.qml | 51 ------------------- 4 files changed, 4 insertions(+), 57 deletions(-) diff --git a/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml b/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml index eb12acce88..23485efb77 100644 --- a/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml +++ b/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml @@ -7,7 +7,7 @@ import QtQuick.Layouts 1.1 import QtQuick.Window 2.1 import QtQuick.Dialogs 1.2 // For filedialog -import UM 1.2 as UM +import UM 1.3 as UM import Cura 1.0 as Cura @@ -157,7 +157,7 @@ Cura.MachineAction wrapMode: Text.Wrap } - ProgressBar + UM.ProgressBar { id: prog value: (manager.firmwareUpdater != null) ? manager.firmwareUpdater.firmwareProgress / 100 : 0 diff --git a/resources/qml/MonitorButton.qml b/resources/qml/MonitorButton.qml index 16c0ae086f..54b9437a6c 100644 --- a/resources/qml/MonitorButton.qml +++ b/resources/qml/MonitorButton.qml @@ -183,7 +183,7 @@ Item visible: showProgress } - ProgressBar + UM.ProgressBar { id: progressBar; minimumValue: 0; @@ -218,8 +218,6 @@ Item return false; } } - style: UM.Theme.styles.progressbar; - property string backgroundColor: UM.Theme.getColor("progressbar_background"); property string controlColor: base.statusColor; diff --git a/resources/qml/Widgets/TextField.qml b/resources/qml/Widgets/TextField.qml index 9cb9a021e7..b995c34f10 100644 --- a/resources/qml/Widgets/TextField.qml +++ b/resources/qml/Widgets/TextField.qml @@ -16,7 +16,7 @@ TextField id: textField property alias leftIcon: iconLeft.source - + hoverEnabled: true selectByMouse: true font: UM.Theme.getFont("default") diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 11dd2a70eb..2b5e4dc3ac 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -9,57 +9,6 @@ import UM 1.1 as UM QtObject { - property Component progressbar: Component - { - ProgressBarStyle - { - background: Rectangle - { - implicitWidth: UM.Theme.getSize("message").width - (UM.Theme.getSize("default_margin").width * 2) - implicitHeight: UM.Theme.getSize("progressbar").height - color: control.hasOwnProperty("backgroundColor") ? control.backgroundColor : UM.Theme.getColor("progressbar_background") - radius: UM.Theme.getSize("progressbar_radius").width - } - progress: Rectangle - { - color: - { - if(control.indeterminate) - { - return "transparent"; - } - else if(control.hasOwnProperty("controlColor")) - { - return control.controlColor; - } - else - { - return UM.Theme.getColor("progressbar_control"); - } - } - radius: UM.Theme.getSize("progressbar_radius").width - Rectangle - { - radius: UM.Theme.getSize("progressbar_radius").width - color: control.hasOwnProperty("controlColor") ? control.controlColor : UM.Theme.getColor("progressbar_control") - width: UM.Theme.getSize("progressbar_control").width - height: UM.Theme.getSize("progressbar_control").height - visible: control.indeterminate - - SequentialAnimation on x - { - id: xAnim - property int animEndPoint: UM.Theme.getSize("message").width - Math.round((UM.Theme.getSize("default_margin").width * 2.5)) - UM.Theme.getSize("progressbar_control").width - running: control.indeterminate && control.visible - loops: Animation.Infinite - NumberAnimation { from: 0; to: xAnim.animEndPoint; duration: 2000;} - NumberAnimation { from: xAnim.animEndPoint; to: 0; duration: 2000;} - } - } - } - } - } - property Component scrollview: Component { ScrollViewStyle From 5f3b35b30da33d136592f81a85fd26e38f66810c Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 15 Feb 2022 17:17:54 +0100 Subject: [PATCH 13/14] Use UM label for firmwareUpdater CURA-8685 --- .../FirmwareUpdaterMachineAction.qml | 41 ++++++++----------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml b/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml index 23485efb77..47387daa28 100644 --- a/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml +++ b/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2022 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -7,13 +7,13 @@ import QtQuick.Layouts 1.1 import QtQuick.Window 2.1 import QtQuick.Dialogs 1.2 // For filedialog -import UM 1.3 as UM +import UM 1.5 as UM import Cura 1.0 as Cura Cura.MachineAction { - anchors.fill: parent; + anchors.fill: parent property bool printerConnected: Cura.MachineManager.printerConnected property var activeOutputDevice: printerConnected ? Cura.MachineManager.printerOutputDevices[0] : null property bool canUpdateFirmware: activeOutputDevice ? activeOutputDevice.activePrinter.canUpdateFirmware : false @@ -25,25 +25,22 @@ Cura.MachineAction UM.I18nCatalog { id: catalog; name: "cura"} spacing: UM.Theme.getSize("default_margin").height - Label + UM.Label { width: parent.width text: catalog.i18nc("@title", "Update Firmware") - wrapMode: Text.WordWrap font.pointSize: 18 } - Label + UM.Label { width: parent.width - wrapMode: Text.WordWrap text: catalog.i18nc("@label", "Firmware is the piece of software running directly on your 3D printer. This firmware controls the step motors, regulates the temperature and ultimately makes your printer work.") } - Label + UM.Label { width: parent.width - wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "The firmware shipping with new printers works, but new versions tend to have more features and improvements."); + text: catalog.i18nc("@label", "The firmware shipping with new printers works, but new versions tend to have more features and improvements.") } Row @@ -55,7 +52,7 @@ Cura.MachineAction Button { id: autoUpgradeButton - text: catalog.i18nc("@action:button", "Automatically upgrade Firmware"); + text: catalog.i18nc("@action:button", "Automatically upgrade Firmware") enabled: parent.firmwareName != "" && canUpdateFirmware onClicked: { @@ -66,7 +63,7 @@ Cura.MachineAction Button { id: manualUpgradeButton - text: catalog.i18nc("@action:button", "Upload custom Firmware"); + text: catalog.i18nc("@action:button", "Upload custom Firmware") enabled: canUpdateFirmware onClicked: { @@ -75,20 +72,18 @@ Cura.MachineAction } } - Label + UM.Label { width: parent.width - wrapMode: Text.WordWrap visible: !printerConnected && !updateProgressDialog.visible - text: catalog.i18nc("@label", "Firmware can not be updated because there is no connection with the printer."); + text: catalog.i18nc("@label", "Firmware can not be updated because there is no connection with the printer.") } Label { width: parent.width - wrapMode: Text.WordWrap visible: printerConnected && !canUpdateFirmware - text: catalog.i18nc("@label", "Firmware can not be updated because the connection with the printer does not support upgrading firmware."); + text: catalog.i18nc("@label", "Firmware can not be updated because the connection with the printer does not support upgrading firmware.") } } @@ -122,7 +117,7 @@ Cura.MachineAction { anchors.fill: parent - Label + UM.Label { anchors { @@ -171,8 +166,8 @@ Cura.MachineAction } anchors { - left: parent.left; - right: parent.right; + left: parent.left + right: parent.right } } } @@ -180,9 +175,9 @@ Cura.MachineAction rightButtons: [ Button { - text: catalog.i18nc("@action:button","Close"); - enabled: (manager.firmwareUpdater != null) ? manager.firmwareUpdater.firmwareUpdateState != 1 : true; - onClicked: updateProgressDialog.visible = false; + text: catalog.i18nc("@action:button", "Close") + enabled: manager.firmwareUpdater != null ? manager.firmwareUpdater.firmwareUpdateState != 1 : true + onClicked: updateProgressDialog.visible = false } ] } From 9f7581d4e8229e9475b5bdda5ad4015e20a70d76 Mon Sep 17 00:00:00 2001 From: casper Date: Fri, 18 Feb 2022 08:57:38 +0100 Subject: [PATCH 14/14] Remove ReadOnlyTextField and use a ``` UM.TextField { enabled: false } ``` instead CURA-8688 --- .../Preferences/Materials/MaterialsView.qml | 28 +++++++-------- .../qml/Preferences/ReadOnlyTextField.qml | 35 ------------------- 2 files changed, 14 insertions(+), 49 deletions(-) delete mode 100644 resources/qml/Preferences/ReadOnlyTextField.qml diff --git a/resources/qml/Preferences/Materials/MaterialsView.qml b/resources/qml/Preferences/Materials/MaterialsView.qml index ecb9870fcf..d71a6f398f 100644 --- a/resources/qml/Preferences/Materials/MaterialsView.qml +++ b/resources/qml/Preferences/Materials/MaterialsView.qml @@ -148,32 +148,32 @@ Item } Label { width: informationPage.columnWidth; height: parent.rowHeight; verticalAlignment: Qt.AlignVCenter; text: catalog.i18nc("@label", "Display Name") } - ReadOnlyTextField + Cura.TextField { id: displayNameTextField; width: informationPage.columnWidth; text: properties.name; - readOnly: !base.editingEnabled; + enabled: base.editingEnabled; onEditingFinished: base.updateMaterialDisplayName(properties.name, text) } Label { width: informationPage.columnWidth; height: parent.rowHeight; verticalAlignment: Qt.AlignVCenter; text: catalog.i18nc("@label", "Brand") } - ReadOnlyTextField + Cura.TextField { - id: brandTextField; - width: informationPage.columnWidth; - text: properties.brand; - readOnly: !base.editingEnabled; + id: brandTextField + width: informationPage.columnWidth + text: properties.brand + enabled: base.editingEnabled onEditingFinished: base.updateMaterialBrand(properties.brand, text) } Label { width: informationPage.columnWidth; height: parent.rowHeight; verticalAlignment: Qt.AlignVCenter; text: catalog.i18nc("@label", "Material Type") } - ReadOnlyTextField + Cura.TextField { - id: materialTypeField; - width: informationPage.columnWidth; - text: properties.material; - readOnly: !base.editingEnabled; + id: materialTypeField + width: informationPage.columnWidth + text: properties.material + enabled: base.editingEnabled onEditingFinished: base.updateMaterialType(properties.material, text) } @@ -206,12 +206,12 @@ Item } // pretty color name text field - ReadOnlyTextField + Cura.TextField { id: colorLabel; width: parent.width - colorSelector.width - parent.spacing text: properties.color_name; - readOnly: !base.editingEnabled + enabled: base.editingEnabled onEditingFinished: base.setMetaDataEntry("color_name", properties.color_name, text) } diff --git a/resources/qml/Preferences/ReadOnlyTextField.qml b/resources/qml/Preferences/ReadOnlyTextField.qml deleted file mode 100644 index 325081dd13..0000000000 --- a/resources/qml/Preferences/ReadOnlyTextField.qml +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) 2016 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. -// Different than the name suggests, it is not always read-only. - -import QtQuick 2.1 -import QtQuick.Controls 2.1 -import UM 1.5 as UM -import Cura 1.0 as Cura - -Item -{ - id: base - - property alias text: textField.text - - signal editingFinished() - - property bool readOnly: false - - width: textField.width - height: textField.height - - Cura.TextField - { - id: textField - - enabled: !base.readOnly - - anchors.fill: parent - - onEditingFinished: base.editingFinished() - Keys.onEnterPressed: base.editingFinished() - Keys.onReturnPressed: base.editingFinished() - } -}