mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-10 00:07:51 -06:00
Added variant selection
CURA-1278
This commit is contained in:
parent
f5e63f2e71
commit
b3e741e90c
2 changed files with 38 additions and 9 deletions
|
@ -12,9 +12,11 @@ class MachineManagerModel(QObject):
|
||||||
|
|
||||||
## When the global container is changed, active material probably needs to be updated.
|
## When the global container is changed, active material probably needs to be updated.
|
||||||
self.globalContainerChanged.connect(self.activeMaterialChanged)
|
self.globalContainerChanged.connect(self.activeMaterialChanged)
|
||||||
|
self.globalContainerChanged.connect(self.activeVariantChanged)
|
||||||
|
|
||||||
globalContainerChanged = pyqtSignal()
|
globalContainerChanged = pyqtSignal()
|
||||||
activeMaterialChanged = pyqtSignal()
|
activeMaterialChanged = pyqtSignal()
|
||||||
|
activeVariantChanged = pyqtSignal()
|
||||||
|
|
||||||
def _onGlobalContainerChanged(self):
|
def _onGlobalContainerChanged(self):
|
||||||
Application.getInstance().getGlobalContainerStack().containersChanged.connect(self._onInstanceContainersChanged)
|
Application.getInstance().getGlobalContainerStack().containersChanged.connect(self._onInstanceContainersChanged)
|
||||||
|
@ -24,6 +26,8 @@ class MachineManagerModel(QObject):
|
||||||
container_type = container.getMetaDataEntry("type")
|
container_type = container.getMetaDataEntry("type")
|
||||||
if container_type == "material":
|
if container_type == "material":
|
||||||
self.activeMaterialChanged.emit()
|
self.activeMaterialChanged.emit()
|
||||||
|
elif container_type == "variant":
|
||||||
|
self.activeVariantChanged.emit()
|
||||||
|
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
def setActiveMachine(self, stack_id):
|
def setActiveMachine(self, stack_id):
|
||||||
|
@ -39,18 +43,24 @@ class MachineManagerModel(QObject):
|
||||||
new_global_stack.addMetaDataEntry("type", "machine")
|
new_global_stack.addMetaDataEntry("type", "machine")
|
||||||
ContainerRegistry.getInstance().addContainer(new_global_stack)
|
ContainerRegistry.getInstance().addContainer(new_global_stack)
|
||||||
|
|
||||||
variant_instance_container = InstanceContainer(name + "_variant")
|
## DEBUG CODE
|
||||||
material_instance_container = InstanceContainer("test_material")
|
material_instance_container = InstanceContainer("test_material")
|
||||||
material_instance_container.addMetaDataEntry("type", "material")
|
material_instance_container.addMetaDataEntry("type", "material")
|
||||||
material_instance_container.setDefinition(definitions[0])
|
material_instance_container.setDefinition(definitions[0])
|
||||||
#material_instance_container.setMetaData({"type","material"})
|
|
||||||
|
variant_instance_container = InstanceContainer("test_variant")
|
||||||
|
variant_instance_container.addMetaDataEntry("type", "variant")
|
||||||
|
variant_instance_container.setDefinition(definitions[0])
|
||||||
|
|
||||||
quality_instance_container = InstanceContainer(name + "_quality")
|
quality_instance_container = InstanceContainer(name + "_quality")
|
||||||
current_settings_instance_container = InstanceContainer(name + "_current_settings")
|
current_settings_instance_container = InstanceContainer(name + "_current_settings")
|
||||||
ContainerRegistry.getInstance().addContainer(material_instance_container)
|
ContainerRegistry.getInstance().addContainer(material_instance_container)
|
||||||
|
ContainerRegistry.getInstance().addContainer(variant_instance_container)
|
||||||
|
|
||||||
# If a definition is found, its a list. Should only have one item.
|
# If a definition is found, its a list. Should only have one item.
|
||||||
new_global_stack.addContainer(definitions[0])
|
new_global_stack.addContainer(definitions[0])
|
||||||
new_global_stack.addContainer(material_instance_container)
|
new_global_stack.addContainer(material_instance_container)
|
||||||
|
new_global_stack.addContainer(variant_instance_container)
|
||||||
Application.getInstance().setGlobalContainerStack(new_global_stack)
|
Application.getInstance().setGlobalContainerStack(new_global_stack)
|
||||||
|
|
||||||
@pyqtProperty(str, notify = globalContainerChanged)
|
@pyqtProperty(str, notify = globalContainerChanged)
|
||||||
|
@ -71,8 +81,23 @@ class MachineManagerModel(QObject):
|
||||||
def setActiveMaterial(self, material_id):
|
def setActiveMaterial(self, material_id):
|
||||||
containers = ContainerRegistry.getInstance().findInstanceContainers(id=material_id)
|
containers = ContainerRegistry.getInstance().findInstanceContainers(id=material_id)
|
||||||
old_material = Application.getInstance().getGlobalContainerStack().findContainer({"type":"material"})
|
old_material = Application.getInstance().getGlobalContainerStack().findContainer({"type":"material"})
|
||||||
material_index = Application.getInstance().getGlobalContainerStack().getContainerIndex(old_material)
|
if old_material:
|
||||||
Application.getInstance().getGlobalContainerStack().replaceContainer(material_index, containers[0])
|
material_index = Application.getInstance().getGlobalContainerStack().getContainerIndex(old_material)
|
||||||
|
Application.getInstance().getGlobalContainerStack().replaceContainer(material_index, containers[0])
|
||||||
|
|
||||||
|
@pyqtSlot(str)
|
||||||
|
def setActiveVariant(self, variant_id):
|
||||||
|
containers = ContainerRegistry.getInstance().findInstanceContainers(id=variant_id)
|
||||||
|
old_variant = Application.getInstance().getGlobalContainerStack().findContainer({"type": "variant"})
|
||||||
|
if old_variant:
|
||||||
|
variant_index = Application.getInstance().getGlobalContainerStack().getContainerIndex(old_variant)
|
||||||
|
Application.getInstance().getGlobalContainerStack().replaceContainer(variant_index, containers[0])
|
||||||
|
|
||||||
|
@pyqtProperty(str, notify = activeVariantChanged)
|
||||||
|
def activeVariantName(self):
|
||||||
|
variant = Application.getInstance().getGlobalContainerStack().findContainer({"type": "variant"})
|
||||||
|
if variant:
|
||||||
|
return variant.getName()
|
||||||
|
|
||||||
@pyqtSlot(str, str)
|
@pyqtSlot(str, str)
|
||||||
def renameMachine(self, machine_id, new_name):
|
def renameMachine(self, machine_id, new_name):
|
||||||
|
|
|
@ -128,8 +128,8 @@ Item
|
||||||
|
|
||||||
ToolButton {
|
ToolButton {
|
||||||
id: variantSelection
|
id: variantSelection
|
||||||
text: UM.MachineManager.activeMachineVariant
|
text: Cura.MachineManager.activeVariantName
|
||||||
tooltip: UM.MachineManager.activeMachineVariant;
|
tooltip: Cura.MachineManager.activeVariantName;
|
||||||
visible: UM.MachineManager.hasVariants
|
visible: UM.MachineManager.hasVariants
|
||||||
|
|
||||||
height: UM.Theme.getSize("setting_control").height
|
height: UM.Theme.getSize("setting_control").height
|
||||||
|
@ -143,6 +143,10 @@ Item
|
||||||
Instantiator
|
Instantiator
|
||||||
{
|
{
|
||||||
id: variantSelectionInstantiator
|
id: variantSelectionInstantiator
|
||||||
|
model: UM.InstanceContainersModel
|
||||||
|
{
|
||||||
|
filter: {"type": "variant"}
|
||||||
|
}
|
||||||
// model: UM.MachineVariantsModel { id: variantsModel }
|
// model: UM.MachineVariantsModel { id: variantsModel }
|
||||||
MenuItem
|
MenuItem
|
||||||
{
|
{
|
||||||
|
@ -152,14 +156,14 @@ Item
|
||||||
exclusiveGroup: variantSelectionMenuGroup;
|
exclusiveGroup: variantSelectionMenuGroup;
|
||||||
onTriggered:
|
onTriggered:
|
||||||
{
|
{
|
||||||
UM.MachineManager.setActiveMachineVariant(variantsModel.getItem(index).name);
|
Cura.MachineManager.setActiveVariant(model.id);
|
||||||
if (typeof(model) !== "undefined" && !model.active) {
|
/*if (typeof(model) !== "undefined" && !model.active) {
|
||||||
//Selecting a variant was canceled; undo menu selection
|
//Selecting a variant was canceled; undo menu selection
|
||||||
variantSelectionInstantiator.model.setProperty(index, "active", false);
|
variantSelectionInstantiator.model.setProperty(index, "active", false);
|
||||||
var activeMachineVariantName = UM.MachineManager.activeMachineVariant;
|
var activeMachineVariantName = UM.MachineManager.activeMachineVariant;
|
||||||
var activeMachineVariantIndex = variantSelectionInstantiator.model.find("name", activeMachineVariantName);
|
var activeMachineVariantIndex = variantSelectionInstantiator.model.find("name", activeMachineVariantName);
|
||||||
variantSelectionInstantiator.model.setProperty(activeMachineVariantIndex, "active", true);
|
variantSelectionInstantiator.model.setProperty(activeMachineVariantIndex, "active", true);
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onObjectAdded: variantsSelectionMenu.insertItem(index, object)
|
onObjectAdded: variantsSelectionMenu.insertItem(index, object)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue