mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-04-28 17:57:16 +02:00
[ui] GraphEditor: Move ChoiceParam control to its own file
Start modularization of attribute controls for better readability and maintenance. Make Choice control independent from the MeshroomUI API.
This commit is contained in:
parent
cfc2979653
commit
ba272eddc7
2 changed files with 43 additions and 19 deletions
34
meshroom/ui/qml/GraphEditor/AttributeControls/Choice.qml
Normal file
34
meshroom/ui/qml/GraphEditor/AttributeControls/Choice.qml
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
import MaterialIcons
|
||||||
|
import Controls
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A combobox-type control with a single current `value` and a list of possible `values`.
|
||||||
|
* Provides filtering capabilities and support for custom values (i.e: `value` not in `values`).
|
||||||
|
*/
|
||||||
|
RowLayout {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
required property var value
|
||||||
|
required property var values
|
||||||
|
|
||||||
|
signal editingFinished(var value)
|
||||||
|
|
||||||
|
FilterComboBox {
|
||||||
|
id: comboBox
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
sourceModel: root.values
|
||||||
|
inputValue: root.value
|
||||||
|
onEditingFinished: value => root.editingFinished(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
MaterialLabel {
|
||||||
|
visible: !comboBox.validValue
|
||||||
|
text: MaterialIcons.warning
|
||||||
|
ToolTip.text: "Custom value detected"
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,7 @@ import QtQuick.Dialogs
|
||||||
import MaterialIcons 2.2
|
import MaterialIcons 2.2
|
||||||
import Utils 1.0
|
import Utils 1.0
|
||||||
import Controls 1.0
|
import Controls 1.0
|
||||||
|
import "AttributeControls" as AttributeControls
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiate a control to visualize and edit an Attribute based on its type.
|
* Instantiate a control to visualize and edit an Attribute based on its type.
|
||||||
|
@ -208,7 +209,7 @@ RowLayout {
|
||||||
case "PushButtonParam":
|
case "PushButtonParam":
|
||||||
return pushButtonComponent
|
return pushButtonComponent
|
||||||
case "ChoiceParam":
|
case "ChoiceParam":
|
||||||
return attribute.desc.exclusive ? comboBoxComponent : multiChoiceComponent
|
return attribute.desc.exclusive ? choiceComponent : multiChoiceComponent
|
||||||
case "IntParam": return sliderComponent
|
case "IntParam": return sliderComponent
|
||||||
case "FloatParam":
|
case "FloatParam":
|
||||||
if (attribute.desc.semantic === 'color/hue')
|
if (attribute.desc.semantic === 'color/hue')
|
||||||
|
@ -469,26 +470,15 @@ RowLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
Component {
|
Component {
|
||||||
id: comboBoxComponent
|
id: choiceComponent
|
||||||
|
|
||||||
RowLayout {
|
AttributeControls.Choice {
|
||||||
FilterComboBox {
|
value: root.attribute.value
|
||||||
id: comboBox
|
values: root.attribute.values
|
||||||
|
enabled: root.editable
|
||||||
|
|
||||||
Layout.fillWidth: true
|
onEditingFinished: (value) => {
|
||||||
|
_reconstruction.setAttribute(root.attribute, value)
|
||||||
enabled: root.editable
|
|
||||||
sourceModel: attribute.values
|
|
||||||
inputValue: attribute.value
|
|
||||||
|
|
||||||
onEditingFinished: (value) => {
|
|
||||||
_reconstruction.setAttribute(attribute, value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MaterialLabel {
|
|
||||||
visible: !comboBox.validValue
|
|
||||||
text: MaterialIcons.warning
|
|
||||||
ToolTip.text: "Custom value detected"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue