import os, sys, re, string, shutil, math from PyQt4 import QtGui from PyQt4 import QtCore class VersioningWindow(QtGui.QWidget): #SET PARSE ITEMS global Items, digits Items = [".tif",".jpg",".exr",".tga",".png",".fur",".bgeo",".obj",".iges",".bin",".sd",".txt",".psd",".gif"] Items.sort() digits = ["2","3","4","5","6","7","8"] #------------------------------------------------------------------------------# def __init__(self, parent=None): QtGui.QWidget.__init__(self,parent) self.setWindowTitle('versioning TOOL 1.0') #WIDGETS self.directoryLabel = QtGui.QLabel("Base Directory",self) self.versionLabel = QtGui.QLabel("Version",self) self.paddingLabel = QtGui.QLabel("Padding",self) self.typeLabel = QtGui.QLabel("File Type",self) self.previewLabel = QtGui.QLabel("Preview",self) self.directoryEdit = QtGui.QLineEdit(self) self.versionEdit = QtGui.QLineEdit(self) self.versionEdit.setText('1') self.paddingComboBox = QtGui.QComboBox(self) self.paddingComboBox.addItems(digits) self.typeComboBox = QtGui.QComboBox(self) self.typeComboBox.addItems(Items) self.directoryButton = QtGui.QPushButton("Browse",self) self.renameButton = QtGui.QPushButton("Rename",self) self.previewButton = QtGui.QPushButton("Preview",self) self.showButton = QtGui.QPushButton("View Folder Content",self) self.previewBlock =QtGui.QTextEdit(self) self.previewBlock.setMinimumSize(365,10) #POSITION self.directoryLabel.move(10,15) self.versionLabel.move(10,45) self.paddingLabel.move(10,75) self.typeLabel.move(10,105) self.previewLabel.move(10,200) self.directoryEdit.move(130,10) self.versionEdit.move(130,40) self.paddingComboBox.move(130,70) self.typeComboBox.move(130,100) self.previewBlock.move(10,220) self.directoryButton.move(300,7) self.previewButton.move(10,140) self.renameButton.move(120,140) self.showButton.move(230,140) #connect signal QtCore.QObject.connect(self.directoryButton, QtCore.SIGNAL("clicked()"), self.on_browse_clicked) QtCore.QObject.connect(self.previewButton,QtCore.SIGNAL("clicked()"), self.on_preview_clicked) QtCore.QObject.connect(self.renameButton,QtCore.SIGNAL("clicked()"),self.on_rename_clicked) QtCore.QObject.connect(self.showButton,QtCore.SIGNAL("clicked()"),self.on_view_clicked) self.resize(385,430) #------------------------------------------------------------------------------# def on_browse_clicked(self): filename = QtGui.QFileDialog.getExistingDirectory(self, 'Select Directory','/home') self.directoryEdit.setText(filename) #------------------------------------------------------------------------------# def on_view_clicked(self): files = self.get_dir_list() files.sort() parseFor = str(self.getParseType()) parsed = self.parse_files(files,parseFor,True) output = "" for fileName in parsed: output += fileName+"\n" self.previewBlock.setText(output) #------------------------------------------------------------------------------# def on_preview_clicked(self): files = self.get_dir_list() files.sort() parseFor = str(self.getParseType()) parsed = self.parse_files(files,parseFor,False) preview = self.fix_file_Names(parsed,True) output = "" for fileName in preview: output += fileName+"\n" self.previewBlock.setText(output) #------------------------------------------------------------------------------# def on_rename_clicked(self): self.on_preview_clicked() files = self.get_dir_list() files.sort() parseFor = str(self.getParseType()) parsed = self.parse_files(files,parseFor,False) preview = self.fix_file_Names(parsed,False) self.popupWindow("RENAME COMPLETE", "FILES RENAMED\nTHANK YOU!") #------------------------------------------------------------------------------# def fix_file_Names(self,files,preview): if files[0] == 'NO MATCHING FILES FOUND': return files #GET VERSION version = str(self.versionEdit.text()) #PAD VERSION paddingIndex = self.paddingComboBox.currentIndex() padding = self.paddingComboBox.itemText(paddingIndex) paddedVersion = version.zfill(int(padding)) newFiles = [] for theFile in files: parts = theFile.split('.') if preview: newName = theFile+" --> "+parts[0]+"."+paddedVersion+"."+parts[-1] else: newName = parts[0]+"."+paddedVersion+"."+parts[-1] path = self.directoryEdit.text() oldName = path+"/"+theFile newName = path+"/"+newName print oldName print newName os.rename(oldName, newName) newFiles.append(newName) return newFiles #------------------------------------------------------------------------------# def get_dir_list(self): outputDir = self.directoryEdit.text() return os.listdir(outputDir) #------------------------------------------------------------------------------# def getParseType(self): whichItem = self.typeComboBox.currentIndex() return self.typeComboBox.itemText(whichItem) #------------------------------------------------------------------------------# def parse_files(self,files,returnType,view): newList = [] for curfile in files: if view: newList.append(curfile) else: if returnType in curfile: newList.append(curfile) if len(newList) == 0: newList.append('NO MATCHING FILES FOUND') return newList #------------------------------------------------------------------------------# def popupWindow(self,title, message): QtGui.QMessageBox.information(self, "%s" % title, "%s" % message, QtGui.QMessageBox.Ok) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) #The Main window qb = VersioningWindow() qb.show() sys.exit(app.exec_())