diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 109b66a11b..358fec4a31 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -49,18 +49,6 @@ Item visibility_handler.addSkipResetSetting(currentMeshType) } - function setOverhangsMeshType() - { - if (infillOnlyCheckbox.checked) - { - setMeshType(infillMeshType) - } - else - { - setMeshType(cuttingMeshType) - } - } - function setMeshType(type) { UM.ActiveTool.setProperty("MeshType", type) @@ -140,26 +128,43 @@ Item verticalAlignment: Text.AlignVCenter } - CheckBox + + ComboBox { - id: infillOnlyCheckbox + id: infillOnlyComboBox + width: parent.width / 2 - UM.Theme.getSize("default_margin").width - text: catalog.i18nc("@action:checkbox", "Infill only"); + model: ListModel + { + id: infillOnlyComboBoxModel - style: UM.Theme.styles.checkbox; + Component.onCompleted: { + append({ text: catalog.i18nc("@item:inlistbox", "Infill mesh only") }) + append({ text: catalog.i18nc("@item:inlistbox", "Cutting mesh") }) + } + } visible: currentMeshType === infillMeshType || currentMeshType === cuttingMeshType - onClicked: setOverhangsMeshType() + + + onActivated: + { + if (index == 0){ + setMeshType(infillMeshType) + } else { + setMeshType(cuttingMeshType) + } + } Binding { - target: infillOnlyCheckbox - property: "checked" - value: currentMeshType === infillMeshType + target: infillOnlyComboBox + property: "currentIndex" + value: currentMeshType === infillMeshType ? 0 : 1 } } - Column // Settings Dialog + Column // List of selected Settings to override for the selected object { // This is to ensure that the panel is first increasing in size up to 200 and then shows a scrollbar. // It kinda looks ugly otherwise (big panel, no content on it) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py index 84ed312295..4f0d90a8e3 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py @@ -82,6 +82,7 @@ class PerObjectSettingsTool(Tool): selected_object.addDecorator(SettingOverrideDecorator()) stack = selected_object.callDecoration("getStack") + settings_visibility_changed = False settings = stack.getTop() for property_key in ["infill_mesh", "cutting_mesh", "support_mesh", "anti_overhang_mesh"]: if property_key != mesh_type: @@ -103,11 +104,14 @@ class PerObjectSettingsTool(Tool): new_instance.setProperty("value", 0) new_instance.resetState() # Ensure that the state is not seen as a user state. settings.addInstance(new_instance) - visible = self.visibility_handler.getVisible() - visible.add(property_key) - self.visibility_handler.setVisible(visible) + settings_visibility_changed = True + elif old_mesh_type == "infill_mesh" and settings.getInstance(property_key) and settings.getProperty(property_key, "value") == 0: settings.removeInstance(property_key) + settings_visibility_changed = True + + if settings_visibility_changed: + self.visibility_handler.forceVisibilityChanged() self.propertyChanged.emit() return True