ApplicationMenu.qml 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  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. import "../Dialogs"
  12. Item
  13. {
  14. id: menu
  15. width: applicationMenu.width
  16. height: applicationMenu.height
  17. property alias window: applicationMenu.window
  18. UM.ApplicationMenu
  19. {
  20. id: applicationMenu
  21. FileMenu { title: catalog.i18nc("@title:menu menubar:toplevel", "&File") }
  22. Menu
  23. {
  24. title: catalog.i18nc("@title:menu menubar:toplevel", "&Edit")
  25. MenuItem { action: Cura.Actions.undo }
  26. MenuItem { action: Cura.Actions.redo }
  27. MenuSeparator { }
  28. MenuItem { action: Cura.Actions.selectAll }
  29. MenuItem { action: Cura.Actions.arrangeAll }
  30. MenuItem { action: Cura.Actions.deleteSelection }
  31. MenuItem { action: Cura.Actions.deleteAll }
  32. MenuItem { action: Cura.Actions.resetAllTranslation }
  33. MenuItem { action: Cura.Actions.resetAll }
  34. MenuSeparator { }
  35. MenuItem { action: Cura.Actions.groupObjects }
  36. MenuItem { action: Cura.Actions.mergeObjects }
  37. MenuItem { action: Cura.Actions.unGroupObjects }
  38. }
  39. ViewMenu { title: catalog.i18nc("@title:menu menubar:toplevel", "&View") }
  40. SettingsMenu { title: catalog.i18nc("@title:menu menubar:toplevel", "&Settings") }
  41. Menu
  42. {
  43. id: extensionMenu
  44. title: catalog.i18nc("@title:menu menubar:toplevel", "E&xtensions")
  45. Instantiator
  46. {
  47. id: extensions
  48. model: UM.ExtensionModel { }
  49. Menu
  50. {
  51. id: sub_menu
  52. title: model.name;
  53. visible: actions != null
  54. enabled: actions != null
  55. Instantiator
  56. {
  57. model: actions
  58. MenuItem
  59. {
  60. text: model.text
  61. onTriggered: extensions.model.subMenuTriggered(name, model.text)
  62. }
  63. onObjectAdded: sub_menu.insertItem(index, object)
  64. onObjectRemoved: sub_menu.removeItem(object)
  65. }
  66. }
  67. onObjectAdded: extensionMenu.insertItem(index, object)
  68. onObjectRemoved: extensionMenu.removeItem(object)
  69. }
  70. }
  71. Menu
  72. {
  73. id: plugin_menu
  74. title: catalog.i18nc("@title:menu menubar:toplevel", "&Marketplace")
  75. MenuItem { action: Cura.Actions.browsePackages }
  76. }
  77. Menu
  78. {
  79. id: preferencesMenu
  80. title: catalog.i18nc("@title:menu menubar:toplevel", "P&references")
  81. MenuItem { action: Cura.Actions.preferences }
  82. }
  83. Menu
  84. {
  85. id: helpMenu
  86. title: catalog.i18nc("@title:menu menubar:toplevel", "&Help")
  87. MenuItem { action: Cura.Actions.showProfileFolder }
  88. MenuItem { action: Cura.Actions.documentation }
  89. MenuItem { action: Cura.Actions.reportBug }
  90. MenuSeparator { }
  91. MenuItem { action: Cura.Actions.about }
  92. }
  93. }
  94. // ###############################################################################################
  95. // Definition of other components that are linked to the menus
  96. // ###############################################################################################
  97. WorkspaceSummaryDialog
  98. {
  99. id: saveWorkspaceDialog
  100. property var args
  101. onYes: UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args)
  102. }
  103. MessageDialog
  104. {
  105. id: newProjectDialog
  106. modality: Qt.ApplicationModal
  107. title: catalog.i18nc("@title:window", "New project")
  108. text: catalog.i18nc("@info:question", "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings.")
  109. standardButtons: StandardButton.Yes | StandardButton.No
  110. icon: StandardIcon.Question
  111. onYes:
  112. {
  113. CuraApplication.deleteAll();
  114. Cura.Actions.resetProfile.trigger();
  115. }
  116. }
  117. UM.ExtensionModel
  118. {
  119. id: curaExtensions
  120. }
  121. // ###############################################################################################
  122. // Definition of all the connections
  123. // ###############################################################################################
  124. Connections
  125. {
  126. target: Cura.Actions.newProject
  127. onTriggered:
  128. {
  129. if(Printer.platformActivity || Cura.MachineManager.hasUserSettings)
  130. {
  131. newProjectDialog.visible = true
  132. }
  133. }
  134. }
  135. // show the plugin browser dialog
  136. Connections
  137. {
  138. target: Cura.Actions.browsePackages
  139. onTriggered:
  140. {
  141. curaExtensions.callExtensionMethod("Toolbox", "browsePackages")
  142. }
  143. }
  144. }