Update the settings menu to controls 2

CURA-8683
This commit is contained in:
Jaime van Kessel 2022-01-11 10:31:39 +01:00
parent 770f6f94c9
commit 2bad5c5cd3
8 changed files with 121 additions and 140 deletions

View file

@ -51,6 +51,19 @@ Item
EditMenu {} EditMenu {}
ViewMenu {} 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")
}
} }
/*UM.ApplicationMenu /*UM.ApplicationMenu

View file

@ -1,25 +0,0 @@
// Copyright (c) 2018 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.2
import QtQuick.Controls 1.4
import UM 1.2 as UM
import Cura 1.0 as Cura
Instantiator
{
model: Cura.GlobalStacksModel {}
MenuItem
{
text: model.name
checkable: true
checked: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id == model.id: false
exclusiveGroup: group
visible: !model.hasRemoteConnection
onTriggered: Cura.MachineManager.setActiveMachine(model.id)
}
onObjectAdded: menu.insertItem(index, object)
onObjectRemoved: menu.removeItem(object)
}

View file

@ -1,13 +1,13 @@
//Copyright (c) 2020 Ultimaker B.V. //Copyright (c) 2022 Ultimaker B.V.
//Cura is released under the terms of the LGPLv3 or higher. //Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.7 import QtQuick 2.7
import QtQuick.Controls 1.4 import QtQuick.Controls 2.4
import UM 1.2 as UM import UM 1.6 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura
Menu UM.Menu
{ {
id: menu id: menu
title: catalog.i18nc("@label:category menu label", "Material") title: catalog.i18nc("@label:category menu label", "Material")
@ -49,23 +49,24 @@ Menu
enabled: updateModels enabled: updateModels
} }
MenuItem UM.MenuItem
{ {
text: catalog.i18nc("@label:category menu label", "Favorites") text: catalog.i18nc("@label:category menu label", "Favorites")
enabled: false enabled: false
visible: favoriteMaterialsModel.items.length > 0 visible: favoriteMaterialsModel.items.length > 0
height: visible ? implicitHeight: 0
} }
Instantiator Instantiator
{ {
model: favoriteMaterialsModel model: favoriteMaterialsModel
delegate: MenuItem delegate: UM.MenuItem
{ {
text: model.brand + " " + model.name text: model.brand + " " + model.name
checkable: true checkable: true
enabled: isActiveExtruderEnabled enabled: isActiveExtruderEnabled
checked: model.root_material_id === menu.currentRootMaterialId checked: model.root_material_id === menu.currentRootMaterialId
onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node) onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node)
exclusiveGroup: favoriteGroup // One favorite and one item from the others can be active at the same time.
} }
onObjectAdded: menu.insertItem(index, object) onObjectAdded: menu.insertItem(index, object)
onObjectRemoved: menu.removeItem(index) onObjectRemoved: menu.removeItem(index)
@ -81,13 +82,12 @@ Menu
Instantiator Instantiator
{ {
model: genericMaterialsModel model: genericMaterialsModel
delegate: MenuItem delegate: UM.MenuItem
{ {
text: model.name text: model.name
checkable: true checkable: true
enabled: isActiveExtruderEnabled enabled: isActiveExtruderEnabled
checked: model.root_material_id === menu.currentRootMaterialId checked: model.root_material_id === menu.currentRootMaterialId
exclusiveGroup: group
onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node) onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node)
} }
onObjectAdded: genericMenu.insertItem(index, object) onObjectAdded: genericMenu.insertItem(index, object)
@ -100,7 +100,7 @@ Menu
Instantiator Instantiator
{ {
model: brandModel model: brandModel
Menu UM.Menu
{ {
id: brandMenu id: brandMenu
title: brandName title: brandName
@ -120,47 +120,37 @@ Menu
Instantiator Instantiator
{ {
model: brandMaterialColors model: brandMaterialColors
delegate: MenuItem delegate: UM.MenuItem
{ {
text: model.name text: model.name
checkable: true checkable: true
enabled: isActiveExtruderEnabled enabled: isActiveExtruderEnabled
checked: model.id === menu.activeMaterialId checked: model.id === menu.activeMaterialId
exclusiveGroup: group
onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node) onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node)
} }
onObjectAdded: brandMaterialsMenu.insertItem(index, object) onObjectAdded: brandMaterialsMenu.insertItem(index, object)
onObjectRemoved: brandMaterialsMenu.removeItem(object) onObjectRemoved: brandMaterialsMenu.removeItem(object)
} }
} }
onObjectAdded: brandMenu.insertItem(index, object) onObjectAdded: brandMenu.insertMenu(index, object)
onObjectRemoved: brandMenu.removeItem(object) onObjectRemoved: brandMenu.removeMenu(object)
} }
} }
onObjectAdded: menu.insertItem(index, object) onObjectAdded: menu.insertMenu(index, object)
onObjectRemoved: menu.removeItem(object) onObjectRemoved: menu.removeMenu(object)
}
ExclusiveGroup
{
id: group
}
ExclusiveGroup
{
id: favoriteGroup
} }
MenuSeparator {} MenuSeparator {}
MenuItem UM.MenuItem
{ {
action: Cura.Actions.manageMaterials action: Cura.Actions.manageMaterials
} }
MenuSeparator {} MenuSeparator {}
MenuItem UM.MenuItem
{ {
action: Cura.Actions.marketplaceMaterials action: Cura.Actions.marketplaceMaterials
} }

View file

@ -1,32 +0,0 @@
// Copyright (c) 2018 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.2
import QtQuick.Controls 1.4
import UM 1.2 as UM
import Cura 1.0 as Cura
Instantiator
{
model: Cura.GlobalStacksModel {}
MenuItem
{
property string connectGroupName:
{
if("group_name" in model.metadata)
{
return model.metadata["group_name"]
}
return ""
}
text: connectGroupName
checkable: true
visible: model.hasRemoteConnection
checked: Cura.MachineManager.activeMachineNetworkGroupName == connectGroupName
exclusiveGroup: group
onTriggered: Cura.MachineManager.setActiveMachine(model.id)
}
onObjectAdded: menu.insertItem(index, object)
onObjectRemoved: menu.removeItem(object)
}

View file

@ -1,15 +1,15 @@
// Copyright (c) 2017 Ultimaker B.V. // Copyright (c) 2022 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher. // Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.10 import QtQuick 2.10
import QtQuick.Controls 1.4 import QtQuick.Controls 2.4
import UM 1.2 as UM import UM 1.5 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura
Menu UM.Menu
{ {
id: menu id: nozzleMenu
title: "Nozzle" title: "Nozzle"
property int extruderIndex: 0 property int extruderIndex: 0
@ -23,12 +23,13 @@ Menu
{ {
model: nozzleModel model: nozzleModel
MenuItem UM.MenuItem
{ {
text: model.hotend_name text: model.hotend_name
checkable: true checkable: true
checked: { property var activeMachine: Cura.MachineManager.activeMachine
var activeMachine = Cura.MachineManager.activeMachine checked:
{
if (activeMachine === null) if (activeMachine === null)
{ {
return false return false
@ -36,10 +37,8 @@ Menu
var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex] var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex]
return (extruder === undefined) ? false : (extruder.variant.name == model.hotend_name) return (extruder === undefined) ? false : (extruder.variant.name == model.hotend_name)
} }
exclusiveGroup: group
enabled: enabled:
{ {
var activeMachine = Cura.MachineManager.activeMachine
if (activeMachine === null) if (activeMachine === null)
{ {
return false return false
@ -47,14 +46,14 @@ Menu
var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex] var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex]
return (extruder === undefined) ? false : extruder.isEnabled return (extruder === undefined) ? false : extruder.isEnabled
} }
onTriggered: { onTriggered:Cura.MachineManager.setVariant(nozzleMenu.extruderIndex, model.container_node)
Cura.MachineManager.setVariant(menu.extruderIndex, model.container_node);
}
} }
onObjectAdded: menu.insertItem(index, object); onObjectAdded:
onObjectRemoved: menu.removeItem(object); {
nozzleMenu.insertItem(index, object)
}
onObjectRemoved: nozzleMenu.removeItem(object)
} }
ExclusiveGroup { id: group }
} }

View file

@ -1,60 +1,89 @@
// Copyright (c) 2018 Ultimaker B.V. // Copyright (c) 2022 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher. // Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.2 import QtQuick 2.2
import QtQuick.Controls 1.4 import QtQuick.Controls 2.4
import UM 1.2 as UM import UM 1.6 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura
Menu Menu
{ {
id: menu id: menu
// TODO Enable custom style to the menu
// style: MenuStyle
// {
// frame: Rectangle
// {
// color: "white"
// }
// }
MenuItem UM.MenuItem
{ {
id: networkEnabledPrinterItem
text: catalog.i18nc("@label:category menu label", "Network enabled printers") text: catalog.i18nc("@label:category menu label", "Network enabled printers")
enabled: false enabled: false
visible: networkPrinterMenu.count > 0 visible: networKPrinterInstantiator.count > 0
} }
NetworkPrinterMenu Instantiator
{ {
id: networkPrinterMenu id: networKPrinterInstantiator
model: Cura.GlobalStacksModel {filterOnlineOnly: true}
UM.MenuItem
{
property string connectGroupName:
{
if("group_name" in model.metadata)
{
return model.metadata["group_name"]
}
return ""
}
text: connectGroupName
checkable: true
checked: Cura.MachineManager.activeMachineNetworkGroupName == connectGroupName
onTriggered:
{
print(typeof(model.id))
Cura.MachineManager.someFunction("YAY")
Cura.MachineManager.setActiveMachine(model.id)
}
}
onObjectAdded: menu.insertItem(2, object)
onObjectRemoved: menu.removeItem(object)
} }
MenuSeparator MenuSeparator
{ {
visible: networkPrinterMenu.count > 0 visible: networKPrinterInstantiator.count > 0
} }
MenuItem UM.MenuItem
{
text: catalog.i18nc("@label:category menu label", "Local printers")
enabled: false
visible: localPrinterMenu.count > 0
}
LocalPrinterMenu
{ {
id: localPrinterMenu id: localPrinterMenu
text: catalog.i18nc("@label:category menu label", "Local printers")
enabled: false
visible: localPrinterInstantiator.count > 0
} }
ExclusiveGroup { id: group; } Instantiator
{
id: localPrinterInstantiator
model: Cura.GlobalStacksModel {}
UM.MenuItem
{
text: model.name
checkable: true
checked: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id == model.id: false
visible: !model.hasRemoteConnection
height: visible ? implicitHeight: 0
onTriggered: Cura.MachineManager.setActiveMachine(model.id)
}
// A bit hackish, but we have 2 items at the end, put them before that
onObjectAdded: menu.insertItem(menu.count - 2, object)
onObjectRemoved: menu.removeItem(object)
}
MenuSeparator MenuSeparator
{ {
visible: localPrinterMenu.count > 0 visible: localPrinterInstantiator.count > 0
} }
MenuItem { action: Cura.Actions.addMachine; } UM.MenuItem { action: Cura.Actions.addMachine }
MenuItem { action: Cura.Actions.configureMachines; } UM.MenuItem { action: Cura.Actions.configureMachines }
} }

View file

@ -2,9 +2,9 @@
//Cura is released under the terms of the LGPLv3 or higher. //Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.2 import QtQuick 2.2
import QtQuick.Controls 1.4 import QtQuick.Controls 2.4
import UM 1.2 as UM import UM 1.5 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura
Menu Menu
@ -23,11 +23,16 @@ Menu
{ {
title: modelData.name title: modelData.name
property var extruder: (base.activeMachine === null) ? null : activeMachine.extruderList[model.index] property var extruder: (base.activeMachine === null) ? null : activeMachine.extruderList[model.index]
NozzleMenu { title: Cura.MachineManager.activeDefinitionVariantsName; visible: Cura.MachineManager.activeMachine.hasVariants; extruderIndex: index } NozzleMenu
{
title: Cura.MachineManager.activeDefinitionVariantsName
shouldBeVisible: activeMachine.hasVariants
extruderIndex: index
}
MaterialMenu MaterialMenu
{ {
title: catalog.i18nc("@title:menu", "&Material") title: catalog.i18nc("@title:menu", "&Material")
visible: Cura.MachineManager.activeMachine.hasMaterials shouldBeVisible: activeMachine.hasMaterials
extruderIndex: index extruderIndex: index
updateModels: false updateModels: false
onAboutToShow: updateModels = true onAboutToShow: updateModels = true
@ -39,33 +44,34 @@ Menu
visible: Cura.MachineManager.activeMachine.hasVariants || Cura.MachineManager.activeMachine.hasMaterials visible: Cura.MachineManager.activeMachine.hasVariants || Cura.MachineManager.activeMachine.hasMaterials
} }
MenuItem UM.MenuItem
{ {
text: catalog.i18nc("@action:inmenu", "Set as Active Extruder") text: catalog.i18nc("@action:inmenu", "Set as Active Extruder")
onTriggered: Cura.ExtruderManager.setActiveExtruderIndex(model.index) onTriggered: Cura.ExtruderManager.setActiveExtruderIndex(model.index)
} }
MenuItem UM.MenuItem
{ {
text: catalog.i18nc("@action:inmenu", "Enable Extruder") text: catalog.i18nc("@action:inmenu", "Enable Extruder")
onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, true) onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, true)
visible: (extruder === null || extruder === undefined) ? false : !extruder.isEnabled visible: (extruder === null || extruder === undefined) ? false : !extruder.isEnabled
height: visible ? implicitHeight: 0
} }
MenuItem UM.MenuItem
{ {
text: catalog.i18nc("@action:inmenu", "Disable Extruder") text: catalog.i18nc("@action:inmenu", "Disable Extruder")
onTriggered: Cura.MachineManager.setExtruderEnabled(index, false) onTriggered: Cura.MachineManager.setExtruderEnabled(index, false)
visible: (extruder === null || extruder === undefined) ? false : extruder.isEnabled visible: (extruder === null || extruder === undefined) ? false : extruder.isEnabled
enabled: Cura.MachineManager.numberExtrudersEnabled > 1 enabled: Cura.MachineManager.numberExtrudersEnabled > 1
height: visible ? implicitHeight: 0
} }
} }
onObjectAdded: base.insertItem(index, object) onObjectAdded: base.insertMenu(index, object)
onObjectRemoved: base.removeItem(object) onObjectRemoved: base.removeMenu(object)
} }
MenuSeparator { } MenuSeparator { }
MenuItem { action: Cura.Actions.configureSettingVisibility } UM.MenuItem { action: Cura.Actions.configureSettingVisibility }
} }

View file

@ -15,6 +15,7 @@ MenuItem
implicitHeight: UM.Theme.getSize("setting_control").height + UM.Theme.getSize("narrow_margin").height implicitHeight: UM.Theme.getSize("setting_control").height + UM.Theme.getSize("narrow_margin").height
opacity: enabled ? 1.0 : 0.5 opacity: enabled ? 1.0 : 0.5
height: visible ? implicitHeight: 0
arrow: UM.RecolorImage arrow: UM.RecolorImage
{ {