ApplicationMenu.qml 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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: preferencesMenu
  74. title: catalog.i18nc("@title:menu menubar:toplevel", "P&references")
  75. MenuItem { action: Cura.Actions.preferences }
  76. }
  77. Menu
  78. {
  79. id: helpMenu
  80. title: catalog.i18nc("@title:menu menubar:toplevel", "&Help")
  81. MenuItem { action: Cura.Actions.showProfileFolder }
  82. MenuItem { action: Cura.Actions.showTroubleshooting}
  83. MenuItem { action: Cura.Actions.documentation }
  84. MenuItem { action: Cura.Actions.reportBug }
  85. MenuSeparator { }
  86. MenuItem { action: Cura.Actions.whatsNew }
  87. MenuItem { action: Cura.Actions.about }
  88. }
  89. }
  90. // ###############################################################################################
  91. // Definition of other components that are linked to the menus
  92. // ###############################################################################################
  93. WorkspaceSummaryDialog
  94. {
  95. id: saveWorkspaceDialog
  96. property var args
  97. onYes: UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args)
  98. }
  99. MessageDialog
  100. {
  101. id: newProjectDialog
  102. modality: Qt.ApplicationModal
  103. title: catalog.i18nc("@title:window", "New project")
  104. 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.")
  105. standardButtons: StandardButton.Yes | StandardButton.No
  106. icon: StandardIcon.Question
  107. onYes:
  108. {
  109. CuraApplication.deleteAll();
  110. Cura.Actions.resetProfile.trigger();
  111. UM.Controller.setActiveStage("PrepareStage")
  112. }
  113. }
  114. UM.ExtensionModel
  115. {
  116. id: curaExtensions
  117. }
  118. // ###############################################################################################
  119. // Definition of all the connections
  120. // ###############################################################################################
  121. Connections
  122. {
  123. target: Cura.Actions.newProject
  124. onTriggered:
  125. {
  126. if(Printer.platformActivity || Cura.MachineManager.hasUserSettings)
  127. {
  128. newProjectDialog.visible = true
  129. }
  130. }
  131. }
  132. // show the plugin browser dialog
  133. Connections
  134. {
  135. target: Cura.Actions.browsePackages
  136. onTriggered:
  137. {
  138. curaExtensions.callExtensionMethod("Toolbox", "browsePackages")
  139. }
  140. }
  141. }