NozzleMenu.qml 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // Copyright (c) 2017 Ultimaker B.V.
  2. // Cura is released under the terms of the AGPLv3 or higher.
  3. import QtQuick 2.2
  4. import QtQuick.Controls 1.1
  5. import UM 1.2 as UM
  6. import Cura 1.0 as Cura
  7. Menu
  8. {
  9. id: menu
  10. title: "Nozzle"
  11. property int extruderIndex: 0
  12. property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0
  13. MenuItem
  14. {
  15. id: automaticNozzle
  16. text:
  17. {
  18. if(printerConnected && Cura.MachineManager.printerOutputDevices[0].hotendIds.length > extruderIndex)
  19. {
  20. var nozzleName = Cura.MachineManager.printerOutputDevices[0].hotendIds[extruderIndex];
  21. return catalog.i18nc("@title:menuitem %1 is the nozzle currently loaded in the printer", "Automatic: %1").arg(nozzleName);
  22. }
  23. return "";
  24. }
  25. visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].hotendIds.length > extruderIndex
  26. onTriggered:
  27. {
  28. var activeExtruderIndex = ExtruderManager.activeExtruderIndex;
  29. ExtruderManager.setActiveExtruderIndex(extruderIndex);
  30. var hotendId = Cura.MachineManager.printerOutputDevices[0].hotendIds[extruderIndex];
  31. var itemIndex = nozzleInstantiator.model.find("name", hotendId);
  32. if(itemIndex > -1)
  33. {
  34. Cura.MachineManager.setActiveVariant(nozzleInstantiator.model.getItem(itemIndex).id);
  35. }
  36. ExtruderManager.setActiveExtruderIndex(activeExtruderIndex);
  37. }
  38. }
  39. MenuSeparator
  40. {
  41. visible: automaticNozzle.visible
  42. }
  43. Instantiator
  44. {
  45. id: nozzleInstantiator
  46. model: UM.InstanceContainersModel
  47. {
  48. filter:
  49. {
  50. "type": "variant",
  51. "definition": Cura.MachineManager.activeQualityDefinitionId //Only show variants of this machine
  52. }
  53. }
  54. MenuItem {
  55. text: model.name
  56. checkable: true
  57. checked: model.id == Cura.MachineManager.allActiveVariantIds[ExtruderManager.extruderIds[extruderIndex]]
  58. exclusiveGroup: group
  59. onTriggered:
  60. {
  61. var activeExtruderIndex = ExtruderManager.activeExtruderIndex;
  62. ExtruderManager.setActiveExtruderIndex(extruderIndex);
  63. Cura.MachineManager.setActiveVariant(model.id);
  64. ExtruderManager.setActiveExtruderIndex(activeExtruderIndex);
  65. }
  66. }
  67. onObjectAdded: menu.insertItem(index, object)
  68. onObjectRemoved: menu.removeItem(object)
  69. }
  70. ExclusiveGroup { id: group }
  71. }