def lcBake_open_lightmap_folder(*args, **kwargs): ''' ''' dir = pm.textField(prefix+'_textField_texture_path', query=True, text=True) lightmapDir = os.path.normpath(os.path.join(dir, 'lightMap')) if os.path.exists(lightmapDir): path.openFilePath(lightmapDir) elif os.path.exists(dir): path.openFilePath(dir) else: pm.warning('Path not found: {0}'.format(dir) )
def lcBake_open_lightmap_folder(*args, **kwargs): ''' ''' dir = pm.textField(prefix + '_textField_texture_path', query=True, text=True) lightmapDir = os.path.normpath(os.path.join(dir, 'lightMap')) if os.path.exists(lightmapDir): path.openFilePath(lightmapDir) elif os.path.exists(dir): path.openFilePath(dir) else: pm.warning('Path not found: {0}'.format(dir))
def reloadChangedTextures(self, *args, **kwargs): ''' ''' fileNodes = pm.ls(type='file') sceneName = path.getSceneName() xmlFileName = sceneName+'_textureList' if os.path.exists(self.settingsPath+xmlFileName+'.xml'): textureList = xml.dom.minidom.parse(self.settingsPath+xmlFileName+'.xml') for node in fileNodes: fileTextureName = pm.getAttr(node+'.fileTextureName') for nodeStored in textureList.getElementsByTagName('textureNode'): nodeNameStored = nodeStored.getAttribute('nodeName') if node == nodeNameStored: time = os.path.getmtime(fileTextureName) timeList = nodeStored.getElementsByTagName('time') timeNode = timeList[0] timeChild = timeNode.firstChild timeStored= timeChild.data if str(time) != timeStored: self.reloadTexture(node) self.saveTextureList() else: self.saveTextureList() self.reloadTextures()
def saveTextureList(self, *args, **kwargs): ''' write an xml file with a list of the scenes textures and timestamps ''' fileNodes = pm.ls(type='file') sceneName = path.getSceneName() xmlFileName = sceneName + '_textureList' doc = Document() textureList = doc.createElement('textureList') textureList.setAttribute('sceneName', sceneName) doc.appendChild(textureList) for node in fileNodes: fileTextureName = pm.getAttr(node + '.fileTextureName') if os.path.isfile(fileTextureName): time = os.path.getmtime(fileTextureName) textureNode = doc.createElement('textureNode') textureNode.setAttribute('nodeName', node) textureList.appendChild(textureNode) texturePath = doc.createElement('path') texturePath.appendChild(doc.createTextNode(fileTextureName)) textureNode.appendChild(texturePath) textureTime = doc.createElement('time') textureTime.appendChild(doc.createTextNode(str(time))) textureNode.appendChild(textureTime) f = open(self.settingsPath + xmlFileName + '.xml', 'w+') #f.write(doc.toprettyxml(indent=' ') ) #This is super slow !!!!! doc.writexml(f) f.close()
def repathTextures(cls, texList, newPath, *args, **kwargs): ''' repath the textures in a given list ''' if texList: for tex in texList: oldPath = pm.getAttr(tex+'.fileTextureName') fixedPath = path.repath(oldPath , newPath) pm.setAttr(tex+'.fileTextureName', fixedPath)
def repathTextures(cls, texList, newPath, *args, **kwargs): ''' repath the textures in a given list ''' if texList: for tex in texList: oldPath = pm.getAttr(tex + '.fileTextureName') fixedPath = path.repath(oldPath, newPath) pm.setAttr(tex + '.fileTextureName', fixedPath)
def reloadChangedTextures(self, *args, **kwargs): ''' ''' fileNodes = pm.ls(type='file') sceneName = path.getSceneName() xmlFileName = sceneName + '_textureList' if os.path.exists(self.settingsPath + xmlFileName + '.xml'): textureList = xml.dom.minidom.parse(self.settingsPath + xmlFileName + '.xml') for node in fileNodes: fileTextureName = pm.getAttr(node + '.fileTextureName') for nodeStored in textureList.getElementsByTagName( 'textureNode'): nodeNameStored = nodeStored.getAttribute('nodeName') if node == nodeNameStored: time = os.path.getmtime(fileTextureName) timeList = nodeStored.getElementsByTagName('time') timeNode = timeList[0] timeChild = timeNode.firstChild timeStored = timeChild.data if str(time) != timeStored: self.reloadTexture(node) self.saveTextureList() else: self.saveTextureList() self.reloadTextures()
def saveTextureList(self, *args, **kwargs): ''' write an xml file with a list of the scenes textures and timestamps ''' fileNodes = pm.ls(type='file') sceneName = path.getSceneName() xmlFileName = sceneName+'_textureList' doc = Document() textureList = doc.createElement('textureList') textureList.setAttribute('sceneName', sceneName) doc.appendChild(textureList) for node in fileNodes: fileTextureName = pm.getAttr(node+'.fileTextureName') if os.path.isfile(fileTextureName): time = os.path.getmtime(fileTextureName) textureNode = doc.createElement('textureNode') textureNode.setAttribute('nodeName', node) textureList.appendChild(textureNode) texturePath = doc.createElement('path') texturePath.appendChild(doc.createTextNode(fileTextureName) ) textureNode.appendChild(texturePath) textureTime = doc.createElement('time') textureTime.appendChild(doc.createTextNode(str(time) ) ) textureNode.appendChild(textureTime) f = open(self.settingsPath+xmlFileName+'.xml', 'w+') #f.write(doc.toprettyxml(indent=' ') ) #This is super slow !!!!! doc.writexml(f) f.close()
def buildPublishList(cls, inline, *args, **kwargs): ''' build a list of the scripts that are published and some relevent commands ''' moduleBase = 'lct.src' data = [] srcPath = path.getSrcPath() for subDir in os.listdir(srcPath): full = os.path.normpath(os.path.join(srcPath, subDir)) if os.path.isdir(full): if os.path.exists(os.path.normpath(os.path.normpath(os.path.join(full, subDir+'.py'))) ): file = open(os.path.normpath(os.path.join(full, subDir+'.py')) ) first = file.readline()[:-2]# ???? if first.split(' = ')[0] == 'publish': publish = first.split(' = ')[1] annotation = file.readline()[:-2].split(' = ')[1].split('"')[1] prefix = file.readline()[:-2].split(' = ')[1].split("'")[1] if inline: #if you need to preserve the command as a single line when printing or writing to a file runCommand = 'import '+moduleBase+'.'+subDir+'.'+subDir+' as '+prefix+'\\nreload('+prefix+')\\n'+prefix+'.'+subDir+'UI()' else: runCommand = 'import '+moduleBase+'.'+subDir+'.'+subDir+' as '+prefix+'\nreload('+prefix+')\n'+prefix+'.'+subDir+'UI()' set = [subDir, prefix, annotation, publish, runCommand] #print 'set: {0}'.format(set) data.append(set) return data
def makeLctShelf(cls, *args, **kwargs): """ """ src = path.getSrcPath() mel = path.getMelPath() shelf = os.path.normpath(os.path.join(mel, 'shelf_LCT.mel')) file = open(shelf, 'w+') opening = 'global proc shelf_LCT () {\n global string $gBuffStr;\n global string $gBuffStr0;\n global string $gBuffStr1;\n\n' closing = '\n}' file.write(opening) initShelfIcon = os.path.normpath( os.path.join(src, 'icons', 'shelf.png')) initShelfLabel = 'Init Shelf' initShelfAnno = 'Initialize LCT Shelf' initShelfCommand = 'from lct.src.core.lcShelf import Shelf as shelf\nshelf.makeLctShelf()' file.write(closing) file.close() if not pm.layout('LCT', ex=True): if os.name == 'nt': shelf = shelf.replace('\\', '/') pm.mel.loadNewShelf(shelf) pm.shelfButton(label=initShelfLabel, annotation=initShelfAnno, image1=initShelfIcon, command=initShelfCommand) else: pm.mel.eval( 'shelfTabLayout -edit -selectTab "LCT" $gShelfTopLevel;') list = utility.buildPublishList(inline=False) for item in list: if item[3] == 'True': label = item[0] annotation = item[2] icon = os.path.normpath( os.path.join(src, label, item[0] + '.png')) runCommand = item[4] cls.makeShelfButton(label, runCommand, icon, annotation)
def makeLctShelf(cls, *args, **kwargs): """ """ src = path.getSrcPath() mel = path.getMelPath() shelf = os.path.normpath(os.path.join(mel, 'shelf_LCT.mel')) file = open(shelf, 'w+') opening = 'global proc shelf_LCT () {\n global string $gBuffStr;\n global string $gBuffStr0;\n global string $gBuffStr1;\n\n' closing = '\n}' file.write(opening) initShelfIcon = os.path.normpath(os.path.join(src, 'icons', 'shelf.png')) initShelfLabel = 'Init Shelf' initShelfAnno = 'Initialize LCT Shelf' initShelfCommand = 'from lct.src.core.lcShelf import Shelf as shelf\nshelf.makeLctShelf()' file.write(closing) file.close() if not pm.layout('LCT', ex=True): if os.name == 'nt': shelf = shelf.replace('\\','/') pm.mel.loadNewShelf(shelf) pm.shelfButton(label=initShelfLabel, annotation=initShelfAnno, image1=initShelfIcon, command=initShelfCommand) else: pm.mel.eval('shelfTabLayout -edit -selectTab "LCT" $gShelfTopLevel;') list = utility.buildPublishList(inline=False) for item in list: if item[3] == 'True': label = item[0] annotation = item[2] icon = os.path.normpath(os.path.join(src, label, item[0]+'.png')) runCommand = item[4] cls.makeShelfButton(label, runCommand, icon, annotation)
def lcBatchBakeUI(dockable=False, *args, **kwargs): ''' ''' ci = 0 #color index iterator windowName = 'lcBatchBake' shelfCommand = 'import lct.src.lcBatchBake.lcBatchBake as lcBake\nreload(lcBake)\nlcBake.lcBatchBakeUI()' icon = basePath + 'lcBatchBake.png' winWidth = 204 winHeight = 218 mainWindow = lcWindow(windowName=windowName, width=winWidth, height=winHeight, icon=icon, shelfCommand=shelfCommand, annotation=annotation, dockable=dockable, menuBar=True) mainWindow.create() pm.menu(l='Options', helpMenu=True) pm.menuItem( l='Delete All bake sets', command=lambda *args: lcBake_delete_all_bake_sets(bakeSetListDropdown)) # pm.columnLayout(prefix + '_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1, 100], [2, 100])) pm.button(l='Make Texture', bgc=colorWheel.getColorRGB(ci), w=100, h=25, annotation='Create a Texture bake set', command=lambda *args: lcBake_make_new_bake_set( bakeSetListDropdown, 'texture')) ci += 1 pm.button(l='Make Vertex', bgc=colorWheel.getColorRGB(ci), w=100, h=25, annotation='Create a Texture bake set', command=lambda *args: lcBake_make_new_bake_set( bakeSetListDropdown, 'vertex')) ci += 1 pm.setParent(prefix + '_columLayout_main') # pm.rowColumnLayout(nc=3, cw=([1, 25], [2, 150], [3, 25])) pm.iconTextButton(w=25, h=25, style='iconOnly', image=iconBasePath + 'reloadList.png', annotation='Reload the bake set list', command=lambda *args: lcBake_populate_bake_set_list( bakeSetListDropdown)) bakeSetListDropdown = pm.optionMenu(prefix + '_optionMenu_bake_set_list', w=150, h=25, annotation='List of bake sets') pm.iconTextButton(w=25, h=25, style='iconOnly', image=iconBasePath + 'deleteItem.png', annotation='Delete this bake set', command=lambda *args: lcBake_delete_current_bake_set( bakeSetListDropdown)) pm.setParent(prefix + '_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1, 100], [2, 100])) #nc=3, cw=([1,50], [2,50], [3,100] ) ) pm.button(l='+ Add', bgc=colorWheel.getColorRGB(ci), w=100, h=25, annotation='Add geometry to bake set', command=lambda *args: lcBake_add_to_current_bake_set( bakeSetListDropdown)) ci += 1 # pm.button(l='- Rem', bgc=colorWheel.getColorRGB(ci), w=50, h=25, annotation='Remove geometry from bake set', command=lambda *args: lcBake_fake_command() ) # ci+=1 pm.button( l='Edit Options', bgc=colorWheel.getColorRGB(ci), w=100, h=25, annotation='Edit the bake set options', command=lambda *args: lcBake_show_bake_set_attrs(bakeSetListDropdown)) ci += 1 pm.setParent(prefix + '_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1, 75], [2, 125])) pm.text(l='Bake Camera: ', al='right') cameraListDropdown = pm.optionMenu(prefix + '_optionMenu_camera_list', w=125, h=25, annotation='List of cameras') pm.text(l='') pm.checkBox(prefix + '_checkBox_shadows', w=125, h=25, value=True, label='Shadows and AO?', annotation='Turn on to bake shadows and ambient occlusion') pm.setParent(prefix + '_columLayout_main') # pm.separator(style='none', h=10) pm.rowColumnLayout(nc=2, cw=([1, 150], [2, 50])) pm.textField(prefix + '_textField_texture_path', text='texture output directory', annotation='Output directory path', w=150) pm.button( prefix + '_button_browse_path', l='Browse', bgc=colorWheel.getColorRGB(ci), annotation='Choose a directory', w=50, command=lambda *args: path.browsePathTextField( prefix + '_textField_texture_path', '', 'Browse a Directory')) ci += 1 pm.setParent(prefix + '_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1, 150], [2, 50])) pm.button(l='Bake It !!', bgc=colorWheel.getColorRGB(ci), w=150, h=25, annotation='Bake to texture or vertex', command=lambda *args: lcBake_convert_lightmap( bakeSetListDropdown, cameraListDropdown)) ci += 1 pm.button(l='Open Dir', bgc=colorWheel.getColorRGB(ci), w=50, h=25, annotation='Open the output directory', command=lambda *args: lcBake_open_lightmap_folder()) ci += 1 # mainWindow.show() plugin.reloadPlugin(plugin='Mayatomr', autoload=True) lcBake_populate_bake_set_list(bakeSetListDropdown) lcBake_populate_camera_list(cameraListDropdown)
def lcBatchBakeUI(dockable=False, *args, **kwargs): ''' ''' ci = 0 #color index iterator windowName = 'lcBatchBake' shelfCommand = 'import lct.src.lcBatchBake.lcBatchBake as lcBake\nreload(lcBake)\nlcBake.lcBatchBakeUI()' icon = basePath+'lcBatchBake.png' winWidth = 204 winHeight = 218 mainWindow = lcWindow(windowName=windowName, width=winWidth, height=winHeight, icon=icon, shelfCommand=shelfCommand, annotation=annotation, dockable=dockable, menuBar=True) mainWindow.create() pm.menu(l='Options', helpMenu=True) pm.menuItem(l='Delete All bake sets', command=lambda *args: lcBake_delete_all_bake_sets(bakeSetListDropdown) ) # pm.columnLayout(prefix+'_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1,100], [2,100]) ) pm.button(l='Make Texture', bgc=colorWheel.getColorRGB(ci), w=100, h=25, annotation='Create a Texture bake set', command=lambda *args: lcBake_make_new_bake_set(bakeSetListDropdown, 'texture') ) ci+=1 pm.button(l='Make Vertex', bgc=colorWheel.getColorRGB(ci), w=100, h=25, annotation='Create a Texture bake set', command=lambda *args: lcBake_make_new_bake_set(bakeSetListDropdown, 'vertex') ) ci+=1 pm.setParent(prefix+'_columLayout_main') # pm.rowColumnLayout(nc=3, cw=([1,25], [2,150], [3,25]) ) pm.iconTextButton(w=25, h=25, style='iconOnly', image=iconBasePath+'reloadList.png', annotation='Reload the bake set list', command=lambda *args: lcBake_populate_bake_set_list(bakeSetListDropdown) ) bakeSetListDropdown = pm.optionMenu(prefix+'_optionMenu_bake_set_list', w=150, h=25, annotation='List of bake sets' ) pm.iconTextButton(w=25, h=25, style='iconOnly', image=iconBasePath+'deleteItem.png', annotation='Delete this bake set', command=lambda *args: lcBake_delete_current_bake_set(bakeSetListDropdown) ) pm.setParent(prefix+'_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1,100], [2,100] ) ) #nc=3, cw=([1,50], [2,50], [3,100] ) ) pm.button(l='+ Add', bgc=colorWheel.getColorRGB(ci), w=100, h=25, annotation='Add geometry to bake set', command=lambda *args: lcBake_add_to_current_bake_set(bakeSetListDropdown) ) ci+=1 # pm.button(l='- Rem', bgc=colorWheel.getColorRGB(ci), w=50, h=25, annotation='Remove geometry from bake set', command=lambda *args: lcBake_fake_command() ) # ci+=1 pm.button(l='Edit Options', bgc=colorWheel.getColorRGB(ci), w=100, h=25, annotation='Edit the bake set options', command=lambda *args: lcBake_show_bake_set_attrs(bakeSetListDropdown) ) ci+=1 pm.setParent(prefix+'_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1,75], [2,125] ) ) pm.text(l='Bake Camera: ', al='right') cameraListDropdown = pm.optionMenu(prefix+'_optionMenu_camera_list', w=125, h=25, annotation='List of cameras' ) pm.text(l='') pm.checkBox(prefix+'_checkBox_shadows', w=125, h=25, value=True, label='Shadows and AO?', annotation='Turn on to bake shadows and ambient occlusion' ) pm.setParent(prefix+'_columLayout_main') # pm.separator(style='none', h=10) pm.rowColumnLayout(nc=2, cw=([1,150], [2,50]) ) pm.textField(prefix+'_textField_texture_path', text='texture output directory', annotation='Output directory path', w=150) pm.button(prefix+'_button_browse_path', l='Browse', bgc=colorWheel.getColorRGB(ci), annotation='Choose a directory', w=50, command=lambda *args: path.browsePathTextField(prefix+'_textField_texture_path', '', 'Browse a Directory') ) ci+=1 pm.setParent(prefix+'_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1,150], [2,50]) ) pm.button(l='Bake It !!', bgc=colorWheel.getColorRGB(ci), w=150, h=25, annotation='Bake to texture or vertex', command=lambda *args: lcBake_convert_lightmap(bakeSetListDropdown, cameraListDropdown) ) ci+=1 pm.button(l='Open Dir', bgc=colorWheel.getColorRGB(ci), w=50, h=25, annotation='Open the output directory', command=lambda *args: lcBake_open_lightmap_folder() ) ci+=1 # mainWindow.show() plugin.reloadPlugin(plugin='Mayatomr', autoload=True) lcBake_populate_bake_set_list(bakeSetListDropdown) lcBake_populate_camera_list(cameraListDropdown)
def __init__(self, *args, **kwargs): """ Initialize class and variables """ self.settingsPath = path.getSettingsPath() + '/'
def openTextureList(cls, texList, *args, **kwargs): ''' open a list of file nodes in default program ie. photoshop ''' for item in texList: texPath = pm.getAttr(item+'.fileTextureName') path.openFilePath(texPath)
def openTextureList(cls, texList, *args, **kwargs): ''' open a list of file nodes in default program ie. photoshop ''' for item in texList: texPath = pm.getAttr(item + '.fileTextureName') path.openFilePath(texPath)
def lcObjToolsUI(dockable=False, *args, **kwargs): ''' ''' global prefix ci = 0 #color index iterator windowName = 'lcObjTools' shelfCommand = 'import lct.src.lcObjTools.lcObjTools as lcObj\nreload(lcObj)\nlcObj.lcObjToolsUI()' icon = basePath+'lcObjTools.png' winWidth = 204 winHeight = 158 mainWindow = lcWindow(windowName=windowName, width=winWidth, height=winHeight, icon=icon, shelfCommand=shelfCommand, annotation=annotation, dockable=dockable, menuBar=True) mainWindow.create() # pm.columnLayout(prefix+'_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1,150], [2,50]) ) pm.textField(prefix+'_textField_export_path', w=150) pm.button(prefix+'_button_browse_path', l='Browse', bgc=colorWheel.getColorRGB(ci), annotation='Choose an export directory', w=50, command=lambda *args: path.browsePathTextField(prefix+'_textField_export_path', "Wavefront Obj (*.obj)", 'Obj Export Location') ) ci+=1 pm.setParent(prefix+'_columLayout_main') # pm.checkBox(prefix+'_checkBox_export_indi', l='Export Individual', v=False) pm.checkBox(prefix+'_checkBox_use_smooth', l='Use Smooth Preview', v=True) # pm.rowColumnLayout(nc=2, cw=([1,100], [2,100]) ) pm.textField(prefix+'_textField_prefix', w=100) pm.text(l=' Prefix_', al='left') pm.setParent(prefix+'_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1,169], [2,31]) ) pm.columnLayout(w=169) pm.button(prefix+'_button_export', l='Export OBJ', bgc=colorWheel.getColorRGB(ci), annotation='Export the selected geometry', w=168, h=30, command=lambda *args: lcObj_exportObjs() ) ci+=1 pm.button(prefix+'_button_Import', l='Import Multiple OBJs', bgc=colorWheel.getColorRGB(ci), annotation='Clean import more than one obj', w=168, h=20, command=lambda *args: lcObj_importMultiple() ) ci+=1 pm.setParent('..') pm.columnLayout(w=31) pm.iconTextButton(prefix+'_button_open_folder', style='iconOnly', image=iconBasePath+'folder_30x50.png', annotation='Open the export folder', w=30, h=50, command=lambda *args: path.openFilePath(pm.textField(prefix+'_textField_export_path', query=True, text=True) ) ) ci+=1 # mainWindow.show() plugin.reloadPlugin(plugin='objExport', autoload=True)
def lcTextureToolsUI(dockable=False, *args, **kwargs): ''' ''' ci = 0 #color index iterator windowName = 'lcTextureTools' shelfCommand = 'import lct.src.lcTextureTools.lcTextureTools as lcTxT\nreload(lcTxT)\nlcTxT.lcTextureToolsUI()' icon = basePath+'lcTextureTools.png' winWidth = 204 winHeight = 174 mainWindow = lcWindow(windowName=windowName, width=winWidth, height=winHeight, icon=icon, shelfCommand=shelfCommand, annotation=annotation, dockable=dockable, menuBar=True) mainWindow.create() # pm.columnLayout(prefix+'_columLayout_main') # pm.rowColumnLayout(nc=1, cw=([1,201]) ) pm.iconTextButton(w=200, h=25, style='iconOnly', image=iconBasePath+'renameNodes.png', annotation='Renames all file nodes based on the attached file name with a tx_ suffix', command=lambda *args: texture.renameAllTextureNodes() ) pm.setParent('..') pm.separator(style='in', h=5) # pm.rowColumnLayout(nc=2, cw=([1,100], [2,100]) ) pm.rowColumnLayout(nc=2, cw=([1,75], [2,25]) ) pm.iconTextButton(w=100, h=25, style='iconOnly', image=iconBasePath+'reloadAll.png', annotation='Reloads all the file texture nodes', command=lambda *args: texture.reloadTextures() ) pm.iconTextButton(w=25, h=25, style='iconOnly', image=iconBasePath+'addToShelf.png', highlightImage=iconBasePath+'addToShelf_over.png', annotation='Add to Shelf', command=lambda *args: shelf.makeShelfButton('Reload Textures', 'from lct.src.core.lcTexture import Texture as texture\ntexture().reloadTextures()', iconBasePath+'reloadAllTextures.png', 'Reload All Textures') ) pm.setParent('..') pm.rowColumnLayout(nc=2, cw=([1,75], [2,25]) ) pm.iconTextButton(w=100, h=25, style='iconOnly', image=iconBasePath+'reloadChanged.png', annotation='Reloads only the changed file texture nodes based on timestamp', command=lambda *args: texture().reloadChangedTextures() ) pm.iconTextButton(w=25, h=25, style='iconOnly', image=iconBasePath+'addToShelf.png', highlightImage=iconBasePath+'addToShelf_over.png', annotation='Add to Shelf', command=lambda *args: shelf.makeShelfButton('Reload Changed Textures', 'from lct.src.core.lcTexture import Texture as texture\ntexture().reloadChangedTextures()', iconBasePath+'reloadChangedTextures.png', 'Reload Changed Textures') ) pm.setParent('..') pm.setParent(prefix+'_columLayout_main') pm.separator(style='in', h=5) # pm.rowColumnLayout(nc=2, cw=([1,150], [2,50]) ) pm.textField(prefix+'_textField_new_path', w=150) pm.button(prefix+'_button_browse_path', l='Browse', bgc=colorWheel.getColorRGB(ci), annotation='Choose a new directory', w=50, command=lambda *args: path.browsePathTextField(prefix+'_textField_new_path', '', 'Browse New Texture Directory') ) ci+=1 pm.setParent(prefix+'_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1,100], [2,100]) ) pm.iconTextButton(w=100, h=25, style='iconOnly', image=iconBasePath+'pathAll.png', annotation='Repath all file texture nodes', command=lambda *args: lcTxT_repath_all() ) pm.iconTextButton(w=100, h=25, style='iconOnly', image=iconBasePath+'pathSelected.png', annotation='Repath selected file texture nodes', command=lambda *args: lcTxT_repath_selected() ) pm.setParent(prefix+'_columLayout_main') pm.separator(style='in', h=5) # pm.rowColumnLayout(nc=2, cw=([1,100], [2,100]) ) pm.iconTextButton(w=100, h=25, style='iconOnly', image=iconBasePath+'openAll.png', annotation='Open all file texture nodes in default associated program', command=lambda *args: lcTxT_open_all() ) pm.iconTextButton(w=100, h=25, style='iconOnly', image=iconBasePath+'openSelected.png', annotation='Open selected file texture nodes in default associated program', command=lambda *args: lcTxT_open_selected() ) pm.setParent(prefix+'_columLayout_main') pm.separator(style='in', h=5) # mainWindow.show()
def lcTextureToolsUI(dockable=False, *args, **kwargs): ''' ''' ci = 0 #color index iterator windowName = 'lcTextureTools' shelfCommand = 'import lct.src.lcTextureTools.lcTextureTools as lcTxT\nreload(lcTxT)\nlcTxT.lcTextureToolsUI()' icon = basePath + 'lcTextureTools.png' winWidth = 204 winHeight = 174 mainWindow = lcWindow(windowName=windowName, width=winWidth, height=winHeight, icon=icon, shelfCommand=shelfCommand, annotation=annotation, dockable=dockable, menuBar=True) mainWindow.create() # pm.columnLayout(prefix + '_columLayout_main') # pm.rowColumnLayout(nc=1, cw=([1, 201])) pm.iconTextButton( w=200, h=25, style='iconOnly', image=iconBasePath + 'renameNodes.png', annotation= 'Renames all file nodes based on the attached file name with a tx_ suffix', command=lambda *args: texture.renameAllTextureNodes()) pm.setParent('..') pm.separator(style='in', h=5) # pm.rowColumnLayout(nc=2, cw=([1, 100], [2, 100])) pm.rowColumnLayout(nc=2, cw=([1, 75], [2, 25])) pm.iconTextButton(w=100, h=25, style='iconOnly', image=iconBasePath + 'reloadAll.png', annotation='Reloads all the file texture nodes', command=lambda *args: texture.reloadTextures()) pm.iconTextButton( w=25, h=25, style='iconOnly', image=iconBasePath + 'addToShelf.png', highlightImage=iconBasePath + 'addToShelf_over.png', annotation='Add to Shelf', command=lambda *args: shelf.makeShelfButton( 'Reload Textures', 'from lct.src.core.lcTexture import Texture as texture\ntexture().reloadTextures()', iconBasePath + 'reloadAllTextures.png', 'Reload All Textures')) pm.setParent('..') pm.rowColumnLayout(nc=2, cw=([1, 75], [2, 25])) pm.iconTextButton( w=100, h=25, style='iconOnly', image=iconBasePath + 'reloadChanged.png', annotation= 'Reloads only the changed file texture nodes based on timestamp', command=lambda *args: texture().reloadChangedTextures()) pm.iconTextButton( w=25, h=25, style='iconOnly', image=iconBasePath + 'addToShelf.png', highlightImage=iconBasePath + 'addToShelf_over.png', annotation='Add to Shelf', command=lambda *args: shelf.makeShelfButton( 'Reload Changed Textures', 'from lct.src.core.lcTexture import Texture as texture\ntexture().reloadChangedTextures()', iconBasePath + 'reloadChangedTextures.png', 'Reload Changed Textures')) pm.setParent('..') pm.setParent(prefix + '_columLayout_main') pm.separator(style='in', h=5) # pm.rowColumnLayout(nc=2, cw=([1, 150], [2, 50])) pm.textField(prefix + '_textField_new_path', w=150) pm.button(prefix + '_button_browse_path', l='Browse', bgc=colorWheel.getColorRGB(ci), annotation='Choose a new directory', w=50, command=lambda *args: path.browsePathTextField( prefix + '_textField_new_path', '', 'Browse New Texture Directory')) ci += 1 pm.setParent(prefix + '_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1, 100], [2, 100])) pm.iconTextButton(w=100, h=25, style='iconOnly', image=iconBasePath + 'pathAll.png', annotation='Repath all file texture nodes', command=lambda *args: lcTxT_repath_all()) pm.iconTextButton(w=100, h=25, style='iconOnly', image=iconBasePath + 'pathSelected.png', annotation='Repath selected file texture nodes', command=lambda *args: lcTxT_repath_selected()) pm.setParent(prefix + '_columLayout_main') pm.separator(style='in', h=5) # pm.rowColumnLayout(nc=2, cw=([1, 100], [2, 100])) pm.iconTextButton( w=100, h=25, style='iconOnly', image=iconBasePath + 'openAll.png', annotation='Open all file texture nodes in default associated program', command=lambda *args: lcTxT_open_all()) pm.iconTextButton( w=100, h=25, style='iconOnly', image=iconBasePath + 'openSelected.png', annotation= 'Open selected file texture nodes in default associated program', command=lambda *args: lcTxT_open_selected()) pm.setParent(prefix + '_columLayout_main') pm.separator(style='in', h=5) # mainWindow.show()
def lcObjToolsUI(dockable=False, *args, **kwargs): ''' ''' global prefix ci = 0 #color index iterator windowName = 'lcObjTools' shelfCommand = 'import lct.src.lcObjTools.lcObjTools as lcObj\nreload(lcObj)\nlcObj.lcObjToolsUI()' icon = basePath + 'lcObjTools.png' winWidth = 204 winHeight = 158 mainWindow = lcWindow(windowName=windowName, width=winWidth, height=winHeight, icon=icon, shelfCommand=shelfCommand, annotation=annotation, dockable=dockable, menuBar=True) mainWindow.create() # pm.columnLayout(prefix + '_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1, 150], [2, 50])) pm.textField(prefix + '_textField_export_path', w=150) pm.button(prefix + '_button_browse_path', l='Browse', bgc=colorWheel.getColorRGB(ci), annotation='Choose an export directory', w=50, command=lambda *args: path.browsePathTextField( prefix + '_textField_export_path', "Wavefront Obj (*.obj)", 'Obj Export Location')) ci += 1 pm.setParent(prefix + '_columLayout_main') # pm.checkBox(prefix + '_checkBox_export_indi', l='Export Individual', v=False) pm.checkBox(prefix + '_checkBox_use_smooth', l='Use Smooth Preview', v=True) # pm.rowColumnLayout(nc=2, cw=([1, 100], [2, 100])) pm.textField(prefix + '_textField_prefix', w=100) pm.text(l=' Prefix_', al='left') pm.setParent(prefix + '_columLayout_main') # pm.rowColumnLayout(nc=2, cw=([1, 169], [2, 31])) pm.columnLayout(w=169) pm.button(prefix + '_button_export', l='Export OBJ', bgc=colorWheel.getColorRGB(ci), annotation='Export the selected geometry', w=168, h=30, command=lambda *args: lcObj_exportObjs()) ci += 1 pm.button(prefix + '_button_Import', l='Import Multiple OBJs', bgc=colorWheel.getColorRGB(ci), annotation='Clean import more than one obj', w=168, h=20, command=lambda *args: lcObj_importMultiple()) ci += 1 pm.setParent('..') pm.columnLayout(w=31) pm.iconTextButton( prefix + '_button_open_folder', style='iconOnly', image=iconBasePath + 'folder_30x50.png', annotation='Open the export folder', w=30, h=50, command=lambda *args: path.openFilePath( pm.textField( prefix + '_textField_export_path', query=True, text=True))) ci += 1 # mainWindow.show() plugin.reloadPlugin(plugin='objExport', autoload=True)
def repathShader(cls, shader, newPath, *args, **kwargs): """ reload the shader from a new path """ cgfxFile = pm.getAttr(shader+'.shader') if cgfxFile: pm.cgfxShader(shader, edit=True, fx=path.repath(cgfxFile, newPath) )
def __init__(self, *args, **kwargs): """ Initialize class and variables """ self.settingsPath = path.getSettingsPath()+'/'