def addUIElement(uiType, attribute, uiLabel, callback, renderGlobalsNodeName): ui = None if uiType == 'bool': ui = pm.checkBoxGrp(label=uiLabel) if callback is not None: pm.checkBoxGrp(ui, edit=True, cc=callback) if uiType == 'int': ui = pm.intFieldGrp(label=uiLabel, numberOfFields = 1) if callback is not None: pm.intFieldGrp(ui, edit=True, cc = callback) if uiType == 'float': ui = pm.floatFieldGrp(label=uiLabel, numberOfFields = 1) if callback is not None: pm.floatFieldGrp(ui, edit=True, cc= callback) if uiType == 'enum': ui = pm.attrEnumOptionMenuGrp(label = uiLabel, at=attribute, ei = getEnumList(attribute)) # attrEnumOptionGrp has no cc callback, so I create a script job if callback is not None: attribute = pm.Attribute(renderGlobalsNodeName + "." + attribute) pm.scriptJob(attributeChange=[attribute, callback], parent=ui) if uiType == 'color': ui = pm.attrColorSliderGrp(label=uiLabel, at=attribute) if uiType == 'string': ui = pm.textFieldGrp(label=uiLabel) if callback is not None: pm.textFieldGrp(ui, edit=True, cc=callback) if uiType == 'vector': ui = pm.floatFieldGrp(label=uiLabel, nf=3) if callback is not None: pm.floatFieldGrp(ui, edit=True, cc=callback) return ui
def addUIElement(uiType, attribute, uiLabel, callback, renderGlobalsNodeName): ui = None if uiType == 'bool': ui = pm.checkBoxGrp(label=uiLabel) if callback is not None: pm.checkBoxGrp(ui, edit=True, cc=callback) if uiType == 'int': ui = pm.intFieldGrp(label=uiLabel, numberOfFields=1) if callback is not None: pm.intFieldGrp(ui, edit=True, cc=callback) if uiType == 'float': ui = pm.floatFieldGrp(label=uiLabel, numberOfFields=1) if callback is not None: pm.floatFieldGrp(ui, edit=True, cc=callback) if uiType == 'enum': ui = pm.attrEnumOptionMenuGrp(label=uiLabel, at=attribute, ei=getEnumList(attribute)) # attrEnumOptionGrp has no cc callback, so I create a script job if callback is not None: attribute = pm.Attribute(renderGlobalsNodeName + "." + attribute) pm.scriptJob(attributeChange=[attribute, callback], parent=ui) if uiType == 'color': ui = pm.attrColorSliderGrp(label=uiLabel, at=attribute) if uiType == 'string': ui = pm.textFieldGrp(label=uiLabel) if callback is not None: pm.textFieldGrp(ui, edit=True, cc=callback) if uiType == 'vector': ui = pm.floatFieldGrp(label=uiLabel, nf=3) if callback is not None: pm.floatFieldGrp(ui, edit=True, cc=callback) return ui
def multi_MentalRaySettings(): # Mental Ray Settings pm.rowColumnLayout(nc=2) pm.text(l='Mental Ray Settings', w=106, al='left', en=False) pm.separator(w=marginWidth-106, h=14) pm.setParent(multiLight_layout) pm.rowColumnLayout(nc=2) pm.text(l='', w=142) # GUI SPACER multi_MrAreaLight_box = pm.checkBox('hp3dUseShapeCheckbox', l='Use Light Shape', cc=fun.partial(multi_checkboxChange, '.areaLight', 'area & spot', 'hp3dUseShapeCheckbox')) pm.setParent(multiLight_layout) pm.rowColumnLayout(nc=3) pm.text(l='Type', w=140, al='right') pm.text(l='', w=3) multi_areaType_menu = pm.optionMenu('hp3dAreaTypeMenu', bgc=primary_componentColor, cc=fun.partial(multi_menuChange, '.areaType', 'area & spot', 'hp3dAreaTypeMenu')) pm.menuItem(l='Rectangle', da=0) pm.menuItem(l='Disc', da=1) pm.menuItem(l='Sphere', da=2) pm.menuItem(l='Cylinder', da=3) pm.menuItem(l='Custom', da=4) pm.setParent(multiLight_layout) multi_highSamples = pm.intFieldGrp('hp3dHighSamplesField', numberOfFields=1, label='High Samples', v1=8, cc=fun.partial(multi_samplesChange, 'highSamp')) multi_highSampLimit = pm.intFieldGrp('hp3dHighSampleLimitField', numberOfFields=1, label='High Sample Limit', v1=1, cc=fun.partial(multi_samplesChange, 'highSampLimit')) multi_lowSamples = pm.intFieldGrp('hp3dLowSamplesField', numberOfFields=1, label='Low Samples', v1=1, cc=fun.partial(multi_samplesChange, 'lowSamp')) pm.setParent(multiLight_layout)
def multi_samplesChange(attr, *args): sel_lights = pm.ls(sl=True, lights=True, dag=True) area_list = sortBy_type(sel_lights, 'areaLight') spot_list = sortBy_type(sel_lights, 'spotLight') if attr == 'highSamp': value = pm.intFieldGrp('hp3dHighSamplesField', q=True, v1=True) for each in area_list: pm.setAttr(each+'.areaHiSamples', value) for each in spot_list: pm.setAttr(each+'.areaSampling', value, value) elif attr == 'highSampLimit': value = pm.intFieldGrp('hp3dHighSampleLimitField', q=True, v1=True) for each in area_list: pm.setAttr(each+'.areaHiSampleLimit', value) for each in spot_list: pm.setAttr(each+'.areaLowLevel', value) elif attr == 'lowSamp': value = pm.intFieldGrp('hp3dLowSamplesField', q=True, v1=True) for each in area_list: pm.setAttr(each+'.areaLoSamples', value) for each in spot_list: pm.setAttr(each+'.areaLowSampling', value, value)
def rand_KeyframeUI(objects=None, attrib=[], axis=["X", "Y", "Z"], uniform=False, uniformObject=False, min=1, max=10, step=1): min=int(pm.intFieldGrp('minMaxTimeIntFieldGrp', q=1, v1=1)) max=int(pm.intFieldGrp('minMaxTimeIntFieldGrp', q=1, v2=1)) objects = pm.textScrollList('selectedTransformObjectsTextScrollList', q=1, ai=1) translateCheckbox = int(pm.checkBoxGrp('randomizeKeyframeCheckBoxGrp', q=1, v1=1)) rotateCheckbox = int(pm.checkBoxGrp('randomizeKeyframeCheckBoxGrp', q=1, v2=2)) scaleCheckbox = int(pm.checkBoxGrp('randomizeKeyframeCheckBoxGrp', q=1, v3=3)) if translateCheckbox == 1: #print "Changing Transform Keyframes" attrib.append("translate") if rotateCheckbox == 1: #print "Changing Rotate Keyframes" attrib.append("rotate") if scaleCheckbox == 1: #print "Changing Scale Keyframes" attrib.append("scale") if attrib == []: pm.error("No Attribute selected") rand_Keyframe(objects=objects, attr=attrib, axis=axis, uniform=uniform, uniformObject=uniformObject, min=min, max=max, step=step)
def __init__(self, settingsObj): rowColumnLayout(nc=2) # LegType UI text(l='Leg Type') self.legType = optionMenu(l='') menuItem(l='Human') menuItem(l='Dogleg') settingsObj.settings.optionMenuSetup(self.legType, 'legType') # Spine Orient UI text(l="Spine Orientation") self.spineOrient = optionMenu(l='') menuItem('Vertical') menuItem('Horizontal') settingsObj.settings.optionMenuSetup(self.spineOrient, 'spineOrient') text(l='Number of Spine Joints') self.spineCount = intFieldGrp(nf=1, v1=settingsObj.settings.spineCount) text(l='Number of Fingers') self.fingerCount = intFieldGrp(nf=1, v1=settingsObj.settings.fingerCount) text(l="Thumb") self.thumb = checkBox(l='', v=settingsObj.settings.thumb) #setParent("..") text(l='') text(l='') text(l='') button(l="Start", w=300, c=core.alt.Callback(self.start))
def addMultiPromp(self): form = pm.setParent(q=True) f = pm.formLayout(form, e=True, width=150) row = pm.columnLayout() nameField = pm.textFieldGrp('addMulti_nameField', label='Name', cw=[(1, 80), (2, 20)], text='', cat=[(1, 'left', 10), (2, 'left', 5)], editable=True) rangeField = pm.intFieldGrp('addMulti_rangeField', label='start-end-step', cw=(1, 80), cat=[(1, 'left', 10), (2, 'left', 5)], numberOfFields=3, value1=1, value2=10, value3=1) rangeField = pm.intFieldGrp('addMulti_zeroField', label='zeroPad', cw=(1, 80), cat=[(1, 'left', 10), (2, 'left', 5)], numberOfFields=1, value1=3) b1 = pm.button(p=f, l='Cancel', c= self.abortMultipleFolders) b2 = pm.button(p=f, l='OK', c= self.addMultipleFolders) spacer = 5 top = 5 edge = 5 pm.formLayout(form, edit=True, attachForm=[(row, 'right', edge), (row, 'top', top), (row, 'left', edge), (row, 'right', edge), (b1, 'right', edge), (b1, 'bottom', edge), (b2, 'left', edge), (b2, 'bottom', edge)], attachNone=[], attachControl=[], attachPosition=[(b1, 'right', spacer, 90), (b2, 'left', spacer, 10)])
def addMultipleFolders(self, *args): sel = pm.treeView(self.widgetName, q=True, si=True) name = pm.textFieldGrp('addMulti_nameField', q=True, tx=True) start = pm.intFieldGrp('addMulti_rangeField', q=True, value1=True) end = pm.intFieldGrp('addMulti_rangeField', q=True, value2=True) step = pm.intFieldGrp('addMulti_rangeField', q=True, value3=True) zeroPad = pm.intFieldGrp('addMulti_zeroField',q=True, value1=True) if sel: for folder in sel: par = folder for i in range(start, end + 1, step): itemName = self.nextFolderName(name, par) + '{number:0{width}d}'.format(width=zeroPad, number=i) print itemName pm.treeView(self.widgetName, e=True, addItem=(itemName, par)) pm.treeView(self.widgetName, e=True, displayLabel=(itemName, itemName.split('_')[-1])) else: par = '' for i in range(start, end + 1, step): itemName = self.nextFolderName(name, par) + '{number:0{width}d}'.format(width=zeroPad, number=i) print itemName pm.treeView(self.widgetName, e=True, addItem=(itemName, par)) pm.treeView(self.widgetName, e=True, displayLabel=(itemName, itemName.split('_')[-1])) self.putFolderTree() pm.layoutDialog(dismiss='ok')
def displayOptions( self ): """Build the interface""" self.interface['TimeRange'] = cmds.radioButtonGrp( numberOfRadioButtons=2, label='Time Range', labelArray2=['Time Slider', 'Start/End'], onCommand=self.disableTimeRange ) self.interface['StartTime'] = cmds.intFieldGrp( label='Start Time' ) self.interface['EndTime'] = cmds.intFieldGrp( label='End Time' ) self.interface['Focals'] = cmds.textFieldGrp( label='Focals' ) self.interface['Cameras'] = cmds.textScrollList( allowMultiSelection=True, width=200, height=100 ) # self.interface['CamerasLabel'] = cmds.text( label='Cameras' ) self.formAttachPosition() cmds.formLayout( self.optionsForm, e=True, attachForm=( [ self.interface['TimeRange'], 'top', 10 ], [ self.interface['Cameras'], 'bottom', 100 ], [ self.interface['Cameras'], 'left', 150 ], ), attachControl=( [ self.interface['StartTime'], 'top', 0, self.interface['TimeRange'] ], [ self.interface['EndTime'], 'top', 0, self.interface['StartTime'] ], [ self.interface['Focals'], 'top', 0, self.interface['EndTime'] ], [ self.interface['Cameras'], 'top', 10, self.interface['Focals'] ], # [ self.interface['CamerasLabel'], 'top', 10, self.interface['Focals'] ], # [ self.interface['CamerasLabel'], 'right', -90, self.interface['Cameras'] ], ), attachNone=( [ self.interface['Cameras'], 'left' ], [ self.interface['Cameras'], 'right' ], ) ) self.editMenuResetCmd() # Set the default values in the interface
def create(self): self.checkBox = pm.checkBox(label = 'Modify Weighting', onCommand = pm.Callback(self.editFields), offCommand = pm.Callback(self.editFields) ) self.antiField = pm.intFieldGrp( numberOfFields=2, label='Antialias/Noise Quality', extraLabel = 'Weight %' , value2 = 45 , enable1 = False , enable2 = False, changeCommand=pm.Callback(self.updateTotal)) self.compField = pm.intFieldGrp( numberOfFields=2, label='Composition/Focal Length', extraLabel = 'Weight %' , value2 = 45 , enable1 = False , enable2 = False ,changeCommand=pm.Callback(self.updateTotal)) self.proField = pm.intFieldGrp( numberOfFields=2, label='Professionalism', extraLabel = 'Weight %' ,value2 = 10 ,enable1 = False , enable2 = False, changeCommand=pm.Callback(self.updateTotal)) self.lateField = pm.intFieldGrp( numberOfFields=1, label='Late Deduction' , changeCommand=pm.Callback(self.updateTotal)) self.totalField = pm.intFieldGrp( numberOfFields=1, label='Total Grade',enable1 = False, changeCommand=pm.Callback(self.updateTotal)) # attaching the controls pm.formLayout( self.layout, edit=1, attachForm=[[self.checkBox, "left", 140], [self.checkBox, "top", 5]]) pm.formLayout( self.layout, edit=1, attachOppositeControl=[[self.antiField ,"top", 40, self.checkBox], [self.antiField, "right", 10, self.checkBox]]) pm.formLayout( self.layout, edit=1, attachOppositeControl=[[self.compField ,"top", 40, self.antiField], [self.compField, "right", 10, self.antiField]]) pm.formLayout( self.layout, edit=1, attachOppositeControl=[[self.proField ,"top", 40, self.compField], [self.proField, "right", 10, self.compField]]) pm.formLayout( self.layout, edit=1, attachOppositeControl=[[self.lateField ,"top", 40, self.proField], [self.lateField, "left", 0, self.proField]]) pm.formLayout( self.layout, edit=1, attachOppositeControl=[[self.totalField ,"top", 40, self.lateField], [self.totalField, "left", 0, self.lateField]]) pm.setParent(self.columnLayout) pm.text(label = '') self.warning = pm.text(label='') pm.text(label = '') #pm.button( label = 'Output Grade and Comment' , width = 480) return None
def FujiRendererCreateTab(self): log.debug("FujiRendererCreateTab()") self.createGlobalsNode() parentForm = pm.setParent(query = True) pm.setUITemplate("attributeEditorTemplate", pushTemplate = True) scLo = self.rendererName + "ScrollLayout" if self.rendererTabUiDict.has_key('common'): self.rendererTabUiDict.pop('common') parentForm = pm.setParent(query = True) uiDict = {} self.rendererTabUiDict['common'] = uiDict with pm.scrollLayout(scLo, horizontalScrollBarThickness = 0): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn = True, width = 400): with pm.frameLayout(label="Sampling", collapsable = True, collapse=False): self.addRenderGlobalsUIElement(attName = 'sampleJitter', uiType = 'float', displayName = 'SampleJitter', default='1.0', uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'sample_time_range_min', uiType = 'float', displayName = 'Sample Time Range Min', default='0.0', uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'sample_time_range_max', uiType = 'float', displayName = 'Sample Time Range Max', default='1.0', uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'samplesX', uiType = 'int', displayName = 'Pixel Samples x', default=3, uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'samplesY', uiType = 'int', displayName = 'Pixel Samples y', default=3, uiDict=uiDict) pm.separator() self.addRenderGlobalsUIElement(attName = 'cast_shadow', uiType = 'bool', displayName = 'Cast Shadows', default='true', uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'max_reflect_depth', uiType = 'int', displayName = 'Max Reflection Depth', default='3', uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'max_refract_depth', uiType = 'int', displayName = 'Max Refraction Depth', default='3', uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'raymarch_step', uiType = 'float', displayName = 'Raymarching Stepsize', default='0.05', uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'raymarch_shadow_step', uiType = 'float', displayName = 'Raymarching Shadow Stepsize', default='0.1', uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'raymarch_reflect_ste', uiType = 'float', displayName = 'Raymarching Reflection Stepsize', default='0.1', uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'raymarch_refract_ste', uiType = 'float', displayName = 'Raymarching Refraction Stepsize', default='0.1', uiDict=uiDict) pm.separator() self.addRenderGlobalsUIElement(attName = 'doMotionBlur', uiType = 'bool', displayName = 'Motionblur:', default=False, uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'doDof', uiType = 'bool', displayName = 'Depth of Field:', default=False, uiDict=uiDict) with pm.frameLayout(label="Output", collapsable = True, collapse=False): attr = pm.Attribute(self.renderGlobalsNodeName + ".imageFormat") ui = pm.attrEnumOptionMenuGrp(label = "Image Format", at=self.renderGlobalsNodeName + ".imageFormat", ei = self.getEnumList(attr)) with pm.frameLayout(label="Filtering", collapsable = True, collapse=False): attr = pm.Attribute(self.renderGlobalsNodeName + ".filtertype") ui = pm.attrEnumOptionMenuGrp(label = "Filter Type", at=self.renderGlobalsNodeName + ".filtertype", ei = self.getEnumList(attr)) ui = pm.intFieldGrp(label="Filter Size:", numberOfFields = 1) pm.connectControl(ui, self.renderGlobalsNodeName + ".filtersize", index = 2 ) with pm.frameLayout(label="Renderer", collapsable = True, collapse=False): self.addRenderGlobalsUIElement(attName = 'use_max_thread', uiType = 'bool', displayName = 'Use Max Threads', default='true', uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'threads', uiType = 'int', displayName = 'Threads', default=8, uiDict=uiDict) self.addRenderGlobalsUIElement(attName = 'tilesize', uiType = 'int', displayName = 'Tile Size', default=64, uiDict=uiDict) ui = pm.intFieldGrp(label="Verbosity:", numberOfFields = 1) pm.connectControl(ui, self.renderGlobalsNodeName + ".rendererVerbosity", index = 2 ) pm.setUITemplate("attributeEditorTemplate", popTemplate = True) pm.formLayout(parentForm, edit = True, attachForm = [ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ]) self.FujiRendererUpdateTab()
def create(self): # this creates the actual GUI components #** returns the last component (the separator) so that the next group can be attached to it if self.control == '': # radioButtonGrp self.row01 = pm.radioButtonGrp( numberOfRadioButtons = 3, label = '%s' % self.name, labelArray3=['A+ -A', 'B+ -B', 'C+ -C'], onCommand = pm.Callback(self.radioCommand)) self.row02 = pm.radioButtonGrp( numberOfRadioButtons = 2, shareCollection = self.row01, label='', labelArray2=['D', 'F'], onCommand = pm.Callback(self.radioCommand)) pm.formLayout( self.layout , edit=1, attachForm=[[self.row01, "top", 5], [self.row01, "left", 5]]) pm.formLayout( self.layout , edit=1, attachForm=[self.row02, "left", 5, ], attachControl=[self.row02, "top", 5, self.row01]) # intField for Grade self.intField = pm.intFieldGrp( numberOfFields = 1, label = 'Grade', changeCommand = pm.Callback(self.totalCommand), backgroundColor = [1,0,0]) self.comments = pm.text( label = 'comments') # comment scrollField #scrollField = self.scrollField.create() self.separator = pm.separator( height=15, width=460, style='in' ) # arranging components pm.formLayout( self.layout , edit=1, attachForm=[self.intField, "top", 5], attachControl=[self.intField, "top", 10, self.row02]) pm.formLayout( self.layout , edit=1, attachForm=[self.scrollField, "left", 140], attachControl=[self.scrollField, "top", 10, self.intField]) pm.formLayout( self.layout , edit=1, attachForm=[self.comments, "left", 60], attachControl=[self.comments, "top", 10, self.intField]) pm.formLayout( self.layout , edit=1, attachForm=[self.separator, "left", 60], attachControl=[self.separator, "top", 10, self.scrollField]) return self.separator else: # radioButtonGrp self.row01 = pm.radioButtonGrp( numberOfRadioButtons = 3, label = '%s' % self.name, labelArray3=['A+ -A', 'B+ -B', 'C+ -C'], onCommand = pm.Callback(self.radioCommand)) self.row02 = pm.radioButtonGrp( numberOfRadioButtons = 2, shareCollection = self.row01, label='', labelArray2=['D', 'F'], onCommand = pm.Callback(self.radioCommand)) pm.formLayout( self.layout , edit=1, attachForm=[[self.row01, "top", 5], [self.row01, "left", 5]] , attachControl=[self.row01, "top", 5, self.control]) pm.formLayout( self.layout , edit=1, attachForm=[self.row02, "left", 5, ], attachControl=[self.row02, "top", 5, self.row01]) # intField for Grade self.intField = pm.intFieldGrp( numberOfFields = 1, label = 'Grade', cc = pm.Callback(self.totalCommand) , backgroundColor = [1,0,0]) self.comments = pm.text( label = 'comments') # comment scrollField #scrollField = self.scrollField.create() self.separator = pm.separator( height=15, width=460, style='in' ) # arranging components pm.formLayout( self.layout , edit=1, attachForm=[self.intField, "top", 5], attachControl=[self.intField, "top", 10, self.row02]) pm.formLayout( self.layout , edit=1, attachForm=[self.scrollField, "left", 140], attachControl=[self.scrollField, "top", 10, self.intField]) pm.formLayout( self.layout , edit=1, attachForm=[self.comments, "left", 60], attachControl=[self.comments, "top", 10, self.intField]) pm.formLayout( self.layout , edit=1, attachForm=[self.separator, "left", 60], attachControl=[self.separator, "top", 10, self.scrollField]) return self.separator
def window(self): win = pm.window(title='Frustum Selection', width=400, s=True, resizeToFitChildren=True) pm.columnLayout(adj=True) radio = pm.radioButtonGrp(nrb=3, l1='Use Time Slider', l2='Start/End', l3='Current Time', sl=1) frameRange = pm.intFieldGrp(nf=2, l='Frame Range: Start', cw1=100, v1=1001, el='End', v2=1100, en=False) radio.onCommand2(pm.Callback(frameRange.setEnable, True)) radio.offCommand2(pm.Callback(frameRange.setEnable, False)) screen_size = pm.intFieldGrp(nf=2, l='Screen Size', cw1=100, v1=2048, el='Height', v2=858) offset = pm.floatFieldGrp(nf=1, l='Selection Offset', cw1=100, el='%', v1=0) invert = pm.checkBoxGrp(ncb=1, l='Invert Selection', cw1=100, v1=0) auto = pm.checkBoxGrp(ncb=1, l='Auto Get Camera', cw1=100, v1=1) pm.text( label= 'Help: it is possible to select multiple cameras.\nfilmTranslate attribute on camera is NOT in effect on selecting, use filmOffset instead.\nPositive offset shrink selection while negative expanding.', align='left', fn='boldLabelFont', recomputeSize=True, wordWrap=True) #autoFunc, widthFunc, heightFunc, modeFunc, offsetFunc, invertFunc, startFunc, endFunc): pm.button(l='Select', command=pm.Callback(self.getObjectInFrustumShell, auto.getValue1, screen_size.getValue1, screen_size.getValue2, radio.getSelect, offset.getValue1, invert.getValue1, frameRange.getValue1, frameRange.getValue2)) pm.button(l='Tag', command=pm.Callback(self.tagMasters)) pm.button(l='Delete All Tags', command=pm.Callback(self.deleteAllTags)) pm.separator(style='in', h=10) pm.button(label='Close', command=pm.Callback(pm.deleteUI, win.name())) pm.showWindow(win.name())
def KrayFinalGatheringCreateTab(self): log.debug("KrayFinalGatheringCreateTab()") self.createGlobalsNode() parentForm = pm.setParent(query=True) pm.setUITemplate("attributeEditorTemplate", pushTemplate=True) scLo = self.rendererName + "PhotonsScrollLayout" with pm.scrollLayout(scLo, horizontalScrollBarThickness=0): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): with pm.frameLayout(label="Photons frame", collapsable=True, collapse=False): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): ui = pm.floatFieldGrp(label="Threshold:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgThreshold", index=2) pm.separator() ui = pm.intFieldGrp(label="Min Rays:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgMinRays", index=2) ui = pm.intFieldGrp(label="Max Rays:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgMaxRays", index=2) ui = pm.floatFieldGrp(label="Prerender:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgPrerender", index=2) ui = pm.intFieldGrp(label="Passes:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgPasses", index=2) pm.separator() ui = pm.floatFieldGrp(label="Sploth Detect:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgSplotchDetect", index=2) ui = pm.floatFieldGrp(label="Sensitivity:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgSensitivity", index=2) pm.separator() ui = pm.checkBoxGrp(label="FG Reflections:", value1=False) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgReflections", index=2) ui = pm.checkBoxGrp(label="FG Refractions:", value1=False) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgRefractions", index=2) pm.separator() ui = pm.floatFieldGrp(label="Spatial Tolerance:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgSpatialTolerance", index=2) ui = pm.floatFieldGrp(label="Angular Tolerance:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgAngularTolerance", index=2) ui = pm.floatFieldGrp(label="FG Min Dist:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgDistMin", index=2) ui = pm.floatFieldGrp(label="FG Dist Max:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgDistMax", index=2) ui = pm.floatFieldGrp(label="Density/Brightness:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgBrightness", index=2) pm.separator() ui = pm.intFieldGrp(label="Path Passes:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgPathPasses", index=2) ui = pm.floatFieldGrp(label="Corner Dist:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgCornerDist", index=2) ui = pm.checkBoxGrp(label="Show Samples:", value1=False) pm.connectControl(ui, self.renderGlobalsNodeName + ".fgShowSamples", index=2) pm.setUITemplate("attributeEditorTemplate", popTemplate=True) pm.formLayout(parentForm, edit=True, attachForm=[ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ])
def randomizer_createUserInterface(): """-------------------------------------------------------------------------- Create User Interface Procedure --------------------------------------------------------------------------""" pm.window('randomizer_window', s=0, rtf=0, t="randomizer", wh=(300, 700)) # Create UI elements pm.columnLayout('mainColumnLayout', h=900, w=248, columnAlign="center", adjustableColumn=1) pm.separator('selectedTransformObjectsSeparator', h=10, w=240, st="none") pm.text('selectedTransformObjectsText', fn="boldLabelFont", h=24, l="selected transform Objects", w=240, al="center") pm.textScrollList('selectedTransformObjectsTextScrollList', h=80, w=240) pm.button('loadObjectsButton', h=28, c=lambda *args: randomizer_loadSelection(0), l="load transform Objects", w=240) pm.separator('selectedMaterialsSeparator', h=10, w=240, st="none") pm.text('selectedMaterialsText', fn="boldLabelFont", h=24, l="selected Materials", w=240, al="center") pm.textScrollList('selectedMaterialsTextScrollList', h=80, w=240) pm.button('loadMaterialsButton', h=28, c=lambda *args: randomizer_loadSelection(1), l="load Materials", w=240) pm.separator('transformAttributesSeparator', h=10, w=240, st="none") pm.text('randomizeAttributesText', fn="boldLabelFont", h=24, l="randomize Attributes", w=240, al="center") pm.checkBoxGrp('randomizeAttributesCheckBoxGrp', h=24, l4="Material", l2="Rotate", l3="Scale", w=240, l1="Translate", ncb=4, cw=[(1, 67), (2, 57), (3, 50), (4, 57)]) pm.separator('translateAttributesSeparator', h=10, w=240, st="none") pm.text('translateText', fn="boldLabelFont", h=24, l="Translate", w=240, al="center") pm.floatFieldGrp('minMaxXtranslateFloatFieldGrp', pre=3, el="max X", bgc=(0.25, 0, 0), h=24, l="min X", nf=2, v1=0, v2=0, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)]) pm.floatFieldGrp('minMaxYtranslateFloatFieldGrp', pre=3, el="max Y", bgc=(0, 0.25, 0), h=24, l="min Y", nf=2, v1=0, v2=0, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)]) pm.floatFieldGrp('minMaxZtranslateFloatFieldGrp', pre=3, el="max Z", bgc=(0, 0, 0.25), h=24, l="min Z", nf=2, v1=0, v2=0, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)]) pm.separator('rotateAttributesSeparator', h=10, w=240, st="none") pm.text('rotateText', fn="boldLabelFont", h=24, l="Rotate", w=240, al="center") pm.floatFieldGrp('minMaxXrotateFloatFieldGrp', pre=3, el="max X", bgc=(0.25, 0, 0), h=24, l="min X", nf=2, v1=0, v2=0, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)]) pm.floatFieldGrp('minMaxYrotateFloatFieldGrp', pre=3, el="max Y", bgc=(0, 0.25, 0), h=24, l="min Y", nf=2, v1=0, v2=0, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)]) pm.floatFieldGrp('minMaxZrotateFloatFieldGrp', pre=3, el="max Z", bgc=(0, 0, 0.25), h=24, l="min Z", nf=2, v1=0, v2=0, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)]) pm.separator('scaleAttributesSeparator', h=10, w=240, st="none") pm.text('scaleText', fn="boldLabelFont", h=24, l="Scale", w=240, al="center") pm.floatFieldGrp('minMaxXscaleFloatFieldGrp', pre=3, el="max X", bgc=(0.25, 0, 0), h=24, l="min X", nf=2, v1=1, v2=1, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)]) pm.floatFieldGrp('minMaxYscaleFloatFieldGrp', pre=3, el="max Y", bgc=(0, 0.25, 0), h=24, l="min Y", nf=2, v1=1, v2=1, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)]) pm.floatFieldGrp('minMaxZscaleFloatFieldGrp', pre=3, el="max Z", bgc=(0, 0, 0.25), h=24, l="min Z", nf=2, v1=1, v2=1, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)]) pm.separator('randomizeSelectionSeparator', h=10, w=240, st="none") pm.button('randomizeAbsoluteButton', h=28, c=lambda *args: randomizer_randomizeSelection(), l="randomize Abolute", w=240) pm.button('randomizeRelativeButton', h=28, c=lambda *args: randomizer_randomizeSelection(relative=True), l="randomize Relative", w=240) pm.separator('timeAttributesSeparator', h=10, w=240, st="none") pm.text('timeText', fn="boldLabelFont", h=24, l="Time", w=240, al="center") pm.intFieldGrp('minMaxTimeIntFieldGrp', el="max", bgc=(0, 0, 0), h=24, l="min", nf=2, v1=-1, v2=1, w=240, cw=[(1, 60), (2, 60), (3, 60), (4, 60)]) pm.button('setUniformKeyframe', h=28, c=lambda *args: rand_Keyframe(objects=None, attribute="all", axis=["X", "Y", "Z"], uniform=True, min=-10, max=10, step=1), l="Set Keyframes uniform", w=240) pm.button('setRandomKeyframe', h=28, c=lambda *args: rand_Keyframe(objects=None, attribute="all", axis=["X", "Y", "Z"], uniform=False, min=-10, max=10, step=1), l="Set Keyframes random", w=240) pm.separator('undoSeparator', h=10, w=240, st="none") pm.button('undoButton', h=28, c=lambda *args: pm.undo(), l="undo", w=240) pm.iconTextButton('staschiIconTextButton', h=28, c=lambda *args: randomizer_loadHelpWebsite(), l="www.staschi.com", w=240, st="textOnly") pm.setParent('..') pm.setParent('..') # Display UI pm.showWindow('randomizer_window')
def KrayRendererUpdateTab(self, dummy=None): self.createGlobalsNode() #self.updateEnvironment() log.debug("KrayRendererUpdateTab()") sDict = self.rendererTabUiDict['sampling'] sType = self.renderGlobalsNode.samplingType.get() if sType != 1: #grid pm.intFieldGrp(sDict['gridSize'], edit=True, enable=False) pm.checkBoxGrp(sDict['gridRotate'], edit=True, enable=False) else: pm.intFieldGrp(sDict['gridSize'], edit=True, enable=True) pm.checkBoxGrp(sDict['gridRotate'], edit=True, enable=True) fType = self.renderGlobalsNode.filtertype.get() if fType in [4, 5, 6]: pm.floatFieldGrp(sDict['filterSize'], edit=True, enable=False) else: pm.floatFieldGrp(sDict['filterSize'], edit=True, enable=True) iFormat = self.renderGlobalsNode.imageFormat.get() if iFormat in [2, 3]: pm.attrEnumOptionMenuGrp(sDict['bitdepth'], edit=True, enable=True) else: pm.attrEnumOptionMenuGrp(sDict['bitdepth'], edit=True, enable=False) if iFormat == 1: pm.intFieldGrp(sDict['jpgQuality'], edit=True, enable=True) else: pm.intFieldGrp(sDict['jpgQuality'], edit=True, enable=False)
def displayOptions(self): """Build the interface""" self.interface['TimeRange'] = cmds.radioButtonGrp( numberOfRadioButtons=2, label='Time Range', labelArray2=['Time Slider', 'Start/End'], onCommand=self.disableTimeRange) self.interface['StartTime'] = cmds.intFieldGrp(label='Start Time') self.interface['EndTime'] = cmds.intFieldGrp(label='End Time') self.interface['Focals'] = cmds.textFieldGrp(label='Focals') self.interface['Cameras'] = cmds.textScrollList( allowMultiSelection=True, width=200, height=100) # self.interface['CamerasLabel'] = cmds.text( label='Cameras' ) self.formAttachPosition() cmds.formLayout( self.optionsForm, e=True, attachForm=( [self.interface['TimeRange'], 'top', 10], [self.interface['Cameras'], 'bottom', 100], [self.interface['Cameras'], 'left', 150], ), attachControl=( [ self.interface['StartTime'], 'top', 0, self.interface['TimeRange'] ], [ self.interface['EndTime'], 'top', 0, self.interface['StartTime'] ], [ self.interface['Focals'], 'top', 0, self.interface['EndTime'] ], [ self.interface['Cameras'], 'top', 10, self.interface['Focals'] ], # [ self.interface['CamerasLabel'], 'top', 10, self.interface['Focals'] ], # [ self.interface['CamerasLabel'], 'right', -90, self.interface['Cameras'] ], ), attachNone=( [self.interface['Cameras'], 'left'], [self.interface['Cameras'], 'right'], )) self.editMenuResetCmd() # Set the default values in the interface
def __init__(self, name): self.name = name if pm.window(self.name, q=True, exists=True): pm.deleteUI(self.name) self.window = pm.window(self.name, width=300) pm.columnLayout(columnOffset=("both", 20), height=100, rowSpacing=10) pm.separator() self.scale = pm.floatSliderGrp(label="Camera Scale", field=True, value=0.1, precision=3, columnAlign=(1, "left")) self.single = pm.checkBoxGrp(label="Export Single Frame", value1=False, columnAlign=(1, "left")) self.houexp = pm.checkBoxGrp(label="Export Houdini Camera", value1=True, columnAlign=(1, "left")) self.mayaexp = pm.checkBoxGrp(label="Export Maya Camera", value1=True, columnAlign=(1, "left")) self.range = pm.intFieldGrp( numberOfFields=2, label="Frame Range", value1=int(pm.playbackOptions(query=True, min=True)), value2=int(pm.playbackOptions(query=True, max=True)), columnAlign=(1, "left")) pm.separator() pm.rowLayout(numberOfColumns=2, width=300, adjustableColumn=1) pm.button(label="Export", width=300, command=self.exportCamera) pm.showWindow(self.name)
def finalize(*args): Input_spineJoints = pm.intFieldGrp("spineNumberField", q=True, v1=True) Input_RigPrefix = pm.textFieldGrp("RigPrefix", q=True, tx=True) AutoRig_JT.finaliseRig(Input_spineJoints,Input_RigPrefix)
def _addLocMultiOptions(): pm.setParent(q=True) pm.columnLayout(adjustableColumn=True, cal="right") pm.text(l='', al="center") fl = pm.formLayout() jNumber = pm.intFieldGrp(v1=3, l="Joint Number") pm.setParent('..') pm.formLayout(fl, e=True, af=(jNumber, "left", -30)) dirSet = ["X", "-X", "Y", "-Y", "Z", "-Z"] fl = pm.formLayout() dirAxis = pm.optionMenu(l="Direction") dirAxis.addMenuItems(dirSet) pm.setParent('..') pm.formLayout(fl, e=True, af=(dirAxis, "left", 70)) fl = pm.formLayout() jSpac = pm.floatFieldGrp(v1=1.0, l="spacing") pm.setParent('..') pm.formLayout(fl, e=True, af=(jSpac, "left", -30)) pm.text(l='', al="center") pm.button(l='Continue', c=partial(_retriveOptions, jNumber, dirAxis, jSpac)) pm.setParent('..')
def dimConnections(element): print "DimConnections" if element['name'] in ['motionblur']: value = pm.checkBoxGrp( element['name'], query = True, v1 = True) print element['uielement'] valueInv = value #groups = mantraGlobalsAttributes.mantraGlobalsAttributes #if el['name'] in ['xftimesamples', 'geotimesamples', 'motionfactor', 'mbtype']: if value: print "enabling ctrls" else: print "disabling ctrls" pm.intFieldGrp('xftimesamples', edit = True, enable = valueInv) pm.intFieldGrp('geotimesamples', edit = True, enable = valueInv) pm.floatFieldGrp('motionfactor', edit = True, enable = valueInv) pm.attrEnumOptionMenu('mbtype', edit = True, enable = valueInv) pm.checkBoxGrp('imagemotionblur', edit = True, enable = valueInv)
def setValue(self, value): if value == "stdingfilename": self.fileName = pm.textFieldButtonGrp("stdingfilename", query=True, text=True) if value == "stdinshowpoints": self.showPoints = pm.checkBoxGrp("stdinshowpoints", query=True, value1=True) if value == "stdinptdensity": self.density = pm.floatFieldGrp("stdinptdensity", query=True, value1=True) if value == "stdinptsize": self.pointSize = pm.intFieldGrp("stdinptsize", query=True, value1=True)
def create(self, stationary_count, offset_count): ''' Create the fgshooter window. ''' if pm.window(self.window_name, exists=True): pm.deleteUI(self.window_name) pm.window(self.window_name, title=self.window_title) main_form = pm.formLayout(numberOfDivisions=2) self.column = pm.columnLayout(adjustableColumn=True) # Render Camera self.render_camera_field = pm.checkBoxGrp(label="Include Render Camera", value1=self.render_camera, changeCommand=self.updateRenderCamera) # Stationary Cameras pm.separator(height=20, style="in") pm.rowLayout(numberOfColumns=3, columnWidth3=(140, 80, 80), columnAlign=(1, 'right'), columnAttach3=("right", "both", "both")) pm.text("Stationary Cameras") self.stationary_field = pm.intField(value=stationary_count) pm.button(label="Update", height=22, command=self.update) pm.setParent('..') self.stationary = [] i = 0 while i < stationary_count: self.stationary.append(pm.floatFieldGrp(value1=self.stationary_frames[i], label="frame")) i += 1 # Offset Cameras pm.separator(height=20, style="in") pm.rowLayout(numberOfColumns=3, columnWidth3=(140, 80, 80), columnAlign=(1, 'right'), columnAttach3=("right", "both", "both")) pm.text("Offset Cameras") self.offset_field = pm.intField(value=offset_count) pm.button(label="Update", height=22, command=self.update) pm.setParent('..') self.offset = [] i = 0 while i < offset_count: self.offset.append(pm.intFieldGrp(value1=self.offset_frames[i], label="frame offset")) i += 1 pm.setParent('..') # remove/apply buttons self.remove_button = pm.button(label="Remove All", height=30, command=self.remove) self.apply_button = pm.button(label="Apply / Refresh", height=30, command=self.apply) pm.formLayout(main_form, edit=True, attachForm=[(self.column, "top", 2),(self.column, "left", 2),(self.column, "right", 2), (self.remove_button, "bottom", 2), (self.remove_button, "left", 2), (self.apply_button, "bottom", 2), (self.apply_button, "right", 2)], attachControl=(self.remove_button, "right", 1, self.apply_button), attachPosition=[ (self.remove_button, "right", 0, 1), (self.apply_button, "left", 1, 1)] ) pm.setParent('..') pm.showWindow()
def createAssetCallBack(self, *args): name = pm.textFieldGrp('CrAsset_nameField', q=True, tx=True) if not name: return pm.confirmDialog(title='error', ma='center', message='please choose a name for the asset', button=['OK'], defaultButton='OK', dismissString='OK') workflow = pm.optionMenuGrp('CrAsset_workflowOpt', q=True, v=True) code = pm.textFieldGrp('CrAsset_codeField', q=True, tx=True) if self.type == 'shot': start = pm.intFieldGrp('rangeField', q=True,value1=True) end = pm.intFieldGrp('rangeField', q=True,value2=True) itemDict = database.createItem(self.type, name, self.path, workflow, code=code, frameRange=[start, end]) else: itemDict = database.createItem (self.type, name, self.path, workflow, code=code) if itemDict == 'codeExists': return pm.confirmDialog(title='error', ma='center', message='this code already exists', button=['OK'], defaultButton='OK', dismissString='OK') pm.layoutDialog(dismiss='ok')
def __init__(self): self.title = "Mantra Standin" self.fileName = "" self.density = .3 self.pointSize = 1 self.showPoints = False self.boundingBox = [-.5, -.5, -.5, .5, .5, .5] pm.setUITemplate("DefaultTemplate", pushTemplate=True) self.height = 500 with pm.frameLayout(collapsable=False, labelVisible=False) as frame: pm.textFieldButtonGrp("stdingfilename", label="GeoFileName", text="", buttonLabel="Select", bc=pm.Callback(self.selectGeoFile), cc=pm.Callback(self.setValue, "stdingfilename")) #string $b = `symbolButton -image "navButtonBrowse.xpm" browser`; with pm.frameLayout(collapsable=False, label="Points"): pm.checkBoxGrp("stdinshowpoints", label="Show Points", value1=False, cc=pm.Callback(self.setValue, "stdinshowpoints")) pm.floatFieldGrp("stdinptdensity", label="PointDensity", value1=0.3, cc=pm.Callback(self.setValue, "stdinptdensity")) pm.intFieldGrp("stdinptsize", label="PointSize", value1=1, cc=pm.Callback(self.setValue, "stdinptsize")) with pm.rowLayout(nc=2): pm.button(label="Create Standin", c=pm.Callback(self.createStandin)) pm.button(label="Cancel", c=pm.Callback(self.delete)) self.show()
def createAssetPrompt(self): code = '' proj = database.getProjectDict() if self.type == 'asset': code = "%04d" % proj['nextAsset'] elif self.type == 'shot': code = "%04d" % proj['nextShot'] form = pm.setParent(q=True) f = pm.formLayout(form, e=True, width=150) row = pm.rowLayout(nc=2, adj=2) pm.picture(image='sphere.png', w=50, h=50) col = pm.columnLayout(adjustableColumn=True) nameField = pm.textFieldGrp('CrAsset_nameField', label='Name', cw=(1, 70), text='', adj=2, cat=[(1, 'left', 5), (2, 'left', 5)], editable=True) codeField = pm.textFieldGrp('CrAsset_codeField', label='Code', cw=(1, 70), text=code, adj=2, cat=[(1, 'left', 5), (2, 'left', 5)], editable=True) workflow = pm.optionMenuGrp('CrAsset_workflowOpt', label='Workflow', cw=(1, 70), cat=[(1, 'left', 5), (2, 'left', 5)]) proj = database.getProjectDict() for key in proj['workflow']: context = set([proj['workflow'][key][x]['type'] for x in proj['workflow'][key]]) if self.type in context: pm.menuItem(label=key) b1 = pm.button(p=f, l='Cancel', c=self.abortCreateCallback) b2 = pm.button(p=f, l='OK', c=self.createAssetCallBack) if self.type == 'shot': range = pm.intFieldGrp('rangeField', p=form, numberOfFields=2, label='start', extraLabel='end', value1=1, value2=48 ) spacer = 5 top = 5 edge = 5 pm.formLayout (form, edit=True, attachForm=[(row, 'right', edge), (row, 'top', top), (row, 'left', edge), (row, 'right', edge), (b1, 'right', edge), (b1, 'bottom', edge), (b2, 'left', edge), (b2, 'bottom', edge)], attachNone=[], attachControl=[(range, 'top', spacer, row), (range, 'bottom', spacer, b1)], attachPosition=[(b1, 'right', spacer, 90), (b2, 'left', spacer, 10)]) else: spacer = 5 top = 5 edge = 5 pm.formLayout(form, edit=True, attachForm=[(row, 'right', edge), (row, 'top', top), (row, 'left', edge), (row, 'right', edge), (b1, 'right', edge), (b1, 'bottom', edge), (b2, 'left', edge), (b2, 'bottom', edge)], attachNone=[], attachControl=[], attachPosition=[(b1, 'right', spacer, 90), (b2, 'left', spacer, 10)])
def getModuleInstance(self): baseNameT = pm.textFieldGrp(self.baseNameT,q = 1,text = 1) sideT = pm.textFieldGrp(self.sideT,q = 1,text = 1) cntAxisT = pm.textFieldGrp(self.cntAxisT,q = 1,text = 1) cntSizeBodyV = pm.floatFieldGrp(self.cntSizeBody,q = 1,value1 = 1) cntSizeIkV = pm.floatFieldGrp(self.cntSizeIk,q = 1,value1 = 1) segmentN = pm.intFieldGrp(self.segment,q = 1,v = 1) mainMetaNode = pm.optionMenu(self.mainMetaNodeM,q = 1,v = 1) self.__pointerClass = SpineModule(baseName = baseNameT,side = sideT,bodySize = cntSizeBodyV,ctrlAxis = cntAxisT, ikSize = cntSizeIkV,segment = segmentN,metaMain = mainMetaNode) return self.__pointerClass
def create_ui(self): self.layout = pm.columnLayout(adjustableColumn= True) self.root_joint = pm.checkBox(label='Create Root Joint') self.export = pm.checkBox(label='Export When Finished') self.delete = pm.checkBox(label='Delete When Finished') self.visibility = pm.checkBox(label='Visibility State', value= 1) self.start_end_fields = pm.intFieldGrp( numberOfFields=2, label=u'Start & End Frames', value1=0, value2=100, columnWidth3= [105,90,90]) pm.text(label= '') pm.button(label= 'Bake Simulation', height= 190, command= pm.Callback(self.bake_simulation)) return self.layout
def initialiseLayout(self): #======================================================================= # Define Top Level Layout #======================================================================= self.widgets['top_level_layout'] = pm.verticalLayout() #======================================================================= # Define Layout #======================================================================= # Title Layout pm.setParent(self.widgets['top_level_layout']) self.widgets["prefix_textField"] = pm.textFieldGrp(label='prefix', text='testRibbon', cw=[1,100], adj=2) self.widgets["numJoint_intField"] = pm.intFieldGrp(label='number of joints', cw=[1,100], adj=2, value1=10) self.widgets["spans_intField"] = pm.intFieldGrp(label='number of spans', cw=[1,100], adj=2, value1=5) self.widgets["create_button"] = pm.button(label="Create", command=self.create_ribbon_callback) #======================================================================= # Redistribute #======================================================================= self.widgets['top_level_layout'].redistribute()
def __init__(self): self.name = "ArnoldMosaicWindow" self.title = "Arnold Mosaic" if (pm.window(self.name, exists=True)): pm.deleteUI(self.name) self.window = pm.window(self.name, title=self.title) self.layout = pm.columnLayout(adjustableColumn=True) self.resolution = pm.intFieldGrp(numberOfFields=2, label='Resolution', extraLabel='px', parent=self.layout, value1=pm.getAttr("defaultResolution.width"), value2=pm.getAttr("defaultResolution.height") ) self.tiles = pm.intFieldGrp(numberOfFields=2, label='Tiles', parent=self.layout, value1=2, value2=2 ) self.frames = pm.textFieldButtonGrp(label="Frames", text="%s"%int(pm.currentTime()), buttonLabel='Current Frame', buttonCommand=self.setToCurrentFrame) self.renderButton = pm.button("Render", command=self.render) self.renderAllLayers = pm.checkBox("Render All Active Layers", value=True)
def create_ui(self): ''' # this creates the ui # returns the layout for the gui components ''' self.layout = pm.columnLayout(adjustableColumn= True) self.root_joint = pm.checkBox(label='Create Root Joint') self.export = pm.checkBox(label='Export When Finished') self.delete = pm.checkBox(label='Delete When Finished') self.visibility = pm.checkBox(label='Visibility State', value= 1) self.group = pm.checkBox(label='Group System', value= 1) self.combine = pm.checkBox(label='Combine Meshes', value= 0) self.start_end_fields = pm.intFieldGrp( numberOfFields=2, label=u'Start & End Frames', value1=0, value2=100, columnWidth3= [105,90,90]) pm.text(label= '') pm.button(label= 'Bake Simulation', height= 130, command= pm.Callback(self.bake_simulation)) return self.layout
def build(self, *args): ''' Call methods to build the joints on nurbs plane setup ''' _name = 'build' pymelLogger.info('Started: %s' % _name) # Validate user input name = pm.textFieldGrp(self.nameFld, q=1, text=1) num = pm.intFieldGrp(self.numFld, q=1, v=1)[0] rad = pm.floatFieldGrp(self.radFld, q=1, v=1)[0] axis = pm.radioButtonGrp(self.buildFld, q=1, sl=1) objs = pm.ls(sl=1) if not name: pymelLogger.error('No name entered by user. Must enter a name. Exiting.') return if num < 1 or num > 50: pymelLogger.error('%s is an invalid value for number of joints. Must be between 3 - 50. Exiting.' % num) return if rad < 0.009 or rad > 10: pymelLogger.error('%s is an invalid value for joint radius. Must be between 0.01 - 10. Exiting.' % rad) return if not objs: pymelLogger.error('No objects selected. Must select objects to build curve along. Exiting.') return # Call build methods crv1, crv2 = self._createCurves(objs=objs, axis=axis, num=num) plane = self._createPlane(name=name, crv1=crv1, crv2=crv2) follicles = self._createFollicles(name=name, plane=plane, num=num) self._createJoints(name=name, follicles=follicles, rad=rad) pm.delete(crv1, crv2) pymelLogger.info('Ended: %s' % _name) pymelLogger.info('Build successful!')
def __init__(self,parent,mainUi): self.mainUi = mainUi self.__popuItems = [] pm.setParent(parent) self.mainL = pm.columnLayout(adj = 1) pm.separator(h = 10) #(self,baseName = 'arm',side = 'l',size = 1.5, self.name = pm.text(l = '**** Spine Module ****') self.baseNameT = pm.textFieldGrp(l = 'baseName : ',ad2 = 1,text = 'spine',cl2 = ['left','left']) self.sideT = pm.textFieldGrp(l = 'side :',ad2 = 1,text = 'm',cl2 = ['left','left']) self.cntAxisT = pm.textFieldGrp(l = 'ctrl Axis :',ad2 = 1,text = 'y',cl2 = ['left','left']) self.cntSizeBody = pm.floatFieldGrp(l = 'ctrl Size : ',cl2 = ['left','left'],ad2 = 1,numberOfFields = 1,value1 = 2) self.cntSizeIk = pm.floatFieldGrp(l = 'ik Size : ',cl2 = ['left','left'],ad2 = 1,numberOfFields = 1,value1 = 1.8) self.segment = pm.intFieldGrp(l = 'segment Number : ',cl2 = ['left','left'],ad2 = 1,numberOfFields = 1,value1 = 9) self.mainMetaNodeM = pm.optionMenu(l = 'mainMeta : ') metaUtils.metaSel() self.removeB = pm.button(l = 'remove',c = self.__removeInstance) pm.separator(h = 10) self.__pointerClass = None
def __init__(self, name): self.name = name self.savedir = str(pc_playblast.saveLocation() + "/") print("Playblast camera init succsess") if pm.window(self.name, q=True, exists=True): pm.deleteUI(self.name) self.window = pm.window(self.name, width=300) pm.columnLayout(columnOffset=("both", 20), height=100, rowSpacing=10) pm.separator() self.saveloc = pm.textFieldGrp(label="Save Location", text=self.savedir, columnAlign=(1, "left")) self.range = pm.intFieldGrp( numberOfFields=2, label="Frame Range", value1=int(pm.playbackOptions(query=True, min=True)), value2=int(pm.playbackOptions(query=True, max=True)), columnAlign=(1, "left")) pm.separator() pm.rowLayout(numberOfColumns=3, width=300, adjustableColumn=1) pm.button(label="Export", width=300, command=self.runPlayblast) pm.showWindow(self.name)
def ui(self): ''' Create UI ''' _name = 'ui' pymelLogger.info('Started: %s' % _name) winName = 'ms_jointsOnNurbsPlaneWin' if(pm.window(winName, exists=True)): pm.deleteUI(winName, window=True) win = pm.window(winName) with pm.formLayout() as form: self.nameFld = pm.textFieldGrp(l='Name') self.numFld = pm.intFieldGrp(l='Joints (3-50)', v1=3) self.radFld = pm.floatFieldGrp(l='Radius (0.01 - 10)', v1=0.5, pre=2) self.buildFld = pm.radioButtonGrp(l='Plane Curve Duplicate', labelArray3=['x', 'y', 'z'], nrb=3, sl=3) pm.text('Select objects to create plane along, then press "Build"') pm.button(l='>> Build <<', c=self.build) form.redistribute() pm.showWindow() pymelLogger.info('Ended: %s' % _name)
def create_ui(self): ''' # this creates the ui # returns the layout for the gui components ''' self.layout = pm.columnLayout(adjustableColumn=True) self.root_joint = pm.checkBox(label='Create Root Joint') self.export = pm.checkBox(label='Export When Finished') self.delete = pm.checkBox(label='Delete When Finished') self.visibility = pm.checkBox(label='Visibility State', value=1) self.group = pm.checkBox(label='Group System', value=1) self.combine = pm.checkBox(label='Combine Meshes', value=0) self.start_end_fields = pm.intFieldGrp(numberOfFields=2, label=u'Start & End Frames', value1=0, value2=100, columnWidth3=[105, 90, 90]) pm.text(label='') pm.button(label='Bake Simulation', height=130, command=pm.Callback(self.bake_simulation)) return self.layout
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 initialiseLayout(self): #======================================================================= # Top Level Layout #======================================================================= self.widgets['top_level_layout'] = pm.verticalLayout() self.widgets['top_level_column'] = pm.columnLayout(adj=True, rowSpacing=2, columnAttach = ['both', 5]) #======================================================================= # NAME #======================================================================= #------------------------------------------------------------- Separator pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() pm.separator(style='out') pm.text(label=' Name ') pm.separator(style='out') h.redistribute(1,1,1) #------------------------------------------------------- Prefix / Suffix pm.setParent(self.widgets['top_level_column']) self.widgets["suffix_TFG"] = pm.textFieldGrp(label='Suffix :', cw=[1,50], adj=2, text='ctrl') #======================================================================= # CONTROL #======================================================================= #------------------------------------------------------------- Separator pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() pm.separator(style='out') pm.text(label=' Control ') pm.separator(style='out') h.redistribute(1,1,1) #----------------------------------------------------------- Offset Node pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() self.widgets['offsetNode_CB'] = pm.checkBox( label = 'Offset Node ', value=True) self.widgets['offsetNode_TF'] = pm.textField(text='Offset') h.redistribute(1,2) #--------------------------------------------------------------- Cluster pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() self.widgets['cluster_CB'] = pm.checkBox( label = 'Control Cluster', value=False) self.widgets['clusterGroup_RBG'] = pm.radioButtonGrp( labelArray2=['Each', 'All'], numberOfRadioButtons=2 , cw=[1,100], adj=3, select=1) h.redistribute(1,2) #------------------------------------------------------------- ShapeNode pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() self.widgets['shape_CB'] = pm.checkBox( label = 'Shape Node ', value=True) self.widgets['shape_TSL'] = pm.textScrollList( numberOfRows=5, allowMultiSelection=False, append = self.shapeList, selectIndexedItem=1) h.redistribute(1,2) #------------------------------------------------------------ Shape Axis pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() pm.text(label = 'Shape Axis') self.widgets['shapeAxis_OM'] = pm.optionMenu() pm.menuItem(label = "+x") pm.menuItem(label = "+y") pm.menuItem(label = "+z") pm.menuItem(label = "-x") pm.menuItem(label = "-y") pm.menuItem(label = "-z") h.redistribute(1,2) #------------------------------------------------------------- Hierarchy pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() pm.text(label='Parent') self.widgets['hierarchry_RB'] = pm.radioButtonGrp( labelArray2=['World', 'Selection Order'], numberOfRadioButtons=2 , cw=[1,100], adj=3, select=1) h.redistribute(1,2) #------------------------------------------------------- Constraint Type pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() pm.text(label='Constraint Type:') self.widgets['tConst_CB'] = pm.checkBox(label='Point', value=False) self.widgets['rConst_CB'] = pm.checkBox(label='Orient', value=False) h.redistribute(1,1,1) pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() pm.text(label="") self.widgets['pConst_CB'] = pm.checkBox(label='Parent', value=True) self.widgets['sConst_CB'] = pm.checkBox(label='Scale', value=True) h.redistribute(1,1,1) #--------------------------------------------------------- Create Button pm.setParent(self.widgets['top_level_column']) self.widgets['create_BTN'] = pm.button( label="Create Control(s)", h=50, c=pm.Callback(self.create_BTN_pressed)) #======================================================================= # EDIT #======================================================================= #------------------------------------------------------------- Separator pm.setParent(self.widgets['top_level_column']) pm.separator(style="none", h=10) h = pm.horizontalLayout() pm.separator(style='out') pm.text(label=' Edit Color') pm.separator(style='out') h.redistribute(1,1,1) #----------------------------------------------------------------- Color pm.setParent(self.widgets['top_level_column']) main_layout = pm.formLayout() columns = 32 / 2 rows = 2 cell_width = 24 cell_height = 24 self.widgets['color_palette'] = pm.palettePort( dimensions=(columns, rows), transparent=0, width=(columns*cell_width), height=(rows*cell_height), topDown=True, colorEditable=False, changeCommand=pm.Callback(self.color_palette_changed)); for index in range(1, 32): color_component = pm.colorIndex(index, q=True) pm.palettePort( self.widgets['color_palette'], edit=True, rgbValue=(index, color_component[0], color_component[1], color_component[2])) #------------------------------------------------------------- Separator pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() pm.separator(style='out') pm.text(label=' Edit Channels') pm.separator(style='out') h.redistribute(1,1,1) #--------------------------------------------------------------- Channel pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() pm.text(label='Translate') self.widgets['tHide_BTN'] = pm.button(label='Hide', command=pm.Callback(self.tHide_BTN_pressed)) self.widgets['tShow_BTN'] = pm.button(label='Show', command=pm.Callback(self.tShow_BTN_pressed)) pm.text(label='Rotate') self.widgets['rHide_BTN'] = pm.button(label='Hide', command=pm.Callback(self.rHide_BTN_pressed)) self.widgets['rShow_BTN'] = pm.button(label='Show', command=pm.Callback(self.rShow_BTN_pressed)) h.redistribute(1,1,1,1,1,1) pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() pm.text(label='Scale') self.widgets['sHide_BTN'] = pm.button(label='Hide', command=pm.Callback(self.sHide_BTN_pressed)) self.widgets['sShow_BTN'] = pm.button(label='Show', command=pm.Callback(self.sShow_BTN_pressed)) pm.text(label='Visibility') self.widgets['vHide_BTN'] = pm.button(label='Hide', command=pm.Callback(self.vHide_BTN_pressed)) self.widgets['vShow_BTN'] = pm.button(label='Show', command=pm.Callback(self.vShow_BTN_pressed)) h.redistribute(1,1,1,1,1,1) #------------------------------------------------------------ Separator pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() pm.separator(style='out') pm.text(label=' Pivot Offset Control') pm.separator(style='out') h.redistribute(1,1,1) #---------------------------------------------------------- Pivot Offset pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() self.widgets['pivotOffset_IFG'] = pm.intFieldGrp( numberOfFields=1, value1=1, label='Control Size :', cw2=[100, 50], adj=2) self.widgets['add_pivotOffset_BTN'] = pm.button( label = 'Add', command=pm.Callback(self.add_pivotOffset_BTN_pressed)) self.widgets['remove_pivotOffset_BTN'] = pm.button( label = 'Remove', command=pm.Callback(self.remove_pivotOffset_BTN_pressed)) h.redistribute(3,1,1) #------------------------------------------------------------ Separator pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() pm.separator(style='out') pm.text(label=' Text Shape') pm.separator(style='out') h.redistribute(1,1,1) #------------------------------------------------------------ Text Shape pm.setParent(self.widgets['top_level_column']) h = pm.horizontalLayout() self.widgets['textShape_TFG'] = pm.textFieldGrp( label='Text :', cw2=[100, 50], adj=2) self.widgets['add_textShape_BTN'] = pm.button( label = 'Add', command=pm.Callback(self.add_textShape_BTN_pressed)) h.redistribute(3,2) #======================================================================= # Redistribute #======================================================================= self.widgets['top_level_layout'].redistribute()
def KrayRendererUIUpdateCallback(self, what=None): self.createGlobalsNode() #self.updateEnvironment() log.debug("KrayRendererUIUpdateCallback(): " + str(what)) if what == "environment": log.debug("Update environment") eDict = self.rendererTabUiDict['environment'] if what == "background": log.debug("Update background") eDict = self.rendererTabUiDict['background'] eType = self.renderGlobalsNode.backgroundType.get() for key in eDict: eDict[key].setEnable(val=False) if eType == 0: #color eDict['environmentColor'].setEnable(val=True) if eType == 1 or eType == 2: #physSky eDict['sunDir'].setEnable(val=True) eDict['orientation'].setEnable(val=True) eDict['turbidity'].setEnable(val=True) eDict['exposure'].setEnable(val=True) if eType == 2: #physSky2 eDict['groundAlbedo'].setEnable(val=True) if eType == 3 or eType == 4: #sky eDict['gradientHorizon'].setEnable(val=True) eDict['gradientZenit'].setEnable(val=True) eDict['nadir'].setEnable(val=True) eDict['zenithDir'].setEnable(val=True) if eType == 4: #sky2 eDict['skyGamma'].setEnable(val=True) eDict['groundGamma'].setEnable(val=True) if eType == 5 or eType == 6: #bitmap eDict['environmentMap'].setEnable(val=True) if eType == 6: #bitmap2 eDict['environmentMap2'].setEnable(val=True) if eType == 7: #directionsMap pass if eType == 8: #lightMap pass if eType == 9: #sphericalMap eDict['environmentMap'].setEnable(val=True) if what == "sampling": print "Update sampling" sDict = self.rendererTabUiDict['sampling'] sType = self.renderGlobalsNode.samplingType.get() if sType != 1: #grid pm.intFieldGrp(sDict['gridSize'], edit=True, enable=False) pm.checkBoxGrp(sDict['gridRotate'], edit=True, enable=False) else: pm.intFieldGrp(sDict['gridSize'], edit=True, enable=True) pm.checkBoxGrp(sDict['gridRotate'], edit=True, enable=True) fType = self.renderGlobalsNode.filtertype.get() if fType in [4, 5, 6]: pm.floatFieldGrp(sDict['filterSize'], edit=True, enable=False) else: pm.floatFieldGrp(sDict['filterSize'], edit=True, enable=True) iFormat = self.renderGlobalsNode.imageFormat.get() if iFormat in [2, 3]: pm.attrEnumOptionMenuGrp(sDict['bitdepth'], edit=True, enable=True) else: pm.attrEnumOptionMenuGrp(sDict['bitdepth'], edit=True, enable=False) if iFormat == 1: pm.intFieldGrp(sDict['jpgQuality'], edit=True, enable=True) else: pm.intFieldGrp(sDict['jpgQuality'], edit=True, enable=False)
def AppleseedRendererCreateTab(self): log.debug("AppleseedRendererCreateTab()") self.createGlobalsNode() parentForm = pm.setParent(query=True) pm.setUITemplate("renderGlobalsTemplate", pushTemplate=True) pm.setUITemplate("attributeEditorTemplate", pushTemplate=True) scLo = self.rendererName + "ScrollLayout" with pm.scrollLayout(scLo, horizontalScrollBarThickness=0): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): with pm.frameLayout(label="Sampling", collapsable=True, collapse=False): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): ui = pm.checkBoxGrp(label="Adaptive Sampling:", value1=False, cc=self.AppleseedRendererUpdateTab) pm.connectControl(ui, self.renderGlobalsNodeName + ".adaptiveSampling", index=2) self.rendererTabUiDict['minSamples'] = pm.intFieldGrp(label="Samples min:", value1=2, numberOfFields=1) pm.connectControl(self.rendererTabUiDict['minSamples'], self.renderGlobalsNodeName + ".minSamples", index=2) ui = pm.intFieldGrp(label="Samples max:", value1=16, numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".maxSamples", index=2) self.rendererTabUiDict['maxError'] = pm.floatFieldGrp(label="Max Error:", value1=0.01, numberOfFields=1) pm.connectControl(self.rendererTabUiDict['maxError'], self.renderGlobalsNodeName + ".maxError", index=2) pm.separator() ui = pm.checkBoxGrp(label="Motionblur:", value1=False) pm.connectControl(ui, self.renderGlobalsNodeName + ".doMotionBlur", index=2) ui = pm.checkBoxGrp(label="Depth Of Field:", value1=False) pm.connectControl(ui, self.renderGlobalsNodeName + ".doDof", index=2) with pm.frameLayout(label="Output", collapsable=True, collapse=False): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): #attr = pm.Attribute(self.renderGlobalsNodeName + ".imageFormat") #ui = pm.attrEnumOptionMenuGrp(label = "Image Format", at=self.renderGlobalsNodeName + ".imageFormat", ei = self.getEnumList(attr)) attr = pm.Attribute(self.renderGlobalsNodeName + ".bitdepth") ui = pm.attrEnumOptionMenuGrp(label="Bit Depth", at=self.renderGlobalsNodeName + ".bitdepth", ei=self.getEnumList(attr)) attr = pm.Attribute(self.renderGlobalsNodeName + ".colorSpace") ui = pm.attrEnumOptionMenuGrp(label="Color Space", at=self.renderGlobalsNodeName + ".colorSpace", ei=self.getEnumList(attr)) ui = pm.checkBoxGrp(label="Clamping:", value1=False) pm.connectControl(ui, self.renderGlobalsNodeName + ".clamping", index=2) with pm.frameLayout(label="Filtering", collapsable=True, collapse=False): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): attr = pm.Attribute(self.renderGlobalsNodeName + ".filtertype") ui = pm.attrEnumOptionMenuGrp(label="Filter Type", at=self.renderGlobalsNodeName + ".filtertype", ei=self.getEnumList(attr)) ui = pm.intFieldGrp(label="Filter Size:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".filtersize", index=2) with pm.frameLayout(label="Lighting", collapsable=True, collapse=False): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): attr = pm.Attribute(self.renderGlobalsNodeName + ".lightingEngine") ui = pm.attrEnumOptionMenuGrp(label="Lighting Engine", at=self.renderGlobalsNodeName + ".lightingEngine", ei=self.getEnumList(attr)) ui = pm.intFieldGrp(label="Max Trace Depth:", value1=4, numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".maxTraceDepth", index=2) ui = pm.checkBoxGrp(label="Caustics:", value1=False) pm.connectControl(ui, self.renderGlobalsNodeName + ".caustics", index=2) with pm.frameLayout(label="Advanced Lighting", collapsable=True, collapse=True): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): ui = pm.intFieldGrp(label="Diffuse Depth:", value1=4, numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".diffuseDepth", index=2) ui = pm.intFieldGrp(label="Glossy Depth:", value1=4, numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".glossyDepth", index=2) ui = pm.intFieldGrp(label="Direct Light Samples:", value1=4, numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".directLightSamples", index=2) with pm.frameLayout(label="Renderer", collapsable=True, collapse=False): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): ui = pm.intFieldGrp(label="Threads:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".threads", index=2) ui = pm.intFieldGrp(label="Verbosity:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".rendererVerbosity", index=2) ui = pm.intFieldGrp(label="Tile Size:", value1=32, numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".tilesize", index=2) ui = pm.checkBoxGrp(label="Use SBVH Acceleration for mb:", value1=False) pm.connectControl(ui, self.renderGlobalsNodeName + ".assemblySBVH", index=2) pm.setUITemplate("renderGlobalsTemplate", popTemplate=True) pm.setUITemplate("attributeEditorTemplate", popTemplate=True) pm.formLayout(parentForm, edit=True, attachForm=[ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ]) #pm.scriptJob(attributeChange=[self.renderGlobalsNode.samplingType, pm.Callback(self.KrayRendererUIUpdateCallback, "sampling")]) #self.updateEnvironment() self.AppleseedRendererUpdateTab()
def mermaidUI(): if(pm.window(mainWin, ex=1)): pm.deleteUI(mainWin) pm.window(mainWin, t='mermaidMainWindow', widthHeight=(380,500)) pm.scrollLayout( h=700,w=380, vis=1) #load active agent Name pm.separator(h=10,style='none',w=380) mainUI=pm.columnLayout(w=380,cal='center',adj=1) pm.separator(h=5,style='none',w=380) ###################content############################# ########################################## #1. import puppet pm.text(l='STEP 1.',al='center') pm.button(c=lambda x: mermaid.importRigPuppet(),l='import puppet',h=25) ########################################## #2. create path pm.separator(h=5,style='single',w=380) pm.text(l='STEP 2.',al='center') sectionsInput = pm.intSliderGrp('numCtrls',fmx=20, min=1, max=20, cw3=(110, 40, 165), value=4, label=' numCtrl', fmn=1, field=True, cal=(1, 'left'), adj=3) directionInput = pm.textFieldGrp('direction',cw=[(1, 110), (2, 70), (3, 70)], cal=(1, 'left'), text="+x", adj=3, label=' start frame:') pm.button(c=lambda motionCurve: mermaid.createMotionTrail(sections=sectionsInput.getValue(), direction=directionInput.getText()),l='create path',h=25) ########################################## #3. rebuild path pm.separator(h=10,style='single',w=380) pm.text(l='STEP 3.',al='center') pm.intSliderGrp('rebuildCtrls',fmx=20, min=1, max=20, cw3=(110, 40, 165), value=4, label=' numCtrl', fmn=1, field=True, cal=(1, 'left'), adj=3) motionCurve = "" attachObj = "" pm.button(c=lambda attachObj: mermaid.importRigPuppet(),l='rebuild path',h=25) pm.button(c=lambda attachObj: mermaid.resetMotionTrail(),l='reset path',h=25) ########################################## #4. connect puppet to path pm.separator(h=5,style='single',w=380) pm.text(l='STEP 4.',al='center') startframeInput = pm.intFieldGrp('start',cw=[(1, 110), (2, 70), (3, 70)], cal=(1, 'left'), value1=970, adj=3, label=' start frame:') endframeInput = pm.intFieldGrp('end',cw=[(1, 110), (2, 70), (3, 70)], cal=(1, 'left'), value1=1500, adj=3, label=' end frame:') pm.button(c=lambda x: mermaid.motionpathConformObject(motionCurve, attachObj, starttime=startframeInput.getValue(),endtime=endframeInput.getValue()),l='connect to path',h=25) ########################################## #5. snap rit to puppet pm.separator(h=5,style='single',w=380) pm.text(l='STEP 5.',al='center') pm.button(c=lambda x: mermaid.snapMermaid(),l='snap rigg to puppet',h=25) pm.showWindow(mainWin)
def gui(): if pm.window('ByrdRigs_Renamer', q=1, exists=1): pm.deleteUI('ByrdRigs_Renamer') #ByrdRigs_Biped_Body_Auto_Rigger win_width = 313 window_object = pm.window('ByrdRigs_Renamer', title="ByrdRigs' Renamer", w=win_width, bgc=window_bgc) main_layout = pm.columnLayout() #====================================================================== # Rename Tools pm.rowColumnLayout(w=win_width) BR_RenameTFG = pm.textFieldGrp(l='Rename', text='', cw=[(1, 70), (2, 235)]) pm.rowColumnLayout(cw=[(1, 130), (2, 170)], nc=2) BR_StartIFG = pm.intFieldGrp(l='Start #:', v1=1, cw=[(1, 68), (2, 60)]) BR_PaddingIFG = pm.intFieldGrp(l='Padding:', v1=2, cw=[(1, 64), (2, 60)]) pm.setParent(main_layout) pm.button(l='Rename and Number', w=win_width, bgc=tab_bgc) pm.separator(st="in", w=win_width) #====================================================================== # Remove pm.rowColumnLayout(cw=[(1, 84), (2, 104), (3, 104)], nc=3, cs=[(1, 10), (3, 4)]) pm.text(l='Remove...', al='left') pm.button(l='First Character--->', w=60, bgc=tab_bgc) pm.button(l='<---Last Character', w=60, bgc=tab_bgc, c=remove_lastChr) pm.setParent(main_layout) pm.separator(st="in", w=win_width) #====================================================================== # Hash Rename pm.rowColumnLayout(cw=[(1, 70), (2, 170), (3, 56)], nc=3, cs=(1, 10)) pm.text(l='Hash Rename') BR_hashRenmaeTFG = pm.textFieldGrp(l='', text='name_####_suffix', cw=[(1, 10), (2, 153)]) pm.button(l='Rename', w=48, bgc=tab_bgc) pm.setParent(main_layout) pm.separator(st='in', w=win_width) #====================================================================== # Prefix - Suffix pm.rowColumnLayout(cw=[(1, 55), (2, 185), (3, 56)], nc=3, cs=(1, 10)) pm.text(l='(Before)') BR_prefixTFG = pm.textFieldGrp(l='', text='prefix_', cw=[(1, 10), (2, 168)]) pm.button(l='Add', bgc=tab_bgc) pm.setParent(main_layout) pm.rowColumnLayout(cw=[(1, 55), (2, 185), (3, 56)], nc=3, cs=(1, 10)) pm.text(l='(After)') BR_suffixTFG = pm.textFieldGrp(l='', text='suffix_', cw=[(1, 10), (2, 168)]) pm.button(l='Add', bgc=tab_bgc) pm.setParent(main_layout) pm.separator(st='in', w=win_width) #====================================================================== # Quick suffix pm.rowColumnLayout(nc=5, cw=[(1, 61), (2, 61), (3, 61), (4, 61), (5, 62)]) pm.button(l='grp', bgc=tab_bgc) pm.button(l='geo', bgc=tab_bgc) pm.button(l='icon', bgc=tab_bgc) pm.button(l='bind', bgc=tab_bgc) pm.button(l='waste', bgc=tab_bgc) pm.setParent(main_layout) pm.separator(st='in', w=win_width) #====================================================================== # Search and Replace pm.columnLayout(w=win_width) BR_searchTFG = pm.textFieldGrp(l='Search:', cw=[(1, 70), (2, 233)]) BR_replaceTFG = pm.textFieldGrp(l='Replace:', cw=[(1, 70), (2, 233)]) BR_optionRBG = pm.radioButtonGrp(l='', nrb=3, la3=('Hierarchy', 'Selected', 'All'), sl=1, cw=[(1, 78), (2, 78), (3, 78)]) pm.setParent(main_layout) pm.button(l='Apply', bgc=tab_bgc, w=win_width) pm.window('ByrdRigs_Renamer', e=1, wh=(313, 302), rtf=1) pm.showWindow(window_object) print('Window Created:', window_object)
def mayaKinectCaptureTest(): global KinectTest_TextFieldGrp_ServerAddress global KinectTest_IntFieldGrp_Port global KinectTest_IntFieldGrp_CmdPort global Recording hwnd = pm.window('mayaKinectCaptureTestUI_MainWindow',sizeable=True,menuBar=True,title="Kinect capture test") masterLayout = pm.columnLayout() pm.setParent('..') #Buttons pm.setParent(masterLayout) pm.columnLayout(adjustableColumn=1) KinectTest_TextFieldGrp_ServerAddress = pm.textFieldGrp(cw2=(100, 100),tx="localhost",l="Server Address",w=200) KinectTest_IntFieldGrp_Port = pm.intFieldGrp(v1=9999,cw2=(100, 100),l="port",w=200,nf=1) pm.separator(w=200) pm.button(c=lambda *args: makeNull(),al="center",w=200,l="Create Skeleton") pm.separator(w=200) pm.rowLayout(nc=2,cw2=(100, 100)) pm.button(c=lambda *args: connectDevice(),al="center",w=100,l="Connect") pm.button(c=lambda *args: discDevice(),al="center",w=100,l="Disconnect") pm.setParent('..') pm.separator(w=200) #pm.intFieldGrp('KinectTest_IntFieldGrp_CmdPort',v1=9998,cw2=(100, 100),l="Command Port",w=200,nf=1) KinectTest_IntFieldGrp_CmdPort = pm.intFieldGrp(v1=9998,cw2=(100, 100),l="Command Port",w=200,nf=1) #KinectTest_IntFieldGrp_CmdPort = pm.intFieldGrp(v1=9998,cw2=(100, 100),l="Command Port",w=200,nf=1) pm.button(c=lambda *args: OpenCommandPort(),al="center",w=200,l="Open CommandPort") pm.separator(w=200) pm.button(c=lambda *args: makeIK(),al="center",w=200,l="Create IK") pm.button(c=lambda *args: remakeSkel(),al="center",w=200,l="Recreate Skeleton") pm.separator(w=200) pm.button(c=lambda *args: SwitchPerspective(),al="center",w=200,l="Change Perspective") pm.separator(w=200) pm.rowLayout(nc=2,cw2=(100, 100)) pm.button(c=lambda *args: ActiveRecord("Start"),al="center",w=100,l="Start Record") pm.button(c=lambda *args: ActiveRecord("Stop"),al="center",w=100,l="Stop Record") #pm.button(c=lambda *args: LiveRecord(),al="center",w=200,l="Record / Stop Record") pm.setParent('..') pm.window(hwnd,h=300,e=1,w=210) pm.showWindow(hwnd)
def uiCreate(self): self.onCloseClicked() self.window = pm.window( WIN_NAME, title='PyMel Window', maximizeButton=False ) with self.window: with pm.formLayout() as uiLAY_mainForm: with pm.scrollLayout('uiLAY_mainScroll', childResizable=True) as self.uiLAY_mainScroll: with pm.columnLayout(adjustableColumn=True): with self.uiCreateFrame('uiLAY_frameCheckBoxes', 'Check Boxes (PMCheckBox)') as self.uiLAY_frameCheckBoxes: with pm.columnLayout(): pm.separator(style='none', height=2) with pm.rowLayout(numberOfColumns=3): pm.separator(width=140, style='none') self.uiCHK_test1 = pm.checkBox('uiCHK_test1', label='test1') self.uiCHK_test2 = pm.checkBox('uiCHK_test2', label='test2') with self.uiCreateFrame('uiLAY_frameCheckBoxGroups', 'Check Box Groups (PMCheckBoxGrp#)') as self.uiLAY_frameCheckBoxGroups: with pm.columnLayout(): pm.separator(style='none', height=2) self.uiCHKGRP_test1 = pm.checkBoxGrp( 'uiCHKGRP_test1', numberOfCheckBoxes=1, label='PMCheckBoxGrp1', label1='test1' ) self.uiCHKGRP_test2 = pm.checkBoxGrp( 'uiCHKGRP_test2', numberOfCheckBoxes=2, label='PMCheckBoxGrp2', labelArray2=('test1', 'test2') ) self.uiCHKGRP_test3 = pm.checkBoxGrp( 'uiCHKGRP_test3', numberOfCheckBoxes=3, label='PMCheckBoxGrp3', labelArray3=('test1', 'test2', 'test3') ) self.uiCHKGRP_test4 = pm.checkBoxGrp( 'uiCHKGRP_test4', numberOfCheckBoxes=4, label='PMCheckBoxGrp4', labelArray4=('test1', 'test2', 'test3', 'test4') ) with self.uiCreateFrame('uiLAY_frameColorSliders', 'Color Slider Groups (PMColorSliderGrp)') as self.uiLAY_frameColorSliders: with pm.columnLayout(): pm.separator(style='none', height=2) self.uiCLRGRP_test1 = pm.colorSliderGrp( 'uiCLRGRP_test1', label='test1' ) self.uiCLRGRP_test2 = pm.colorSliderGrp( 'uiCLRGRP_test2', label='test2' ) with self.uiCreateFrame('uiLAY_frameFloatFields', 'Float Fields (PMFloatField)') as self.uiLAY_frameFloatFields: with pm.columnLayout(): pm.separator(style='none', height=2) with pm.rowLayout(numberOfColumns=3): pm.separator(width=140, style='none') self.uiFLF_test1 = pm.floatField('uiFLF_test1') self.uiFLF_test2 = pm.floatField('uiFLF_test2') with self.uiCreateFrame('uiLAY_frameFloatFieldGroups', 'Float Field Groups (PMFloatFieldGrp#)') as self.uiLAY_frameFloatFieldGroups: with pm.columnLayout(): pm.separator(style='none', height=2) self.uiFLFGRP_test1 = pm.floatFieldGrp( 'uiFLFGRP_test1', numberOfFields=1, label='PMFloatFieldGrp1' ) self.uiFLFGRP_test2 = pm.floatFieldGrp( 'uiFLFGRP_test2', numberOfFields=2, label='PMFloatFieldGrp2' ) self.uiFLFGRP_test3 = pm.floatFieldGrp( 'uiFLFGRP_test3', numberOfFields=3, label='PMFloatFieldGrp3' ) self.uiFLFGRP_test4 = pm.floatFieldGrp( 'uiFLFGRP_test4', numberOfFields=4, label='PMFloatFieldGrp4' ) with self.uiCreateFrame('uiLAY_frameFloatScrollBars', 'Float Scroll Bars (PMFloatScrollBar)') as self.uiLAY_frameFloatScrollBars: with pm.columnLayout(adjustableColumn=True): pm.separator(style='none', height=2) self.uiFLSCRL_test1 = pm.floatScrollBar('uiFLSCRL_test1') self.uiFLSCRL_test2 = pm.floatScrollBar('uiFLSCRL_test2') with self.uiCreateFrame('uiLAY_frameFloatSliders', 'Float Sliders (PMFloatSlider)') as self.uiLAY_frameFloatSliders: with pm.columnLayout(adjustableColumn=True): pm.separator(style='none', height=2) self.uiFLTSLD_test1 = pm.floatSlider('uiFLTSLD_test1') self.uiFLTSLD_test2 = pm.floatSlider('uiFLTSLD_test2') with self.uiCreateFrame('uiLAY_frameFloatSliderGroups', 'Float Slider Groups (PMFloatSliderGrp)') as self.uiLAY_frameFloatSliderGroups: with pm.columnLayout(): pm.separator(style='none', height=2) self.uiFLSGRP_test1 = pm.floatSliderGrp( 'uiFLSGRP_test1', label='test1', field=True ) self.uiFLSGRP_test2 = pm.floatSliderGrp( 'uiFLSGRP_test2', label='test2', field=True ) with self.uiCreateFrame('uiLAY_frameIconTextCheckBoxes', 'Icon Text Check Boxes (PMIconTextCheckBox)') as self.uiLAY_frameIconTextCheckBoxes: with pm.columnLayout(): with pm.rowLayout(numberOfColumns=3): pm.separator(style='none', width=140) self.uiITCHK_test1 = pm.iconTextCheckBox( 'uiITCHK_test1', style='iconAndTextHorizontal', label='cube', image1='cube' ) self.uiITCHK_test2 = pm.iconTextCheckBox( 'uiITCHK_test2', style='iconAndTextHorizontal', label='cone', image1='cone' ) with self.uiCreateFrame('uiLAY_frameIconTextRadioButtons', 'Icon Text Radio Buttons (PMIconTextRadioButton)') as self.uiLAY_frameIconTextRadioButtons: with pm.columnLayout(): with pm.rowLayout(numberOfColumns=4): pm.separator(style='none', width=140) pm.iconTextRadioCollection() self.uiITRAD_test1 = pm.iconTextRadioButton( 'uiITRAD_test1', style='iconAndTextHorizontal', label='cube', image1='cube' ) self.uiITRAD_test2 = pm.iconTextRadioButton( 'uiITRAD_test2', style='iconAndTextHorizontal', label='cone', image1='cone' ) self.uiITRAD_test3 = pm.iconTextRadioButton( 'uiITRAD_test3', style='iconAndTextHorizontal', label='torus', image1='torus' ) with self.uiCreateFrame('uiLAY_frameIconTextScrollLists', 'Icon Text Scroll Lists (PMIconTextScrollList)') as self.uiLAY_frameIconTextScrollLists: with pm.columnLayout(): with pm.rowLayout(numberOfColumns=3): pm.separator(style='none', width=140) self.uiITSLST_test1 = pm.iconTextScrollList( 'uiITSLST_test1', allowMultiSelection=True, append=('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten') ) self.uiITSLST_test2 = pm.iconTextScrollList( 'uiITSLST_test2', allowMultiSelection=True, append=('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten') ) with self.uiCreateFrame('uiLAY_frameIntFields', 'Int Fields (PMIntField)') as self.uiLAY_frameIntFields: with pm.columnLayout(): pm.separator(style='none', height=2) with pm.rowLayout(numberOfColumns=3): pm.separator(width=140, style='none') self.uiINF_test1 = pm.intField('uiINF_test1') self.uiINF_test2 = pm.intField('uiINF_test2') with self.uiCreateFrame('uiLAY_frameIntFieldGroups', 'Int Field Groups (PMIntFieldGrp#)') as self.uiLAY_frameIntFieldGroups: with pm.columnLayout(): pm.separator(style='none', height=2) self.uiINFGRP_test1 = pm.intFieldGrp( 'uiINFGRP_test1', numberOfFields=1, label='PMIntFieldGrp1' ) self.uiINFGRP_test2 = pm.intFieldGrp( 'uiINFGRP_test2', numberOfFields=2, label='PMIntFieldGrp2' ) self.uiINFGRP_test3 = pm.intFieldGrp( 'uiINFGRP_test3', numberOfFields=3, label='PMIntFieldGrp3' ) self.uiINFGRP_test4 = pm.intFieldGrp( 'uiINFGRP_test4', numberOfFields=4, label='PMIntFieldGrp4' ) with self.uiCreateFrame('uiLAY_frameIntScrollBars', 'Int Scroll Bars (PMIntScrollBar)') as self.uiLAY_frameIntScrollBars: with pm.columnLayout(adjustableColumn=True): pm.separator(style='none', height=2) self.uiINSCRL_test1 = pm.intScrollBar('uiINSCRL_test1') self.uiINSCRL_test2 = pm.intScrollBar('uiINSCRL_test2') with self.uiCreateFrame('uiLAY_frameIntSliders', 'Int Sliders (PMIntSlider)') as self.uiLAY_frameIntSliders: with pm.columnLayout(adjustableColumn=True): pm.separator(style='none', height=2) self.uiINTSLD_test1 = pm.intSlider('uiINTSLD_test1') self.uiINTSLD_test2 = pm.intSlider('uiINTSLD_test2') with self.uiCreateFrame('uiLAY_frameIntSliderGroups', 'Int Slider Groups (PMIntSliderGrp)') as self.uiLAY_frameIntSliderGroups: with pm.columnLayout(): pm.separator(style='none', height=2) self.uiINSGRP_test1 = pm.intSliderGrp( 'uiINSGRP_test1', label='test1', field=True ) self.uiINSGRP_test2 = pm.intSliderGrp( 'uiINSGRP_test2', label='test2', field=True ) with self.uiCreateFrame('uiLAY_frameOptionMenus', 'Option Menus (PMOptionMenu)') as self.uiLAY_frameOptionMenus: with pm.columnLayout(): pm.separator(style='none', height=2) with pm.rowLayout(numberOfColumns=3): pm.separator(width=110, style='none') self.uiOPTMNU_test1 = pm.optionMenu('uiOPTMNU_test1', label='test1') pm.menuItem(label='one') pm.menuItem(label='two') pm.menuItem(label='three') self.uiOPTMNU_test2 = pm.optionMenu('uiOPTMNU_test2', label='test2') pm.menuItem(label='four') pm.menuItem(label='five') pm.menuItem(label='six') with self.uiCreateFrame('uiLAY_frameOptionMenuGroups', 'Option Menus Groups (PMOptionMenuGrp)') as self.uiLAY_frameOptionMenuGroups: with pm.columnLayout(): pm.separator(style='none', height=2) self.uiOPMGRP_test1 = pm.optionMenuGrp('uiOPMGRP_test1', label='test1', extraLabel='extraLabel') pm.menuItem(label='one') pm.menuItem(label='two') pm.menuItem(label='three') self.uiOPMGRP_test2 = pm.optionMenuGrp('uiOPMGRP_test2', label='test2', extraLabel='extraLabel') pm.menuItem(label='four') pm.menuItem(label='five') pm.menuItem(label='six') with self.uiCreateFrame('uiLAY_frameRadioButtons', 'Radio Buttons (PMRadioButton)') as self.uiLAY_frameRadioButtons: with pm.columnLayout(): with pm.rowLayout(numberOfColumns=4): pm.separator(style='none', width=140) pm.radioCollection() self.uiRAD_test1 = pm.radioButton('uiRAD_test1', label='test1') self.uiRAD_test2 = pm.radioButton('uiRAD_test2', label='test2') self.uiRAD_test3 = pm.radioButton('uiRAD_test3', label='test3') with self.uiCreateFrame('uiLAY_frameRadioButtonGroups', 'Radio Button Groups (PMRadioButtonGrp#)') as self.uiLAY_frameRadioButtonGroups: with pm.columnLayout(): pm.separator(style='none', height=2) self.uiRADGRP_test1 = pm.radioButtonGrp( 'uiRADGRP_test1', numberOfRadioButtons=1, label='PMRadioButtonGrp1', label1='test1' ) self.uiRADGRP_test2 = pm.radioButtonGrp( 'uiRADGRP_test2', numberOfRadioButtons=2, label='PMRadioButtonGrp2', labelArray2=('test1', 'test2') ) self.uiRADGRP_test3 = pm.radioButtonGrp( 'uiRADGRP_test3', numberOfRadioButtons=3, label='PMRadioButtonGrp3', labelArray3=('test1', 'test2', 'test3') ) self.uiRADGRP_test4 = pm.radioButtonGrp( 'uiRADGRP_test4', numberOfRadioButtons=4, label='PMRadioButtonGrp4', labelArray4=('test1', 'test2', 'test3', 'test4') ) with self.uiCreateFrame('uiLAY_frameSymbolCheckBoxes', 'Symbol Check Boxes (PMSymbolCheckBox)') as self.uiLAY_frameSymbolCheckBoxes: with pm.columnLayout(): with pm.rowLayout(numberOfColumns=3): pm.separator(style='none', width=140) self.uiSYMCHK_test1 = pm.symbolCheckBox( 'uiSYMCHK_test1', image='polyCube' ) self.uiSYMCHK_test2 = pm.symbolCheckBox( 'uiSYMCHK_test2', image='polyCone' ) with self.uiCreateFrame('uiLAY_frameScriptTables', 'Script Tables (PMScriptTable)') as self.uiLAY_frameScriptTables: with pm.columnLayout(): with pm.rowLayout(numberOfColumns=3): pm.separator(style='none', width=140) self.uiSCRTBL_test1 = pm.scriptTable( 'uiSCRTBL_test1', selectionMode=3, rows=4, columns=2 ) self.uiSCRTBL_test2 = pm.scriptTable( 'uiSCRTBL_test2', selectionMode=3, rows=4, columns=2 ) with self.uiCreateFrame('uiLAY_frameScrollField', 'Scroll Field (PMScrollField)') as self.uiLAY_frameScrollField: with pm.columnLayout(): with pm.rowLayout(numberOfColumns=3): pm.separator(style='none', width=140) self.uiSCRFLD_test1 = pm.scrollField( 'uiSCRFLD_test1', wordWrap=True ) self.uiSCRFLD_test2 = pm.scrollField( 'uiSCRFLD_test2', wordWrap=True ) with self.uiCreateFrame('uiLAY_frameShelfTabLayout', 'Shelf Tab Layout (PMShelfTabLayout)') as self.uiLAY_frameShelfTabLayout: with pm.columnLayout(adjustableColumn=True): with pm.shelfTabLayout('uiSHLTAB_test1') as self.uiSHLTAB_test1: with pm.shelfLayout('test1'): pass with pm.shelfLayout('test2'): pass with pm.shelfLayout('test3'): pass with pm.shelfTabLayout('uiSHLTAB_test2') as self.uiSHLTAB_test2: with pm.shelfLayout('test4'): pass with pm.shelfLayout('test5'): pass with pm.shelfLayout('test6'): pass with self.uiCreateFrame('uiLAY_frameTabLayout', 'Tab Layout (PMTabLayout)') as self.uiLAY_frameTabLayout: with pm.columnLayout(adjustableColumn=True): with pm.tabLayout('uiTAB_test1') as self.uiTAB_test1: with pm.rowLayout(numberOfColumns=1) as uiLAY_tabRow1: pass with pm.rowLayout(numberOfColumns=1) as uiLAY_tabRow2: pass with pm.rowLayout(numberOfColumns=1) as uiLAY_tabRow3: pass pm.tabLayout( self.uiTAB_test1, edit=True, tabLabel=((uiLAY_tabRow1, 'test1'), (uiLAY_tabRow2, 'test2'), (uiLAY_tabRow3, 'test3'),) ) with pm.tabLayout('uiTAB_test2') as self.uiTAB_test2: with pm.rowLayout(numberOfColumns=1) as uiLAY_tabRow4: pass with pm.rowLayout(numberOfColumns=1) as uiLAY_tabRow5: pass with pm.rowLayout(numberOfColumns=1) as uiLAY_tabRow6: pass pm.tabLayout( self.uiTAB_test2, edit=True, tabLabel=((uiLAY_tabRow4, 'test4'), (uiLAY_tabRow5, 'test5'), (uiLAY_tabRow6, 'test6'),) ) with self.uiCreateFrame('uiLAY_frameTextFields', 'Text Fields (PMTextField)') as self.uiLAY_frameTextFields: with pm.columnLayout(): pm.separator(style='none', height=2) with pm.rowLayout(numberOfColumns=3): pm.separator(width=140, style='none') self.uiTXT_test1 = pm.textField('uiTXT_test1') self.uiTXT_test2 = pm.textField('uiTXT_test2') with self.uiCreateFrame('uiLAY_frameTextFieldButtonGroups', 'Text Field Button Groups (PMTextFieldButtonGrp)') as self.uiLAY_frameTextFieldButtonGroups: with pm.columnLayout(): pm.separator(style='none', height=2) self.uiTXBTGR_test1 = pm.textFieldButtonGrp( 'uiTXBTGR_test1', label='test1', buttonLabel='button1' ) self.uiTXBTGR_test2 = pm.textFieldButtonGrp( 'uiTXBTGR_test2', label='test2', buttonLabel='button2' ) with self.uiCreateFrame('uiLAY_frameTextFieldGroups', 'Text Field Groups (PMTextFieldGrp)') as self.uiLAY_frameTextFieldGroups: with pm.columnLayout(): pm.separator(style='none', height=2) self.uiTXTGRP_test1 = pm.textFieldGrp( 'uiTXTGRP_test1', label='test1' ) self.uiTXTGRP_test2 = pm.textFieldGrp( 'uiTXTGRP_test2', label='test2' ) with self.uiCreateFrame('uiLAY_frameTextScrollLists', 'Text Scroll Lists (PMTextScrollList)') as self.uiLAY_frameTextScrollLists: with pm.columnLayout(): with pm.rowLayout(numberOfColumns=3): pm.separator(style='none', width=140) self.uiTXTLST_test1 = pm.textScrollList( 'uiTXTLST_test1', allowMultiSelection=True, append=('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten') ) self.uiTXTLST_test2 = pm.textScrollList( 'uiTXTLST_test2', allowMultiSelection=True, append=('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten') ) self.uiBTN_savePrefs = pm.button( label='Save Prefs', height=MAIN_BUTTONS_HEIGHT, command=self.onSavePrefsClicked ) self.uiBTN_loadPrefs = pm.button( label='Load Prefs', height=MAIN_BUTTONS_HEIGHT, command=self.onLoadPrefsClicked ) self.uiBTN_resetPrefs = pm.button( label='Reset Prefs', height=MAIN_BUTTONS_HEIGHT, command=self.onResetPrefsClicked ) uiLAY_mainForm.attachForm(self.uiLAY_mainScroll, 'top', 2) uiLAY_mainForm.attachForm(self.uiLAY_mainScroll, 'left', 2) uiLAY_mainForm.attachForm(self.uiLAY_mainScroll, 'right', 2) uiLAY_mainForm.attachControl(self.uiLAY_mainScroll, 'bottom', 2, self.uiBTN_savePrefs) uiLAY_mainForm.attachNone(self.uiBTN_savePrefs, 'top') uiLAY_mainForm.attachForm(self.uiBTN_savePrefs, 'left', 2) uiLAY_mainForm.attachPosition(self.uiBTN_savePrefs, 'right', 2, 33) uiLAY_mainForm.attachForm(self.uiBTN_savePrefs, 'bottom', 2) uiLAY_mainForm.attachNone(self.uiBTN_loadPrefs, 'top') uiLAY_mainForm.attachPosition(self.uiBTN_loadPrefs, 'left', 2, 33) uiLAY_mainForm.attachPosition(self.uiBTN_loadPrefs, 'right', 2, 66) uiLAY_mainForm.attachForm(self.uiBTN_loadPrefs, 'bottom', 2) uiLAY_mainForm.attachNone(self.uiBTN_resetPrefs, 'top') uiLAY_mainForm.attachPosition(self.uiBTN_resetPrefs, 'left', 2, 66) uiLAY_mainForm.attachForm(self.uiBTN_resetPrefs, 'right', 2) uiLAY_mainForm.attachForm(self.uiBTN_resetPrefs, 'bottom', 2) self.window.setTitle(self.window.__class__)
def KrayRendererCreateTab(self): log.debug("KrayRendererCreateTab()") self.createGlobalsNode() sDict = {} self.rendererTabUiDict['sampling'] = sDict parentForm = pm.setParent(query=True) pm.setUITemplate("renderGlobalsTemplate", pushTemplate=True) pm.setUITemplate("attributeEditorTemplate", pushTemplate=True) scLo = self.rendererName + "ScrollLayout" with pm.scrollLayout(scLo, horizontalScrollBarThickness=0): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): with pm.frameLayout(label="Image format", collapsable=True, collapse=False): with pm.columnLayout(self.rendererName + "ColumnLayoutA", adjustableColumn=True, width=400): attr = pm.Attribute(self.renderGlobalsNodeName + ".diffuseModel") ui = pm.attrEnumOptionMenuGrp(label="Diffuse Model", at=self.renderGlobalsNodeName + ".diffuseModel", ei=self.getEnumList(attr)) attr = pm.Attribute(self.renderGlobalsNodeName + ".qLuminosityModel") ui = pm.attrEnumOptionMenuGrp(label="Luminosity Model", at=self.renderGlobalsNodeName + ".qLuminosityModel", ei=self.getEnumList(attr)) pm.separator() attr = pm.Attribute(self.renderGlobalsNodeName + ".imageFormat") ui = pm.attrEnumOptionMenuGrp(label="Image format", at=self.renderGlobalsNodeName + ".imageFormat", ei=self.getEnumList(attr)) attr = pm.Attribute(self.renderGlobalsNodeName + ".bitdepth") sDict['bitdepth'] = pm.attrEnumOptionMenuGrp(label="Bit depth", at=self.renderGlobalsNodeName + ".bitdepth", ei=self.getEnumList(attr)) sDict['jpgQuality'] = pm.intFieldGrp(label="Jpg Quality:", numberOfFields=1) pm.connectControl(sDict['jpgQuality'], self.renderGlobalsNodeName + ".jpgQuality", index=2) with pm.frameLayout(label="Sampling", collapsable=True, collapse=False): with pm.columnLayout(self.rendererName + "ColumnLayoutA", adjustableColumn=True, width=400): attr = pm.Attribute(self.renderGlobalsNodeName + ".samplingType") ui = pm.attrEnumOptionMenuGrp(label="Sampling Type", at=self.renderGlobalsNodeName + ".samplingType", ei=self.getEnumList(attr)) sDict['fullScreenAA'] = pm.checkBoxGrp(label="Full Screen AA:", value1=False) pm.connectControl(sDict['fullScreenAA'], self.renderGlobalsNodeName + ".fullScreenAA", index=2) pm.separator() sDict['gridSize'] = pm.intFieldGrp(label="Grid Size:", numberOfFields=1) pm.connectControl(sDict['gridSize'], self.renderGlobalsNodeName + ".gridSize", index=2) sDict['gridRotate'] = pm.checkBoxGrp(label="Grid Rotate:", value1=False) pm.connectControl(sDict['gridRotate'], self.renderGlobalsNodeName + ".rotateGrid", index=2) pm.separator() ui = pm.intFieldGrp(label="Rays:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_rays", index=2) ui = pm.intFieldGrp(label="Min Rays:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_minRays", index=2) ui = pm.intFieldGrp(label="Max Rays:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_maxRays", index=2) pm.separator() ui = pm.intFieldGrp(label="Edge Thickness:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_thickness", index=2) ui = pm.floatFieldGrp(label="Edge Absulut:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_edgeAbsolute", index=2) ui = pm.floatFieldGrp(label="Edge Relative:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_relative", index=2) pm.separator() ui = pm.floatFieldGrp(label="Normal Sentitivity:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_normal", index=2) ui = pm.floatFieldGrp(label="Z Sensitivity:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_z", index=2) ui = pm.floatFieldGrp(label="Max Brightness:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_overburn", index=2) ui = pm.floatFieldGrp(label="Threshold:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_threshold", index=2) pm.separator() ui = pm.intFieldGrp(label="Upsample:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".aa_upsample", index=2) ui = pm.floatFieldGrp(label="Mb Subframes:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".mb_subframes", index=2) pm.separator() attr = pm.Attribute(self.renderGlobalsNodeName + ".pixelOrder") ui = pm.attrEnumOptionMenuGrp(label="Pixel Order", at=self.renderGlobalsNodeName + ".pixelOrder", ei=self.getEnumList(attr)) with pm.frameLayout(label="Filtering", collapsable=True, collapse=False): attr = pm.Attribute(self.renderGlobalsNodeName + ".filtertype") ui = pm.attrEnumOptionMenuGrp(label="Filter Type", at=self.renderGlobalsNodeName + ".filtertype", ei=self.getEnumList(attr)) sDict['filterSize'] = pm.floatFieldGrp(label="Filter Size:", numberOfFields=1) pm.connectControl(sDict['filterSize'], self.renderGlobalsNodeName + ".filtersize", index=2) with pm.frameLayout(label="Features", collapsable=True, collapse=False): sDict['doMb'] = pm.checkBoxGrp(label="Motion Blur:") pm.connectControl(sDict['doMb'], self.renderGlobalsNodeName + ".doMb", index=2) sDict['doDof'] = pm.checkBoxGrp(label="Depth Of Field:") pm.connectControl(sDict['doDof'], self.renderGlobalsNodeName + ".doDof", index=2) sDict['camSingleSided'] = pm.checkBoxGrp(label="Render Single Sided:") pm.connectControl(sDict['camSingleSided'], self.renderGlobalsNodeName + ".camSingleSided", index=2) 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.KrayRendererUpdateTab() self.KrayRendererUIUpdateCallback("sampling") pm.scriptJob(attributeChange=[self.renderGlobalsNode.samplingType, pm.Callback(self.KrayRendererUIUpdateCallback, "sampling")]) pm.scriptJob(attributeChange=[self.renderGlobalsNode.filtertype, pm.Callback(self.KrayRendererUIUpdateCallback, "sampling")]) pm.scriptJob(attributeChange=[self.renderGlobalsNode.imageFormat, pm.Callback(self.KrayRendererUIUpdateCallback, "sampling")])
def FujiRendererCreateTab(self): log.debug("FujiRendererCreateTab()") self.createGlobalsNode() parentForm = pm.setParent(query=True) pm.setUITemplate("attributeEditorTemplate", pushTemplate=True) scLo = self.rendererName + "ScrollLayout" if self.rendererTabUiDict.has_key('common'): self.rendererTabUiDict.pop('common') parentForm = pm.setParent(query=True) uiDict = {} self.rendererTabUiDict['common'] = uiDict with pm.scrollLayout(scLo, horizontalScrollBarThickness=0): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): with pm.frameLayout(label="Sampling", collapsable=True, collapse=False): self.addRenderGlobalsUIElement(attName='sampleJitter', uiType='float', displayName='SampleJitter', default='1.0', uiDict=uiDict) self.addRenderGlobalsUIElement( attName='sample_time_range_min', uiType='float', displayName='Sample Time Range Min', default='0.0', uiDict=uiDict) self.addRenderGlobalsUIElement( attName='sample_time_range_max', uiType='float', displayName='Sample Time Range Max', default='1.0', uiDict=uiDict) self.addRenderGlobalsUIElement( attName='samplesX', uiType='int', displayName='Pixel Samples x', default=3, uiDict=uiDict) self.addRenderGlobalsUIElement( attName='samplesY', uiType='int', displayName='Pixel Samples y', default=3, uiDict=uiDict) pm.separator() self.addRenderGlobalsUIElement(attName='cast_shadow', uiType='bool', displayName='Cast Shadows', default='true', uiDict=uiDict) self.addRenderGlobalsUIElement( attName='max_reflect_depth', uiType='int', displayName='Max Reflection Depth', default='3', uiDict=uiDict) self.addRenderGlobalsUIElement( attName='max_refract_depth', uiType='int', displayName='Max Refraction Depth', default='3', uiDict=uiDict) self.addRenderGlobalsUIElement( attName='raymarch_step', uiType='float', displayName='Raymarching Stepsize', default='0.05', uiDict=uiDict) self.addRenderGlobalsUIElement( attName='raymarch_shadow_step', uiType='float', displayName='Raymarching Shadow Stepsize', default='0.1', uiDict=uiDict) self.addRenderGlobalsUIElement( attName='raymarch_reflect_ste', uiType='float', displayName='Raymarching Reflection Stepsize', default='0.1', uiDict=uiDict) self.addRenderGlobalsUIElement( attName='raymarch_refract_ste', uiType='float', displayName='Raymarching Refraction Stepsize', default='0.1', uiDict=uiDict) pm.separator() self.addRenderGlobalsUIElement(attName='doMotionBlur', uiType='bool', displayName='Motionblur:', default=False, uiDict=uiDict) self.addRenderGlobalsUIElement( attName='doDof', uiType='bool', displayName='Depth of Field:', default=False, uiDict=uiDict) with pm.frameLayout(label="Output", collapsable=True, collapse=False): attr = pm.Attribute(self.renderGlobalsNodeName + ".imageFormat") ui = pm.attrEnumOptionMenuGrp( label="Image Format", at=self.renderGlobalsNodeName + ".imageFormat", ei=self.getEnumList(attr)) with pm.frameLayout(label="Filtering", collapsable=True, collapse=False): attr = pm.Attribute(self.renderGlobalsNodeName + ".filtertype") ui = pm.attrEnumOptionMenuGrp( label="Filter Type", at=self.renderGlobalsNodeName + ".filtertype", ei=self.getEnumList(attr)) ui = pm.intFieldGrp(label="Filter Size:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".filtersize", index=2) with pm.frameLayout(label="Renderer", collapsable=True, collapse=False): self.addRenderGlobalsUIElement( attName='use_max_thread', uiType='bool', displayName='Use Max Threads', default='true', uiDict=uiDict) self.addRenderGlobalsUIElement(attName='threads', uiType='int', displayName='Threads', default=8, uiDict=uiDict) self.addRenderGlobalsUIElement(attName='tilesize', uiType='int', displayName='Tile Size', default=64, uiDict=uiDict) ui = pm.intFieldGrp(label="Verbosity:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".rendererVerbosity", index=2) pm.setUITemplate("attributeEditorTemplate", popTemplate=True) pm.formLayout(parentForm, edit=True, attachForm=[(scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0)]) self.FujiRendererUpdateTab()
def KrayPhotonsCreateTab(self): log.debug("KrayPhotonsCreateTab()") self.createGlobalsNode() photonsDict = {} self.rendererTabUiDict['photons'] = photonsDict causticDict = {} self.rendererTabUiDict['caustic'] = causticDict parentForm = pm.setParent(query=True) pm.setUITemplate("attributeEditorTemplate", pushTemplate=True) scLo = self.rendererName + "PhotonsScrollLayout" with pm.scrollLayout(scLo, horizontalScrollBarThickness=0): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): with pm.frameLayout(label="Photons", collapsable=True, collapse=False): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): ui = pm.floatFieldGrp(label="GI Resolution:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".giResolution", index=2) ui = pm.checkBoxGrp(label="GI Resolution Auto:") pm.connectControl(ui, self.renderGlobalsNodeName + ".giResolutionAuto", index=2) ui = pm.checkBoxGrp(label="Preview Photons:") pm.connectControl(ui, self.renderGlobalsNodeName + ".previewPhotons", index=2) attr = pm.Attribute(self.renderGlobalsNodeName + ".photonMapType") ui = pm.attrEnumOptionMenuGrp(label="Photon Map Type", at=self.renderGlobalsNodeName + ".photonMapType", ei=self.getEnumList(attr)) ui = pm.intFieldGrp(label="Photons:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".photonCount", index=2) ui = pm.floatFieldGrp(label="Power:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".photonPower", index=2) ui = pm.floatFieldGrp(label="NBlur:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".photonNBlur", index=2) ui = pm.floatFieldGrp(label="Precache Dist:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".photonPrecacheDist", index=2) ui = pm.floatFieldGrp(label="Precache Blur:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".photonPrecacheBlur", index=2) pm.separator() ui = pm.checkBoxGrp(label="Auto Photons:") pm.connectControl(ui, self.renderGlobalsNodeName + ".photonUseAutoPhotons", index=2) ui = pm.floatFieldGrp(label="Auto Photons Low:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".photonAutoPhotonsLow", index=2) ui = pm.floatFieldGrp(label="Auto Photons High:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".photonAutoPhotonsHigh", index=2) ui = pm.floatFieldGrp(label="Auto Photons Steps:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".photonAutoPhotonsSteps", index=2) with pm.frameLayout(label="Caustics", collapsable=True, collapse=False): with pm.columnLayout(self.rendererName + "ColumnLayout", adjustableColumn=True, width=400): ui = pm.checkBoxGrp(label="Add To Lightmap:") pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsAddToLightmap", index=2) pm.separator() ui = pm.intFieldGrp(label="Caustic Photons:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsCount", index=2) ui = pm.floatFieldGrp(label="Caustic Power:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsPower", index=2) ui = pm.floatFieldGrp(label="Caustic NBlur:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsNBlur", index=2) pm.separator() ui = pm.checkBoxGrp(label="Caustic Auto Photons:") pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsUseAutoPhotons", index=2) ui = pm.floatFieldGrp(label="Caustic Auto Low:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsAutoPhotonsLow", index=2) ui = pm.floatFieldGrp(label="Caustic Auto High:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsAutoPhotonsHigh", index=2) ui = pm.floatFieldGrp(label="Caustic Auto Steps:", numberOfFields=1) pm.connectControl(ui, self.renderGlobalsNodeName + ".causticsAutoPhotonsSteps", index=2) pm.setUITemplate("attributeEditorTemplate", popTemplate=True) pm.formLayout(parentForm, edit=True, attachForm=[ (scLo, "top", 0), (scLo, "bottom", 0), (scLo, "left", 0), (scLo, "right", 0) ])
pm.menuItem(label='GIF') pm.menuItem(label='Abekas NTSC') pm.menuItem(label='Alias') pm.menuItem(label='Kodak Cineon') pm.menuItem(label='Lucas Film') pm.menuItem(label='Pixibox PXB') pm.menuItem(label='SCN') pm.menuItem(label='PPM raw/ascii') pm.menuItem(label='Prisms') pm.menuItem(label='Quantel') pm.menuItem(label='SGI') pm.menuItem(label='Avid® Softimage®') pm.menuItem(label='Vista') pm.menuItem(label='Wavefront RLA') pm.separator() #連番指定 # pm.text( label= '連番スタート') iField = pm.intFieldGrp( numberOfFields=1, #int数値入力のフィールドを作成する label='連番スタート番号', value=[1, 0, 0, 0]) pm.separator() pm.button(label='フォルダを開く', command='openCurrentImage()') # pm.button( label='printselectItem' , command='print pm.selected()') # pm.button( label='リネーム実行' , command='print getSelectedImagePlaneName(newDir.getText(), newFile.getEnable(), newFile.getText(), iField.getValue()[0])') pm.button( label='リネーム実行', command= 'print runImgcvt("", newFile.getEnable(), newFile.getText(), iField.getValue()[0])' )
def ui(self): ''' main ui creator ''' #TODO: only run once. use singleton instance if pm.window(self.name, q = True, ex = True): pm.deleteUI(self.name) #main window self.widgets['mainWindow'] = pm.window(self.name, title = self.name, widthHeight = (720, 400)) self.widgets['mainForm'] = pm.formLayout(parent = self.widgets['mainWindow']) #top left column self.widgets['topLColumn'] = pm.columnLayout(adjustableColumn = True, parent = self.widgets['mainForm'], h = 168) self.widgets['cameraText'] = pm.text(label = "Cameras", h = 20) self.widgets['cameraList'] = pm.iconTextScrollList(h = 105, allowMultiSelection = True, selectCommand = pm.Callback(self.updateLayers)) self.widgets['nameSep'] = pm.separator(horizontal = True, style = 'none', h = 13) self.widgets['sceneName'] = pm.textFieldGrp(label = 'Scene Name', text = self.scene.namebase, adjustableColumn = 2, columnWidth2 = [80, 0]) #top right column self.widgets['topRColumn'] = pm.columnLayout(parent = self.widgets['mainForm'], h = 168, adjustableColumn = True, rowSpacing = 1) self.widgets['outputDir'] = pm.textFieldButtonGrp(label = 'Output Path', tx = self.output, adjustableColumn = 2, columnWidth = [1, 80], buttonLabel = 'Browse...', bc = pm.Callback(self.changeOutputDestination)) self.widgets['project'] = pm.textFieldGrp(label = 'Project', adjustableColumn = 2, columnWidth = [1, 80], text = self.fileInfo.getProject()) self.widgets['department'] = pm.textFieldGrp(label = 'Department', adjustableColumn = 2, columnWidth = [1, 80], text = MusterSubmit.defaults['department']) self.widgets['pool'] = pm.optionMenuGrp(label = 'Pool', adjustableColumn = 2, columnWidth = [1, 80], cc = pm.Callback(self.savePoolOpt)) self.widgets['renderer'] = pm.optionMenuGrp(label = 'Renderer', adjustableColumn = 2, columnWidth = [1, 80], cc = pm.Callback(self.saveRendererOpt)) self.widgets['user'] = pm.optionMenuGrp(label = 'User', adjustableColumn = 2, columnWidth = [1, 80], cc = pm.Callback(self.saveUserOpt)) self.widgets['memPri'] = pm.rowLayout(parent = self.widgets['topRColumn'], numberOfColumns = 2, adjustableColumn2 = 1) self.widgets['memory'] = pm.intSliderGrp(parent = self.widgets['memPri'], label = 'Memory', columnWidth = [1,80], field = True, step = 512, value = 16384, maxValue = 65536, minValue = 512, w = 200) self.widgets['priority'] = pm.intFieldGrp(parent = self.widgets['memPri'], label = 'Priority', columnWidth = [1,50], value1 = self.priority) #top middle row self.widgets['topMRow'] = pm.rowLayout(parent = self.widgets['mainForm'], numberOfColumns = 6, adjustableColumn6 = 3) self.widgets['sep'] = pm.separator(style = "none", w = 15) self.widgets['allLayers'] = pm.checkBox(label = 'All Layers', w = 110, value = True, cc = pm.Callback(self.setAllRenderable)) self.widgets['postCopy'] = pm.checkBox(label = 'Post Copy', w = 100, value = True) self.widgets['byFrame'] = pm.intFieldGrp(label = 'By Frame', columnWidth = [1, 50], value1 = int(pm.SCENE.defaultRenderGlobals.byFrame.get())) self.widgets['padding'] = pm.intFieldGrp(label = 'Padding', columnWidth = [1, 50], value1 = int(pm.SCENE.defaultRenderGlobals.extensionPadding.get())) self.widgets['packet'] = pm.intFieldGrp(label = 'Packet', columnWidth = [1, 50], value1 = int(MusterSubmit.defaults['packet'])) #main layout self.widgets['scrollLayout'] = pm.scrollLayout(parent = self.widgets['mainForm'], childResizable = True) #bottom row self.widgets['bottomRow'] = pm.rowLayout(numberOfColumns = 3, parent = self.widgets['mainForm'], adjustableColumn = 1) self.widgets['progress'] = pm.progressBar(w = 300, progress = -1) self.widgets['paused'] = pm.checkBox(label = 'Paused', w = 60) self.widgets['Submit'] = pm.button(label = 'Submit', w = 150, c = pm.Callback(self.submit)) #form Layout self.widgets['mainForm'].attachForm(self.widgets['topLColumn'], 'top', 0) self.widgets['mainForm'].attachForm(self.widgets['topLColumn'], 'left', 0) self.widgets['mainForm'].attachNone(self.widgets['topLColumn'], 'bottom') self.widgets['mainForm'].attachPosition(self.widgets['topLColumn'], 'right', 0, 40) self.widgets['mainForm'].attachForm(self.widgets['topRColumn'], 'top', 0) self.widgets['mainForm'].attachControl(self.widgets['topRColumn'], 'left', 0, self.widgets['topLColumn']) self.widgets['mainForm'].attachNone(self.widgets['topRColumn'], 'bottom') self.widgets['mainForm'].attachForm(self.widgets['topRColumn'], 'right', 0) self.widgets['mainForm'].attachControl(self.widgets['topMRow'], 'top', 0, self.widgets['topRColumn']) self.widgets['mainForm'].attachForm(self.widgets['topMRow'], 'left', 0) self.widgets['mainForm'].attachNone(self.widgets['topMRow'], 'bottom') self.widgets['mainForm'].attachForm(self.widgets['topMRow'], 'right', 0) self.widgets['mainForm'].attachControl(self.widgets['scrollLayout'], 'top', 0, self.widgets['topMRow']) self.widgets['mainForm'].attachForm(self.widgets['scrollLayout'], 'left', 0) self.widgets['mainForm'].attachControl(self.widgets['scrollLayout'], 'bottom', 0, self.widgets['bottomRow']) self.widgets['mainForm'].attachForm(self.widgets['scrollLayout'], 'right', 0) self.widgets['mainForm'].attachNone(self.widgets['bottomRow'], 'top') self.widgets['mainForm'].attachForm(self.widgets['bottomRow'], 'left', 0) self.widgets['mainForm'].attachForm(self.widgets['bottomRow'], 'bottom', 0) self.widgets['mainForm'].attachForm(self.widgets['bottomRow'], 'right', 0) #end form layout self._populateUI() pm.scriptJob(uiDeleted = [self.widgets['mainWindow'].name(), pm.Callback(self.saveUI)]) #saves ui settings to optionVar pm.scriptJob(e = ['renderLayerChange', pm.Callback(self.updateLayers)], p = self.widgets['mainWindow'].name()) #reloads layers scroll when a layer is created or deleted #show created ui self.widgets['mainWindow'].show() self.getOptionVars()
def ui_createUI(self): if pm.window(WIN_NAME, exists=True): pm.deleteUI(WIN_NAME, window=True) # TODO: need a window close event for saving prefs on [X] button click. pm.scriptJob(uiDeleted=(WIN_NAME, self.ui_saveSettings)) doesnt work cause ui elements already deleted. May be PythonAPI callbacks (Astus as an example) # TODO: looks like prefs are saved only on Close button click. Look to other PyMel UI Scripts with pm.window( WIN_NAME, title=WIN_TITLE, maximizeButton=False, menuBar=True, menuBarVisible=True ) as self.window: pm.setUITemplate('DefaultTemplate', pushTemplate=True) pm.menu(label='Edit', tearOff=False) pm.menuItem(label='Reset Settings', command=self.ui_resetSettings) pm.menu(label='Help', tearOff=False) pm.menuItem(label='Help on ' + WIN_TITLE, command=self.ui_showHelp) with pm.formLayout() as self.ui_LAY_mainForm: with pm.tabLayout(tabsVisible=False) as self.ui_TAB_top: pm.tabLayout(self.ui_TAB_top, e=True, height=1) with pm.formLayout() as self.ui_LAY_attachForm: with pm.tabLayout(tabsVisible=False, scrollable=True, innerMarginWidth=4) as self.ui_TAB_inner: with pm.columnLayout(adjustableColumn=True, rowSpacing=4) as self.ui_LAY_mainColumn: # -------------------- with self.ui_createFrame('ui_LAY_frameOptions', 'Options') as self.ui_LAY_frameOptions: with pm.columnLayout(adjustableColumn=True): # columnOffset=('both', 2)): self.ui_RADBTNGRP_shapeProcessing = pm.radioButtonGrp( 'ui_RADBTNGRP_shapeProcessing', label='Shape Processing:', labelArray3=["Rename shapes according to it's transforms\n(even if it's not selected)", "Don't rename shapes", 'Treat shapes as ordinary nodes'], numberOfRadioButtons=3, columnWidth=[1, UI_LABEL_WIDTH], columnAttach=[1, 'right', 5], vertical=True, select=SHAPE_PROCESSING_ACCORDING_TO_TRANSFORM ) # pm.separator(style='none', height=2) # -------------------- with self.ui_createFrame('ui_LAY_frameSimpleRename', 'Rename') as self.ui_LAY_frameSimpleRename: with pm.columnLayout(adjustableColumn=True, columnOffset=('both', 2)): self.ui_TXTFLDGRP_simpleRename = pm.textFieldGrp( 'ui_TXTFLDGRP_simpleRename', label='New Name', columnWidth=[1, UI_LABEL_WIDTH], columnAttach=[1, 'right', 5], adjustableColumn=2 ) pm.separator(style='none', height=2) self.ui_BTN_simpleRename = pm.button( label='Rename', command=pm.Callback(self.ui_onRenameClick, RENAME_ACTION_SIMPLE_RENAME) ) pm.separator(style='none', height=2) # -------------------- with self.ui_createFrame('ui_LAY_frameFindReplace', 'Find and Replace') as self.ui_LAY_frameFindReplace: with pm.columnLayout(adjustableColumn=True, columnOffset=('both', 2)): self.ui_TXTFLDGRP_find = pm.textFieldGrp( 'ui_TXTFLDGRP_find', label='Find', columnWidth=[1, UI_LABEL_WIDTH], columnAttach=[1, 'right', 5], adjustableColumn=2 ) self.ui_TXTFLDGRP_replace = pm.textFieldGrp( 'ui_TXTFLDGRP_replace', label='Replace With', columnWidth=[1, UI_LABEL_WIDTH], columnAttach=[1, 'right', 5], adjustableColumn=2 ) pm.separator(style='none', height=2) self.ui_BTN_findReplace = pm.button( label='Find and Replace', command=pm.Callback(self.ui_onRenameClick, RENAME_ACTION_FIND_REPLACE) ) pm.setParent(self.ui_LAY_mainColumn) # -------------------- with self.ui_createFrame('ui_LAY_framePrefix', 'Add Prefix') as self.ui_LAY_framePrefix: with pm.columnLayout(adjustableColumn=True, columnOffset=('both', 2)): self.ui_TXTFLDGRP_prefix = pm.textFieldGrp( 'ui_TXTFLDGRP_prefix', label='Prefix', columnWidth=[1, UI_LABEL_WIDTH], columnAttach=[1, 'right', 5], adjustableColumn=2 ) pm.separator(style='none', height=2) self.ui_BTN_prefix = pm.button( label='Add Prefix', command=pm.Callback(self.ui_onRenameClick, RENAME_ACTION_PREFIX) ) pm.setParent(self.ui_LAY_mainColumn) # -------------------- with self.ui_createFrame('ui_LAY_frameSuffix', 'Add Suffix') as self.ui_LAY_frameSuffix: with pm.columnLayout(adjustableColumn=True, columnOffset=('both', 2)): self.ui_TXTFLDGRP_suffix = pm.textFieldGrp( 'ui_TXTFLDGRP_suffix', label='Suffix', columnWidth=[1, UI_LABEL_WIDTH], columnAttach=[1, 'right', 5], adjustableColumn=2 ) pm.separator(style='none', height=2) self.ui_BTN_prefix = pm.button( label='Add Suffix', command=pm.Callback(self.ui_onRenameClick, RENAME_ACTION_SUFFIX) ) # -------------------- with self.ui_createFrame('ui_LAY_frameRenameNumber', 'Rename and Number') as self.ui_LAY_frameRenameNumber: with pm.columnLayout(adjustableColumn=True, columnOffset=('both', 2)): with pm.frameLayout( labelVisible=False, collapsable=False, marginHeight=3, # borderStyle='in', # borderVisible=True, enable=False ): with pm.columnLayout(adjustableColumn=True, columnOffset=('both', 3)): helpText = '' helpText += 'Type "#" symbol(s) in New Name where you want to place numbering.\n' helpText += 'For example:\n' helpText += ' pCube# -> pCube1, pCube2, ..., pCube15, ...\n' helpText += ' pCube#### -> pCube0001, pCube0002, ..., pCube0015, ...\n' helpText += ' obj_##_a -> obj_01_a, obj_02_a, ..., obj_15_a, ...\n' helpText += 'Omitting "#" will result in pattern:\n' helpText += ' pCube -> pCube1, pCube2, ..., pCube15, ...' self.ui_TXT_help = pm.text(helpText, align='left') pm.separator(style='none', height=2) self.ui_TXTFLDGRP_renameNumber = pm.textFieldGrp( 'ui_TXTFLDGRP_renameNumber', label='New Name', columnWidth=[1, UI_LABEL_WIDTH], columnAttach=[1, 'right', 5], adjustableColumn=2 ) self.ui_INTFLDGRP_startIndex = pm.intFieldGrp( 'ui_INTFLDGRP_startIndex', label='Start Index', columnWidth2=[UI_LABEL_WIDTH, 60], columnAttach=[1, 'right', 5] ) pm.separator(style='none', height=2) self.ui_BTN_prefix = pm.button( label='Rename and Number', command=pm.Callback(self.ui_onRenameClick, RENAME_ACTION_NUMBER) ) self.ui_BTN_close = pm.button( label='Close', height=30, command=self.ui_close ) pm.setUITemplate('DefaultTemplate', popTemplate=True) self.ui_LAY_attachForm.attachForm(self.ui_TAB_inner, 'top', 0) self.ui_LAY_attachForm.attachForm(self.ui_TAB_inner, 'left', 0) self.ui_LAY_attachForm.attachForm(self.ui_TAB_inner, 'right', 0) self.ui_LAY_attachForm.attachForm(self.ui_TAB_inner, 'bottom', 0) self.ui_LAY_mainForm.attachForm(self.ui_TAB_top, 'top', 0) self.ui_LAY_mainForm.attachForm(self.ui_TAB_top, 'left', 0) self.ui_LAY_mainForm.attachForm(self.ui_TAB_top, 'right', 0) self.ui_LAY_mainForm.attachControl(self.ui_TAB_top, 'bottom', 5, self.ui_BTN_close) self.ui_LAY_mainForm.attachNone(self.ui_BTN_close, 'top') self.ui_LAY_mainForm.attachForm(self.ui_BTN_close, 'left', 5) self.ui_LAY_mainForm.attachForm(self.ui_BTN_close, 'bottom', 5) self.ui_LAY_mainForm.attachForm(self.ui_BTN_close, 'right', 5) self.window.show() pm.refresh()
def jointSkeleton(*args): Input_spineJoints = pm.intFieldGrp("spineNumberField", q=True, v1=True) AutoRig_JT.createJoints(Input_spineJoints)
def create(self): # Create default render globals node if needed. createGlobalNodes() parentForm = pm.setParent(query=True) pm.setUITemplate("renderGlobalsTemplate", pushTemplate=True) pm.setUITemplate("attributeEditorTemplate", pushTemplate=True) columnWidth = 400 with pm.scrollLayout("appleseedScrollLayout", horizontalScrollBarThickness=0): with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth): with pm.frameLayout(label="Sampling", collapsable=True, collapse=False): with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth): self._addControl( ui=pm.intFieldGrp( label="Render Passes", numberOfFields=1), attrName="passes") self._addControl( ui=pm.checkBoxGrp( label="Adaptive Sampling", changeCommand=self.__adaptiveSamplerChanged), attrName="adaptiveSampling") adaptiveSampling = mc.getAttr("appleseedRenderGlobals.adaptiveSampling") self._addControl( ui=pm.intFieldGrp( label="Min Samples", numberOfFields=1, enable=adaptiveSampling), attrName="minPixelSamples") self._addControl( ui=pm.intFieldGrp( label="Max Samples", numberOfFields=1), attrName="samples") self._addControl( ui=pm.intFieldGrp( label="Batch Sample Size", numberOfFields=1, enable=adaptiveSampling), attrName="batchSampleSize") self._addControl( ui=pm.floatFieldGrp( label="Noise Threshold", numberOfFields=1, enable=adaptiveSampling), attrName="sampleNoiseThreshold") self._addControl( ui=pm.attrEnumOptionMenuGrp( label="Pixel Filter", enumeratedItem=self._getAttributeMenuItems("pixelFilter")), attrName="pixelFilter") self._addControl( ui=pm.floatFieldGrp( label="Pixel Filter Size", numberOfFields=1), attrName="pixelFilterSize") self._addControl( ui=pm.intFieldGrp( label="Tile Size", numberOfFields=1), attrName="tileSize") with pm.frameLayout(label="Lighting", collapsable=True, collapse=False): with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth): self._addControl( ui=pm.attrEnumOptionMenuGrp( label="Lighting Engine", enumeratedItem=self._getAttributeMenuItems("lightingEngine")), attrName="lightingEngine") with pm.frameLayout(label="Path Tracing", collapsable=True, collapse=False): with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth): self._addControl( ui=pm.checkBoxGrp( label="Limit Bounces", changeCommand=self.__limitBouncesChanged), attrName="limitBounces") limitBounces = mc.getAttr( "appleseedRenderGlobals.limitBounces") self._addControl( ui=pm.intFieldGrp( label="Global Bounces", numberOfFields=1, enable=limitBounces), attrName="bounces") self._addControl( ui=pm.intFieldGrp( label="Diffuse Bounces", numberOfFields=1, enable=limitBounces), attrName="diffuseBounces") self._addControl( ui=pm.intFieldGrp( label="Glossy Bounces", numberOfFields=1, enable=limitBounces), attrName="glossyBounces") self._addControl( ui=pm.intFieldGrp( label="Specular Bounces", numberOfFields=1, enable=limitBounces), attrName="specularBounces") self._addControl( ui=pm.floatFieldGrp( label="Light Samples", numberOfFields=1), attrName="lightSamples") self._addControl( ui=pm.floatFieldGrp( label="Environment Samples", numberOfFields=1), attrName="envSamples") self._addControl( ui=pm.checkBoxGrp(label="Clamp Roughness"), attrName="clampRoughness") self._addControl( ui=pm.checkBoxGrp(label="Caustics"), attrName="caustics") self._addControl( ui=pm.floatFieldGrp( label="Max Ray Intensity", numberOfFields=1), attrName="maxRayIntensity") with pm.frameLayout(label="Scene", collapsable=True, collapse=False): with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth): self._addControl( ui=pm.attrEnumOptionMenuGrp( label="Override Shaders", enumeratedItem=self._getAttributeMenuItems("diagnostics")), attrName="diagnostics") self._addControl( ui=pm.floatFieldGrp( label="Scene Scale", numberOfFields=1), attrName="sceneScale") with pm.rowLayout("appleseedRowLayout", nc=3): pm.text("Environment Light") ui = pm.optionMenu( changeCommand=self.__environmentLightSelected) pm.menuItem(label="<none>") for envLight in g_environmentLightsList: pm.menuItem(parent=ui, label=envLight) # Set the currently selected environment light in the menu. connections = mc.listConnections( "appleseedRenderGlobals.envLight") if connections: node = connections[0] if mc.nodeType(node) == "transform": shapes = mc.listRelatives(node, shapes=True) assert shapes node = shapes[0] pm.optionMenu(ui, edit=True, value=node) else: pm.optionMenu(ui, edit=True, value="<none>") self._uis["envLight"] = ui logger.debug( "Created globals env light menu, name = %s" % ui) self._addControl( ui=pm.checkBoxGrp(label="Environment Visible"), attrName="bgLight") with pm.frameLayout(label="Motion Blur", collapsable=True, collapse=True): with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth): self._addControl( ui=pm.checkBoxGrp( label="Motion Blur", changeCommand=self.__motionBlurChanged), attrName="motionBlur") enableMotionBlur = mc.getAttr( "appleseedRenderGlobals.motionBlur") self._addControl( ui=pm.intFieldGrp( label="Camera Samples", numberOfFields=1, enable=enableMotionBlur), attrName="mbCameraSamples") self._addControl( ui=pm.intFieldGrp( label="Transformation Samples", numberOfFields=1, enable=enableMotionBlur), attrName="mbTransformSamples") self._addControl( ui=pm.intFieldGrp( label="Deformation Samples", numberOfFields=1, enable=enableMotionBlur), attrName="mbDeformSamples") self._addControl( ui=pm.floatFieldGrp( label="Shutter Open", numberOfFields=1, enable=enableMotionBlur), attrName="shutterOpen") self._addControl( ui=pm.floatFieldGrp( label="Shutter Close", numberOfFields=1, enable=enableMotionBlur), attrName="shutterClose") with pm.frameLayout(label="System", collapsable=True, collapse=False): with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth): self._addControl( ui=pm.intFieldGrp( label="Threads", numberOfFields=1), attrName="threads") self._addControl( ui=pm.intFieldGrp( label="Texture Cache Size (MB)", numberOfFields=1), attrName="maxTexCacheSize") with pm.frameLayout(label="Experimental", collapsable=True, collapse=False): with pm.columnLayout("appleseedColumnLayout", adjustableColumn=True, width=columnWidth): self._addControl( ui=pm.checkBoxGrp(label="Use Embree"), attrName="useEmbree") pm.setUITemplate("renderGlobalsTemplate", popTemplate=True) pm.setUITemplate("attributeEditorTemplate", popTemplate=True) pm.formLayout( parentForm, edit=True, attachForm=[ ("appleseedScrollLayout", "top", 0), ("appleseedScrollLayout", "bottom", 0), ("appleseedScrollLayout", "left", 0), ("appleseedScrollLayout", "right", 0)]) logger.debug("Created appleseed render global main tab") # Update the newly created tab. self.update()
def AutoRig_UI(): if pm.window("AutoRig_JT", q=True, exists = True): pm.deleteUI("AutoRig_JT") windowUI = pm.window("AutoRig_JT",titleBarMenu=True, menuBar=True, mxb = False, t="AutoRig_JT", w = 300, h = 500, sizeable = False, bgc=[0.15,0.15,0.15],maximizeButton=False) pm.menu( label='File', tearOff=True ) pm.menuItem( label='Quit', c = partial(quit, "AutoRig_JT")) pm.menu( label='Help', helpMenu=True ) pm.menuItem( 'Application..."', label='About Creator', c = about ) pm.menuItem( 'Instructions', label='Instructions', c = instructions ) mainLayout = pm.columnLayout(adj = True, w=300, h=700) # unique UI stuff imagePath = pm.internalVar(upd = True) + "icons/autoRig_banner.jpg" pm.image(w = 300, h = 100,image = imagePath, parent = mainLayout) pm.separator(style = 'none', h=20) pm.rowColumnLayout(nc = 2, cw = [(1,100),(2,200)],parent = mainLayout, columnOffset = ([(1,"left",10),(2,"left",0)])) pm.text(l=' Rig_Prefix : ') RigPrefix = pm.textFieldGrp("RigPrefix",tx='Character_',w=80) pm.separator(style = 'none', h=20) pm.separator(style = 'none', h=20) pm.text(l='Spine Joints : ') spineNumberField = pm.intFieldGrp("spineNumberField",numberOfFields=1,v1=3,w=190) pm.setParent(u=True) pm.separator(style = 'none', h=20) pm.separator(style = 'none', h=20) pm.separator(style = 'none',h=20) pm.button(l='Create Reference Skeleton',c=referenceSkeleton, w=190,h=40,bgc=[0.2,0.2,0.2]) pm.separator(style = 'none', h=20) pm.button(l='Mirror Locators (X+ to -X) (edit)', c=mirrorLocators, w=190, h=40, bgc=[0.2, 0.2, 0.2]) pm.separator(style='none', h=20) pm.button(l='Create Joint Skeleton (edit)', c=jointSkeleton, w=190, h=40, bgc=[0.2, 0.2, 0.2]) pm.separator(style='none', h=20) pm.radioButtonGrp('ZAxisOption', label='Z Align Axis', labelArray3=['X', 'Y', 'Z'], numberOfRadioButtons=3,cw=[(1,70),(2,35),(3,35)] ) pm.radioButtonGrp('directionOption', label='+ or -', labelArray2=['+', '-'], numberOfRadioButtons=2,cw=[(1,70),(2,35)] ) pm.button(l='Align Joints (select joints in chain you want to align)', c=alignChain, w=190, h=40, bgc=[0.2, 0.2, 0.2]) pm.separator(style='none', h=20) pm.button(l='Finalize Rig',c=finalize, w=190,h=40,bgc=[0.2,0.2,0.2]) pm.separator(style = 'none', h=20) pm.button(l='Exit',c=partial(quit,"AutoRig_JT"), w=190,h=40,bgc=[0.2,0.2,0.2]) print windowUI pm.showWindow(windowUI) pm.window("AutoRig_JT", e=True,w=300,h=600)
def create(self): # Create default render globals node if needed. createGlobalNodes() parentForm = pm.setParent(query=True) pm.setUITemplate("renderGlobalsTemplate", pushTemplate=True) pm.setUITemplate("attributeEditorTemplate", pushTemplate=True) columnWidth = 400 with pm.scrollLayout("outputScrollLayout", horizontalScrollBarThickness=0): with pm.columnLayout("outputColumnLayout", adjustableColumn=True, width=columnWidth): with pm.frameLayout(label="AOVs", collapsable=True, collapse=False): with pm.columnLayout("outputColumnLayout", adjustableColumn=True, width=columnWidth): self._addControl(ui=pm.checkBoxGrp(label="Diffuse"), attrName="diffuseAOV") self._addControl(ui=pm.checkBoxGrp(label="Glossy"), attrName="glossyAOV") self._addControl(ui=pm.checkBoxGrp(label="Emission"), attrName="emissionAOV") self._addControl(ui=pm.checkBoxGrp(label="Direct Diffuse"), attrName="directDiffuseAOV") self._addControl(ui=pm.checkBoxGrp(label="Indirect Diffuse"), attrName="indirectDiffuseAOV") self._addControl(ui=pm.checkBoxGrp(label="Direct Glossy"), attrName="directGlossyAOV") self._addControl(ui=pm.checkBoxGrp(label="Indirect Glossy"), attrName="indirectGlossyAOV") self._addControl(ui=pm.checkBoxGrp(label="Albedo"), attrName="albedoAOV") self._addControl(ui=pm.checkBoxGrp(label="Normal"), attrName="normalAOV") self._addControl(ui=pm.checkBoxGrp(label="UV"), attrName="uvAOV") self._addControl(ui=pm.checkBoxGrp(label="Depth"), attrName="depthAOV") self._addControl(ui=pm.checkBoxGrp(label="NPR Shading"), attrName="nprShadingAOV") self._addControl(ui=pm.checkBoxGrp(label="NPR Contours"), attrName="nprContourAOV") with pm.frameLayout(label="Denoiser", collapsable=True, collapse=True): with pm.columnLayout("outputColumnLayout", adjustableColumn=True, width=columnWidth): self._addControl( ui=pm.attrEnumOptionMenuGrp( label="Denoiser", enumeratedItem=self._getAttributeMenuItems("denoiser")), attrName="denoiser") self._addControl( ui=pm.checkBoxGrp( label="Skip Already Denoised"), attrName="skipDenoised") self._addControl( ui=pm.checkBoxGrp( label="Random Pixel Order"), attrName="randomPixelOrder") enablePrefilter = mc.getAttr( "appleseedRenderGlobals.prefilterSpikes") self._addControl( ui=pm.checkBoxGrp( label="Prefilter Spikes", changeCommand=self.__prefilterChanged), attrName="prefilterSpikes") self._addControl( ui=pm.floatFieldGrp( label="Spike Thereshold", numberOfFields=1, enable=enablePrefilter), attrName="spikeThreshold") self._addControl( ui=pm.floatFieldGrp( label="Patch Distance", numberOfFields=1), attrName="patchDistance") self._addControl( ui=pm.intFieldGrp( label="Denoise Scales", numberOfFields=1), attrName="denoiseScales") with pm.frameLayout(label="Render Stamp", collapsable=True, collapse=True): with pm.columnLayout("outputColumnLayout", adjustableColumn=True, width=columnWidth): self._addControl(ui=pm.checkBoxGrp(label="Enable"), attrName="renderStamp") self._addControl( ui=pm.textFieldGrp( label='Render Stamp'), attrName="renderStampString") with pm.frameLayout(label="Logging", collapsable=True, collapse=True): with pm.columnLayout("outputColumnLayout", adjustableColumn=True, width=columnWidth): self._addControl( ui=pm.attrEnumOptionMenuGrp( label="Log Level", enumeratedItem=self._getAttributeMenuItems("logLevel")), attrName="logLevel") self._addControl( ui=pm.textFieldButtonGrp( label='Log Filename', buttonLabel='...', buttonCommand=self.__chooseLogFilename), attrName="logFilename") pm.setUITemplate("renderGlobalsTemplate", popTemplate=True) pm.setUITemplate("attributeEditorTemplate", popTemplate=True) pm.formLayout( parentForm, edit=True, attachForm=[ ("outputScrollLayout", "top", 0), ("outputScrollLayout", "bottom", 0), ("outputScrollLayout", "left", 0), ("outputScrollLayout", "right", 0)]) logger.debug("Created appleseed render global output tab") # Update the newly created tab. self.update()