mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-29 15:25:02 +08:00
487 lines
15 KiB
QML
487 lines
15 KiB
QML
// Copyright (c) 2021 Ultimaker B.V.
|
|
// Cura is released under the terms of the LGPLv3 or higher.
|
|
|
|
pragma Singleton
|
|
|
|
import QtQuick 2.10
|
|
import QtQuick.Controls 1.1
|
|
import QtQuick.Controls 2.3 as Controls2
|
|
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 showTroubleshooting: showTroubleShootingAction
|
|
property alias reportBug: reportBugAction;
|
|
property alias whatsNew: whatsNewAction
|
|
property alias about: aboutAction;
|
|
|
|
property alias toggleFullScreen: toggleFullScreenAction;
|
|
property alias exitFullScreen: exitFullScreenAction
|
|
|
|
property alias configureSettingVisibility: configureSettingVisibilityAction
|
|
|
|
property alias browsePackages: browsePackagesAction
|
|
|
|
UM.I18nCatalog{id: catalog; name: "cura"}
|
|
|
|
|
|
Action
|
|
{
|
|
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");
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: toggleFullScreenAction
|
|
shortcut: StandardKey.FullScreen
|
|
text: catalog.i18nc("@action:inmenu", "Toggle Full Screen")
|
|
iconName: "view-fullscreen"
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: exitFullScreenAction
|
|
shortcut: StandardKey.Cancel
|
|
text: catalog.i18nc("@action:inmenu", "Exit Full Screen")
|
|
iconName: "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;
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: quitAction
|
|
|
|
//On MacOS, don't translate the "Quit" word.
|
|
//Qt moves the "quit" entry to a different place, and if it got renamed can't find it again when it attempts to
|
|
//delete the item upon closing the application, causing a crash.
|
|
//In the new location, these items are translated automatically according to the system's language.
|
|
//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") ? "&Quit" : catalog.i18nc("@action:inmenu menubar:file", "&Quit")
|
|
iconName: "application-exit"
|
|
shortcut: StandardKey.Quit
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: view3DCameraAction
|
|
text: catalog.i18nc("@action:inmenu menubar:view", "3D View")
|
|
onTriggered: UM.Controller.setCameraRotation("3d", 0)
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: viewFrontCameraAction
|
|
text: catalog.i18nc("@action:inmenu menubar:view", "Front View")
|
|
onTriggered: UM.Controller.setCameraRotation("home", 0)
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: viewTopCameraAction
|
|
text: catalog.i18nc("@action:inmenu menubar:view", "Top View")
|
|
onTriggered: UM.Controller.setCameraRotation("y", 90)
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: viewBottomCameraAction
|
|
text: catalog.i18nc("@action:inmenu menubar:view", "Bottom View")
|
|
onTriggered: UM.Controller.setCameraRotation("y", -90)
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: viewLeftSideCameraAction
|
|
text: catalog.i18nc("@action:inmenu menubar:view", "Left Side View")
|
|
onTriggered: UM.Controller.setCameraRotation("x", 90)
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: viewRightSideCameraAction
|
|
text: catalog.i18nc("@action:inmenu menubar:view", "Right Side View")
|
|
onTriggered: UM.Controller.setCameraRotation("x", -90)
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: preferencesAction
|
|
//On MacOS, don't translate the "Configure" word.
|
|
//Qt moves the "configure" entry to a different place, and if it got renamed can't find it again when it
|
|
//attempts to delete the item upon closing the application, causing a crash.
|
|
//In the new location, these items are translated automatically according to the system's language.
|
|
//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") ? "Configure Cura..." : catalog.i18nc("@action:inmenu", "Configure Cura...")
|
|
iconName: "configure"
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: addMachineAction
|
|
text: catalog.i18nc("@action:inmenu menubar:printer", "&Add Printer...")
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: settingsAction
|
|
text: catalog.i18nc("@action:inmenu menubar:printer", "Manage Pr&inters...")
|
|
iconName: "configure"
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: manageMaterialsAction
|
|
text: catalog.i18nc("@action:inmenu", "Manage Materials...")
|
|
iconName: "configure"
|
|
shortcut: "Ctrl+K"
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: marketplaceMaterialsAction
|
|
text: catalog.i18nc("@action:inmenu", "Add more materials from Marketplace")
|
|
}
|
|
|
|
Action
|
|
{
|
|
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();
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: resetProfileAction;
|
|
enabled: Cura.MachineManager.hasUserSettings
|
|
text: catalog.i18nc("@action:inmenu menubar:profile", "&Discard current changes");
|
|
onTriggered:
|
|
{
|
|
forceActiveFocus();
|
|
Cura.ContainerManager.clearUserContainers();
|
|
}
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: addProfileAction;
|
|
enabled: !Cura.MachineManager.stacksHaveErrors && Cura.MachineManager.hasUserSettings
|
|
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"
|
|
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();
|
|
}
|
|
|
|
Action {
|
|
id: reportBugAction;
|
|
text: catalog.i18nc("@action:inmenu menubar:help", "Report a &Bug");
|
|
iconName: "tools-report-bug";
|
|
onTriggered: CuraActions.openBugReportPage();
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: whatsNewAction;
|
|
text: catalog.i18nc("@action:inmenu menubar:help", "What's New");
|
|
}
|
|
|
|
Action
|
|
{
|
|
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
|
|
//attempts to delete the item upon closing the application, causing a crash.
|
|
//In the new location, these items are translated automatically according to the system's language.
|
|
//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";
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: deleteSelectionAction;
|
|
text: catalog.i18nc("@action:inmenu menubar:edit", "Delete Selected");
|
|
enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection;
|
|
iconName: "edit-delete";
|
|
shortcut: StandardKey.Delete | "Backspace"
|
|
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();
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: multiplySelectionAction;
|
|
text: catalog.i18nc("@action:inmenu menubar:edit", "Multiply Selected");
|
|
enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection;
|
|
iconName: "edit-duplicate";
|
|
shortcut: "Ctrl+M"
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: deleteObjectAction;
|
|
text: catalog.i18nc("@action:inmenu","Delete Model");
|
|
enabled: UM.Controller.toolsEnabled;
|
|
iconName: "edit-delete";
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: centerObjectAction;
|
|
text: catalog.i18nc("@action:inmenu","Ce&nter Model on Platform");
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: groupObjectsAction
|
|
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();
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: reloadQmlAction
|
|
onTriggered:
|
|
{
|
|
CuraApplication.reloadQML()
|
|
}
|
|
shortcut: "Shift+F5"
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: unGroupObjectsAction
|
|
text: catalog.i18nc("@action:inmenu menubar:edit","Ungroup Models");
|
|
enabled: UM.Selection.isGroupSelected
|
|
iconName: "object-ungroup"
|
|
shortcut: "Ctrl+Shift+G";
|
|
onTriggered: CuraApplication.ungroupSelected();
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: mergeObjectsAction
|
|
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();
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: multiplyObjectAction;
|
|
text: catalog.i18nc("@action:inmenu","&Multiply Model...");
|
|
iconName: "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();
|
|
}
|
|
|
|
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();
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: reloadAllAction;
|
|
text: catalog.i18nc("@action:inmenu menubar:file","Reload All Models");
|
|
iconName: "document-revert";
|
|
shortcut: "F5"
|
|
onTriggered: CuraApplication.reloadAll();
|
|
}
|
|
|
|
Action
|
|
{
|
|
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";
|
|
}
|
|
|
|
Action
|
|
{
|
|
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();
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: resetAllAction;
|
|
text: catalog.i18nc("@action:inmenu menubar:edit","Reset All Model Transformations");
|
|
onTriggered: CuraApplication.resetAll();
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: openAction;
|
|
property var fileProviderModel: CuraApplication.getFileProviderModel()
|
|
|
|
text: catalog.i18nc("@action:inmenu menubar:file","&Open File(s)...");
|
|
iconName: "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 : "";
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: newProjectAction
|
|
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");
|
|
}
|
|
|
|
|
|
Action
|
|
{
|
|
id: configureSettingVisibilityAction
|
|
text: catalog.i18nc("@action:menu", "Configure setting visibility...");
|
|
iconName: "configure"
|
|
}
|
|
|
|
Action
|
|
{
|
|
id: browsePackagesAction
|
|
text: catalog.i18nc("@action:menu", "&Marketplace")
|
|
iconName: "plugins_browse"
|
|
}
|
|
}
|