mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-12 15:38:59 +08:00
Merge branch 'master' of github.com:Ultimaker/Cura
This commit is contained in:
commit
85942583b1
@ -3,36 +3,44 @@ from UM.Application import Application
|
|||||||
from UM.Settings.SettingInstance import SettingInstance
|
from UM.Settings.SettingInstance import SettingInstance
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
|
|
||||||
|
import UM.Settings.Models
|
||||||
|
|
||||||
from cura.SettingOverrideDecorator import SettingOverrideDecorator
|
from cura.SettingOverrideDecorator import SettingOverrideDecorator
|
||||||
|
|
||||||
## The per object setting visibility handler ensures that only setting defintions that have a matching instance Container
|
## The per object setting visibility handler ensures that only setting defintions that have a matching instance Container
|
||||||
# are returned as visible.
|
# are returned as visible.
|
||||||
class PerObjectSettingVisibilityHandler(QObject):
|
class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHandler):
|
||||||
def __init__(self, parent = None, *args, **kwargs):
|
def __init__(self, parent = None, *args, **kwargs):
|
||||||
super().__init__(parent = parent, *args, **kwargs)
|
super().__init__(parent = parent, *args, **kwargs)
|
||||||
self._selected_object_id = None
|
|
||||||
|
|
||||||
visibilityChanged = pyqtSignal()
|
self._selected_object_id = None
|
||||||
|
self._node = None
|
||||||
|
self._stack = None
|
||||||
|
|
||||||
def setSelectedObjectId(self, id):
|
def setSelectedObjectId(self, id):
|
||||||
self._selected_object_id = id
|
if id != self._selected_object_id:
|
||||||
self.visibilityChanged.emit()
|
self._selected_object_id = id
|
||||||
|
|
||||||
|
self._node = Application.getInstance().getController().getScene().findObject(self._selected_object_id)
|
||||||
|
if self._node:
|
||||||
|
self._stack = self._node.callDecoration("getStack")
|
||||||
|
|
||||||
|
self.visibilityChanged.emit()
|
||||||
|
|
||||||
@pyqtProperty("quint64", fset = setSelectedObjectId)
|
@pyqtProperty("quint64", fset = setSelectedObjectId)
|
||||||
def selectedObjectId(self):
|
def selectedObjectId(self):
|
||||||
pass
|
return self._selected_object_id
|
||||||
|
|
||||||
def setVisible(self, visible):
|
def setVisible(self, visible):
|
||||||
node = Application.getInstance().getController().getScene().findObject(self._selected_object_id)
|
if not self._node:
|
||||||
if not node:
|
|
||||||
return
|
return
|
||||||
stack = node.callDecoration("getStack")
|
|
||||||
if not stack:
|
|
||||||
node.addDecorator(SettingOverrideDecorator())
|
|
||||||
stack = node.callDecoration("getStack")
|
|
||||||
|
|
||||||
settings = stack.getTop()
|
if not self._stack:
|
||||||
all_instances = settings.findInstances(**{})
|
self._node.addDecorator(SettingOverrideDecorator())
|
||||||
|
self._stack = self._node.callDecoration("getStack")
|
||||||
|
|
||||||
|
settings = self._stack.getTop()
|
||||||
|
all_instances = settings.findInstances()
|
||||||
visibility_changed = False # Flag to check if at the end the signal needs to be emitted
|
visibility_changed = False # Flag to check if at the end the signal needs to be emitted
|
||||||
|
|
||||||
# Remove all instances that are not in visibility list
|
# Remove all instances that are not in visibility list
|
||||||
@ -41,13 +49,12 @@ class PerObjectSettingVisibilityHandler(QObject):
|
|||||||
settings.removeInstance(instance.definition.key)
|
settings.removeInstance(instance.definition.key)
|
||||||
visibility_changed = True
|
visibility_changed = True
|
||||||
|
|
||||||
# Add all instances that are not added, but are in visiblity list
|
# Add all instances that are not added, but are in visibility list
|
||||||
for item in visible:
|
for item in visible:
|
||||||
if not settings.getInstance(item):
|
if not settings.getInstance(item):
|
||||||
definition_container = Application.getInstance().getGlobalContainerStack().getBottom()
|
definition = self._stack.getSettingDefinition(item)
|
||||||
definitions = definition_container.findDefinitions(key = item)
|
if definition:
|
||||||
if definitions:
|
settings.addInstance(SettingInstance(definition, settings))
|
||||||
settings.addInstance(SettingInstance(definitions[0], settings))
|
|
||||||
visibility_changed = True
|
visibility_changed = True
|
||||||
else:
|
else:
|
||||||
Logger.log("w", "Unable to add instance (%s) to perobject visibility because we couldn't find the matching definition", item)
|
Logger.log("w", "Unable to add instance (%s) to perobject visibility because we couldn't find the matching definition", item)
|
||||||
@ -57,20 +64,16 @@ class PerObjectSettingVisibilityHandler(QObject):
|
|||||||
|
|
||||||
def getVisible(self):
|
def getVisible(self):
|
||||||
visible_settings = set()
|
visible_settings = set()
|
||||||
node = Application.getInstance().getController().getScene().findObject(self._selected_object_id)
|
if not self._node:
|
||||||
if not node:
|
|
||||||
return visible_settings
|
return visible_settings
|
||||||
|
|
||||||
stack = node.callDecoration("getStack")
|
if not self._stack:
|
||||||
if not stack:
|
|
||||||
return visible_settings
|
return visible_settings
|
||||||
|
|
||||||
settings = stack.getTop()
|
settings = self._stack.getTop()
|
||||||
if not settings:
|
if not settings:
|
||||||
return visible_settings
|
return visible_settings
|
||||||
|
|
||||||
all_instances = settings.findInstances(**{})
|
visible_settings = set(map(lambda i: i.definition.key, settings.findInstances()))
|
||||||
for instance in all_instances:
|
|
||||||
visible_settings.add(instance.definition.key)
|
|
||||||
return visible_settings
|
return visible_settings
|
||||||
|
|
||||||
|
@ -153,6 +153,8 @@ Item {
|
|||||||
{
|
{
|
||||||
id: addedSettingsModel;
|
id: addedSettingsModel;
|
||||||
containerId: Cura.MachineManager.activeDefinitionId
|
containerId: Cura.MachineManager.activeDefinitionId
|
||||||
|
expanded: [ "*" ]
|
||||||
|
|
||||||
visibilityHandler: Cura.PerObjectSettingVisibilityHandler
|
visibilityHandler: Cura.PerObjectSettingVisibilityHandler
|
||||||
{
|
{
|
||||||
selectedObjectId: UM.ActiveTool.properties.getValue("SelectedObjectId")
|
selectedObjectId: UM.ActiveTool.properties.getValue("SelectedObjectId")
|
||||||
@ -215,9 +217,8 @@ Item {
|
|||||||
|
|
||||||
style: ButtonStyle
|
style: ButtonStyle
|
||||||
{
|
{
|
||||||
background: Rectangle
|
background: Item
|
||||||
{
|
{
|
||||||
color: control.hovered ? control.parent.style.controlHighlightColor : control.parent.style.controlColor;
|
|
||||||
UM.RecolorImage
|
UM.RecolorImage
|
||||||
{
|
{
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
@ -340,6 +341,8 @@ Item {
|
|||||||
"settable_per_mesh": true
|
"settable_per_mesh": true
|
||||||
}
|
}
|
||||||
visibilityHandler: UM.SettingPreferenceVisibilityHandler {}
|
visibilityHandler: UM.SettingPreferenceVisibilityHandler {}
|
||||||
|
expanded: [ "*" ]
|
||||||
|
exclude: [ "machine_settings" ]
|
||||||
}
|
}
|
||||||
delegate:Loader
|
delegate:Loader
|
||||||
{
|
{
|
||||||
|
@ -92,7 +92,12 @@ class SliceInfo(Extension):
|
|||||||
}
|
}
|
||||||
for container in global_container_stack.getContainers():
|
for container in global_container_stack.getContainers():
|
||||||
container_id = container.getId()
|
container_id = container.getId()
|
||||||
container_serialized = container.serialize()
|
try:
|
||||||
|
container_serialized = container.serialize()
|
||||||
|
except NotImplementedError:
|
||||||
|
Logger.log("w", "Container %s could not be serialized!", container_id)
|
||||||
|
continue
|
||||||
|
|
||||||
if container_serialized:
|
if container_serialized:
|
||||||
submitted_data["settings_%s" %(container_id)] = container_serialized # This can be anything, eg. INI, JSON, etc.
|
submitted_data["settings_%s" %(container_id)] = container_serialized # This can be anything, eg. INI, JSON, etc.
|
||||||
else:
|
else:
|
||||||
|
@ -36,13 +36,27 @@ UM.ManagementPage
|
|||||||
renameEnabled: base.currentItem != null
|
renameEnabled: base.currentItem != null
|
||||||
activateEnabled: base.currentItem != null && base.currentItem.id != Cura.MachineManager.activeMachineId
|
activateEnabled: base.currentItem != null && base.currentItem.id != Cura.MachineManager.activeMachineId
|
||||||
|
|
||||||
Flow
|
Item
|
||||||
{
|
{
|
||||||
anchors.fill: parent;
|
visible: base.currentItem != null
|
||||||
spacing: UM.Theme.getSize("default_margin").height;
|
anchors.fill: parent
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
id: machineName
|
||||||
|
text: base.currentItem && base.currentItem.name ? base.currentItem.name : ""
|
||||||
|
font: UM.Theme.getFont("large")
|
||||||
|
width: parent.width
|
||||||
|
elide: Text.ElideRight
|
||||||
|
}
|
||||||
|
|
||||||
Row
|
Row
|
||||||
{
|
{
|
||||||
|
id: machineActions
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.top: machineName.bottom
|
||||||
|
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||||
|
|
||||||
Repeater
|
Repeater
|
||||||
{
|
{
|
||||||
id: machineActionRepeater
|
id: machineActionRepeater
|
||||||
@ -72,16 +86,18 @@ UM.ManagementPage
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Row
|
||||||
{
|
{
|
||||||
text: base.currentItem && base.currentItem.name ? base.currentItem.name : ""
|
anchors.top: machineActions.visible ? machineActions.bottom : machineActions.anchors.top
|
||||||
font: UM.Theme.getFont("large")
|
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||||
width: parent.width
|
anchors.left: parent.left
|
||||||
elide: Text.ElideRight
|
anchors.right: parent.right
|
||||||
}
|
|
||||||
|
|
||||||
Label { text: catalog.i18nc("@label", "Type"); width: parent.width * 0.2; }
|
spacing: UM.Theme.getSize("default_margin").height
|
||||||
Label { text: base.currentItem && base.currentItem.typeName ? base.currentItem.typeName : ""; width: parent.width * 0.7; }
|
|
||||||
|
Label { text: catalog.i18nc("@label", "Type") }
|
||||||
|
Label { text: base.currentItem ? base.currentItem.metadata.definition_name : "" }
|
||||||
|
}
|
||||||
|
|
||||||
UM.I18nCatalog { id: catalog; name: "uranium"; }
|
UM.I18nCatalog { id: catalog; name: "uranium"; }
|
||||||
|
|
||||||
|
@ -34,34 +34,34 @@ Item {
|
|||||||
|
|
||||||
property string tooltipText:
|
property string tooltipText:
|
||||||
{
|
{
|
||||||
var affects = settingDefinitionsModel.getRequiredBy(definition.key, "value")
|
var affects = settingDefinitionsModel.getRequiredBy(definition.key, "value")
|
||||||
var affected_by = settingDefinitionsModel.getRequires(definition.key, "value")
|
var affected_by = settingDefinitionsModel.getRequires(definition.key, "value")
|
||||||
|
|
||||||
var affected_by_list = ""
|
var affected_by_list = ""
|
||||||
for(var i in affected_by)
|
for(var i in affected_by)
|
||||||
{
|
{
|
||||||
affected_by_list += "<li>%1</li>\n".arg(affected_by[i].label)
|
affected_by_list += "<li>%1</li>\n".arg(affected_by[i].label)
|
||||||
}
|
}
|
||||||
|
|
||||||
var affects_list = ""
|
var affects_list = ""
|
||||||
for(var i in affects)
|
for(var i in affects)
|
||||||
{
|
{
|
||||||
affects_list += "<li>%1</li>\n".arg(affects[i].label)
|
affects_list += "<li>%1</li>\n".arg(affects[i].label)
|
||||||
}
|
}
|
||||||
|
|
||||||
var tooltip = "<b>%1</b>\n<p>%2</p>".arg(definition.label).arg(definition.description)
|
var tooltip = "<b>%1</b>\n<p>%2</p>".arg(definition.label).arg(definition.description)
|
||||||
|
|
||||||
if(affects_list != "")
|
if(affects_list != "")
|
||||||
{
|
{
|
||||||
tooltip += "<br/><b>%1</b>\n<ul>\n%2</ul>".arg(catalog.i18nc("@label", "Affects")).arg(affects_list)
|
tooltip += "<br/><b>%1</b>\n<ul>\n%2</ul>".arg(catalog.i18nc("@label", "Affects")).arg(affects_list)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(affected_by_list != "")
|
if(affected_by_list != "")
|
||||||
{
|
{
|
||||||
tooltip += "<br/><b>%1</b>\n<ul>\n%2</ul>".arg(catalog.i18nc("@label", "Affected By")).arg(affected_by_list)
|
tooltip += "<br/><b>%1</b>\n<ul>\n%2</ul>".arg(catalog.i18nc("@label", "Affected By")).arg(affected_by_list)
|
||||||
}
|
}
|
||||||
|
|
||||||
return tooltip
|
return tooltip
|
||||||
}
|
}
|
||||||
|
|
||||||
MouseArea
|
MouseArea
|
||||||
@ -236,7 +236,7 @@ Item {
|
|||||||
{
|
{
|
||||||
id: controlContainer;
|
id: controlContainer;
|
||||||
|
|
||||||
enabled: provider.isValueUsed
|
enabled: propertyProvider.isValueUsed
|
||||||
|
|
||||||
anchors.right: parent.right;
|
anchors.right: parent.right;
|
||||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
||||||
|
@ -19,11 +19,6 @@ SettingItem
|
|||||||
border.width: UM.Theme.getSize("default_lining").width
|
border.width: UM.Theme.getSize("default_lining").width
|
||||||
border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border")
|
border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border")
|
||||||
|
|
||||||
property variant parentValue: value //From parent loader
|
|
||||||
function notifyReset() {
|
|
||||||
input.text = format(parentValue)
|
|
||||||
}
|
|
||||||
|
|
||||||
color: {
|
color: {
|
||||||
if (!enabled)
|
if (!enabled)
|
||||||
{
|
{
|
||||||
|
@ -29,8 +29,10 @@ ScrollView
|
|||||||
model: UM.SettingDefinitionsModel {
|
model: UM.SettingDefinitionsModel {
|
||||||
id: definitionsModel;
|
id: definitionsModel;
|
||||||
containerId: Cura.MachineManager.activeDefinitionId
|
containerId: Cura.MachineManager.activeDefinitionId
|
||||||
exclude: ["machine_settings"]
|
|
||||||
visibilityHandler: UM.SettingPreferenceVisibilityHandler { }
|
visibilityHandler: UM.SettingPreferenceVisibilityHandler { }
|
||||||
|
exclude: ["machine_settings"]
|
||||||
|
expanded: Printer.expandedCategories
|
||||||
|
onExpandedChanged: Printer.setExpandedCategories(expanded)
|
||||||
|
|
||||||
filter:
|
filter:
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user