FileMenu.qml 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. // Copyright (c) 2022 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 UM 1.6 as UM
  6. import Cura 1.0 as Cura
  7. Cura.Menu
  8. {
  9. id: base
  10. title: catalog.i18nc("@title:menu menubar:toplevel", "&File")
  11. property var fileProviderModel: CuraApplication.getFileProviderModel()
  12. Cura.MenuItem
  13. {
  14. id: newProjectMenu
  15. action: Cura.Actions.newProject
  16. }
  17. Cura.MenuItem
  18. {
  19. id: openMenu
  20. action: Cura.Actions.open
  21. visible: base.fileProviderModel.count == 1
  22. enabled: base.fileProviderModel.count == 1
  23. }
  24. OpenFilesMenu
  25. {
  26. id: openFilesMenu
  27. shouldBeVisible: base.fileProviderModel.count > 1
  28. enabled: shouldBeVisible
  29. }
  30. RecentFilesMenu { }
  31. Cura.MenuItem
  32. {
  33. id: saveWorkspaceMenu
  34. shortcut: StandardKey.Save
  35. text: catalog.i18nc("@title:menu menubar:file", "&Save Project...")
  36. visible: saveProjectMenu.model.count == 1
  37. enabled: UM.WorkspaceFileHandler.enabled && saveProjectMenu.model.count == 1
  38. onTriggered:
  39. {
  40. const args = {
  41. "filter_by_machine": false,
  42. "file_type": "workspace",
  43. "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml",
  44. };
  45. if (UM.Preferences.getValue("cura/dialog_on_project_save"))
  46. {
  47. saveWorkspaceDialog.args = args
  48. saveWorkspaceDialog.open()
  49. }
  50. else
  51. {
  52. UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args)
  53. }
  54. }
  55. }
  56. UM.ProjectOutputDevicesModel { id: projectOutputDevicesModel }
  57. SaveProjectMenu
  58. {
  59. id: saveProjectMenu
  60. model: projectOutputDevicesModel
  61. shouldBeVisible: model.count > 1
  62. enabled: UM.WorkspaceFileHandler.enabled
  63. }
  64. Cura.MenuItem
  65. {
  66. id: saveUCPMenu
  67. text: catalog.i18nc("@title:menu menubar:file Don't translate 'Universal Cura Project'", "&Save Universal Cura Project...")
  68. enabled: UM.WorkspaceFileHandler.enabled && CuraApplication.getPackageManager().allEnabledPackages.includes("3MFWriter")
  69. onTriggered: CuraApplication.exportUcp()
  70. }
  71. Cura.MenuSeparator { }
  72. Cura.MenuItem
  73. {
  74. id: saveAsMenu
  75. text: catalog.i18nc("@title:menu menubar:file", "&Export...")
  76. onTriggered:
  77. {
  78. const args = {
  79. "filter_by_machine": false,
  80. "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml",
  81. };
  82. UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args);
  83. }
  84. }
  85. Cura.MenuItem
  86. {
  87. id: exportSelectionMenu
  88. text: catalog.i18nc("@action:inmenu menubar:file", "Export Selection...")
  89. enabled: UM.Selection.hasSelection
  90. icon.name: "document-save-as"
  91. onTriggered: {
  92. const args = {
  93. "filter_by_machine": false,
  94. "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml",
  95. };
  96. UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", PrintInformation.jobName, args);
  97. }
  98. }
  99. Cura.MenuSeparator { }
  100. Cura.MenuItem
  101. {
  102. id: reloadAllMenu
  103. action: Cura.Actions.reloadAll
  104. }
  105. Cura.MenuSeparator { }
  106. Cura.MenuItem { action: Cura.Actions.quit }
  107. }