Added variant selection

CURA-1278
This commit is contained in:
Jaime van Kessel 2016-05-13 10:16:58 +02:00
parent f5e63f2e71
commit b3e741e90c
2 changed files with 38 additions and 9 deletions

View file

@ -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):

View file

@ -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)