From 052898ce21084117e644b35a85f4799e0e3b08b4 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 10 Jan 2022 16:55:28 +0100 Subject: [PATCH] Switch out the file, view and edit menu for controls 2 CURA-8683 --- resources/qml/Actions.qml | 329 +++++++++---------- resources/qml/Cura.qml | 5 +- resources/qml/MainWindow/ApplicationMenu.qml | 53 ++- resources/qml/Menus/EditMenu.qml | 28 ++ resources/qml/Menus/FileMenu.qml | 31 +- resources/qml/Menus/OpenFilesMenu.qml | 10 +- resources/qml/Menus/RecentFilesMenu.qml | 6 +- resources/qml/Menus/SaveProjectMenu.qml | 8 +- resources/qml/Menus/ViewMenu.qml | 66 +--- 9 files changed, 285 insertions(+), 251 deletions(-) create mode 100644 resources/qml/Menus/EditMenu.qml diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index aa88c9176d..6e7dd6b85f 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -4,69 +4,68 @@ pragma Singleton import QtQuick 2.10 -import QtQuick.Controls 1.1 -import QtQuick.Controls 2.3 as Controls2 +import QtQuick.Controls 2.4 import UM 1.1 as UM import Cura 1.0 as Cura Item { - property alias newProject: newProjectAction; - property alias open: openAction; - property alias quit: quitAction; + property alias newProject: newProjectAction + property alias open: openAction + property alias quit: quitAction - property alias undo: undoAction; - property alias redo: redoAction; + property alias undo: undoAction + property alias redo: redoAction - property alias view3DCamera: view3DCameraAction; - property alias viewFrontCamera: viewFrontCameraAction; - property alias viewTopCamera: viewTopCameraAction; - property alias viewBottomCamera: viewBottomCameraAction; - property alias viewLeftSideCamera: viewLeftSideCameraAction; - property alias viewRightSideCamera: viewRightSideCameraAction; + property alias view3DCamera: view3DCameraAction + property alias viewFrontCamera: viewFrontCameraAction + property alias viewTopCamera: viewTopCameraAction + property alias viewBottomCamera: viewBottomCameraAction + property alias viewLeftSideCamera: viewLeftSideCameraAction + property alias viewRightSideCamera: viewRightSideCameraAction - property alias deleteSelection: deleteSelectionAction; - property alias centerSelection: centerSelectionAction; - property alias multiplySelection: multiplySelectionAction; + property alias deleteSelection: deleteSelectionAction + property alias centerSelection: centerSelectionAction + property alias multiplySelection: multiplySelectionAction - property alias deleteObject: deleteObjectAction; - property alias centerObject: centerObjectAction; - property alias groupObjects: groupObjectsAction; - property alias unGroupObjects:unGroupObjectsAction; - property alias mergeObjects: mergeObjectsAction; - //property alias unMergeObjects: unMergeObjectsAction; + property alias deleteObject: deleteObjectAction + property alias centerObject: centerObjectAction + property alias groupObjects: groupObjectsAction + property alias unGroupObjects:unGroupObjectsAction + property alias mergeObjects: mergeObjectsAction + //property alias unMergeObjects: unMergeObjectsAction - property alias multiplyObject: multiplyObjectAction; + property alias multiplyObject: multiplyObjectAction - property alias selectAll: selectAllAction; - property alias deleteAll: deleteAllAction; - property alias reloadAll: reloadAllAction; - property alias arrangeAllBuildPlates: arrangeAllBuildPlatesAction; - property alias arrangeAll: arrangeAllAction; - property alias arrangeSelection: arrangeSelectionAction; - property alias resetAllTranslation: resetAllTranslationAction; - property alias resetAll: resetAllAction; + property alias selectAll: selectAllAction + property alias deleteAll: deleteAllAction + property alias reloadAll: reloadAllAction + property alias arrangeAllBuildPlates: arrangeAllBuildPlatesAction + property alias arrangeAll: arrangeAllAction + property alias arrangeSelection: arrangeSelectionAction + property alias resetAllTranslation: resetAllTranslationAction + property alias resetAll: resetAllAction - property alias addMachine: addMachineAction; - property alias configureMachines: settingsAction; - property alias addProfile: addProfileAction; - property alias updateProfile: updateProfileAction; - property alias resetProfile: resetProfileAction; - property alias manageProfiles: manageProfilesAction; + property alias addMachine: addMachineAction + property alias configureMachines: settingsAction + property alias addProfile: addProfileAction + property alias updateProfile: updateProfileAction + property alias resetProfile: resetProfileAction + property alias manageProfiles: manageProfilesAction - property alias manageMaterials: manageMaterialsAction; - property alias marketplaceMaterials: marketplaceMaterialsAction; + property alias manageMaterials: manageMaterialsAction + property alias marketplaceMaterials: marketplaceMaterialsAction - property alias preferences: preferencesAction; + property alias preferences: preferencesAction - property alias showProfileFolder: showProfileFolderAction; - property alias documentation: documentationAction; + property alias showProfileFolder: showProfileFolderAction + property alias documentation: documentationAction property alias showTroubleshooting: showTroubleShootingAction - property alias reportBug: reportBugAction; + property alias reportBug: reportBugAction property alias whatsNew: whatsNewAction - property alias about: aboutAction; + property alias about: aboutAction - property alias toggleFullScreen: toggleFullScreenAction; + property alias toggleFullScreen: toggleFullScreenAction property alias exitFullScreen: exitFullScreenAction property alias configureSettingVisibility: configureSettingVisibilityAction @@ -80,7 +79,7 @@ Item { id: showTroubleShootingAction onTriggered: Qt.openUrlExternally("https://ultimaker.com/en/troubleshooting?utm_source=cura&utm_medium=software&utm_campaign=dropdown-troubleshooting") - text: catalog.i18nc("@action:inmenu", "Show Online Troubleshooting Guide"); + text: catalog.i18nc("@action:inmenu", "Show Online Troubleshooting Guide") } Action @@ -88,7 +87,7 @@ Item id: toggleFullScreenAction shortcut: StandardKey.FullScreen text: catalog.i18nc("@action:inmenu", "Toggle Full Screen") - iconName: "view-fullscreen" + icon.name: "view-fullscreen" } Action @@ -96,27 +95,27 @@ Item id: exitFullScreenAction shortcut: StandardKey.Cancel text: catalog.i18nc("@action:inmenu", "Exit Full Screen") - iconName: "view-fullscreen" + icon.name: "view-fullscreen" } Action { - id: undoAction; - text: catalog.i18nc("@action:inmenu menubar:edit", "&Undo"); - iconName: "edit-undo"; - shortcut: StandardKey.Undo; - onTriggered: UM.OperationStack.undo(); - enabled: UM.OperationStack.canUndo; + id: undoAction + text: catalog.i18nc("@action:inmenu menubar:edit", "&Undo") + icon.name: "edit-undo" + shortcut: StandardKey.Undo + onTriggered: UM.OperationStack.undo() + enabled: UM.OperationStack.canUndo } Action { - id: redoAction; - text: catalog.i18nc("@action:inmenu menubar:edit", "&Redo"); - iconName: "edit-redo"; - shortcut: StandardKey.Redo; - onTriggered: UM.OperationStack.redo(); - enabled: UM.OperationStack.canRedo; + id: redoAction + text: catalog.i18nc("@action:inmenu menubar:edit", "&Redo") + icon.name: "edit-redo" + shortcut: StandardKey.Redo + onTriggered: UM.OperationStack.redo() + enabled: UM.OperationStack.canRedo } Action @@ -131,7 +130,7 @@ Item //- https://doc.qt.io/qt-5/macos-issues.html#menu-bar //- https://doc.qt.io/qt-5/qmenubar.html#qmenubar-as-a-global-menu-bar text: (Qt.platform.os == "osx") ? "&Quit" : catalog.i18nc("@action:inmenu menubar:file", "&Quit") - iconName: "application-exit" + icon.name: "application-exit" shortcut: StandardKey.Quit } @@ -188,7 +187,7 @@ Item //- https://doc.qt.io/qt-5/macos-issues.html#menu-bar //- https://doc.qt.io/qt-5/qmenubar.html#qmenubar-as-a-global-menu-bar text: (Qt.platform.os == "osx") ? "Configure Cura..." : catalog.i18nc("@action:inmenu", "Configure Cura...") - iconName: "configure" + icon.name: "configure" } Action @@ -201,14 +200,14 @@ Item { id: settingsAction text: catalog.i18nc("@action:inmenu menubar:printer", "Manage Pr&inters...") - iconName: "configure" + icon.name: "configure" } Action { id: manageMaterialsAction text: catalog.i18nc("@action:inmenu", "Manage Materials...") - iconName: "configure" + icon.name: "configure" shortcut: "Ctrl+K" } @@ -220,64 +219,64 @@ Item Action { - id: updateProfileAction; + id: updateProfileAction enabled: !Cura.MachineManager.stacksHaveErrors && Cura.MachineManager.hasUserSettings && Cura.MachineManager.activeQualityChangesGroup != null - text: catalog.i18nc("@action:inmenu menubar:profile","&Update profile with current settings/overrides"); - onTriggered: Cura.ContainerManager.updateQualityChanges(); + text: catalog.i18nc("@action:inmenu menubar:profile","&Update profile with current settings/overrides") + onTriggered: Cura.ContainerManager.updateQualityChanges() } Action { - id: resetProfileAction; + id: resetProfileAction enabled: Cura.MachineManager.hasUserSettings - text: catalog.i18nc("@action:inmenu menubar:profile", "&Discard current changes"); + text: catalog.i18nc("@action:inmenu menubar:profile", "&Discard current changes") onTriggered: { - forceActiveFocus(); - Cura.ContainerManager.clearUserContainers(); + forceActiveFocus() + Cura.ContainerManager.clearUserContainers() } } Action { - id: addProfileAction; + id: addProfileAction enabled: !Cura.MachineManager.stacksHaveErrors && Cura.MachineManager.hasUserSettings - text: catalog.i18nc("@action:inmenu menubar:profile", "&Create profile from current settings/overrides..."); + text: catalog.i18nc("@action:inmenu menubar:profile", "&Create profile from current settings/overrides...") } Action { id: manageProfilesAction text: catalog.i18nc("@action:inmenu menubar:profile", "Manage Profiles...") - iconName: "configure" + icon.name: "configure" shortcut: "Ctrl+J" } Action { - id: documentationAction; - text: catalog.i18nc("@action:inmenu menubar:help", "Show Online &Documentation"); - iconName: "help-contents"; - shortcut: StandardKey.Help; - onTriggered: CuraActions.openDocumentation(); + id: documentationAction + text: catalog.i18nc("@action:inmenu menubar:help", "Show Online &Documentation") + icon.name: "help-contents" + shortcut: StandardKey.Help + onTriggered: CuraActions.openDocumentation() } Action { - id: reportBugAction; - text: catalog.i18nc("@action:inmenu menubar:help", "Report a &Bug"); - iconName: "tools-report-bug"; - onTriggered: CuraActions.openBugReportPage(); + id: reportBugAction + text: catalog.i18nc("@action:inmenu menubar:help", "Report a &Bug") + icon.name: "tools-report-bug" + onTriggered: CuraActions.openBugReportPage() } Action { - id: whatsNewAction; - text: catalog.i18nc("@action:inmenu menubar:help", "What's New"); + id: whatsNewAction + text: catalog.i18nc("@action:inmenu menubar:help", "What's New") } Action { - id: aboutAction; + id: aboutAction //On MacOS, don't translate the "About" word. //Qt moves the "about" entry to a different place, and if it got renamed can't find it again when it @@ -286,60 +285,60 @@ Item //For more information, see: //- https://doc.qt.io/qt-5/macos-issues.html#menu-bar //- https://doc.qt.io/qt-5/qmenubar.html#qmenubar-as-a-global-menu-bar - text: (Qt.platform.os == "osx") ? "About..." : catalog.i18nc("@action:inmenu menubar:help", "About..."); - iconName: "help-about"; + text: (Qt.platform.os == "osx") ? "About..." : catalog.i18nc("@action:inmenu menubar:help", "About...") + icon.name: "help-about" } Action { - id: deleteSelectionAction; - text: catalog.i18nc("@action:inmenu menubar:edit", "Delete Selected"); - enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection; - iconName: "edit-delete"; + id: deleteSelectionAction + text: catalog.i18nc("@action:inmenu menubar:edit", "Delete Selected") + enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection + icon.name: "edit-delete" shortcut: StandardKey.Delete | "Backspace" - onTriggered: CuraActions.deleteSelection(); + onTriggered: CuraActions.deleteSelection() } Action { - id: centerSelectionAction; - text: catalog.i18nc("@action:inmenu menubar:edit", "Center Selected"); - enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection; - iconName: "align-vertical-center"; - onTriggered: CuraActions.centerSelection(); + id: centerSelectionAction + text: catalog.i18nc("@action:inmenu menubar:edit", "Center Selected") + enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection + icon.name: "align-vertical-center" + onTriggered: CuraActions.centerSelection() } Action { - id: multiplySelectionAction; - text: catalog.i18nc("@action:inmenu menubar:edit", "Multiply Selected"); - enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection; - iconName: "edit-duplicate"; + id: multiplySelectionAction + text: catalog.i18nc("@action:inmenu menubar:edit", "Multiply Selected") + enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection + icon.name: "edit-duplicate" shortcut: "Ctrl+M" } Action { - id: deleteObjectAction; - text: catalog.i18nc("@action:inmenu","Delete Model"); - enabled: UM.Controller.toolsEnabled; - iconName: "edit-delete"; + id: deleteObjectAction + text: catalog.i18nc("@action:inmenu","Delete Model") + enabled: UM.Controller.toolsEnabled + icon.name: "edit-delete" } Action { - id: centerObjectAction; - text: catalog.i18nc("@action:inmenu","Ce&nter Model on Platform"); + id: centerObjectAction + text: catalog.i18nc("@action:inmenu","Ce&nter Model on Platform") } Action { id: groupObjectsAction - text: catalog.i18nc("@action:inmenu menubar:edit","&Group Models"); + text: catalog.i18nc("@action:inmenu menubar:edit","&Group Models") enabled: UM.Selection.selectionCount > 1 ? true: false - iconName: "object-group" - shortcut: "Ctrl+G"; - onTriggered: CuraApplication.groupSelected(); + icon.name: "object-group" + shortcut: "Ctrl+G" + onTriggered: CuraApplication.groupSelected() } Action @@ -355,132 +354,132 @@ Item Action { id: unGroupObjectsAction - text: catalog.i18nc("@action:inmenu menubar:edit","Ungroup Models"); + text: catalog.i18nc("@action:inmenu menubar:edit","Ungroup Models") enabled: UM.Selection.isGroupSelected - iconName: "object-ungroup" - shortcut: "Ctrl+Shift+G"; - onTriggered: CuraApplication.ungroupSelected(); + icon.name: "object-ungroup" + shortcut: "Ctrl+Shift+G" + onTriggered: CuraApplication.ungroupSelected() } Action { id: mergeObjectsAction - text: catalog.i18nc("@action:inmenu menubar:edit","&Merge Models"); + text: catalog.i18nc("@action:inmenu menubar:edit","&Merge Models") enabled: UM.Selection.selectionCount > 1 ? true: false - iconName: "merge"; - shortcut: "Ctrl+Alt+G"; - onTriggered: CuraApplication.mergeSelected(); + icon.name: "merge" + shortcut: "Ctrl+Alt+G" + onTriggered: CuraApplication.mergeSelected() } Action { - id: multiplyObjectAction; - text: catalog.i18nc("@action:inmenu","&Multiply Model..."); - iconName: "edit-duplicate" + id: multiplyObjectAction + text: catalog.i18nc("@action:inmenu","&Multiply Model...") + icon.name: "edit-duplicate" } Action { - id: selectAllAction; - text: catalog.i18nc("@action:inmenu menubar:edit","Select All Models"); - enabled: UM.Controller.toolsEnabled; - iconName: "edit-select-all"; - shortcut: "Ctrl+A"; - onTriggered: CuraApplication.selectAll(); + id: selectAllAction + text: catalog.i18nc("@action:inmenu menubar:edit","Select All Models") + enabled: UM.Controller.toolsEnabled + icon.name: "edit-select-all" + shortcut: "Ctrl+A" + onTriggered: CuraApplication.selectAll() } Action { - id: deleteAllAction; - text: catalog.i18nc("@action:inmenu menubar:edit","Clear Build Plate"); - enabled: UM.Controller.toolsEnabled; - iconName: "edit-delete"; - shortcut: "Ctrl+D"; - onTriggered: CuraApplication.deleteAll(); + id: deleteAllAction + text: catalog.i18nc("@action:inmenu menubar:edit","Clear Build Plate") + enabled: UM.Controller.toolsEnabled + icon.name: "edit-delete" + shortcut: "Ctrl+D" + onTriggered: CuraApplication.deleteAll() } Action { - id: reloadAllAction; - text: catalog.i18nc("@action:inmenu menubar:file","Reload All Models"); - iconName: "document-revert"; + id: reloadAllAction + text: catalog.i18nc("@action:inmenu menubar:file","Reload All Models") + icon.name: "document-revert" shortcut: "F5" - onTriggered: CuraApplication.reloadAll(); + onTriggered: CuraApplication.reloadAll() } Action { - id: arrangeAllBuildPlatesAction; - text: catalog.i18nc("@action:inmenu menubar:edit","Arrange All Models To All Build Plates"); - onTriggered: Printer.arrangeObjectsToAllBuildPlates(); + id: arrangeAllBuildPlatesAction + text: catalog.i18nc("@action:inmenu menubar:edit","Arrange All Models To All Build Plates") + onTriggered: Printer.arrangeObjectsToAllBuildPlates() } Action { - id: arrangeAllAction; - text: catalog.i18nc("@action:inmenu menubar:edit","Arrange All Models"); - onTriggered: Printer.arrangeAll(); - shortcut: "Ctrl+R"; + id: arrangeAllAction + text: catalog.i18nc("@action:inmenu menubar:edit","Arrange All Models") + onTriggered: Printer.arrangeAll() + shortcut: "Ctrl+R" } Action { - id: arrangeSelectionAction; - text: catalog.i18nc("@action:inmenu menubar:edit","Arrange Selection"); - onTriggered: Printer.arrangeSelection(); + id: arrangeSelectionAction + text: catalog.i18nc("@action:inmenu menubar:edit","Arrange Selection") + onTriggered: Printer.arrangeSelection() } Action { - id: resetAllTranslationAction; - text: catalog.i18nc("@action:inmenu menubar:edit","Reset All Model Positions"); - onTriggered: CuraApplication.resetAllTranslation(); + id: resetAllTranslationAction + text: catalog.i18nc("@action:inmenu menubar:edit","Reset All Model Positions") + onTriggered: CuraApplication.resetAllTranslation() } Action { - id: resetAllAction; - text: catalog.i18nc("@action:inmenu menubar:edit","Reset All Model Transformations"); - onTriggered: CuraApplication.resetAll(); + id: resetAllAction + text: catalog.i18nc("@action:inmenu menubar:edit","Reset All Model Transformations") + onTriggered: CuraApplication.resetAll() } Action { - id: openAction; + id: openAction property var fileProviderModel: CuraApplication.getFileProviderModel() - text: catalog.i18nc("@action:inmenu menubar:file","&Open File(s)..."); - iconName: "document-open"; + text: catalog.i18nc("@action:inmenu menubar:file","&Open File(s)...") + icon.name: "document-open" // Unassign the shortcut when there are more than one file providers, since then the file provider's shortcut is // enabled instead, and Ctrl+O is assigned to the local file provider - shortcut: fileProviderModel.count == 1 ? StandardKey.Open : ""; + shortcut: fileProviderModel.count == 1 ? StandardKey.Open : "" } Action { id: newProjectAction - text: catalog.i18nc("@action:inmenu menubar:file","&New Project..."); + text: catalog.i18nc("@action:inmenu menubar:file","&New Project...") shortcut: StandardKey.New } Action { - id: showProfileFolderAction; - text: catalog.i18nc("@action:inmenu menubar:help","Show Configuration Folder"); + id: showProfileFolderAction + text: catalog.i18nc("@action:inmenu menubar:help","Show Configuration Folder") } Action { id: configureSettingVisibilityAction - text: catalog.i18nc("@action:menu", "Configure setting visibility..."); - iconName: "configure" + text: catalog.i18nc("@action:menu", "Configure setting visibility...") + icon.name: "configure" } Action { id: browsePackagesAction text: catalog.i18nc("@action:menu", "&Marketplace") - iconName: "plugins_browse" + icon.name: "plugins_browse" } } diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index f1fa4ed506..f959e62977 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -6,8 +6,8 @@ import QtQuick.Controls 1.4 import QtQuick.Layouts 1.1 import QtQuick.Dialogs 1.2 import QtGraphicalEffects 1.0 - -import UM 1.3 as UM +import QtQuick.Controls 2.15 as NewControls +import UM 1.5 as UM import Cura 1.1 as Cura import "Dialogs" @@ -160,7 +160,6 @@ UM.MainWindow ApplicationMenu { id: applicationMenu - window: base } Item diff --git a/resources/qml/MainWindow/ApplicationMenu.qml b/resources/qml/MainWindow/ApplicationMenu.qml index 5e1c80cd17..cb84e8be37 100644 --- a/resources/qml/MainWindow/ApplicationMenu.qml +++ b/resources/qml/MainWindow/ApplicationMenu.qml @@ -2,11 +2,10 @@ // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 -import QtQuick.Controls 1.4 -import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.4 import QtQuick.Dialogs 1.2 -import UM 1.3 as UM +import UM 1.5 as UM import Cura 1.1 as Cura import "../Menus" @@ -17,13 +16,48 @@ Item id: menu width: applicationMenu.width height: applicationMenu.height - property alias window: applicationMenu.window - UM.ApplicationMenu + Component + { + id: menuBarComponent + MenuBarItem + { + id: menuBarItem + + function replaceText(txt) + { + var index = txt.indexOf("&") + if(index >= 0) + { + txt = txt.replace(txt.substr(index, 2), ("" + txt.substr(index + 1, 1) +"")) + } + return txt + } + + contentItem: Label { + text: replaceText(menuBarItem.text) + color: "white" + verticalAlignment: Text.AlignVCenter + textFormat: Text.RichText + } + } + } + + MenuBar + { + id: applicationMenu + delegate: menuBarComponent + FileMenu {} + + EditMenu {} + ViewMenu {} + } + + /*UM.ApplicationMenu { id: applicationMenu - FileMenu { title: catalog.i18nc("@title:menu menubar:toplevel", "&File") } + //FileMenu { title: catalog.i18nc("@title:menu menubar:toplevel", "&File") } Menu { @@ -126,9 +160,10 @@ Item MenuItem { action: Cura.Actions.whatsNew } MenuItem { action: Cura.Actions.about } } - } + }*/ - Component + + /*Component { id: extensionsMenuItem @@ -214,5 +249,5 @@ Item curaExtensions.callExtensionMethod("Toolbox", "launch") curaExtensions.callExtensionMethod("Toolbox", "setViewCategoryToMaterials") } - } + }*/ } \ No newline at end of file diff --git a/resources/qml/Menus/EditMenu.qml b/resources/qml/Menus/EditMenu.qml new file mode 100644 index 0000000000..813b000aa6 --- /dev/null +++ b/resources/qml/Menus/EditMenu.qml @@ -0,0 +1,28 @@ +// Copyright (c) 2022 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 2.1 + +import UM 1.6 as UM +import Cura 1.0 as Cura + +Menu +{ + title: catalog.i18nc("@title:menu menubar:toplevel", "&Edit") + + UM.MenuItem { action: Cura.Actions.undo } + UM.MenuItem { action: Cura.Actions.redo } + MenuSeparator { } + UM.MenuItem { action: Cura.Actions.selectAll } + UM.MenuItem { action: Cura.Actions.arrangeAll } + UM.MenuItem { action: Cura.Actions.multiplySelection } + UM.MenuItem { action: Cura.Actions.deleteSelection } + UM.MenuItem { action: Cura.Actions.deleteAll } + UM.MenuItem { action: Cura.Actions.resetAllTranslation } + UM.MenuItem { action: Cura.Actions.resetAll } + MenuSeparator { } + UM.MenuItem { action: Cura.Actions.groupObjects } + UM.MenuItem { action: Cura.Actions.mergeObjects } + UM.MenuItem { action: Cura.Actions.unGroupObjects } +} \ No newline at end of file diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 681e0b06ce..a1a2d1aaec 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -1,8 +1,8 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2022 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 -import QtQuick.Controls 1.1 +import QtQuick.Controls 2.1 import UM 1.6 as UM import Cura 1.0 as Cura @@ -13,31 +13,34 @@ Menu title: catalog.i18nc("@title:menu menubar:toplevel", "&File") property var fileProviderModel: CuraApplication.getFileProviderModel() - MenuItem + + UM.MenuItem { id: newProjectMenu action: Cura.Actions.newProject } - MenuItem + UM.MenuItem { id: openMenu action: Cura.Actions.open - visible: (base.fileProviderModel.count == 1) + visible: base.fileProviderModel.count == 1 + height: visible ? implicitHeight: 0 } OpenFilesMenu { id: openFilesMenu - visible: (base.fileProviderModel.count > 1) + + shouldBeVisible: base.fileProviderModel.count > 1 } RecentFilesMenu { } - MenuItem + UM.MenuItem { id: saveWorkspaceMenu - shortcut: visible ? StandardKey.Save : "" + shortcut: StandardKey.Save text: catalog.i18nc("@title:menu menubar:file", "&Save Project...") visible: saveProjectMenu.model.count == 1 enabled: UM.WorkspaceFileHandler.enabled @@ -62,13 +65,13 @@ Menu { id: saveProjectMenu model: projectOutputDevicesModel - visible: model.count > 1 + shouldBeVisible: model.count > 1 enabled: UM.WorkspaceFileHandler.enabled } MenuSeparator { } - MenuItem + UM.MenuItem { id: saveAsMenu text: catalog.i18nc("@title:menu menubar:file", "&Export...") @@ -79,18 +82,18 @@ Menu } } - MenuItem + UM.MenuItem { id: exportSelectionMenu text: catalog.i18nc("@action:inmenu menubar:file", "Export Selection...") enabled: UM.Selection.hasSelection - iconName: "document-save-as" + icon.name: "document-save-as" onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", PrintInformation.jobName, { "filter_by_machine": false, "preferred_mimetypes": "application/vnd.ms-package.3dmanufacturing-3dmodel+xml"}) } MenuSeparator { } - MenuItem + UM.MenuItem { id: reloadAllMenu action: Cura.Actions.reloadAll @@ -98,5 +101,5 @@ Menu MenuSeparator { } - MenuItem { action: Cura.Actions.quit } + UM.MenuItem { action: Cura.Actions.quit } } diff --git a/resources/qml/Menus/OpenFilesMenu.qml b/resources/qml/Menus/OpenFilesMenu.qml index 25f474c1d6..0b6019c18d 100644 --- a/resources/qml/Menus/OpenFilesMenu.qml +++ b/resources/qml/Menus/OpenFilesMenu.qml @@ -1,25 +1,24 @@ -// Copyright (c) 2020 Ultimaker B.V. +// Copyright (c) 2022 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 -import QtQuick.Controls 1.1 +import QtQuick.Controls 2.1 import UM 1.6 as UM import Cura 1.0 as Cura import "../Dialogs" -Menu +UM.Menu { id: openFilesMenu title: catalog.i18nc("@title:menu menubar:file", "Open File(s)...") - iconName: "document-open-recent"; Instantiator { id: fileProviders model: CuraApplication.getFileProviderModel() - MenuItem + UM.MenuItem { text: { @@ -39,6 +38,7 @@ Menu // Unassign the shortcuts when the submenu is invisible (i.e. when there is only one file provider) to avoid ambiguous shortcuts. // When there is a single file provider, the openAction is assigned with the Ctrl+O shortcut instead. shortcut: openFilesMenu.visible ? model.shortcut : "" + visible: openFilesMenu.visible } onObjectAdded: openFilesMenu.insertItem(index, object) onObjectRemoved: openFilesMenu.removeItem(object) diff --git a/resources/qml/Menus/RecentFilesMenu.qml b/resources/qml/Menus/RecentFilesMenu.qml index de6d2e3817..24874c4365 100644 --- a/resources/qml/Menus/RecentFilesMenu.qml +++ b/resources/qml/Menus/RecentFilesMenu.qml @@ -1,8 +1,8 @@ -// Copyright (c) 2021 Ultimaker B.V. +// Copyright (c) 2022 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 -import QtQuick.Controls 1.1 +import QtQuick.Controls 2.1 import UM 1.3 as UM import Cura 1.0 as Cura @@ -13,7 +13,7 @@ Menu { id: menu title: catalog.i18nc("@title:menu menubar:file", "Open &Recent") - iconName: "document-open-recent"; + //iconName: "document-open-recent"; enabled: CuraApplication.recentFiles.length > 0; diff --git a/resources/qml/Menus/SaveProjectMenu.qml b/resources/qml/Menus/SaveProjectMenu.qml index afc6008717..3b7c3b9c01 100644 --- a/resources/qml/Menus/SaveProjectMenu.qml +++ b/resources/qml/Menus/SaveProjectMenu.qml @@ -1,15 +1,15 @@ -// Copyright (c) 2021 Ultimaker B.V. +// Copyright (c) 2022 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 -import QtQuick.Controls 1.1 +import QtQuick.Controls 2.1 import UM 1.6 as UM import Cura 1.1 as Cura import "../Dialogs" -Menu +UM.Menu { id: saveProjectMenu title: catalog.i18nc("@title:menu menubar:file", "Save Project...") @@ -18,7 +18,7 @@ Menu Instantiator { id: projectOutputDevices - MenuItem + UM.MenuItem { text: model.name onTriggered: diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index c46e9a9f08..f382958c1f 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -2,33 +2,34 @@ // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 -import QtQuick.Controls 1.1 +import QtQuick.Controls 2.1 -import UM 1.2 as UM +import UM 1.5 as UM import Cura 1.0 as Cura Menu { - title: catalog.i18nc("@title:menu menubar:toplevel", "&View") id: base - - property var multiBuildPlateModel: CuraApplication.getMultiBuildPlateModel() + title: catalog.i18nc("@title:menu menubar:toplevel", "&View") Menu { - title: catalog.i18nc("@action:inmenu menubar:view","&Camera position"); - MenuItem { action: Cura.Actions.view3DCamera; } - MenuItem { action: Cura.Actions.viewFrontCamera; } - MenuItem { action: Cura.Actions.viewTopCamera; } - MenuItem { action: Cura.Actions.viewBottomCamera; } - MenuItem { action: Cura.Actions.viewLeftSideCamera; } - MenuItem { action: Cura.Actions.viewRightSideCamera; } + title: catalog.i18nc("@action:inmenu menubar:view", "&Camera position") + UM.MenuItem { action: Cura.Actions.view3DCamera } + UM.MenuItem { action: Cura.Actions.viewFrontCamera } + UM.MenuItem { action: Cura.Actions.viewTopCamera } + UM.MenuItem { action: Cura.Actions.viewBottomCamera } + UM.MenuItem { action: Cura.Actions.viewLeftSideCamera } + UM.MenuItem { action: Cura.Actions.viewRightSideCamera } } Menu { id: cameraViewMenu + + title: catalog.i18nc("@action:inmenu menubar:view","Camera view") property string cameraMode: UM.Preferences.getValue("general/camera_perspective_mode") + Connections { target: UM.Preferences @@ -42,7 +43,6 @@ Menu } } - title: catalog.i18nc("@action:inmenu menubar:view","Camera view") MenuItem { text: catalog.i18nc("@action:inmenu menubar:view", "Perspective") @@ -52,8 +52,9 @@ Menu { UM.Preferences.setValue("general/camera_perspective_mode", "perspective") } - exclusiveGroup: group + //exclusiveGroup: group } + MenuItem { text: catalog.i18nc("@action:inmenu menubar:view", "Orthographic") @@ -63,45 +64,14 @@ Menu { UM.Preferences.setValue("general/camera_perspective_mode", "orthographic") } - exclusiveGroup: group - } - ExclusiveGroup { id: group } - } - - MenuSeparator - { - visible: UM.Preferences.getValue("cura/use_multi_build_plate") - } - - Menu - { - id: buildPlateMenu; - title: catalog.i18nc("@action:inmenu menubar:view","&Build plate") - visible: UM.Preferences.getValue("cura/use_multi_build_plate") - Instantiator - { - model: base.multiBuildPlateModel - MenuItem - { - text: base.multiBuildPlateModel.getItem(index).name; - onTriggered: Cura.SceneController.setActiveBuildPlate(base.multiBuildPlateModel.getItem(index).buildPlateNumber) - checkable: true - checked: base.multiBuildPlateModel.getItem(index).buildPlateNumber == base.multiBuildPlateModel.activeBuildPlate - exclusiveGroup: buildPlateGroup - visible: UM.Preferences.getValue("cura/use_multi_build_plate") - } - onObjectAdded: buildPlateMenu.insertItem(index, object) - onObjectRemoved: buildPlateMenu.removeItem(object) - } - ExclusiveGroup - { - id: buildPlateGroup + //exclusiveGroup: group } + //ExclusiveGroup { id: group } } MenuSeparator {} - MenuItem + UM.MenuItem { action: Cura.Actions.toggleFullScreen }