From 631d6a15b09f82aef08245898ca8297d05c1f294 Mon Sep 17 00:00:00 2001 From: Joey de l'Arago Date: Mon, 28 Nov 2022 15:55:55 +0100 Subject: [PATCH] =?UTF-8?q?Add=20extruder=20button=20bar=20that=20shows=20?= =?UTF-8?q?icons=20for=20each=20extruder=20in=20a=20horizontal=20row=20?= =?UTF-8?q?=F0=9F=92=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make ExtruderButton more generic by moving functionality out. Remove background color from ToolbarButton and add that background color to the Toolbar.qml. Fix Toolbar border being created by overlapping rectangles instead of using border Add scaling options for ToolBarButtons icon CURA-9793 --- .../Recommended/RecommendedSettingItem.qml | 4 +- .../Recommended/RecommendedSettingSection.qml | 2 +- .../RecommendedSupportSelector.qml | 8 ++-- resources/qml/Toolbar.qml | 32 +++++++++------ resources/qml/Widgets/ExtruderSelectorBar.qml | 40 +++++++++++++++++++ resources/qml/qmldir | 2 + 6 files changed, 70 insertions(+), 18 deletions(-) create mode 100644 resources/qml/Widgets/ExtruderSelectorBar.qml diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingItem.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingItem.qml index ddd99af1ab..ec777b13d6 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingItem.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingItem.qml @@ -12,12 +12,12 @@ import Cura 1.7 as Cura Item { width: parent.width - height: UM.Theme.getSize("section_header").height + Layout.preferredHeight: childrenRect.height + Layout.minimumHeight: UM.Theme.getSize("section_header").height Layout.fillWidth: true property alias settingControl: settingContainer.children property alias settingName: settingLabel.text - property int leftColumnWidth: Math.floor(width * 0.35) UM.Label { diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingSection.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingSection.qml index 445e1663a6..ac0c7fbccf 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingSection.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingSection.qml @@ -17,7 +17,7 @@ Item property alias enableSectionChecked: enableSectionSwitch.checked property alias enableSectionEnabled: enableSectionSwitch.enabled property var enableSectionClicked: { return } - property int leftColumnWidth: width / 2 + property int leftColumnWidth: Math.floor(width * 0.35) property var toolTipText: "" property alias contents: settingColumn.children diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml index b59feeff64..8da6f8cd01 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml @@ -6,7 +6,7 @@ import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 import UM 1.5 as UM -import Cura 1.0 as Cura +import Cura 1.6 as Cura RecommendedSettingSection @@ -57,7 +57,9 @@ RecommendedSettingSection RecommendedSettingItem { settingName: catalog.i18nc("@action:label", "Print with") - settingControl: Rectangle { color: "red"; width: 10; height:10 } + settingControl: Cura.ExtruderSelectorBar { model: extruderModel } + + Layout.preferredHeight: childrenRect.height // ComboBox // { // id: supportExtruderCombobox @@ -242,7 +244,7 @@ RecommendedSettingSection RecommendedSettingItem { settingName: catalog.i18nc("@action:label", "Placement") - settingControl: Rectangle { color: "red"; width: 10; height:10 } + settingControl: Rectangle { color: "green"; width: 50; height:50 } } ] diff --git a/resources/qml/Toolbar.qml b/resources/qml/Toolbar.qml index 6ecdc9dce0..e003c6cd6f 100644 --- a/resources/qml/Toolbar.qml +++ b/resources/qml/Toolbar.qml @@ -5,7 +5,7 @@ import QtQuick 2.2 import QtQuick.Controls 2.3 import UM 1.5 as UM -import Cura 1.0 as Cura +import Cura 1.7 as Cura Item { @@ -29,13 +29,13 @@ Item anchors { fill: toolButtons - leftMargin: -radius - border.width - rightMargin: -border.width - topMargin: -border.width - bottomMargin: -border.width + leftMargin: -radius - border.width // Removes border on left side } radius: UM.Theme.getSize("default_radius").width - color: UM.Theme.getColor("lining") + color: UM.Theme.getColor("toolbar_background") + border.color: UM.Theme.getColor("lining") + border.width: UM.Theme.getSize("default_lining").width + } Column @@ -111,13 +111,12 @@ Item anchors { fill: extruderButtons - leftMargin: -radius - border.width - rightMargin: -border.width - topMargin: -border.width - bottomMargin: -border.width + leftMargin: -radius - border.width // Removes border on left side } radius: UM.Theme.getSize("default_radius").width - color: UM.Theme.getColor("lining") + color: UM.Theme.getColor("toolbar_background") + border.color: UM.Theme.getColor("lining") + border.width: UM.Theme.getSize("default_lining").width visible: extrudersModel.items.length > 1 } @@ -135,11 +134,20 @@ Item height: childrenRect.height model: extrudersModel.items.length > 1 ? extrudersModel : 0 - delegate: ExtruderButton + delegate: Cura.ExtruderButton { extruder: model isTopElement: extrudersModel.getItem(0).id == model.id isBottomElement: extrudersModel.getItem(extrudersModel.rowCount() - 1).id == model.id + text: catalog.i18ncp("@label %1 is filled in with the name of an extruder", "Print Selected Model with %1", "Print Selected Models with %1", UM.Selection.selectionCount).arg(extruder.name) + checked: Cura.ExtruderManager.selectedObjectExtruders.indexOf(extruder.id) != -1 + enabled: UM.Selection.hasSelection && extruder.stack.isEnabled + + onClicked: + { + forceActiveFocus() //First grab focus, so all the text fields are updated + CuraActions.setExtruderForSelection(extruder.id) + } } } } diff --git a/resources/qml/Widgets/ExtruderSelectorBar.qml b/resources/qml/Widgets/ExtruderSelectorBar.qml new file mode 100644 index 0000000000..7ac4101ed8 --- /dev/null +++ b/resources/qml/Widgets/ExtruderSelectorBar.qml @@ -0,0 +1,40 @@ +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Layouts 1.3 + +import UM 1.5 as UM +import Cura 1.5 as Cura + +Row +{ + id: extruderSelectionBar + property alias model: extruderButtonRepeater.model + + spacing: 0 + width: parent.width + height: childrenRect.height + + Repeater + { + id: extruderButtonRepeater + + delegate: Item + { + width: { + const maximum_width = Math.floor(extruderSelectionBar.width / extruderButtonRepeater.count); + return Math.min(UM.Theme.getSize("large_button").width, maximum_width); + } + + height: childrenRect.height + + Cura.ExtruderButton + { + extruder: model + isTopElement: extrudersModel.getItem(0).id == model.id + isBottomElement: extrudersModel.getItem(extrudersModel.rowCount() - 1).id == model.id + iconScale: 0.6 + buttonSize: UM.Theme.getSize("large_button").width + } + } + } +} diff --git a/resources/qml/qmldir b/resources/qml/qmldir index d5184f1d8c..1a6739f5fb 100644 --- a/resources/qml/qmldir +++ b/resources/qml/qmldir @@ -38,6 +38,8 @@ ScrollView 1.0 ScrollView.qml Menu 1.0 Menu.qml MenuItem 1.0 MenuItem.qml MenuSeparator 1.0 MenuSeparator.qml +ExtruderSelectorBar 1.6 ExtruderSelectorBar.qml +ExtruderButton 1.6 ExtruderButton.qml # Cura/MachineSettings