mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-11 18:49:01 +08:00
Move all the menus to individual QML files to make it easier to reuse them
Contributes to CURA-342
This commit is contained in:
parent
a746710e26
commit
842015ea10
@ -10,6 +10,8 @@ import QtQuick.Dialogs 1.1
|
|||||||
import UM 1.2 as UM
|
import UM 1.2 as UM
|
||||||
import Cura 1.0 as Cura
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
|
import "Menus"
|
||||||
|
|
||||||
UM.MainWindow
|
UM.MainWindow
|
||||||
{
|
{
|
||||||
id: base
|
id: base
|
||||||
@ -417,14 +419,9 @@ UM.MainWindow
|
|||||||
{
|
{
|
||||||
id: view_panel
|
id: view_panel
|
||||||
|
|
||||||
//anchors.left: parent.left;
|
|
||||||
//anchors.right: parent.right;
|
|
||||||
//anchors.bottom: parent.bottom
|
|
||||||
anchors.top: viewModeButton.bottom
|
anchors.top: viewModeButton.bottom
|
||||||
anchors.topMargin: UM.Theme.getSize("default_margin").height;
|
anchors.topMargin: UM.Theme.getSize("default_margin").height;
|
||||||
anchors.left: viewModeButton.left;
|
anchors.left: viewModeButton.left;
|
||||||
//anchors.bottom: buttons.top;
|
|
||||||
//anchors.bottomMargin: UM.Theme.getSize("default_margin").height;
|
|
||||||
|
|
||||||
height: childrenRect.height;
|
height: childrenRect.height;
|
||||||
|
|
||||||
@ -434,7 +431,6 @@ UM.MainWindow
|
|||||||
Button
|
Button
|
||||||
{
|
{
|
||||||
id: openFileButton;
|
id: openFileButton;
|
||||||
//style: UM.Backend.progress < 0 ? UM.Theme.styles.open_file_button : UM.Theme.styles.tool_button;
|
|
||||||
text: catalog.i18nc("@action:button","Open File");
|
text: catalog.i18nc("@action:button","Open File");
|
||||||
iconSource: UM.Theme.getIcon("load")
|
iconSource: UM.Theme.getIcon("load")
|
||||||
style: UM.Theme.styles.tool_button
|
style: UM.Theme.styles.tool_button
|
||||||
@ -442,9 +438,7 @@ UM.MainWindow
|
|||||||
anchors
|
anchors
|
||||||
{
|
{
|
||||||
top: parent.top;
|
top: parent.top;
|
||||||
//topMargin: UM.Theme.getSize("loadfile_margin").height
|
|
||||||
left: parent.left;
|
left: parent.left;
|
||||||
//leftMargin: UM.Theme.getSize("loadfile_margin").width
|
|
||||||
}
|
}
|
||||||
action: Cura.Actions.open;
|
action: Cura.Actions.open;
|
||||||
}
|
}
|
||||||
@ -484,27 +478,7 @@ UM.MainWindow
|
|||||||
|
|
||||||
style: UM.Theme.styles.tool_button;
|
style: UM.Theme.styles.tool_button;
|
||||||
tooltip: '';
|
tooltip: '';
|
||||||
menu: Menu
|
menu: ViewMenu { }
|
||||||
{
|
|
||||||
id: viewMenu;
|
|
||||||
Instantiator
|
|
||||||
{
|
|
||||||
id: viewMenuInstantiator
|
|
||||||
model: UM.ViewModel { }
|
|
||||||
MenuItem
|
|
||||||
{
|
|
||||||
text: model.name
|
|
||||||
checkable: true;
|
|
||||||
checked: model.active
|
|
||||||
exclusiveGroup: viewMenuGroup;
|
|
||||||
onTriggered: UM.Controller.setActiveView(model.id);
|
|
||||||
}
|
|
||||||
onObjectAdded: viewMenu.insertItem(index, object)
|
|
||||||
onObjectRemoved: viewMenu.removeItem(object)
|
|
||||||
}
|
|
||||||
|
|
||||||
ExclusiveGroup { id: viewMenuGroup; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Toolbar
|
Toolbar
|
||||||
|
57
resources/qml/Menus/MaterialMenu.qml
Normal file
57
resources/qml/Menus/MaterialMenu.qml
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
// Copyright (c) 2016 Ultimaker B.V.
|
||||||
|
// Cura is released under the terms of the AGPLv3 or higher.
|
||||||
|
|
||||||
|
import QtQuick 2.2
|
||||||
|
import QtQuick.Controls 1.1
|
||||||
|
|
||||||
|
import UM 1.2 as UM
|
||||||
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
|
Menu
|
||||||
|
{
|
||||||
|
id: menu
|
||||||
|
title: "Material"
|
||||||
|
|
||||||
|
Instantiator
|
||||||
|
{
|
||||||
|
model: UM.InstanceContainersModel
|
||||||
|
{
|
||||||
|
filter:
|
||||||
|
{
|
||||||
|
var result = { "type": "material" }
|
||||||
|
if(Cura.MachineManager.filterMaterialsByMachine)
|
||||||
|
{
|
||||||
|
result.definition = Cura.MachineManager.activeDefinitionId
|
||||||
|
if(Cura.MachineManager.hasVariants)
|
||||||
|
{
|
||||||
|
result.variant = Cura.MachineManager.activeVariantId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result.definition = "fdmprinter"
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MenuItem
|
||||||
|
{
|
||||||
|
text: model.name;
|
||||||
|
checkable: true;
|
||||||
|
checked: model.id == Cura.MachineManager.activeMaterialId;
|
||||||
|
exclusiveGroup: group;
|
||||||
|
onTriggered:
|
||||||
|
{
|
||||||
|
Cura.MachineManager.setActiveMaterial(model.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onObjectAdded: menu.insertItem(index, object)
|
||||||
|
onObjectRemoved: menu.removeItem(object)
|
||||||
|
}
|
||||||
|
|
||||||
|
ExclusiveGroup { id: group }
|
||||||
|
|
||||||
|
MenuSeparator { }
|
||||||
|
|
||||||
|
MenuItem { action: Cura.Actions.manageMaterials }
|
||||||
|
}
|
37
resources/qml/Menus/NozzleMenu.qml
Normal file
37
resources/qml/Menus/NozzleMenu.qml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// Copyright (c) 2016 Ultimaker B.V.
|
||||||
|
// Cura is released under the terms of the AGPLv3 or higher.
|
||||||
|
|
||||||
|
import QtQuick 2.2
|
||||||
|
import QtQuick.Controls 1.1
|
||||||
|
|
||||||
|
import UM 1.2 as UM
|
||||||
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
|
Menu
|
||||||
|
{
|
||||||
|
id: menu
|
||||||
|
title: "Nozzle"
|
||||||
|
|
||||||
|
Instantiator
|
||||||
|
{
|
||||||
|
model: UM.InstanceContainersModel
|
||||||
|
{
|
||||||
|
filter:
|
||||||
|
{
|
||||||
|
"type": "variant",
|
||||||
|
"definition": Cura.MachineManager.activeDefinitionId //Only show variants of this machine
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MenuItem {
|
||||||
|
text: model.name;
|
||||||
|
checkable: true;
|
||||||
|
checked: model.id == Cura.MachineManager.activeVariantId;
|
||||||
|
exclusiveGroup: group
|
||||||
|
onTriggered: Cura.MachineManager.setActiveVariant(model.id)
|
||||||
|
}
|
||||||
|
onObjectAdded: menu.insertItem(index, object)
|
||||||
|
onObjectRemoved: menu.removeItem(object)
|
||||||
|
}
|
||||||
|
|
||||||
|
ExclusiveGroup { id: group }
|
||||||
|
}
|
38
resources/qml/Menus/PrinterMenu.qml
Normal file
38
resources/qml/Menus/PrinterMenu.qml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
// Copyright (c) 2016 Ultimaker B.V.
|
||||||
|
// Cura is released under the terms of the AGPLv3 or higher.
|
||||||
|
|
||||||
|
import QtQuick 2.2
|
||||||
|
import QtQuick.Controls 1.1
|
||||||
|
|
||||||
|
import UM 1.2 as UM
|
||||||
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
|
Menu
|
||||||
|
{
|
||||||
|
id: menu;
|
||||||
|
|
||||||
|
Instantiator
|
||||||
|
{
|
||||||
|
model: UM.ContainerStacksModel
|
||||||
|
{
|
||||||
|
filter: {"type": "machine"}
|
||||||
|
}
|
||||||
|
MenuItem
|
||||||
|
{
|
||||||
|
text: model.name;
|
||||||
|
checkable: true;
|
||||||
|
checked: Cura.MachineManager.activeMachineId == model.id
|
||||||
|
exclusiveGroup: group;
|
||||||
|
onTriggered: Cura.MachineManager.setActiveMachine(model.id);
|
||||||
|
}
|
||||||
|
onObjectAdded: menu.insertItem(index, object)
|
||||||
|
onObjectRemoved: menu.removeItem(object)
|
||||||
|
}
|
||||||
|
|
||||||
|
ExclusiveGroup { id: group; }
|
||||||
|
|
||||||
|
MenuSeparator { }
|
||||||
|
|
||||||
|
MenuItem { action: Cura.Actions.addMachine; }
|
||||||
|
MenuItem { action: Cura.Actions.configureMachines; }
|
||||||
|
}
|
86
resources/qml/Menus/ProfileMenu.qml
Normal file
86
resources/qml/Menus/ProfileMenu.qml
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
// Copyright (c) 2016 Ultimaker B.V.
|
||||||
|
// Cura is released under the terms of the AGPLv3 or higher.
|
||||||
|
|
||||||
|
import QtQuick 2.2
|
||||||
|
import QtQuick.Controls 1.1
|
||||||
|
|
||||||
|
import UM 1.2 as UM
|
||||||
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
|
Menu
|
||||||
|
{
|
||||||
|
id: menu
|
||||||
|
|
||||||
|
Instantiator
|
||||||
|
{
|
||||||
|
model: UM.InstanceContainersModel { filter: menu.getFilter({ "read_only": true }); }
|
||||||
|
|
||||||
|
MenuItem
|
||||||
|
{
|
||||||
|
text: model.name
|
||||||
|
checkable: true
|
||||||
|
checked: Cura.MachineManager.activeQualityId == model.id
|
||||||
|
exclusiveGroup: group
|
||||||
|
onTriggered: Cura.MachineManager.setActiveQuality(model.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
onObjectAdded: menu.insertItem(index, object);
|
||||||
|
onObjectRemoved: menu.removeItem(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
MenuSeparator { id: customSeparator }
|
||||||
|
|
||||||
|
Instantiator
|
||||||
|
{
|
||||||
|
model: UM.InstanceContainersModel
|
||||||
|
{
|
||||||
|
id: customProfilesModel;
|
||||||
|
filter: menu.getFilter({ "read_only": false });
|
||||||
|
onRowsInserted: customSeparator.visible = rowCount() > 1
|
||||||
|
onRowsRemoved: customSeparator.visible = rowCount() > 1
|
||||||
|
onModelReset: customSeparator.visible = rowCount() > 1
|
||||||
|
}
|
||||||
|
|
||||||
|
MenuItem
|
||||||
|
{
|
||||||
|
text: model.name
|
||||||
|
checkable: true
|
||||||
|
checked: Cura.MachineManager.activeQualityId == model.id
|
||||||
|
exclusiveGroup: group
|
||||||
|
onTriggered: Cura.MachineManager.setActiveQuality(model.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
onObjectAdded: menu.insertItem(index, object);
|
||||||
|
onObjectRemoved: menu.removeItem(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
ExclusiveGroup { id: group; }
|
||||||
|
|
||||||
|
MenuSeparator { id: profileMenuSeparator }
|
||||||
|
|
||||||
|
MenuItem { action: Cura.Actions.addProfile }
|
||||||
|
MenuItem { action: Cura.Actions.updateProfile }
|
||||||
|
MenuItem { action: Cura.Actions.resetProfile }
|
||||||
|
MenuSeparator { }
|
||||||
|
MenuItem { action: Cura.Actions.manageProfiles }
|
||||||
|
|
||||||
|
function getFilter(initial_conditions)
|
||||||
|
{
|
||||||
|
var result = initial_conditions;
|
||||||
|
result.type = "quality"
|
||||||
|
|
||||||
|
if(Cura.MachineManager.filterQualityByMachine)
|
||||||
|
{
|
||||||
|
result.definition = Cura.MachineManager.activeDefinitionId;
|
||||||
|
if(Cura.MachineManager.hasMaterials)
|
||||||
|
{
|
||||||
|
result.material = Cura.MachineManager.activeMaterialId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result.definition = "fdmprinter"
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
}
|
37
resources/qml/Menus/RecentFilesMenu.qml
Normal file
37
resources/qml/Menus/RecentFilesMenu.qml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// Copyright (c) 2016 Ultimaker B.V.
|
||||||
|
// Cura is released under the terms of the AGPLv3 or higher.
|
||||||
|
|
||||||
|
import QtQuick 2.2
|
||||||
|
import QtQuick.Controls 1.1
|
||||||
|
|
||||||
|
import UM 1.2 as UM
|
||||||
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
|
Menu
|
||||||
|
{
|
||||||
|
id: menu
|
||||||
|
title: catalog.i18nc("@title:menu menubar:file", "Open &Recent")
|
||||||
|
iconName: "document-open-recent";
|
||||||
|
|
||||||
|
enabled: Printer.recentFiles.length > 0;
|
||||||
|
|
||||||
|
Instantiator
|
||||||
|
{
|
||||||
|
model: Printer.recentFiles
|
||||||
|
MenuItem
|
||||||
|
{
|
||||||
|
text:
|
||||||
|
{
|
||||||
|
var path = modelData.toString()
|
||||||
|
return (index + 1) + ". " + path.slice(path.lastIndexOf("/") + 1);
|
||||||
|
}
|
||||||
|
onTriggered: {
|
||||||
|
UM.MeshFileHandler.readLocalFile(modelData);
|
||||||
|
var meshName = backgroundItem.getMeshName(modelData.toString())
|
||||||
|
backgroundItem.hasMesh(decodeURIComponent(meshName))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onObjectAdded: menu.insertItem(index, object)
|
||||||
|
onObjectRemoved: menu.removeItem(object)
|
||||||
|
}
|
||||||
|
}
|
29
resources/qml/Menus/ViewMenu.qml
Normal file
29
resources/qml/Menus/ViewMenu.qml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
// Copyright (c) 2016 Ultimaker B.V.
|
||||||
|
// Cura is released under the terms of the AGPLv3 or higher.
|
||||||
|
|
||||||
|
import QtQuick 2.2
|
||||||
|
import QtQuick.Controls 1.1
|
||||||
|
|
||||||
|
import UM 1.2 as UM
|
||||||
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
|
Menu
|
||||||
|
{
|
||||||
|
title: catalog.i18nc("@title:menu menubar:toplevel", "&View");
|
||||||
|
id: menu
|
||||||
|
Instantiator
|
||||||
|
{
|
||||||
|
model: UM.ViewModel { }
|
||||||
|
MenuItem
|
||||||
|
{
|
||||||
|
text: model.name;
|
||||||
|
checkable: true;
|
||||||
|
checked: model.active;
|
||||||
|
exclusiveGroup: group;
|
||||||
|
onTriggered: UM.Controller.setActiveView(model.id);
|
||||||
|
}
|
||||||
|
onObjectAdded: menu.insertItem(index, object)
|
||||||
|
onObjectRemoved: menu.removeItem(object)
|
||||||
|
}
|
||||||
|
ExclusiveGroup { id: group; }
|
||||||
|
}
|
@ -8,6 +8,8 @@ import QtQuick.Controls.Styles 1.1
|
|||||||
import UM 1.2 as UM
|
import UM 1.2 as UM
|
||||||
import Cura 1.0 as Cura
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
|
import "Menus"
|
||||||
|
|
||||||
Column
|
Column
|
||||||
{
|
{
|
||||||
id: base;
|
id: base;
|
||||||
@ -56,34 +58,7 @@ Column
|
|||||||
|
|
||||||
width: parent.width * 0.55 + UM.Theme.getSize("default_margin").width
|
width: parent.width * 0.55 + UM.Theme.getSize("default_margin").width
|
||||||
|
|
||||||
menu: Menu
|
menu: PrinterMenu { }
|
||||||
{
|
|
||||||
id: machineSelectionMenu
|
|
||||||
Instantiator
|
|
||||||
{
|
|
||||||
model: UM.ContainerStacksModel
|
|
||||||
{
|
|
||||||
filter: {"type": "machine"}
|
|
||||||
}
|
|
||||||
MenuItem
|
|
||||||
{
|
|
||||||
text: model.name;
|
|
||||||
checkable: true;
|
|
||||||
checked: Cura.MachineManager.activeMachineId == model.id
|
|
||||||
exclusiveGroup: machineSelectionMenuGroup;
|
|
||||||
onTriggered: Cura.MachineManager.setActiveMachine(model.id);
|
|
||||||
}
|
|
||||||
onObjectAdded: machineSelectionMenu.insertItem(index, object)
|
|
||||||
onObjectRemoved: machineSelectionMenu.removeItem(object)
|
|
||||||
}
|
|
||||||
|
|
||||||
ExclusiveGroup { id: machineSelectionMenuGroup; }
|
|
||||||
|
|
||||||
MenuSeparator { }
|
|
||||||
|
|
||||||
MenuItem { action: Cura.Actions.addMachine; }
|
|
||||||
MenuItem { action: Cura.Actions.configureMachines; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,37 +210,7 @@ Column
|
|||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
style: UM.Theme.styles.sidebar_header_button
|
style: UM.Theme.styles.sidebar_header_button
|
||||||
|
|
||||||
menu: Menu
|
menu: NozzleMenu { }
|
||||||
{
|
|
||||||
id: variantsSelectionMenu
|
|
||||||
Instantiator
|
|
||||||
{
|
|
||||||
id: variantSelectionInstantiator
|
|
||||||
model: UM.InstanceContainersModel
|
|
||||||
{
|
|
||||||
filter:
|
|
||||||
{
|
|
||||||
"type": "variant",
|
|
||||||
"definition": Cura.MachineManager.activeDefinitionId //Only show variants of this machine
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MenuItem
|
|
||||||
{
|
|
||||||
text: model.name;
|
|
||||||
checkable: true;
|
|
||||||
checked: model.id == Cura.MachineManager.activeVariantId;
|
|
||||||
exclusiveGroup: variantSelectionMenuGroup;
|
|
||||||
onTriggered:
|
|
||||||
{
|
|
||||||
Cura.MachineManager.setActiveVariant(model.id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onObjectAdded: variantsSelectionMenu.insertItem(index, object)
|
|
||||||
onObjectRemoved: variantsSelectionMenu.removeItem(object)
|
|
||||||
}
|
|
||||||
|
|
||||||
ExclusiveGroup { id: variantSelectionMenuGroup; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolButton {
|
ToolButton {
|
||||||
@ -280,49 +225,7 @@ Column
|
|||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
style: UM.Theme.styles.sidebar_header_button
|
style: UM.Theme.styles.sidebar_header_button
|
||||||
|
|
||||||
menu: Menu
|
menu: MaterialMenu { }
|
||||||
{
|
|
||||||
id: materialSelectionMenu
|
|
||||||
Instantiator
|
|
||||||
{
|
|
||||||
id: materialSelectionInstantiator
|
|
||||||
model: UM.InstanceContainersModel
|
|
||||||
{
|
|
||||||
filter:
|
|
||||||
{
|
|
||||||
var result = { "type": "material" }
|
|
||||||
if(Cura.MachineManager.filterMaterialsByMachine)
|
|
||||||
{
|
|
||||||
result.definition = Cura.MachineManager.activeDefinitionId
|
|
||||||
if(Cura.MachineManager.hasVariants)
|
|
||||||
{
|
|
||||||
result.variant = Cura.MachineManager.activeVariantId
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result.definition = "fdmprinter"
|
|
||||||
}
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MenuItem
|
|
||||||
{
|
|
||||||
text: model.name;
|
|
||||||
checkable: true;
|
|
||||||
checked: model.id == Cura.MachineManager.activeMaterialId;
|
|
||||||
exclusiveGroup: materialSelectionMenuGroup;
|
|
||||||
onTriggered:
|
|
||||||
{
|
|
||||||
Cura.MachineManager.setActiveMaterial(model.id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onObjectAdded: materialSelectionMenu.insertItem(index, object)
|
|
||||||
onObjectRemoved: materialSelectionMenu.removeItem(object)
|
|
||||||
}
|
|
||||||
|
|
||||||
ExclusiveGroup { id: materialSelectionMenuGroup; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -359,88 +262,7 @@ Column
|
|||||||
tooltip: Cura.MachineManager.activeQualityName
|
tooltip: Cura.MachineManager.activeQualityName
|
||||||
style: UM.Theme.styles.sidebar_header_button
|
style: UM.Theme.styles.sidebar_header_button
|
||||||
|
|
||||||
menu: Menu
|
menu: ProfileMenu { }
|
||||||
{
|
|
||||||
id: profileSelectionMenu
|
|
||||||
Instantiator
|
|
||||||
{
|
|
||||||
id: profileSelectionInstantiator
|
|
||||||
model: UM.InstanceContainersModel
|
|
||||||
{
|
|
||||||
filter:
|
|
||||||
{
|
|
||||||
var result = { "type": "quality" };
|
|
||||||
if(Cura.MachineManager.filterQualityByMachine)
|
|
||||||
{
|
|
||||||
result.definition = Cura.MachineManager.activeDefinitionId;
|
|
||||||
if(Cura.MachineManager.hasMaterials)
|
|
||||||
{
|
|
||||||
result.material = Cura.MachineManager.activeMaterialId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result.definition = "fdmprinter"
|
|
||||||
}
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
}
|
|
||||||
property int separatorIndex: -1
|
|
||||||
|
|
||||||
Loader {
|
|
||||||
property QtObject model_data: model
|
|
||||||
property int model_index: index
|
|
||||||
sourceComponent: menuItemDelegate
|
|
||||||
}
|
|
||||||
onObjectAdded:
|
|
||||||
{
|
|
||||||
//Insert a separator between readonly and custom profiles
|
|
||||||
if(separatorIndex < 0 && index > 0)
|
|
||||||
{
|
|
||||||
if(model.getItem(index-1).readOnly != model.getItem(index).readOnly)
|
|
||||||
{
|
|
||||||
profileSelectionMenu.insertSeparator(index);
|
|
||||||
separatorIndex = index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//Because of the separator, custom profiles move one index lower
|
|
||||||
profileSelectionMenu.insertItem((model.getItem(index).readOnly) ? index : index + 1, object.item);
|
|
||||||
}
|
|
||||||
onObjectRemoved:
|
|
||||||
{
|
|
||||||
//When adding a profile, the menu is rebuilt by removing all items.
|
|
||||||
//If a separator was added, we need to remove that too.
|
|
||||||
if(separatorIndex >= 0)
|
|
||||||
{
|
|
||||||
profileSelectionMenu.removeItem(profileSelectionMenu.items[separatorIndex])
|
|
||||||
separatorIndex = -1;
|
|
||||||
}
|
|
||||||
profileSelectionMenu.removeItem(object.item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ExclusiveGroup { id: profileSelectionMenuGroup; }
|
|
||||||
|
|
||||||
Component
|
|
||||||
{
|
|
||||||
id: menuItemDelegate
|
|
||||||
MenuItem
|
|
||||||
{
|
|
||||||
id: item
|
|
||||||
text: model_data ? model_data.name : ""
|
|
||||||
checkable: true
|
|
||||||
checked: model_data != null ? Cura.MachineManager.activeQualityId == model_data.id : false
|
|
||||||
exclusiveGroup: profileSelectionMenuGroup;
|
|
||||||
onTriggered: Cura.MachineManager.setActiveQuality(model_data.id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuSeparator { }
|
|
||||||
MenuItem { action: Cura.Actions.addProfile }
|
|
||||||
MenuItem { action: Cura.Actions.updateProfile }
|
|
||||||
MenuItem { action: Cura.Actions.resetProfile }
|
|
||||||
MenuSeparator { }
|
|
||||||
MenuItem { action: Cura.Actions.manageProfiles }
|
|
||||||
}
|
|
||||||
|
|
||||||
UM.SimpleButton
|
UM.SimpleButton
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user