Browse Source

Switch out the file, view and edit menu for controls 2

CURA-8683
Jaime van Kessel 3 years ago
parent
commit
052898ce21

+ 174 - 175
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 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 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 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 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 preferences: preferencesAction;
-
-    property alias showProfileFolder: showProfileFolderAction;
-    property alias documentation: documentationAction;
+    property alias newProject: newProjectAction
+    property alias open: openAction
+    property alias quit: quitAction
+
+    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 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 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 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 preferences: preferencesAction
+
+    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"
     }
 }

+ 2 - 3
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

+ 44 - 9
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), ("<u>" + txt.substr(index + 1, 1) +"</u>"))
+                }
+                return txt
+            }
+
+            contentItem: Label {
+                text: replaceText(menuBarItem.text)
+                color: "white"
+                verticalAlignment: Text.AlignVCenter
+                textFormat: Text.RichText
+            }
+        }
+    }
+
+    MenuBar
     {
         id: applicationMenu
+        delegate: menuBarComponent
+        FileMenu {}
+
+        EditMenu {}
+        ViewMenu {}
+    }
 
-        FileMenu { title: catalog.i18nc("@title:menu menubar:toplevel", "&File") }
+    /*UM.ApplicationMenu
+    {
+        id: applicationMenu
+
+        //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")
         }
-    }
+    }*/
 }

+ 28 - 0
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 }
+}

+ 17 - 14
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 }
 }

+ 5 - 5
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)

+ 3 - 3
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;
 

+ 4 - 4
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:

+ 18 - 48
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
     }