mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-24 06:39:38 +08:00

To denote the hotkey assigned with each menu item an ampersand is used in the configuration. This ampersand was previously rendered directly to the screen due to the `UM.Label`. This is now correctly replaced by an underline. CURA-8688
133 lines
4.1 KiB
QML
133 lines
4.1 KiB
QML
// Copyright (c) 2022 Ultimaker B.V.
|
|
// Cura is released under the terms of the LGPLv3 or higher.
|
|
|
|
import QtQuick 2.7
|
|
import QtQuick.Controls 2.4
|
|
|
|
import UM 1.5 as UM
|
|
import Cura 1.1 as Cura
|
|
|
|
import "../Menus"
|
|
import "../Dialogs"
|
|
|
|
Item
|
|
{
|
|
id: menu
|
|
width: parent.width
|
|
height: applicationMenu.height
|
|
|
|
MenuBar
|
|
{
|
|
id: applicationMenu
|
|
width: parent.width
|
|
height: UM.Theme.getSize("context_menu").height
|
|
|
|
background: Rectangle {
|
|
color: UM.Theme.getColor("background_1")
|
|
}
|
|
|
|
delegate: MenuBarItem
|
|
{
|
|
id: menuBarItem
|
|
|
|
contentItem: UM.Label
|
|
{
|
|
text: menuBarItem.text.replace(new RegExp("&([A-Za-z])"), function (match, character)
|
|
{
|
|
return `<u>${character}</u>`;
|
|
})
|
|
horizontalAlignment: Text.AlignLeft
|
|
verticalAlignment: Text.AlignVCenter
|
|
}
|
|
|
|
background: Rectangle
|
|
{
|
|
color: menuBarItem.highlighted ? UM.Theme.getColor("background_2") : "transparent"
|
|
}
|
|
}
|
|
|
|
FileMenu {}
|
|
EditMenu {}
|
|
ViewMenu {}
|
|
SettingsMenu
|
|
{
|
|
//On MacOS, don't translate the "Settings" word.
|
|
//Qt moves the "settings" 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
|
|
title: (Qt.platform.os == "osx") ? "&Settings" : catalog.i18nc("@title:menu menubar:toplevel", "&Settings")
|
|
}
|
|
ExtensionMenu { id: extensionMenu }
|
|
PreferencesMenu {}
|
|
HelpMenu {}
|
|
}
|
|
|
|
|
|
|
|
// ###############################################################################################
|
|
// Definition of other components that are linked to the menus
|
|
// ###############################################################################################
|
|
|
|
WorkspaceSummaryDialog
|
|
{
|
|
id: saveWorkspaceDialog
|
|
property var args
|
|
onAccepted: UM.OutputDeviceManager.requestWriteToDevice("local_file", PrintInformation.jobName, args)
|
|
}
|
|
|
|
Cura.MessageDialog
|
|
{
|
|
id: newProjectDialog
|
|
|
|
title: catalog.i18nc("@title:window", "New project")
|
|
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.")
|
|
standardButtons: Dialog.Yes | Dialog.No
|
|
onAccepted:
|
|
{
|
|
CuraApplication.resetWorkspace()
|
|
Cura.Actions.resetProfile.trigger()
|
|
UM.Controller.setActiveStage("PrepareStage")
|
|
}
|
|
}
|
|
|
|
// ###############################################################################################
|
|
// Definition of all the connections
|
|
// ###############################################################################################
|
|
|
|
Connections
|
|
{
|
|
target: Cura.Actions.newProject
|
|
function onTriggered()
|
|
{
|
|
if(Printer.platformActivity || Cura.MachineManager.hasUserSettings)
|
|
{
|
|
newProjectDialog.visible = true
|
|
}
|
|
}
|
|
}
|
|
|
|
// show the Toolbox
|
|
Connections
|
|
{
|
|
target: Cura.Actions.browsePackages
|
|
function onTriggered()
|
|
{
|
|
extensionMenu.extensionModel.callExtensionMethod("Marketplace", "show")
|
|
}
|
|
}
|
|
|
|
// Show the Marketplace dialog at the materials tab
|
|
Connections
|
|
{
|
|
target: Cura.Actions.marketplaceMaterials
|
|
function onTriggered()
|
|
{
|
|
extensionMenu.extensionModel.callExtensionMethod("Marketplace", "show")
|
|
extensionMenu.extensionModel.callExtensionMethod("Marketplace", "setVisibleTabToMaterials")
|
|
}
|
|
}
|
|
}
|