mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-23 14:19:37 +08:00
120 lines
3.7 KiB
QML
120 lines
3.7 KiB
QML
// Copyright (c) 2022 Ultimaker B.V.
|
|
// Cura is released under the terms of the LGPLv3 or higher.
|
|
|
|
import QtQuick 2.7
|
|
import QtQuick.Controls 2.0
|
|
|
|
import UM 1.5 as UM
|
|
import Cura 1.5 as Cura
|
|
|
|
Cura.CategoryButton
|
|
{
|
|
id: base
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
|
|
categoryIcon: UM.Theme.getIcon(definition.icon)
|
|
expanded: definition.expanded
|
|
labelText: definition.label
|
|
|
|
signal showTooltip(string text)
|
|
signal hideTooltip()
|
|
signal contextMenuRequested()
|
|
signal showAllHiddenInheritedSettings(string category_id)
|
|
signal focusReceived()
|
|
signal setActiveFocusToNextSetting(bool forward)
|
|
|
|
property var focusItem: base
|
|
|
|
onClicked:
|
|
{
|
|
if (definition.expanded)
|
|
{
|
|
settingDefinitionsModel.collapseRecursive(definition.key)
|
|
}
|
|
else
|
|
{
|
|
settingDefinitionsModel.expandRecursive(definition.key)
|
|
}
|
|
//Set focus so that tab navigation continues from this point on.
|
|
//NB: This must be set AFTER collapsing/expanding the category so that the scroll position is correct.
|
|
forceActiveFocus()
|
|
}
|
|
onActiveFocusChanged:
|
|
{
|
|
if (activeFocus)
|
|
{
|
|
base.focusReceived()
|
|
}
|
|
}
|
|
|
|
Keys.onTabPressed: base.setActiveFocusToNextSetting(true)
|
|
Keys.onBacktabPressed: base.setActiveFocusToNextSetting(false)
|
|
|
|
UM.SimpleButton
|
|
{
|
|
id: settingsButton
|
|
|
|
visible: base.hovered || settingsButton.hovered
|
|
height: UM.Theme.getSize("small_button_icon").height
|
|
width: height
|
|
|
|
anchors
|
|
{
|
|
right: inheritButton.visible ? inheritButton.left : parent.right
|
|
// Use 1.9 as the factor because there is a 0.1 difference between the settings and inheritance warning icons
|
|
rightMargin: inheritButton.visible ? Math.round(UM.Theme.getSize("default_margin").width / 2) : arrow.width + Math.round(UM.Theme.getSize("default_margin").width * 1.9)
|
|
verticalCenter: parent.verticalCenter
|
|
}
|
|
|
|
color: UM.Theme.getColor("setting_control_button")
|
|
hoverColor: UM.Theme.getColor("setting_control_button_hover")
|
|
iconSource: UM.Theme.getIcon("Sliders")
|
|
|
|
onClicked: Cura.Actions.configureSettingVisibility.trigger(definition)
|
|
}
|
|
|
|
UM.SimpleButton
|
|
{
|
|
id: inheritButton
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.right: parent.right
|
|
anchors.rightMargin: arrow.width + UM.Theme.getSize("default_margin").width * 2
|
|
|
|
visible:
|
|
{
|
|
if (Cura.SettingInheritanceManager.settingsWithInheritanceWarning.indexOf(definition.key) >= 0)
|
|
{
|
|
var children_with_override = Cura.SettingInheritanceManager.getChildrenKeysWithOverride(definition.key)
|
|
for (var i = 0; i < children_with_override.length; i++)
|
|
{
|
|
if (!settingDefinitionsModel.getVisible(children_with_override[i]))
|
|
{
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
return false
|
|
}
|
|
|
|
height: UM.Theme.getSize("small_button_icon").height
|
|
width: height
|
|
|
|
onClicked:
|
|
{
|
|
settingDefinitionsModel.expandRecursive(definition.key)
|
|
base.showAllHiddenInheritedSettings(definition.key)
|
|
}
|
|
|
|
color: UM.Theme.getColor("setting_control_button")
|
|
hoverColor: UM.Theme.getColor("setting_control_button_hover")
|
|
iconSource: UM.Theme.getIcon("Information")
|
|
|
|
onEntered: base.showTooltip(catalog.i18nc("@label","Some hidden settings use values different from their normal calculated value.\n\nClick to make these settings visible."))
|
|
|
|
onExited: base.hideTooltip()
|
|
}
|
|
}
|