blob: f72d21b35b659857b4f16cc3a581233df20e395b (
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
123
124
125
126
127
128
129
130
|
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import HelperWidgets
import StudioControls as StudioControls
import StudioTheme as StudioTheme
import MaterialBrowserBackend
StudioControls.Menu {
id: root
property var targetMaterial: null
property var targetItem: null
property int copiedMaterialInternalId: -1
property var matSectionsModel: []
property bool restoreFocusOnClose: true
property var materialBrowserModel: MaterialBrowserBackend.materialBrowserModel
function popupMenu(targetItem = null, targetMaterial = null)
{
this.targetItem = targetItem
this.targetMaterial = targetMaterial
restoreFocusOnClose = true
popup()
}
closePolicy: StudioControls.Menu.CloseOnEscape | StudioControls.Menu.CloseOnPressOutside
StudioControls.MenuItem {
text: qsTr("Apply to selected (replace)")
enabled: root.targetMaterial && materialBrowserModel.hasModelSelection
onTriggered: materialBrowserModel.applyToSelected(root.targetMaterial.materialInternalId, false)
}
StudioControls.MenuItem {
text: qsTr("Apply to selected (add)")
enabled: root.targetMaterial && materialBrowserModel.hasModelSelection
onTriggered: materialBrowserModel.applyToSelected(root.targetMaterial.materialInternalId, true)
}
StudioControls.MenuSeparator {}
StudioControls.Menu {
title: qsTr("Copy properties")
enabled: root.targetMaterial
width: parent.width
onAboutToShow: {
if (root.targetMaterial.hasDynamicProperties)
root.matSectionsModel = ["All", "Custom"];
else
root.matSectionsModel = ["All"];
switch (root.targetMaterial.materialType) {
case "DefaultMaterial":
root.matSectionsModel = root.matSectionsModel.concat(materialBrowserModel.defaultMaterialSections);
break;
case "PrincipledMaterial":
root.matSectionsModel = root.matSectionsModel.concat(materialBrowserModel.principledMaterialSections);
break;
case "SpecularGlossyMaterial":
root.matSectionsModel = root.matSectionsModel.concat(materialBrowserModel.specularGlossyMaterialSections);
break;
case "CustomMaterial":
root.matSectionsModel = root.matSectionsModel.concat(materialBrowserModel.customMaterialSections);
break;
}
}
Repeater {
model: root.matSectionsModel
StudioControls.MenuItem {
text: modelData
enabled: root.targetMaterial
onTriggered: {
root.copiedMaterialInternalId = root.targetMaterial.materialInternalId
materialBrowserModel.copyMaterialProperties(materialBrowserModel.selectedIndex, modelData)
}
}
}
}
StudioControls.MenuItem {
text: qsTr("Paste properties")
enabled: root.targetMaterial
&& root.copiedMaterialInternalId !== root.targetMaterial.materialInternalId
&& root.targetMaterial.materialType === materialBrowserModel.copiedMaterialType
&& materialBrowserModel.isCopiedMaterialValid()
onTriggered: materialBrowserModel.pasteMaterialProperties(materialBrowserModel.selectedIndex)
}
StudioControls.MenuSeparator {}
StudioControls.MenuItem {
text: qsTr("Duplicate")
enabled: root.targetMaterial
onTriggered: materialBrowserModel.duplicateMaterial(materialBrowserModel.selectedIndex)
}
StudioControls.MenuItem {
text: qsTr("Rename")
enabled: root.targetItem
onTriggered: {
restoreFocusOnClose = false
root.targetItem.startRename()
}
}
StudioControls.MenuItem {
text: qsTr("Delete")
enabled: root.targetMaterial
onTriggered: materialBrowserModel.deleteMaterial(materialBrowserModel.selectedIndex)
}
StudioControls.MenuSeparator {}
StudioControls.MenuItem {
text: qsTr("Create New Material")
onTriggered: materialBrowserModel.addNewMaterial()
}
}
|