import os, sys, re, string, shutil, math from PyQt4 import QtGui from PyQt4 import QtCore class SimLinkWindow(QtGui.QWidget): global Items, digits Items = [".tif",".jpg",".exr",".tga",".png",".fur",".bgeo",".obj",".iges",".bin",".sd"] def __init__(self, parent=None): QtGui.QWidget.__init__(self,parent) self.setWindowTitle('simlink TOOL 1.0') #WIDGETS self.directoryLabel = QtGui.QLabel("Source Directory",self) self.destinationLabel = QtGui.QLabel("Destination Directory",self) self.typeLabel = QtGui.QLabel("Simlink File Type",self) self.previewLabel = QtGui.QLabel("Preview",self) self.directoryEdit = QtGui.QLineEdit(self) self.destinationEdit = QtGui.QLineEdit(self) self.typeComboBox = QtGui.QComboBox(self) self.typeComboBox.addItems(Items) self.directoryButton = QtGui.QPushButton("Browse",self) self.destinationButton = QtGui.QPushButton("Browse",self) self.renameButton = QtGui.QPushButton("Link",self) self.previewButton = QtGui.QPushButton("Preview",self) self.showButton = QtGui.QPushButton("View Source Folder Content",self) self.previewBlock =QtGui.QTextEdit(self) self.previewBlock.setMinimumSize(395,10) #POSITION self.directoryLabel.move(10,15) self.destinationLabel.move(10,45) self.typeLabel.move(10,75) self.previewLabel.move(10,200) self.directoryEdit.move(170,10) self.destinationEdit.move(170,40) self.typeComboBox.move(170,70) self.previewBlock.move(10,220) self.directoryButton.move(330,7) self.destinationButton.move(330,37) self.previewButton.move(10,140) self.renameButton.move(117,140) self.showButton.move(218,140) #connect signal QtCore.QObject.connect(self.directoryButton, QtCore.SIGNAL("clicked()"), self.on_sourcebrowse_clicked) QtCore.QObject.connect(self.destinationButton, QtCore.SIGNAL("clicked()"),self.on_destbrowse_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(415,430) #------------------------------------------------------------------------------# def on_sourcebrowse_clicked(self): filename = QtGui.QFileDialog.getExistingDirectory(self, 'Select Directory','/home') self.directoryEdit.setText(filename) #------------------------------------------------------------------------------# def on_destbrowse_clicked(self): filename = QtGui.QFileDialog.getExistingDirectory(self, 'Select Directory','/home') self.destinationEdit.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 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 on_preview_clicked(self): #GET FOLDERS sourceDir = self.directoryEdit.text() destDir = self.destinationEdit.text() #GET FILES files = self.get_dir_list() files.sort() parseFor = str(self.getParseType()) parsed = self.parse_files(files,parseFor,False) preview = self.simLink_files(parsed,sourceDir,destDir,False) output = "" for fileName in preview: output += fileName+"\n" if parsed[0] == 'NO MATCHING FILES FOUND': output = parsed[0] self.previewBlock.setText(output) #------------------------------------------------------------------------------# def on_rename_clicked(self): #GET FOLDERS sourceDir = self.directoryEdit.text() destDir = self.destinationEdit.text() #GET FILES files = self.get_dir_list() files.sort() parseFor = str(self.getParseType()) parsed = self.parse_files(files,parseFor,False) preview = self.simLink_files(parsed,sourceDir,destDir,True) output = "" for fileName in preview: output += fileName+"\n" if parsed[0] == 'NO MATCHING FILES FOUND': output = parsed[0] self.previewBlock.setText(output) self.popupWindow("SIMLINK COMPLETE", "FILES LINKED\nTHANK YOU!") #------------------------------------------------------------------------------# def simLink_files(self,parsed,source,dest,makeLink): action = [] for linkFiles in parsed: splitLink = linkFiles.split(".") cmd = "ln -s "+source+linkFiles+" "+dest+splitLink[0]+"."+splitLink[-1] if makeLink == True: print 'make link' os.system(str(cmd)) print 'link made' action.append(cmd) return action #------------------------------------------------------------------------------# 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 = SimLinkWindow() qb.show() sys.exit(app.exec_())