Tweak layout of Per Object Settings

CURA-1799
This commit is contained in:
fieldOfView 2016-08-08 15:40:41 +02:00
parent ca2daae6ab
commit 2c61fe3249
2 changed files with 10350 additions and 85 deletions

View File

@ -147,106 +147,111 @@ Item {
} }
} }
Repeater Column
{ {
id: contents spacing: UM.Theme.getSize("default_lining").height
height: childrenRect.height;
model: UM.SettingDefinitionsModel Repeater
{ {
id: addedSettingsModel; id: contents
containerId: Cura.MachineManager.activeDefinitionId height: childrenRect.height;
expanded: [ "*" ]
visibilityHandler: Cura.PerObjectSettingVisibilityHandler model: UM.SettingDefinitionsModel
{ {
selectedObjectId: UM.ActiveTool.properties.getValue("SelectedObjectId") id: addedSettingsModel;
} containerId: Cura.MachineManager.activeDefinitionId
} expanded: [ "*" ]
delegate: Row visibilityHandler: Cura.PerObjectSettingVisibilityHandler
{
Loader
{
id: settingLoader
width: UM.Theme.getSize("setting").width;
height: UM.Theme.getSize("section").height;
property var definition: model
property var settingDefinitionsModel: addedSettingsModel
property var propertyProvider: provider
//Qt5.4.2 and earlier has a bug where this causes a crash: https://bugreports.qt.io/browse/QTBUG-35989
//In addition, while it works for 5.5 and higher, the ordering of the actual combo box drop down changes,
//causing nasty issues when selecting different options. So disable asynchronous loading of enum type completely.
asynchronous: model.type != "enum" && model.type != "extruder"
onLoaded: {
settingLoader.item.showRevertButton = false
settingLoader.item.showInheritButton = false
settingLoader.item.showLinkedSettingIcon = false
settingLoader.item.doDepthIndentation = false
settingLoader.item.doQualityUserSettingEmphasis = false
}
sourceComponent:
{ {
switch(model.type) selectedObjectId: UM.ActiveTool.properties.getValue("SelectedObjectId")
{ }
case "int": }
return settingTextField
case "float": delegate: Row
return settingTextField {
case "enum": Loader
return settingComboBox {
case "extruder": id: settingLoader
return settingExtruder width: UM.Theme.getSize("setting").width
case "bool": height: UM.Theme.getSize("section").height
return settingCheckBox
case "str": property var definition: model
return settingTextField property var settingDefinitionsModel: addedSettingsModel
case "category": property var propertyProvider: provider
return settingCategory
default: //Qt5.4.2 and earlier has a bug where this causes a crash: https://bugreports.qt.io/browse/QTBUG-35989
return settingUnknown //In addition, while it works for 5.5 and higher, the ordering of the actual combo box drop down changes,
//causing nasty issues when selecting different options. So disable asynchronous loading of enum type completely.
asynchronous: model.type != "enum" && model.type != "extruder"
onLoaded: {
settingLoader.item.showRevertButton = false
settingLoader.item.showInheritButton = false
settingLoader.item.showLinkedSettingIcon = false
settingLoader.item.doDepthIndentation = false
settingLoader.item.doQualityUserSettingEmphasis = false
} }
}
}
Button sourceComponent:
{
width: UM.Theme.getSize("setting").height;
height: UM.Theme.getSize("setting").height;
onClicked: addedSettingsModel.setVisible(model.key, false);
style: ButtonStyle
{
background: Item
{ {
UM.RecolorImage switch(model.type)
{ {
anchors.verticalCenter: parent.verticalCenter case "int":
anchors.horizontalCenter: parent.horizontalCenter return settingTextField
width: parent.width/2 case "float":
height: parent.height/2 return settingTextField
sourceSize.width: width case "enum":
sourceSize.height: width return settingComboBox
color: control.hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button") case "extruder":
source: UM.Theme.getIcon("cross1") return settingExtruder
case "bool":
return settingCheckBox
case "str":
return settingTextField
case "category":
return settingCategory
default:
return settingUnknown
} }
} }
} }
}
UM.SettingPropertyProvider
{
id: provider
containerStackId: UM.ActiveTool.properties.getValue("ContainerID") Button
key: model.key {
watchedProperties: [ "value", "enabled", "validationState" ] width: UM.Theme.getSize("setting").height / 2;
storeIndex: 0 height: UM.Theme.getSize("setting").height;
removeUnusedValue: false
onClicked: addedSettingsModel.setVisible(model.key, false);
style: ButtonStyle
{
background: Item
{
UM.RecolorImage
{
anchors.verticalCenter: parent.verticalCenter
width: parent.width
height: parent.height / 2
sourceSize.width: width
sourceSize.height: width
color: control.hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button")
source: UM.Theme.getIcon("minus")
}
}
}
}
UM.SettingPropertyProvider
{
id: provider
containerStackId: UM.ActiveTool.properties.getValue("ContainerID")
key: model.key
watchedProperties: [ "value", "enabled", "validationState" ]
storeIndex: 0
removeUnusedValue: false
}
} }
} }
} }

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 760 KiB