[core] support for non-exclusive choice params

This commit is contained in:
Fabien Castan 2017-10-19 12:26:31 +02:00
parent 977a6b1507
commit 76fad411a4
2 changed files with 9 additions and 3 deletions

View file

@ -56,9 +56,10 @@ class FloatParam(Param):
class ChoiceParam(Param):
"""
"""
def __init__(self, label, description, value, values, exclusive, uid, group='allParams'):
def __init__(self, label, description, value, values, exclusive, uid, group='allParams', joinChar=' '):
self.values = values
self.exclusive = exclusive
self.joinChar = joinChar
super(ChoiceParam, self).__init__(label=label, description=description, value=value, uid=uid, group=group)

View file

@ -1,5 +1,6 @@
from __future__ import print_function
import collections
import hashlib
import json
import os
@ -13,6 +14,7 @@ from enum import Enum # available by default in python3. For python2: "pip inst
from pprint import pprint
from . import stats
from . import desc
from meshroom import core as pg
from meshroom.common import BaseObject, Model, Slot, Signal, Property
@ -305,11 +307,14 @@ class Node(BaseObject):
# Evaluate input params
for name, attr in self._attributes.objects.items():
if attr.attributeDesc.isOutput:
continue # skip outputs
continue # skip outputs
linkAttr = attr.getLinkParam()
if linkAttr:
attr._value = linkAttr._value
v = attr._value
if isinstance(attr.attributeDesc, desc.ChoiceParam) and not attr.attributeDesc.exclusive:
assert(isinstance(v, collections.Sequence) and not isinstance(v, basestring))
v = attr.attributeDesc.joinChar.join(v)
self._cmdVars[name] = '--{name} {value}'.format(name=name, value=v)
self._cmdVars[name + 'Value'] = str(v)
@ -321,7 +326,7 @@ class Node(BaseObject):
# Evaluate output params
for name, attr in self._attributes.objects.items():
if not attr.attributeDesc.isOutput:
continue # skip inputs
continue # skip inputs
attr.value = attr.attributeDesc.value.format(
nodeType=self.nodeType(),
**self._cmdVars)