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 Utils 1.0
|
||||
import Controls 1.0
|
||||
import "AttributeControls" as AttributeControls
|
||||
|
||||
/**
|
||||
* Instantiate a control to visualize and edit an Attribute based on its type.
|
||||
|
@ -208,7 +209,7 @@ RowLayout {
|
|||
case "PushButtonParam":
|
||||
return pushButtonComponent
|
||||
case "ChoiceParam":
|
||||
return attribute.desc.exclusive ? comboBoxComponent : multiChoiceComponent
|
||||
return attribute.desc.exclusive ? choiceComponent : multiChoiceComponent
|
||||
case "IntParam": return sliderComponent
|
||||
case "FloatParam":
|
||||
if (attribute.desc.semantic === 'color/hue')
|
||||
|
@ -469,26 +470,15 @@ RowLayout {
|
|||
}
|
||||
|
||||
Component {
|
||||
id: comboBoxComponent
|
||||
id: choiceComponent
|
||||
|
||||
RowLayout {
|
||||
FilterComboBox {
|
||||
id: comboBox
|
||||
AttributeControls.Choice {
|
||||
value: root.attribute.value
|
||||
values: root.attribute.values
|
||||
enabled: root.editable
|
||||
|
||||
Layout.fillWidth: true
|
||||
|
||||
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"
|
||||
onEditingFinished: (value) => {
|
||||
_reconstruction.setAttribute(root.attribute, value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue