Mirage2/src/controller/View.py

79 lines
1.9 KiB
Python

# 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) ]