# Python imports import hashlib, re from os import listdir from os.path import isdir, isfile, join # Lib imports # Application imports from .icons.icon import Icon class View(Icon): def __init__(self, img_filter, default_icon): self.DEFAULT_ICON = default_icon self._hide_hidden = True self._images = [] self.fimages = img_filter self.VIDEO_ICON_WH = [256, 128] def load_directory(self, _path): path = _path self._images = [] if not isdir(path): return "" for f in listdir(path): file = join(path, f) if self._hide_hidden: if f.startswith('.'): continue if isfile(file): lowerName = file.lower() if lowerName.endswith(self.fimages): self._images.append(f) self._images.sort(key=self._natural_keys) def get_pixbuf_icon_str_combo(self): data = [] dir = self.get_current_directory() for file in self._files: icon = self.create_icon(dir, file).get_pixbuf() data.append([icon, file]) return data def get_gtk_icon_str_combo(self): data = [] dir = self.get_current_directory() for file in self._files: icon = self.create_icon(dir, file) data.append([icon, file[0]]) return data def get_images(self): return self._hash_set(self._images) def _hash_text(self, text): return hashlib.sha256(str.encode(text)).hexdigest()[:18] def _hash_set(self, arry): data = [] for arr in arry: data.append([arr, self._hash_text(arr)]) return data def _atoi(self, text): return int(text) if text.isdigit() else text def _natural_keys(self, text): return [ self._atoi(c) for c in re.split('(\d+)',text) ]