def _updateSlider(self, sliderName, lightShape, attribute, state): # Checking for hidden attributes and skipping try: if pmc.Attribute('%s.%s' % (lightShape, attribute)).isHidden(): pmc.attrFieldSliderGrp(sliderName, edit=True, visible=False) return except pmc.MayaAttributeError: pass if sliderName == 'lcColorSlider': pmc.attrColorSliderGrp(sliderName, edit=True, visible=True, at='%s.%s' % (lightShape, attribute)) pmc.attrColorSliderGrp(sliderName, edit=True, cw4=[60, 70, 10, 10]) pmc.attrColorSliderGrp(sliderName, edit=True, en=state) return if sliderName == 'lcScaleSlider': pmc.attrFieldGrp(sliderName, edit=True, cw4=[60, 65, 65, 65], visible=True, at='%s.%s' % (lightShape, attribute)) pmc.attrFieldGrp(sliderName, edit=True, en=state) return pmc.attrFieldSliderGrp(sliderName, edit=True, cw=[1, 60]) pmc.attrFieldSliderGrp(sliderName, edit=True, cw=[2, 70]) try: pmc.attrFieldSliderGrp(sliderName, edit=True, visible=True, at='%s.%s' % (lightShape, attribute)) except RuntimeError: pmc.attrFieldSliderGrp(sliderName, edit=True, visible=False) pmc.attrFieldSliderGrp(sliderName, edit=True, en=state)
def _deleteExisting(self): for key, value in self.controller.iteritems(): slider, name = value if slider == 'lcColorSlider' and pmc.attrColorSliderGrp(slider, ex=True): pmc.deleteUI(slider) elif slider == 'lcScaleSlider' and pmc.attrFieldGrp(slider, ex=True): pmc.deleteUI(slider) else: if pmc.attrFieldSliderGrp(slider, ex=True): pmc.deleteUI(slider)
def createUi(self, node=None): log.debug("createUi for node %s" % str(node)) currentSegment = "" layoutList = [] for att in self.attList: if att.kategory != None and currentSegment != att.kategory: log.debug("kategory %s != %s" % (currentSegment, att.kategory)) katlist = att.kategory.split("|") diff = len(layoutList) - len(katlist) # neue liste ist kuerzer als alte, also solange dicht machen bis die laenge gleich ist log.debug("check diff %d" % diff) while diff > 0: layoutList.pop() pm.setParent("..") pm.setParent("..") diff = len(layoutList) - len(katlist) log.debug("new diff %d" % diff) # alte liste ist nun nicht laenger als neue liste # durchgehen und alles dichtmachen was nicht gleich ist for i in range(len(layoutList)): kat = katlist[i] ckat = layoutList[i] # wenn werte ungelich dann alles was noch kommt zumachen if kat != ckat: laylen = len(layoutList) for n in range(i, laylen): pm.setParent("..") pm.setParent("..") layoutList.pop(n) # nun sollte sichergestellt sein, dass layoutList nur noch elemente # enthaelt, die gleich sind, also kann man daran anknuepfen for i in range(len(layoutList), len(katlist)): log.debug("opening layout for katlist %s %d %s" % (str(katlist), i, katlist[i])) self.beginUISegment(katlist[i]) layoutList.append(katlist[i]) currentSegment = att.kategory if MAP_API_ATTR.has_key(att.type): log.debug("Adding element %s with displayName %s" % (att.attname, att.displayname)) attype, attypeval = MAP_API_ATTR[att.type] log.debug( "Adding attribute named %s type %s val %s default %s" % (att.attname, attype, attypeval, att.default)) if attypeval == 'bool': att.uiElement = pm.checkBoxGrp(att.attname, numberOfCheckBoxes=1, label1=att.displayname, cc=Callback( self.dimConnections, att)) att.uiDimFunction = pm.checkBoxGrp if node: pm.connectControl(att.uiElement, node + "." + att.attname, index=2) if attypeval == 'int': att.uiElement = pm.intFieldGrp(att.attname, numberOfFields=1, label=att.displayname, value1=att.default, cc=Callback( self.dimConnections, att)) att.uiDimFunction = pm.intFieldGrp if node: pm.connectControl(att.uiElement, node + "." + att.attname, index=2) if attypeval == 'long2': if node: att.uiDimFunction = pm.attrFieldGrp( attribute='%s' % (node + "." + att.attname), cc=Callback(self.dimConnections, att)) if attypeval == 'float': att.uiElement = pm.floatFieldGrp(att.attname, numberOfFields=1, label=att.displayname, value1=att.default, cc=Callback( self.dimConnections, att)) att.uiDimFunction = pm.floatFieldGrp if node: pm.connectControl(att.uiElement, node + "." + att.attname, index=2) if attypeval == 'float2': if node: att.uiDimFunction = pm.attrFieldGrp( attribute='%s' % (node + "." + att.attname), cc=Callback(self.dimConnections, att)) if attypeval == 'string': att.uiElement = pm.textFieldGrp(att.attname, label=att.displayname, text=att.default, cc=Callback( self.dimConnections, att)) pm.connectControl(att.uiElement, node + "." + att.attname, index=2) pm.textFieldGrp(att.uiElement, edit=True, text=att.default) if attypeval == 'enum': poplist = map(list, enumerate(att.values)) if node: nodeatt = node + "." + att.attname att.uiElement = pm.attrEnumOptionMenuGrp( att.attname, label=att.displayname, at=nodeatt, ei=poplist, vcc=Callback(self.dimConnections, att)) att.uiDimFunction = pm.attrEnumOptionMenuGrp else: att.uiElement = pm.attrEnumOptionMenuGrp( att.attname, label=att.displayname, ei=poplist, vcc=Callback(self.dimConnections, att)) att.uiDimFunction = pm.attrEnumOptionMenuGrp if attypeval == 'message': pass if len(layoutList) > 0: for i in range(len(layoutList)): pm.setParent("..") pm.setParent("..")
def _addControls(self): self._deleteExisting() # Converting and Adding maya slider self.controlBoxLayout.addWidget(LightControl._addSeparator()) self.controlBoxLayout.addWidget( getQObject( pmc.attrColorSliderGrp('lcColorSlider', label='{:>10}'.format('Color:'), cw4=[55, 60, 60, 40], visible=False))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcTemperatureSlider', label='{:>10}'.format('Kelvin:'), pre=0, visible=False, min=-99999, max=99999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcIntensitySlider', label='{:>10}'.format('Intensity:'), visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcExposureSlider', label='{:>10}'.format('Exposure:'), visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcSpreadSlider', label='{:>10}'.format('Spread:'), visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcRoundnessSlider', label='{:>10}'.format('Roundness:'), visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcSoftEdgeSlider', label='{:>10}'.format('Soft Edge:'), visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcConeAngleSlider', label='{:>10}'.format('Cone:'), pre=2, visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcPenumbraAngleSlider', label='{:>10}'.format('Penumbra:'), pre=2, visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcDropoffSlider', label='{:>10}'.format('Dropoff:'), pre=2, visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcSampleSlider', label='{:>10}'.format('Samples:'), visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget(LightControl._addSeparator()) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcDiffuseSlider', label='{:>10}'.format('Diffuse:'), visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lsSpecularSlider', label='{:>10}'.format('Specular:'), visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcSssSlider', label='{:>10}'.format('SSS:'), visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcIndirectSlider', label='{:>10}'.format('Indirect:'), visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldSliderGrp('lcVolumeSlider', label='{:>10}'.format('Volume:'), visible=False, min=-9999, max=9999))) self.controlBoxLayout.addWidget(LightControl._addSeparator()) self.controlBoxLayout.addWidget( getQObject( pmc.attrFieldGrp('lcScaleSlider', label='{:>10}'.format('Scale:'), pre=3, visible=False))) self.controlBoxLayout.addWidget(LightControl._addSeparator()) self.controlBoxLayout.addItem( QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding))
def KrayEnvironmentCreateTab(self): log.debug("KrayEnvironmentCreateTab()") self.createGlobalsNode() envDict = {} self.rendererTabUiDict['environment'] = envDict bgDict = {} self.rendererTabUiDict['background'] = bgDict parentForm = pm.setParent(query=True) pm.setUITemplate("renderGlobalsTemplate", pushTemplate=True) pm.setUITemplate("attributeEditorTemplate", pushTemplate=True) scLo = self.rendererName + "EnvScrollLayout" with pm.scrollLayout(scLo, horizontalScrollBarThickness=0): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): with pm.frameLayout(label="Background", collapsable=True, collapse=False): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): attr = pm.Attribute(self.renderGlobalsNodeName + ".backgroundType") ui = pm.attrEnumOptionMenuGrp(label="Background Type", at=self.renderGlobalsNodeName + ".backgroundType", ei=self.getEnumList(attr)) bgDict['environmentColor'] = pm.attrColorSliderGrp(label="Background Color", at=self.renderGlobalsNodeName + ".environmentColor") bgDict['gradientHorizon'] = pm.attrColorSliderGrp(label="Horizon Color", at=self.renderGlobalsNodeName + ".gradientHorizon") bgDict['gradientZenit'] = pm.attrColorSliderGrp(label="Zenith Color", at=self.renderGlobalsNodeName + ".gradientZenit") bgDict['nadir'] = pm.attrColorSliderGrp(label="Bottom Color", at=self.renderGlobalsNodeName + ".nadir") bgDict['groundAlbedo'] = pm.attrColorSliderGrp(label="Ground Albedo", at=self.renderGlobalsNodeName + ".groundAlbedo") pm.separator() bgDict['environmentMap'] = pm.attrColorSliderGrp(label="Environment Map", at=self.renderGlobalsNodeName + ".environmentMap") bgDict['environmentMap2'] = pm.attrColorSliderGrp(label="Environment Map 2", at=self.renderGlobalsNodeName + ".environmentMap2") pm.separator() bgDict['sunDir'] = pm.attrFieldGrp(label="Sun Direction:", at=self.renderGlobalsNodeName + ".sunDir") bgDict['zenithDir'] = pm.attrFieldGrp(label="Zenith Direction:", at=self.renderGlobalsNodeName + ".zenithDir") bgDict['orientation'] = pm.attrFieldGrp(label="Orientation:", at=self.renderGlobalsNodeName + ".orientation") pm.separator() bgDict['skyGamma'] = pm.floatFieldGrp(label="Sky Gamma:", numberOfFields=1) pm.connectControl(bgDict['skyGamma'], self.renderGlobalsNodeName + ".skyGamma", index=2) bgDict['groundGamma'] = pm.floatFieldGrp(label="Ground Gamma:", numberOfFields=1) pm.connectControl(bgDict['groundGamma'], self.renderGlobalsNodeName + ".groundGamma", index=2) bgDict['turbidity'] = pm.floatFieldGrp(label="Turbidity:", numberOfFields=1) pm.connectControl(bgDict['turbidity'], self.renderGlobalsNodeName + ".turbidity", index=2) bgDict['exposure'] = pm.floatFieldGrp(label="Exposure:", numberOfFields=1) pm.connectControl(bgDict['exposure'], self.renderGlobalsNodeName + ".exposure", index=2) bgDict['sunIntensity'] = pm.floatFieldGrp(label="Sun Intensity:", numberOfFields=1) pm.connectControl(bgDict['sunIntensity'], self.renderGlobalsNodeName + ".sunIntensity", index=2) pm.separator() bgDict['solidAngle'] = pm.floatFieldGrp(label="Solid Angle:", numberOfFields=1) pm.connectControl(bgDict['solidAngle'], self.renderGlobalsNodeName + ".solidAngle", index=2) bgDict['sunSpotAngle'] = pm.floatFieldGrp(label="Sun Spot Angle:", numberOfFields=1) pm.connectControl(bgDict['sunSpotAngle'], self.renderGlobalsNodeName + ".sunSpotAngle", index=2) with pm.frameLayout(label="Environment", collapsable=True, collapse=False): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): attr = pm.Attribute(self.renderGlobalsNodeName + ".environmentType") ui = pm.attrEnumOptionMenuGrp(label="Environment Type", at=self.renderGlobalsNodeName + ".environmentType", ei=self.getEnumList(attr)) pm.setUITemplate("attributeEditorTemplate", popTemplate=True) pm.setUITemplate("renderGlobalsTemplate", popTemplate=True) pm.formLayout(parentForm, edit=True, attachForm=[ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ]) self.KrayRendererUIUpdateCallback("environment") self.KrayRendererUIUpdateCallback("background") pm.scriptJob(attributeChange=[self.renderGlobalsNode.backgroundType, pm.Callback(self.KrayRendererUIUpdateCallback, "background")]) pm.scriptJob(attributeChange=[self.renderGlobalsNode.environmentType, pm.Callback(self.KrayRendererUIUpdateCallback, "environment")])
def createUi(self, node = None): log.debug("createUi for node %s" % str(node)) currentSegment = "" layoutList = [] for att in self.attList: if att.kategory!=None and currentSegment != att.kategory: log.debug("kategory %s != %s" % (currentSegment, att.kategory )) katlist = att.kategory.split("|") diff = len(layoutList) - len(katlist) # neue liste ist kuerzer als alte, also solange dicht machen bis die laenge gleich ist log.debug("check diff %d" % diff) while diff > 0: layoutList.pop() pm.setParent("..") pm.setParent("..") diff = len(layoutList) - len(katlist) log.debug("new diff %d" % diff) # alte liste ist nun nicht laenger als neue liste # durchgehen und alles dichtmachen was nicht gleich ist for i in range(len(layoutList)): kat = katlist[i] ckat = layoutList[i] # wenn werte ungelich dann alles was noch kommt zumachen if kat != ckat: laylen = len(layoutList) for n in range(i, laylen): pm.setParent("..") pm.setParent("..") layoutList.pop(n) # nun sollte sichergestellt sein, dass layoutList nur noch elemente # enthaelt, die gleich sind, also kann man daran anknuepfen for i in range(len(layoutList), len(katlist)): log.debug("opening layout for katlist %s %d %s" % (str(katlist), i, katlist[i])) self.beginUISegment(katlist[i]) layoutList.append(katlist[i]) currentSegment = att.kategory if MAP_API_ATTR.has_key(att.type): log.debug("Adding element %s with displayName %s" % (att.attname,att.displayname)) attype, attypeval = MAP_API_ATTR[att.type] log.debug("Adding attribute named %s type %s val %s default %s" % (att.attname, attype, attypeval, att.default)) if attypeval == 'bool': att.uiElement = pm.checkBoxGrp( att.attname, numberOfCheckBoxes = 1, label1 = att.displayname, cc = Callback(self.dimConnections,att)) att.uiDimFunction = pm.checkBoxGrp if node: pm.connectControl(att.uiElement, node + "." + att.attname, index = 2 ) if attypeval == 'int': att.uiElement = pm.intFieldGrp( att.attname, numberOfFields=1, label=att.displayname, value1=att.default, cc = Callback(self.dimConnections,att)) att.uiDimFunction = pm.intFieldGrp if node: pm.connectControl(att.uiElement, node + "." + att.attname, index = 2 ) if attypeval == 'long2': if node: att.uiDimFunction = pm.attrFieldGrp( label = att.displayname, attribute='%s' % (node + "." + att.attname), cc = Callback(self.dimConnections,att)) if attypeval == 'float': att.uiElement = pm.floatFieldGrp( att.attname, numberOfFields=1, label=att.displayname, value1=att.default, cc = Callback(self.dimConnections,att)) att.uiDimFunction = pm.floatFieldGrp if node: pm.connectControl(att.uiElement, node + "." + att.attname, index = 2 ) if attypeval == 'float2': if node: att.uiDimFunction = pm.attrFieldGrp( attribute='%s' % (node + "." + att.attname), cc = Callback(self.dimConnections,att)) if attypeval == 'string': att.uiElement = pm.textFieldGrp( att.attname, label=att.displayname, text=att.default, cc = Callback(self.dimConnections,att)) pm.connectControl(att.uiElement, node + "." + att.attname, index = 2 ) pm.textFieldGrp(att.uiElement, edit=True, text = att.default) if attypeval == 'enum': poplist = map(list, enumerate(att.values)) if node: nodeatt = node + "." + att.attname att.uiElement = pm.attrEnumOptionMenuGrp(att.attname, label = att.displayname, at=nodeatt, ei = poplist, vcc = Callback(self.dimConnections,att)) att.uiDimFunction = pm.attrEnumOptionMenuGrp else: att.uiElement = pm.attrEnumOptionMenuGrp(att.attname, label = att.displayname, ei = poplist, vcc = Callback(self.dimConnections,att)) att.uiDimFunction = pm.attrEnumOptionMenuGrp if attypeval == 'message': pass if len(layoutList) > 0: for i in range(len(layoutList)): pm.setParent("..") pm.setParent("..")