def __init__(self, row, master=None, font=None, relativePath=None): ListItem.__init__(self, row, master, font, name=relativePath) # Add extra properties self.addProperty('Type') self.addProperty('Size') self.addProperty('Modified') self.addProperty('RealDate', False) # Use unix timestamp to sort by modify time rather than the date string self.addSortOverride('Modified', 'RealDate') # Set file type if path.isFolder(relativePath): self.setPropertyValue('Type', 'Folder') elif len(relativePath.split('.')) == 1: self.setPropertyValue('Type', 'File') else: self.setPropertyValue( 'Type', '{} File'.format(relativePath.split('.')[-1])) # Set file size a = os.stat(relativePath) b = a.st_size if b < 1024: c = str(b) + ' B' elif b < 1048576: c = str(b / 1024) + ' KB' elif b < 1073741824: c = str(b / 1048576) + ' MB' else: c = str(b / 1073741824) + ' GB' self.setPropertyValue('Size', c) #Get modified date and timestamp self.setPropertyValue('RealDate', str(a._integer_mtime)) self.setPropertyValue( 'Modified', datetime.datetime.fromtimestamp( a._integer_mtime).__format__('%m/%d/%Y %I:%M:%S %p'))
def pathEntered(self, event=None): a = os.path.expandvars(self.pathbox.get('0.0', tk.END)[:-1]) if path.isFolder(a): self.changeDirectory(a) elif path.isFile(a): self._returnVariable.set([os.getcwd() + '\\' + a]) else: self.notfound(a) return 'break'
def _dbClick(self, event=None): a = self.getFileboxItem(self.getFileboxSelection()[0]) if path.isFolder(a): self.changeDirectory(a) else: self._returnVariable.set([ os.getcwd() + '\\' + self.getFileboxItem(self.getFileboxSelection()[0]) ])
def returnSelected(self, event=None): a = self.getFileboxSelection() if len(a) == 0: return if event != None: if len(a) == 1: self._dbClick() return elif self._mode != MIXED: for x in a: if path.isFolder(self.getFileboxItem(x)): return b = [os.getcwd() + '\\' + self.getFileboxItem(x) for x in a] for x in b: try: os.stat(x) except Exception as e: self.fileError(x, e) self._returnVariable.set(b)
def get_tree(dir): files_folders = os.listdir(dir) all_files = [] all_folders = [] dir_a = str(pathlib.Path(dir).absolute()) for x in files_folders: file_extension = os.path.splitext(dir + x)[1] edir = dir_a + "/" + x if (isFolder(edir)): all_folders.append({ 'foldername': x, "folderdir": dir_a + "/" + x, 'Parentdir': dir_a, 'checked': False }) elif (isFile_exist(edir)): all_files.append({ 'filename': x, 'filedir': dir_a, 'filext': file_extension, 'parentFoldername': os.path.basename(dir_a) }) else: critical_info("i have no idea wtf happend {DEBUG TIME}") #here the painfull recursion experience for x in all_folders: if (not x["checked"]): all_files_recursion, all_folders_recursion = get_tree( x["folderdir"]) all_files = all_files + all_files_recursion all_folders = all_folders + all_folders_recursion x["checked"] = True return all_files, all_folders
def check_dir(dir): return isFolder(dir)