From 15747dedec000c1648eea7618e4ad9c43851eeb6 Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Fri, 13 Nov 2015 11:32:43 +0100 Subject: [PATCH] Update Per Object Settings tool with changes made in 15.10 --- .../PerObjectSettingsPanel.qml | 87 +++++++++++++++---- .../SettingOverrideModel.py | 6 +- 2 files changed, 70 insertions(+), 23 deletions(-) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 820238a86e..781b7b0f1c 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -41,6 +41,33 @@ Item { anchors.fill: parent; } + Button { + id: closeButton; + width: UM.Theme.sizes.message_close.width; + height: UM.Theme.sizes.message_close.height; + anchors { + right: parent.right; + rightMargin: UM.Theme.sizes.default_margin.width / 2; + top: parent.top; + topMargin: UM.Theme.sizes.default_margin.width / 2; + } + UM.RecolorImage { + anchors.fill: parent; + sourceSize.width: width + sourceSize.height: width + color: UM.Theme.colors.message_dismiss + source: UM.Theme.icons.cross2; + } + + onClicked: settingsPanel.opacity = 0 + + style: ButtonStyle { + background: Rectangle { + color: UM.Theme.colors.message_background + } + } + } + Column { id: items anchors.top: parent.top; @@ -58,7 +85,6 @@ Item { name: catalog.i18nc("@label", "Profile") type: "enum" - perObjectSetting: true style: UM.Theme.styles.setting_item; @@ -88,8 +114,6 @@ Item { description: model.description; unit: model.unit; valid: model.valid; - perObjectSetting: true - dismissable: true options: model.options style: UM.Theme.styles.setting_item; @@ -98,18 +122,36 @@ Item { settings.model.setSettingValue(model.key, value) } -// Button { -// anchors.left: parent.right; -// text: "x"; -// -// width: UM.Theme.sizes.setting.height; -// height: UM.Theme.sizes.setting.height; -// -// opacity: parent.hovered || hovered ? 1 : 0; -// onClicked: UM.ActiveTool.properties.Model.removeSettingOverride(UM.ActiveTool.properties.Model.getItem(base.currentIndex).id, model.key) -// -// style: ButtonStyle { } -// } + Button + { + anchors.left: parent.horizontalCenter; + anchors.leftMargin: UM.Theme.sizes.default_margin.width; + + width: UM.Theme.sizes.setting.height; + height: UM.Theme.sizes.setting.height; + + opacity: parent.hovered || hovered ? 1 : 0; + onClicked: UM.ActiveTool.properties.Model.removeSettingOverride(UM.ActiveTool.properties.Model.getItem(base.currentIndex).id, model.key) + + style: ButtonStyle + { + background: Rectangle + { + color: control.hovered ? control.parent.style.controlHighlightColor : control.parent.style.controlColor; + UM.RecolorImage + { + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + width: parent.width/2 + height: parent.height/2 + sourceSize.width: width + sourceSize.height: width + color: UM.Theme.colors.setting_control_revert + source: UM.Theme.icons.cross1 + } + } + } + } } } @@ -172,12 +214,19 @@ Item { checkable: true; onClicked: { - base.currentIndex = index; + if(settingsPanel.opacity < 0.5) //Per-object panel is not currently displayed. + { + base.currentIndex = index; - settingsPanel.anchors.left = right; - settingsPanel.anchors.top = top; + settingsPanel.anchors.left = right; + settingsPanel.anchors.top = top; - settingsPanel.opacity = 1; + settingsPanel.opacity = 1; + } + else //Per-object panel is already displayed. Deactivate it (same behaviour as the close button). + { + settingsPanel.opacity = 0; + } } style: ButtonStyle diff --git a/plugins/PerObjectSettingsTool/SettingOverrideModel.py b/plugins/PerObjectSettingsTool/SettingOverrideModel.py index 505146290e..74696f0ee6 100644 --- a/plugins/PerObjectSettingsTool/SettingOverrideModel.py +++ b/plugins/PerObjectSettingsTool/SettingOverrideModel.py @@ -44,9 +44,7 @@ class SettingOverrideModel(ListModel): if not self._decorator: return - self._ignore_setting_change = key self._decorator.setSettingValue(key, value) - self._ignore_setting_change = None def _onDecoratorsChanged(self, node): if not self._node.getDecorator(SettingOverrideDecorator): @@ -97,6 +95,6 @@ class SettingOverrideModel(ListModel): def _onSettingValueChanged(self, setting): index = self.find("key", setting.getKey()) value = self._decorator.getSettingValue(setting.getKey()) - if index != -1 and self._ignore_setting_change != setting.getKey(): + if index != -1: self.setProperty(index, "value", str(value)) - self.setProperty(index, "valid", setting.validate(value)) + self.setProperty(index, "valid", setting.validate(value))