ApplicationMenu.qml 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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.about }
  87. }
  88. }
  89. // ###############################################################################################
  90. // Definition of other components that are linked to the menus
  91. // ###############################################################################################
  92. WorkspaceSummaryDialog
  93. {
  94. id: saveWorkspaceDialog
  95. property var args
  96. onYes: UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args)
  97. }
  98. MessageDialog
  99. {
  100. id: newProjectDialog
  101. modality: Qt.ApplicationModal
  102. title: catalog.i18nc("@title:window", "New project")
  103. 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.")
  104. standardButtons: StandardButton.Yes | StandardButton.No
  105. icon: StandardIcon.Question
  106. onYes:
  107. {
  108. CuraApplication.deleteAll();
  109. Cura.Actions.resetProfile.trigger();
  110. }
  111. }
  112. UM.ExtensionModel
  113. {
  114. id: curaExtensions
  115. }
  116. // ###############################################################################################
  117. // Definition of all the connections
  118. // ###############################################################################################
  119. Connections
  120. {
  121. target: Cura.Actions.newProject
  122. onTriggered:
  123. {
  124. if(Printer.platformActivity || Cura.MachineManager.hasUserSettings)
  125. {
  126. newProjectDialog.visible = true
  127. }
  128. }
  129. }
  130. // show the plugin browser dialog
  131. Connections
  132. {
  133. target: Cura.Actions.browsePackages
  134. onTriggered:
  135. {
  136. curaExtensions.callExtensionMethod("Toolbox", "browsePackages")
  137. }
  138. }
  139. }