Source code for paraview.web.decorators

import sys
if sys.version_info >= (3,):
    xrange = range

#--------------------------------------------------------------------------
# Handle BooleanDomain
#--------------------------------------------------------------------------
[docs]def booleanDomainDecorator(props, xmlProps, uiProps, domain): uiProps['widget'] = 'checkbox' uiProps['type'] = 'int' return True
#-------------------------------------------------------------------------- # Handle EnumerationDomain #--------------------------------------------------------------------------
[docs]def enumerationDomainDecorator(props, xmlProps, uiProps, domain): uiProps['widget'] = 'list-1' uiProps['type'] = 'int' valMap = {} for entryNum in range(domain.GetNumberOfEntries()): valMap[domain.GetEntryText(entryNum)] = domain.GetEntryValue(entryNum) uiProps['values'] = valMap return True
#-------------------------------------------------------------------------- # Handle StringListDomain #--------------------------------------------------------------------------
[docs]def stringListDomainDecorator(props, xmlProps, uiProps, domain): uiProps['widget'] = 'list-1' uiProps['type'] = 'str' valuesList = [] for idx in range(domain.GetNumberOfStrings()): valuesList.append(domain.GetString(idx)) uiProps['values'] = valuesList return True
#-------------------------------------------------------------------------- # Handle TreeDomain #--------------------------------------------------------------------------
[docs]def numpad(numelts): return len(str(int(numelts)))
[docs]def treeDomainDecorator(props, xmlProps, uiProps, domain): uiProps['type'] = 'int' uiProps['widget'] = 'list-n' values = [] index = 0 stack = [] stack.append([ domain.GetInformation(), ['Multi-block Dataset'], -1 ]) while len(stack) > 0: me = stack.pop() dataInformation = me[0] accumulatedName = me[1] parentIndex = me[2] values.append([accumulatedName, index, parentIndex]) infoName = None if dataInformation: infoName = dataInformation.GetCompositeDataClassName() if infoName: # May have children info = dataInformation.GetCompositeDataInformation() numChildren = info.GetNumberOfChildren() if numChildren > 0: for i in range(numChildren - 1, -1, -1): child = info.GetDataInformation(i) childName = info.GetName(i) stack.append([ child, accumulatedName + [childName], index ]) index += 1 #valMap = { 'Block 1': 2, 'Block 2': 3 } valMap = {} blockList = [None] * len(values) pads = numpad(len(values)) for value in values: names = value[0] blockIdx = value[1] parentIdx = value[2] padding = '-' * (len(names) - 1) valuesEntryName = "%s %s %s" % (str(blockIdx).zfill(pads), padding, names[-1]) valMap[valuesEntryName] = blockIdx blockList[blockIdx] = { 'label': names[-1], 'parent': parentIdx, 'id': blockIdx } uiProps['values'] = valMap uiProps['blocks'] = blockList uiProps['sort'] = True return True
#-------------------------------------------------------------------------- # Handle ArrayListDomain #--------------------------------------------------------------------------
[docs]def arrayListDomainDecorator(props, xmlProps, uiProps, domain): uiProps['type'] = 'str' uiProps['widget'] = 'list-1' fieldMap = { "0": "POINTS", "1": "CELLS" } valuesMap = {} valuesList = [] for arnum in range(domain.GetNumberOfStrings()): stringName = domain.GetString(arnum) try: assocVar = domain.GetFieldAssociation(arnum) valuesMap[stringName] = [ fieldMap[str(assocVar)], stringName ] except: valuesList.append(stringName) if len(valuesList) > 0: uiProps['values'] = valuesList else: uiProps['values'] = valuesMap return True
#-------------------------------------------------------------------------- # Handle ArraySelectionDomain #--------------------------------------------------------------------------
[docs]def arraySelectionDomainDecorator(props, xmlProps, uiProps, domain): uiProps['type'] = 'str' uiProps['widget'] = 'list-n' valuesList = [] for arnum in range(domain.GetNumberOfStrings()): valuesList.append(domain.GetString(arnum)) uiProps['values'] = valuesList return True
#-------------------------------------------------------------------------- # Handle IntRangeDomain, DoubleRangeDomain, and ArrayRangeDomain #--------------------------------------------------------------------------
[docs]def numberRangeDomainDecorator(props, xmlProps, uiProps, domain): uiProps['widget'] = 'textfield' domainClass = domain.GetClassName() if domainClass.rfind('Int') >= 0: uiProps['type'] = 'int' else: uiProps['type'] = 'float' ranges = [] idx = 0 while domain.GetMinimumExists(idx) == 1 and domain.GetMaximumExists(idx) == 1: ranges.append({ 'min': domain.GetMinimum(idx), 'max': domain.GetMaximum(idx) }) idx += 1 uiProps['range'] = ranges if idx == 0: return False return True
#-------------------------------------------------------------------------- # Handle ProxyListDomain #--------------------------------------------------------------------------
[docs]def proxyListDomainDecorator(props, xmlProps, uiProps, domain): uiProps['widget'] = 'list-1' uiProps['size'] = 1 uiProps['type'] = 'proxy' values = {} for i in xrange(domain.GetNumberOfProxies()): nextProxy = domain.GetProxy(i) values[nextProxy.GetXMLLabel()] = nextProxy.GetGlobalIDAsString() uiProps['values'] = values return True
#-------------------------------------------------------------------------- # Decorate for PropertyWidgetDecorator hint with type="ClipScalarDecorator" #-------------------------------------------------------------------------- # FIXME: Remove this when GenericDecorator goes into master
[docs]def clipScalarDecorator(prop, uiElt, hint): proxy = None try: proxy = prop.SMProperty.GetParent() except: try: proxy = prop.GetParent() except: print ('ERROR: unable to get proxy for property ' + prop.Name) return excludeAttr = hint.GetAttribute('exclude') if not excludeAttr or excludeAttr != '1': depends = proxy.GetGlobalIDAsString() + ':ClipFunction:Scalar:1' else: depends = proxy.GetGlobalIDAsString() + ':ClipFunction:Scalar:0' uiElt['depends'] = depends
#-------------------------------------------------------------------------- # Decorate for PropertyWidgetDecorator hint with type="GenericDecorator" #--------------------------------------------------------------------------
[docs]def genericDecorator(prop, uiElt, hint): proxy = None try: proxy = prop.SMProperty.GetParent() except: try: proxy = prop.GetParent() except: print ('ERROR: unable to get proxy for property ' + prop.Name) return mode = hint.GetAttribute("mode") # For now we just handle visbility mode if mode == 'visibility': propName = hint.GetAttribute("property") value = hint.GetAttribute("value") inverse = hint.GetAttribute("inverse") visibility = '1' if not inverse or inverse != '1': visibility = '1' else: visibility = '0' uiElt['depends'] = "%s:%s:%s:%s" % (proxy.GetGlobalIDAsString(), propName, value, visibility)
#-------------------------------------------------------------------------- # Decorate for Widget hint with type="multi_line" #--------------------------------------------------------------------------
[docs]def multiLineDecorator(prop, uiElt, hint): uiElt['widget'] = 'textarea'
#-------------------------------------------------------------------------- # Decorate for proxyEditorPropertyWidget hint #--------------------------------------------------------------------------
[docs]def proxyEditorPropertyWidgetDecorator(prop, uiElt, hint): propName = hint.GetAttribute("property") if propName: uiElt['visibilityProperty'] = propName