ApplicationMenu.qml 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. // Copyright (c) 2018 Ultimaker B.V.
  2. // Cura is released under the terms of the LGPLv3 or higher.
  3. import QtQuick 2.7
  4. import QtQuick.Controls 1.4
  5. import QtQuick.Controls.Styles 1.4
  6. import QtQuick.Layouts 1.1
  7. import QtQuick.Dialogs 1.2
  8. import UM 1.3 as UM
  9. import Cura 1.1 as Cura
  10. import "../Menus"
  11. UM.ApplicationMenu
  12. {
  13. id: menu
  14. Menu
  15. {
  16. id: fileMenu
  17. title: catalog.i18nc("@title:menu menubar:toplevel","&File")
  18. MenuItem
  19. {
  20. id: newProjectMenu
  21. action: Cura.Actions.newProject
  22. }
  23. MenuItem
  24. {
  25. id: openMenu
  26. action: Cura.Actions.open
  27. }
  28. RecentFilesMenu { }
  29. MenuItem
  30. {
  31. id: saveWorkspaceMenu
  32. text: catalog.i18nc("@title:menu menubar:file","&Save...")
  33. onTriggered:
  34. {
  35. var args = { "filter_by_machine": false, "file_type": "workspace", "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml" };
  36. if(UM.Preferences.getValue("cura/dialog_on_project_save"))
  37. {
  38. saveWorkspaceDialog.args = args
  39. saveWorkspaceDialog.open()
  40. }
  41. else
  42. {
  43. UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args)
  44. }
  45. }
  46. }
  47. MenuSeparator { }
  48. MenuItem
  49. {
  50. id: saveAsMenu
  51. text: catalog.i18nc("@title:menu menubar:file", "&Export...")
  52. onTriggered:
  53. {
  54. var localDeviceId = "local_file"
  55. UM.OutputDeviceManager.requestWriteToDevice(localDeviceId, PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"})
  56. }
  57. }
  58. MenuItem
  59. {
  60. id: exportSelectionMenu
  61. text: catalog.i18nc("@action:inmenu menubar:file", "Export Selection...")
  62. enabled: UM.Selection.hasSelection
  63. iconName: "document-save-as"
  64. onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"})
  65. }
  66. MenuSeparator { }
  67. MenuItem
  68. {
  69. id: reloadAllMenu
  70. action: Cura.Actions.reloadAll
  71. }
  72. MenuSeparator { }
  73. MenuItem { action: Cura.Actions.quit }
  74. }
  75. Menu
  76. {
  77. title: catalog.i18nc("@title:menu menubar:toplevel","&Edit")
  78. MenuItem { action: Cura.Actions.undo }
  79. MenuItem { action: Cura.Actions.redo }
  80. MenuSeparator { }
  81. MenuItem { action: Cura.Actions.selectAll }
  82. MenuItem { action: Cura.Actions.arrangeAll }
  83. MenuItem { action: Cura.Actions.deleteSelection }
  84. MenuItem { action: Cura.Actions.deleteAll }
  85. MenuItem { action: Cura.Actions.resetAllTranslation }
  86. MenuItem { action: Cura.Actions.resetAll }
  87. MenuSeparator { }
  88. MenuItem { action: Cura.Actions.groupObjects }
  89. MenuItem { action: Cura.Actions.mergeObjects }
  90. MenuItem { action: Cura.Actions.unGroupObjects }
  91. }
  92. ViewMenu { title: catalog.i18nc("@title:menu", "&View") }
  93. Menu
  94. {
  95. id: settingsMenu
  96. title: catalog.i18nc("@title:menu", "&Settings")
  97. PrinterMenu { title: catalog.i18nc("@title:menu menubar:settings", "&Printer") }
  98. Instantiator
  99. {
  100. model: Cura.ExtrudersModel { simpleNames: true }
  101. Menu {
  102. title: model.name
  103. NozzleMenu { title: Cura.MachineManager.activeDefinitionVariantsName; visible: Cura.MachineManager.hasVariants; extruderIndex: index }
  104. MaterialMenu { title: catalog.i18nc("@title:menu", "&Material"); visible: Cura.MachineManager.hasMaterials; extruderIndex: index }
  105. MenuSeparator
  106. {
  107. visible: Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials
  108. }
  109. MenuItem
  110. {
  111. text: catalog.i18nc("@action:inmenu", "Set as Active Extruder")
  112. onTriggered: Cura.MachineManager.setExtruderIndex(model.index)
  113. }
  114. MenuItem
  115. {
  116. text: catalog.i18nc("@action:inmenu", "Enable Extruder")
  117. onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, true)
  118. visible: !Cura.MachineManager.getExtruder(model.index).isEnabled
  119. }
  120. MenuItem
  121. {
  122. text: catalog.i18nc("@action:inmenu", "Disable Extruder")
  123. onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, false)
  124. visible: Cura.MachineManager.getExtruder(model.index).isEnabled
  125. enabled: Cura.MachineManager.numberExtrudersEnabled > 1
  126. }
  127. }
  128. onObjectAdded: settingsMenu.insertItem(index, object)
  129. onObjectRemoved: settingsMenu.removeItem(object)
  130. }
  131. // TODO Only show in dev mode. Remove check when feature ready
  132. BuildplateMenu
  133. {
  134. title: catalog.i18nc("@title:menu", "&Build plate")
  135. visible: CuraSDKVersion == "dev" && Cura.MachineManager.hasVariantBuildplates
  136. }
  137. ProfileMenu { title: catalog.i18nc("@title:settings", "&Profile") }
  138. MenuSeparator { }
  139. MenuItem { action: Cura.Actions.configureSettingVisibility }
  140. }
  141. Menu
  142. {
  143. id: extension_menu
  144. title: catalog.i18nc("@title:menu menubar:toplevel","E&xtensions")
  145. Instantiator
  146. {
  147. id: extensions
  148. model: UM.ExtensionModel { }
  149. Menu
  150. {
  151. id: sub_menu
  152. title: model.name;
  153. visible: actions != null
  154. enabled: actions != null
  155. Instantiator
  156. {
  157. model: actions
  158. MenuItem
  159. {
  160. text: model.text
  161. onTriggered: extensions.model.subMenuTriggered(name, model.text)
  162. }
  163. onObjectAdded: sub_menu.insertItem(index, object)
  164. onObjectRemoved: sub_menu.removeItem(object)
  165. }
  166. }
  167. onObjectAdded: extension_menu.insertItem(index, object)
  168. onObjectRemoved: extension_menu.removeItem(object)
  169. }
  170. }
  171. Menu
  172. {
  173. id: plugin_menu
  174. title: catalog.i18nc("@title:menu menubar:toplevel", "&Toolbox")
  175. MenuItem { action: Cura.Actions.browsePackages }
  176. }
  177. Menu
  178. {
  179. id: preferencesMenu
  180. title: catalog.i18nc("@title:menu menubar:toplevel","P&references")
  181. MenuItem { action: Cura.Actions.preferences }
  182. }
  183. Menu
  184. {
  185. id: helpMenu
  186. title: catalog.i18nc("@title:menu menubar:toplevel","&Help")
  187. MenuItem { action: Cura.Actions.showProfileFolder }
  188. MenuItem { action: Cura.Actions.documentation }
  189. MenuItem { action: Cura.Actions.reportBug }
  190. MenuSeparator { }
  191. MenuItem { action: Cura.Actions.about }
  192. }
  193. }