// Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 import QtQuick import QtQuick.Controls import HelperWidgets as HelperWidgets import StudioControls as StudioControls import StudioTheme as StudioTheme import ConnectionsEditorEditorBackend import ScriptEditorBackend Column { id: root property int actionType property int horizontalSpacing property int columnWidth property var statement property var backend // Call Function Row { visible: root.actionType === StatementDelegate.CallFunction spacing: root.horizontalSpacing PopupLabel { width: root.columnWidth text: qsTr("Item") tooltip: qsTr("Sets the component that is affected by the action of the Target component's Signal.") } PopupLabel { width: root.columnWidth text: qsTr("Method") tooltip: qsTr("Sets the item component's method that is affected by the Target component's Signal.") } } Row { visible: root.actionType === StatementDelegate.CallFunction spacing: root.horizontalSpacing StudioControls.TopLevelComboBox { id: functionId style: StudioTheme.Values.connectionPopupControlStyle width: root.columnWidth model: root.statement.function.id.model ?? 0 onActivated: backend.okStatement.function.id.activateIndex(functionId.currentIndex) property int currentTypeIndex: backend.okStatement.function.id.currentIndex ?? 0 onCurrentTypeIndexChanged: functionId.currentIndex = functionId.currentTypeIndex } StudioControls.TopLevelComboBox { id: functionName style: StudioTheme.Values.connectionPopupControlStyle width: root.columnWidth model: root.statement.function.name.model ?? 0 onActivated: root.statement.function.name.activateIndex(functionName.currentIndex) property int currentTypeIndex: root.statement.function.name.currentIndex ?? 0 onCurrentTypeIndexChanged: functionName.currentIndex = functionName.currentTypeIndex } } // Assign Row { visible: root.actionType === StatementDelegate.Assign spacing: root.horizontalSpacing PopupLabel { width: root.columnWidth text: qsTr("From") tooltip: qsTr("Sets the component and its property from which the value is copied when the Target component initiates the Signal.") } PopupLabel { width: root.columnWidth text: qsTr("To") tooltip: qsTr("Sets the component and its property to which the copied value is assigned when the Target component initiates the Signal.") } } Row { visible: root.actionType === StatementDelegate.Assign spacing: root.horizontalSpacing StudioControls.TopLevelComboBox { id: rhsAssignmentId style: StudioTheme.Values.connectionPopupControlStyle width: root.columnWidth //from - rhs - id model: root.statement.rhsAssignment.id.model ?? 0 onActivated: root.statement.rhsAssignment.id.activateIndex(rhsAssignmentId.currentIndex) property int currentTypeIndex: root.statement.rhsAssignment.id.currentIndex ?? 0 onCurrentTypeIndexChanged: rhsAssignmentId.currentIndex = rhsAssignmentId.currentTypeIndex } StudioControls.TopLevelComboBox { id: lhsAssignmentId style: StudioTheme.Values.connectionPopupControlStyle width: root.columnWidth //to lhs - id model: root.statement.lhs.id.model ?? 0 onActivated: root.statement.lhs.id.activateIndex(lhsAssignmentId.currentIndex) property int currentTypeIndex: root.statement.lhs.id.currentIndex ?? 0 onCurrentTypeIndexChanged: lhsAssignmentId.currentIndex = lhsAssignmentId.currentTypeIndex } } Row { visible: root.actionType === StatementDelegate.Assign spacing: root.horizontalSpacing StudioControls.TopLevelComboBox { id: rhsAssignmentName style: StudioTheme.Values.connectionPopupControlStyle width: root.columnWidth //from - rhs - name model: root.statement.rhsAssignment.name.model ?? 0 onActivated: root.statement.rhsAssignment.name.activateIndex(rhsAssignmentName.currentIndex) property int currentTypeIndex: root.statement.rhsAssignment.name.currentIndex ?? 0 onCurrentTypeIndexChanged: rhsAssignmentName.currentIndex = rhsAssignmentName.currentTypeIndex } StudioControls.TopLevelComboBox { id: lhsAssignmentName style: StudioTheme.Values.connectionPopupControlStyle width: root.columnWidth //to lhs - name model: root.statement.lhs.name.model ?? 0 onActivated: root.statement.lhs.name.activateIndex(lhsAssignmentName.currentIndex) property int currentTypeIndex: root.statement.lhs.name.currentIndex ?? 0 onCurrentTypeIndexChanged: lhsAssignmentName.currentIndex = lhsAssignmentName.currentTypeIndex } } // Change State Row { visible: root.actionType === StatementDelegate.ChangeState spacing: root.horizontalSpacing PopupLabel { width: root.columnWidth text: qsTr("State Group") tooltip: qsTr("Sets a State Group that is accessed when the Target component initiates the Signal.") } PopupLabel { width: root.columnWidth text: qsTr("State") tooltip: qsTr("Sets a State within the assigned State Group that is accessed when the Target component initiates the Signal.") } } Row { visible: root.actionType === StatementDelegate.ChangeState spacing: root.horizontalSpacing StudioControls.TopLevelComboBox { id: stateGroups style: StudioTheme.Values.connectionPopupControlStyle width: root.columnWidth model: root.statement.stateTargets.model ?? 0 onActivated: root.statement.stateTargets.activateIndex(stateGroups.currentIndex) property int currentTypeIndex: root.statement.stateTargets.currentIndex ?? 0 onCurrentTypeIndexChanged: stateGroups.currentIndex = stateGroups.currentTypeIndex } StudioControls.TopLevelComboBox { id: states style: StudioTheme.Values.connectionPopupControlStyle width: root.columnWidth model: root.statement.states.model ?? 0 onActivated: root.statement.states.activateIndex(states.currentIndex) property int currentTypeIndex: root.statement.states.currentIndex ?? 0 onCurrentTypeIndexChanged: states.currentIndex = states.currentTypeIndex } } // Set Property Row { visible: root.actionType === StatementDelegate.SetProperty spacing: root.horizontalSpacing PopupLabel { width: root.columnWidth text: qsTr("Item") tooltip: qsTr("Sets the component that is affected by the action of the Target component's Signal.") } PopupLabel { width: root.columnWidth text: qsTr("Property") tooltip: qsTr("Sets the property of the component that is affected by the action of the Target component's Signal.") } } Row { visible: root.actionType === StatementDelegate.SetProperty spacing: root.horizontalSpacing StudioControls.TopLevelComboBox { id: lhsPropertyId style: StudioTheme.Values.connectionPopupControlStyle width: root.columnWidth model: root.statement.lhs.id.model ?? 0 onActivated: root.statement.lhs.id.activateIndex(lhsPropertyId.currentIndex) property int currentTypeIndex: root.statement.lhs.id.currentIndex ?? 0 onCurrentTypeIndexChanged: lhsPropertyId.currentIndex = lhsPropertyId.currentTypeIndex } StudioControls.TopLevelComboBox { id: lhsPropertyName style: StudioTheme.Values.connectionPopupControlStyle width: root.columnWidth model: root.statement.lhs.name.model ?? 0 onActivated: root.statement.lhs.name.activateIndex(lhsPropertyName.currentIndex) property int currentTypeIndex: root.statement.lhs.name.currentIndex ?? 0 onCurrentTypeIndexChanged: lhsPropertyName.currentIndex = lhsPropertyName.currentTypeIndex } } PopupLabel { width: root.columnWidth visible: root.actionType === StatementDelegate.SetProperty text: qsTr("Value") tooltip: qsTr("Sets the value of the property of the component that is affected by the action of the Target component's Signal.") } StudioControls.TextField { id: setPropertyArgument visible: root.actionType === StatementDelegate.SetProperty width: root.width actionIndicatorVisible: false translationIndicatorVisible: false text: root.statement.stringArgument.text ?? "" onEditingFinished: { root.statement.stringArgument.activateText(setPropertyArgument.text) } } // Print Message PopupLabel { width: root.columnWidth visible: root.actionType === StatementDelegate.PrintMessage text: qsTr("Message") tooltip: qsTr("Sets a text that is printed when the Signal of the Target component initiates.") } StudioControls.TextField { id: messageString visible: root.actionType === StatementDelegate.PrintMessage width: root.width actionIndicatorVisible: false translationIndicatorVisible: false text: root.statement.stringArgument.text ?? "" onEditingFinished: { root.statement.stringArgument.activateText(messageString.text) } } // Custom PopupLabel { visible: root.actionType === StatementDelegate.Custom text: qsTr("Custom Connections can only be edited with the binding editor") width: root.width horizontalAlignment: Text.AlignHCenter wrapMode: Text.WordWrap } }