Welcome to mirror list, hosted at ThFree Co, Russian Federation.

MaterialMenu.qml « Menus « qml « resources - github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: cee28cee6adca1252e39153a5e0e02391b3a1d92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// 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.0 as Cura

Cura.Menu
{
    id: materialMenu
    title: catalog.i18nc("@label:category menu label", "Material")

    property int extruderIndex: 0
    property string currentRootMaterialId:
    {
        var value = Cura.MachineManager.currentRootMaterialId[extruderIndex]
        return (value === undefined) ? "" : value
    }
    property var activeExtruder:
    {
        var activeMachine = Cura.MachineManager.activeMachine
        return (activeMachine === null) ? null : activeMachine.extruderList[extruderIndex]
    }
    property bool isActiveExtruderEnabled: (activeExtruder === null || activeExtruder === undefined) ? false : activeExtruder.isEnabled

    property string activeMaterialId: (activeExtruder === null || activeExtruder === undefined) ? "" : activeExtruder.material.id
    property bool updateModels: true
    Cura.FavoriteMaterialsModel
    {
        id: favoriteMaterialsModel
        extruderPosition: materialMenu.extruderIndex
        enabled: updateModels
    }

    Cura.GenericMaterialsModel
    {
        id: genericMaterialsModel
        extruderPosition: materialMenu.extruderIndex
        enabled: updateModels
    }

    Cura.MaterialBrandsModel
    {
        id: brandModel
        extruderPosition: materialMenu.extruderIndex
        enabled: updateModels
    }

    Cura.MenuItem
    {
        text: catalog.i18nc("@label:category menu label", "Favorites")
        enabled: false
        visible: favoriteMaterialsModel.items.length > 0
    }

    Instantiator
    {
        model: favoriteMaterialsModel
        delegate: Cura.MenuItem
        {
            text: model.brand + " " + model.name
            checkable: true
            enabled: isActiveExtruderEnabled
            checked: model.root_material_id === materialMenu.currentRootMaterialId
            onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node)
        }
        onObjectAdded: function(index, object) { materialMenu.insertItem(index + 1, object) }
        onObjectRemoved: function(index, object) { materialMenu.removeItem(index) }
    }

    Cura.MenuSeparator { visible: favoriteMaterialsModel.items.length > 0}

    Cura.Menu
    {
        id: genericMenu
        title: catalog.i18nc("@label:category menu label", "Generic")

        Instantiator
        {
            model: genericMaterialsModel
            delegate: Cura.MenuItem
            {
                text: model.name
                checkable: true
                enabled: isActiveExtruderEnabled
                checked: model.root_material_id === materialMenu.currentRootMaterialId
                onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node)
            }
            onObjectAdded: function(index, object) { genericMenu.insertItem(index, object)}
            onObjectRemoved: function(index, object) {genericMenu.removeItem(index) }
        }
    }

    Cura.MenuSeparator {}

    Instantiator
    {
        model: brandModel
        delegate: Cura.MaterialBrandMenu
        {
            materialTypesModel: model
        }
        onObjectAdded: function(index, object) { materialMenu.insertItem(index + 4, object)}
        onObjectRemoved: function(index, object) { materialMenu.removeItem(index) }
    }

    Cura.MenuSeparator {}

    Cura.MenuItem
    {
        action: Cura.Actions.manageMaterials
    }

    Cura.MenuSeparator {}

    Cura.MenuItem
    {
        action: Cura.Actions.marketplaceMaterials
    }
}