ContextMenu.qml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. // Copyright (c) 2016 Ultimaker B.V.
  2. // Cura is released under the terms of the LGPLv3 or higher.
  3. import QtQuick 2.2
  4. import QtQuick.Controls 2.1
  5. import QtQuick.Dialogs 1.2
  6. import QtQuick.Window 2.1
  7. import UM 1.5 as UM
  8. import Cura 1.0 as Cura
  9. Menu
  10. {
  11. id: base
  12. property bool shouldShowExtruders: machineExtruderCount.properties.value > 1;
  13. property var multiBuildPlateModel: CuraApplication.getMultiBuildPlateModel()
  14. // Selection-related actions.
  15. Cura.MenuItem { action: Cura.Actions.centerSelection; }
  16. Cura.MenuItem { action: Cura.Actions.deleteSelection; }
  17. Cura.MenuItem { action: Cura.Actions.multiplySelection; }
  18. // Extruder selection - only visible if there is more than 1 extruder
  19. Cura.MenuSeparator { visible: base.shouldShowExtruders }
  20. Cura.MenuItem
  21. {
  22. id: extruderHeader
  23. text: catalog.i18ncp("@label", "Print Selected Model With:", "Print Selected Models With:", UM.Selection.selectionCount)
  24. enabled: false
  25. visible: base.shouldShowExtruders
  26. }
  27. Instantiator
  28. {
  29. model: CuraApplication.getExtrudersModel()
  30. Cura.MenuItem
  31. {
  32. text: "%1: %2 - %3".arg(model.name).arg(model.material).arg(model.variant)
  33. visible: base.shouldShowExtruders
  34. enabled: UM.Selection.hasSelection && model.enabled
  35. checkable: true
  36. checked: Cura.ExtruderManager.selectedObjectExtruders.indexOf(model.id) != -1
  37. onTriggered: CuraActions.setExtruderForSelection(model.id)
  38. shortcut: "Ctrl+" + (model.index + 1)
  39. }
  40. // Add it to the fifth position (and above) as we want it to be added after the extruder header.
  41. onObjectAdded: base.insertItem(index + 5, object)
  42. onObjectRemoved: base.removeItem(object)
  43. }
  44. // Global actions
  45. Cura.MenuSeparator {}
  46. Cura.MenuItem { action: Cura.Actions.selectAll }
  47. Cura.MenuItem { action: Cura.Actions.arrangeAll }
  48. Cura.MenuItem { action: Cura.Actions.deleteAll }
  49. Cura.MenuItem { action: Cura.Actions.reloadAll }
  50. Cura.MenuItem { action: Cura.Actions.resetAllTranslation }
  51. Cura.MenuItem { action: Cura.Actions.resetAll }
  52. // Group actions
  53. Cura.MenuSeparator {}
  54. Cura.MenuItem { action: Cura.Actions.groupObjects }
  55. Cura.MenuItem { action: Cura.Actions.mergeObjects }
  56. Cura.MenuItem { action: Cura.Actions.unGroupObjects }
  57. Connections
  58. {
  59. target: UM.Controller
  60. function onContextMenuRequested() { base.popup() }
  61. }
  62. Connections
  63. {
  64. target: Cura.Actions.multiplySelection
  65. function onTriggered() { multiplyDialog.open() }
  66. }
  67. UM.SettingPropertyProvider
  68. {
  69. id: machineExtruderCount
  70. containerStack: Cura.MachineManager.activeMachine
  71. key: "machine_extruder_count"
  72. watchedProperties: [ "value" ]
  73. }
  74. Dialog
  75. {
  76. id: multiplyDialog
  77. modality: Qt.ApplicationModal
  78. title: catalog.i18ncp("@title:window", "Multiply Selected Model", "Multiply Selected Models", UM.Selection.selectionCount)
  79. onAccepted: CuraActions.multiplySelection(copiesField.value)
  80. signal reset()
  81. onReset:
  82. {
  83. copiesField.value = 1;
  84. copiesField.focus = true;
  85. }
  86. onVisibleChanged:
  87. {
  88. copiesField.forceActiveFocus();
  89. }
  90. standardButtons: StandardButton.Ok | StandardButton.Cancel
  91. Row
  92. {
  93. spacing: UM.Theme.getSize("default_margin").width
  94. Label
  95. {
  96. text: catalog.i18nc("@label", "Number of Copies")
  97. anchors.verticalCenter: copiesField.verticalCenter
  98. }
  99. SpinBox
  100. {
  101. id: copiesField
  102. focus: true
  103. from: 1
  104. to: 99
  105. }
  106. }
  107. }
  108. }