forked from qt-creator/qt-creator
Also remove the experimental restriction on the content lib user section Fixes: QDS-12637 Change-Id: Ice2ac3f32a934d7c65ea7f406a2b5f8c4b5fed0c Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
138 lines
4.5 KiB
QML
138 lines
4.5 KiB
QML
// 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()
|
|
}
|
|
|
|
StudioControls.MenuItem {
|
|
text: qsTr("Add to Content Library")
|
|
enabled: !materialBrowserModel.selectedMaterialIsComponent
|
|
|
|
onTriggered: MaterialBrowserBackend.rootView.addMaterialToContentLibrary()
|
|
}
|
|
}
|