ProfileMenu.qml 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. // Copyright (c) 2016 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. Instantiator
  11. {
  12. model: UM.InstanceContainersModel
  13. {
  14. filter: menu.getFilter({ "type": "quality" });
  15. }
  16. MenuItem
  17. {
  18. text: model.name
  19. checkable: true
  20. checked: Cura.MachineManager.activeQualityChangesId == "empty_quality_changes" && Cura.MachineManager.activeQualityType == model.metadata.quality_type
  21. exclusiveGroup: group
  22. onTriggered: Cura.MachineManager.setActiveQuality(model.id)
  23. }
  24. onObjectAdded: menu.insertItem(index, object);
  25. onObjectRemoved: menu.removeItem(object);
  26. }
  27. MenuSeparator { id: customSeparator }
  28. Instantiator
  29. {
  30. id: customProfileInstantiator
  31. model: UM.InstanceContainersModel
  32. {
  33. filter: ({
  34. "type": "quality_changes",
  35. "extruder": null,
  36. "definition": Cura.MachineManager.filterQualityByMachine ? Cura.MachineManager.activeQualityDefinitionId : "fdmprinter"
  37. })
  38. onModelReset: customSeparator.visible = rowCount() > 0
  39. }
  40. MenuItem
  41. {
  42. text: model.name
  43. checkable: true
  44. checked: Cura.MachineManager.activeQualityId == model.id
  45. exclusiveGroup: group
  46. onTriggered: Cura.MachineManager.setActiveQuality(model.id)
  47. }
  48. onObjectAdded:
  49. {
  50. customSeparator.visible = model.rowCount() > 0;
  51. menu.insertItem(index, object);
  52. }
  53. onObjectRemoved:
  54. {
  55. customSeparator.visible = model.rowCount() > 0;
  56. menu.removeItem(object);
  57. }
  58. }
  59. ExclusiveGroup { id: group; }
  60. MenuSeparator { id: profileMenuSeparator }
  61. MenuItem { action: Cura.Actions.addProfile }
  62. MenuItem { action: Cura.Actions.updateProfile }
  63. MenuItem { action: Cura.Actions.resetProfile }
  64. MenuSeparator { }
  65. MenuItem { action: Cura.Actions.manageProfiles }
  66. function getFilter(initial_conditions)
  67. {
  68. var result = initial_conditions;
  69. if(Cura.MachineManager.filterQualityByMachine)
  70. {
  71. result.definition = Cura.MachineManager.activeQualityDefinitionId;
  72. if(Cura.MachineManager.hasMaterials)
  73. {
  74. result.material = Cura.MachineManager.activeQualityMaterialId;
  75. }
  76. }
  77. else
  78. {
  79. result.definition = "fdmprinter"
  80. }
  81. return result
  82. }
  83. }