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,13 +112,33 @@ 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
HelperWidgets.AbstractButton {
objectName: "btnEffectComposerAdvancedMode"
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 style: StudioTheme.Values.viewBarButtonStyle
buttonIcon: StudioTheme.Constants.help buttonIcon: StudioTheme.Constants.help
tooltip: qsTr("How to use Effect Composer: tooltip: qsTr("How to use Effect Composer:
@@ -129,4 +150,5 @@ Rectangle {
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+");
}; };