Merge pull request #2224 from fieldOfView/fix_multiextruder_menus

Fix multiextruder menus
This commit is contained in:
alekseisasin 2017-08-23 09:08:48 +02:00 committed by GitHub
commit 9363f93467
3 changed files with 31 additions and 23 deletions

View file

@ -504,16 +504,6 @@ class MachineManager(QObject):
return result return result
@pyqtProperty("QVariantList", notify = activeVariantChanged)
def activeMaterialIds(self):
result = []
if ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() is not None:
for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks():
if stack.variant and stack.variant != self._empty_variant_container:
result.append(stack.variant.getId())
return result
@pyqtProperty("QVariantList", notify = activeMaterialChanged) @pyqtProperty("QVariantList", notify = activeMaterialChanged)
def activeMaterialNames(self): def activeMaterialNames(self):
result = [] result = []

View file

@ -39,17 +39,20 @@ Menu
visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].materialNames.length > extruderIndex visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].materialNames.length > extruderIndex
onTriggered: onTriggered:
{ {
var material_id = Cura.MachineManager.printerOutputDevices[0].materialIds[extruderIndex]; var activeExtruderIndex = ExtruderManager.activeExtruderIndex;
ExtruderManager.setActiveExtruderIndex(extruderIndex);
var materialId = Cura.MachineManager.printerOutputDevices[0].materialIds[extruderIndex];
var items = materialsModel.items; var items = materialsModel.items;
// materialsModel.find cannot be used because we need to look inside the metadata property of items // materialsModel.find cannot be used because we need to look inside the metadata property of items
for(var i in items) for(var i in items)
{ {
if (items[i]["metadata"]["GUID"] == material_id) if (items[i]["metadata"]["GUID"] == materialId)
{ {
Cura.MachineManager.setActiveMaterial(items[i].id); Cura.MachineManager.setActiveMaterial(items[i].id);
break; break;
} }
} }
ExtruderManager.setActiveExtruderIndex(activeExtruderIndex);
} }
} }
@ -64,12 +67,15 @@ Menu
MenuItem MenuItem
{ {
text: model.name text: model.name
checkable: true; checkable: true
checked: model.id == Cura.MachineManager.activeMaterialId; checked: model.id == Cura.MachineManager.allActiveMaterialIds[ExtruderManager.extruderIds[extruderIndex]]
exclusiveGroup: group; exclusiveGroup: group
onTriggered: onTriggered:
{ {
var activeExtruderIndex = ExtruderManager.activeExtruderIndex;
ExtruderManager.setActiveExtruderIndex(extruderIndex);
Cura.MachineManager.setActiveMaterial(model.id); Cura.MachineManager.setActiveMaterial(model.id);
ExtruderManager.setActiveExtruderIndex(activeExtruderIndex);
} }
} }
onObjectAdded: menu.insertItem(index, object) onObjectAdded: menu.insertItem(index, object)
@ -102,12 +108,15 @@ Menu
MenuItem MenuItem
{ {
text: model.name text: model.name
checkable: true; checkable: true
checked: model.id == Cura.MachineManager.activeMaterialId; checked: model.id == Cura.MachineManager.allActiveMaterialIds[ExtruderManager.extruderIds[extruderIndex]]
exclusiveGroup: group; exclusiveGroup: group
onTriggered: onTriggered:
{ {
var activeExtruderIndex = ExtruderManager.activeExtruderIndex;
ExtruderManager.setActiveExtruderIndex(extruderIndex);
Cura.MachineManager.setActiveMaterial(model.id); Cura.MachineManager.setActiveMaterial(model.id);
ExtruderManager.setActiveExtruderIndex(activeExtruderIndex);
} }
} }
onObjectAdded: brandMaterialsMenu.insertItem(index, object) onObjectAdded: brandMaterialsMenu.insertItem(index, object)

View file

@ -30,12 +30,15 @@ Menu
visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].hotendIds.length > extruderIndex visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].hotendIds.length > extruderIndex
onTriggered: onTriggered:
{ {
var activeExtruderIndex = ExtruderManager.activeExtruderIndex;
ExtruderManager.setActiveExtruderIndex(extruderIndex);
var hotendId = Cura.MachineManager.printerOutputDevices[0].hotendIds[extruderIndex]; var hotendId = Cura.MachineManager.printerOutputDevices[0].hotendIds[extruderIndex];
var itemIndex = nozzleInstantiator.model.find("name", hotendId); var itemIndex = nozzleInstantiator.model.find("name", hotendId);
if(itemIndex > -1) if(itemIndex > -1)
{ {
Cura.MachineManager.setActiveVariant(nozzleInstantiator.model.getItem(itemIndex).id) Cura.MachineManager.setActiveVariant(nozzleInstantiator.model.getItem(itemIndex).id);
} }
ExtruderManager.setActiveExtruderIndex(activeExtruderIndex);
} }
} }
@ -56,11 +59,17 @@ Menu
} }
} }
MenuItem { MenuItem {
text: model.name; text: model.name
checkable: true; checkable: true
checked: model.id == Cura.MachineManager.activeVariantId; checked: model.id == Cura.MachineManager.allActiveVariantIds[ExtruderManager.extruderIds[extruderIndex]]
exclusiveGroup: group exclusiveGroup: group
onTriggered: Cura.MachineManager.setActiveVariant(model.id) onTriggered:
{
var activeExtruderIndex = ExtruderManager.activeExtruderIndex;
ExtruderManager.setActiveExtruderIndex(extruderIndex);
Cura.MachineManager.setActiveVariant(model.id);
ExtruderManager.setActiveExtruderIndex(activeExtruderIndex);
}
} }
onObjectAdded: menu.insertItem(index, object) onObjectAdded: menu.insertItem(index, object)
onObjectRemoved: menu.removeItem(object) onObjectRemoved: menu.removeItem(object)