EffectComposer: Add advanced mode button

In advanced mode, users can add/edit/remove properties and shader code
of non-custom nodes.

Fixes: QDS-14219
Change-Id: I9fe0b64da0201c47b83e31fbc5fd55d99c323316
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
Miikka Heikkinen
2024-11-28 13:15:54 +02:00
parent 0c7986ecc3
commit 4560089e84
4 changed files with 38 additions and 10 deletions

View File

@@ -82,6 +82,7 @@ Rectangle {
enabled: root.backendModel ? root.backendModel.isEnabled enabled: root.backendModel ? root.backendModel.isEnabled
&& root.backendModel.currentComposition !== "" && root.backendModel.currentComposition !== ""
: false : false
visible: root.backendModel ? root.backendModel.advancedMode : false
onClicked: root.backendModel.openMainCodeEditor() onClicked: root.backendModel.openMainCodeEditor()
@@ -111,22 +112,43 @@ Rectangle {
color: StudioTheme.Values.themeTextColor color: StudioTheme.Values.themeTextColor
} }
HelperWidgets.AbstractButton { Row {
objectName: "btnEffectComposerHelp" spacing: 5
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.rightMargin: 5 anchors.rightMargin: 5
anchors.right: parent.right anchors.right: parent.right
style: StudioTheme.Values.viewBarButtonStyle HelperWidgets.AbstractButton {
buttonIcon: StudioTheme.Constants.help objectName: "btnEffectComposerAdvancedMode"
tooltip: qsTr("How to use Effect Composer:
anchors.verticalCenter: parent.verticalCenter
style: StudioTheme.Values.viewBarButtonStyle
buttonIcon: StudioTheme.Constants.settings_medium
tooltip: qsTr("In advanced mode, you can manage effect properties and edit shader code for all effects.")
checkable: true
checked: root.backendModel ? root.backendModel.advancedMode : false
onClicked: root.backendModel.advancedMode = !root.backendModel.advancedMode
}
HelperWidgets.AbstractButton {
id: openHelpButton
objectName: "btnEffectComposerHelp"
anchors.verticalCenter: parent.verticalCenter
style: StudioTheme.Values.viewBarButtonStyle
buttonIcon: StudioTheme.Constants.help
tooltip: qsTr("How to use Effect Composer:
1. Click \"+ Add Effect\" to add effect node 1. Click \"+ Add Effect\" to add effect node
2. Adjust the effect nodes properties 2. Adjust the effect nodes properties
3. Change the order of the effects, if you like 3. Change the order of the effects, if you like
4. See the preview 4. See the preview
5. Save in the assets library, if you wish to reuse the effect later") 5. Save in the assets library, if you wish to reuse the effect later")
onClicked: Qt.openUrlExternally("https://doc.qt.io/qtdesignstudio/qtquick-effect-composer-view.html") onClicked: Qt.openUrlExternally("https://doc.qt.io/qtdesignstudio/qtquick-effect-composer-view.html")
}
} }
} }

View File

@@ -219,6 +219,7 @@ HelperWidgets.Section {
editing: root.editedUniformIndex === index editing: root.editedUniformIndex === index
disableMoreMenu: root.editedUniformIndex >= 0 disableMoreMenu: root.editedUniformIndex >= 0
isDependencyNode: isDependency isDependencyNode: isDependency
isCustomNode: isCustom
onReset: nodeUniformsModel.resetData(index) onReset: nodeUniformsModel.resetData(index)
onRemove: { onRemove: {
@@ -282,7 +283,7 @@ HelperWidgets.Section {
Row { Row {
height: 40 height: 40
visible: !isDependency && !addPropertyForm.visible visible: (root.backendModel.advancedMode || isCustom) && !isDependency && !addPropertyForm.visible
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
spacing: 10 spacing: 10

View File

@@ -14,8 +14,10 @@ Item {
property bool editing: false property bool editing: false
property bool disableMoreMenu: false property bool disableMoreMenu: false
property bool isDependencyNode: true property bool isDependencyNode: false
property bool isCustomNode: false
property alias editPropertyFormParent: editPropertyFormPlaceholder property alias editPropertyFormParent: editPropertyFormPlaceholder
readonly property var backendModel: EffectComposerBackend.effectComposerModel
height: layout.implicitHeight + editPropertyFormPlaceholder.height + column.spacing height: layout.implicitHeight + editPropertyFormPlaceholder.height + column.spacing
visible: !uniformUseCustomValue visible: !uniformUseCustomValue
@@ -146,7 +148,7 @@ Item {
tooltip: root.disableMoreMenu ? qsTr("Additional actions disabled while editing existing property.") tooltip: root.disableMoreMenu ? qsTr("Additional actions disabled while editing existing property.")
: qsTr("Access additional property actions.") : qsTr("Access additional property actions.")
enabled: !root.disableMoreMenu enabled: !root.disableMoreMenu
visible: !root.isDependencyNode visible: (root.backendModel.advancedMode || root.isCustomNode) && !root.isDependencyNode
onClicked: menuLoader.show() onClicked: menuLoader.show()
} }

View File

@@ -61,6 +61,7 @@ class EffectComposerModel : public QAbstractListModel
Q_PROPERTY(int customPreviewImageCount READ customPreviewImageCount NOTIFY customPreviewImageCountChanged) Q_PROPERTY(int customPreviewImageCount READ customPreviewImageCount NOTIFY customPreviewImageCountChanged)
Q_PROPERTY(int mainCodeEditorIndex READ mainCodeEditorIndex CONSTANT) Q_PROPERTY(int mainCodeEditorIndex READ mainCodeEditorIndex CONSTANT)
Q_PROPERTY(QString effectErrors READ effectErrors NOTIFY effectErrorsChanged) Q_PROPERTY(QString effectErrors READ effectErrors NOTIFY effectErrorsChanged)
Q_PROPERTY(bool advancedMode MEMBER m_advancedMode NOTIFY advancedModeChanged)
public: public:
EffectComposerModel(QObject *parent = nullptr); EffectComposerModel(QObject *parent = nullptr);
@@ -181,6 +182,7 @@ signals:
void currentPreviewImageChanged(); void currentPreviewImageChanged();
void previewImagesChanged(); void previewImagesChanged();
void customPreviewImageCountChanged(); void customPreviewImageCountChanged();
void advancedModeChanged();
private: private:
enum ErrorTypes { enum ErrorTypes {
@@ -291,6 +293,7 @@ private:
QUrl m_currentPreviewImage; QUrl m_currentPreviewImage;
QList<QUrl> m_customPreviewImages; QList<QUrl> m_customPreviewImages;
int m_currentBakeCounter = 0; int m_currentBakeCounter = 0;
bool m_advancedMode = false;
const QRegularExpression m_spaceReg = QRegularExpression("\\s+"); const QRegularExpression m_spaceReg = QRegularExpression("\\s+");
}; };