NozzleMenu.qml 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. // Copyright (c) 2017 Ultimaker B.V.
  2. // Cura is released under the terms of the LGPLv3 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. property bool isClusterPrinter:
  14. {
  15. if(Cura.MachineManager.printerOutputDevices.length == 0)
  16. {
  17. return false;
  18. }
  19. var clusterSize = Cura.MachineManager.printerOutputDevices[0].clusterSize;
  20. // This is not a cluster printer or the cluster it is just one printer
  21. if(clusterSize == undefined || clusterSize == 1)
  22. {
  23. return false;
  24. }
  25. return true;
  26. }
  27. MenuItem
  28. {
  29. id: automaticNozzle
  30. text:
  31. {
  32. if(printerConnected && Cura.MachineManager.printerOutputDevices[0].hotendIds.length > extruderIndex && !isClusterPrinter)
  33. {
  34. var nozzleName = Cura.MachineManager.printerOutputDevices[0].hotendIds[extruderIndex];
  35. return catalog.i18nc("@title:menuitem %1 is the nozzle currently loaded in the printer", "Automatic: %1").arg(nozzleName);
  36. }
  37. return "";
  38. }
  39. visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].hotendIds.length > extruderIndex && !isClusterPrinter
  40. onTriggered:
  41. {
  42. var activeExtruderIndex = Cura.ExtruderManager.activeExtruderIndex;
  43. Cura.ExtruderManager.setActiveExtruderIndex(extruderIndex);
  44. var hotendId = Cura.MachineManager.printerOutputDevices[0].hotendIds[extruderIndex];
  45. var itemIndex = nozzleInstantiator.model.find("name", hotendId);
  46. if(itemIndex > -1)
  47. {
  48. Cura.MachineManager.setActiveVariant(nozzleInstantiator.model.getItem(itemIndex).id);
  49. }
  50. Cura.ExtruderManager.setActiveExtruderIndex(activeExtruderIndex);
  51. }
  52. }
  53. MenuSeparator
  54. {
  55. visible: automaticNozzle.visible
  56. }
  57. Instantiator
  58. {
  59. id: nozzleInstantiator
  60. model: UM.InstanceContainersModel
  61. {
  62. filter:
  63. {
  64. "type": "variant",
  65. "definition": Cura.MachineManager.activeQualityDefinitionId //Only show variants of this machine
  66. }
  67. }
  68. MenuItem {
  69. text: model.name
  70. checkable: true
  71. checked: model.id == Cura.MachineManager.allActiveVariantIds[Cura.ExtruderManager.extruderIds[extruderIndex]]
  72. exclusiveGroup: group
  73. onTriggered:
  74. {
  75. var activeExtruderIndex = Cura.ExtruderManager.activeExtruderIndex;
  76. Cura.ExtruderManager.setActiveExtruderIndex(extruderIndex);
  77. Cura.MachineManager.setActiveVariant(model.id);
  78. Cura.ExtruderManager.setActiveExtruderIndex(activeExtruderIndex);
  79. }
  80. }
  81. onObjectAdded: menu.insertItem(index, object)
  82. onObjectRemoved: menu.removeItem(object)
  83. }
  84. ExclusiveGroup { id: group }
  85. }