79 lines
1.9 KiB
Python
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) ]
|