X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fresources.py;fp=naja%2Fresources.py;h=0000000000000000000000000000000000000000;hb=ea0fea7855b70665b1b155f1d20495e88096b73a;hp=00ebe1c44632e7ffed580161fdc9d8c2464598e6;hpb=847d271607652c00e62298a37987aae452719b61;p=naja.git diff --git a/naja/resources.py b/naja/resources.py deleted file mode 100644 index 00ebe1c..0000000 --- a/naja/resources.py +++ /dev/null @@ -1,103 +0,0 @@ -import os -import sys - -try: - from pkg_resources import resource_filename -except ImportError: - # OK, we're most likely running under py2exe, so this is safe - # (for values of safe that are unconcerned about py2exe being involved) - def resource_filename(mod, path): - # There are better ways of doing this, but I've spent too much - # time going down this rabbithole already - return os.path.join(os.path.dirname(__file__), '..', 'data', path) -import pygame - - -class ResourceNotFound(Exception): - pass - - -class Resources(object): - CONVERT_ALPHA = True - - def __init__(self, resource_module, language=None): - self.resource_module = resource_module - self.lang_dialect = language - self.language = language.split('_', 1)[0] if language else None - self._cache = {} - - def create_resource_path(self, *path_fragments): - return resource_filename(self.resource_module, - os.path.join(*path_fragments)) - - def get_resource_path(self, *path_fragments): - for mod, full_path_fragments in self.lang_locations(path_fragments): - path = resource_filename(mod, os.path.join(*full_path_fragments)) - if os.path.exists(path): - return path - raise ResourceNotFound(os.path.join(*path_fragments)) - - def lang_locations(self, path_fragments): - ''' - For each resource module, yield: - * (, (_, )) - * (, (, )) - * (, (, )) - ''' - for module in (self.resource_module,): - if self.lang_dialect: - yield (module, (self.lang_dialect,) + path_fragments) - if self.language != self.lang_dialect: - yield (module, (self.language,) + path_fragments) - yield (module, path_fragments) - - def get_file(self, *path_fragments, **kw): - mode = kw.get('mode', "rU") - try: - path = self.get_resource_path(*path_fragments) - except ResourceNotFound: - if 'w' in mode: - path = self.create_resource_path(*path_fragments) - else: - raise - return file(path, mode) - - def get_image(self, *name_fragments, **kw): - transforms = kw.get('transforms', ()) - basedir = kw.get('basedir', 'images') - - path = (basedir,) + name_fragments - - if path not in self._cache: - fn = self.get_resource_path(*path) - image = pygame.image.load(fn) - if self.CONVERT_ALPHA: - if not pygame.display.get_init(): - print >> sys.stderr, ("Display not initialized, " - "image '%s' not loaded." - % os.path.join(*path)) - return - image = image.convert_alpha(pygame.display.get_surface()) - self._cache[path] = image - - key = (path, transforms) - if key not in self._cache: - image = self._cache[path] - for mutator in transforms: - image = mutator(image) - self._cache[key] = image - - return self._cache[key] - - def get_font(self, file_name, font_size): - basedir = 'fonts' - key = (basedir, file_name, font_size) - - if key not in self._cache: - fn = self.get_resource_path(basedir, file_name) - self._cache[key] = pygame.font.Font(fn, font_size) - - return self._cache[key] - - -resources = Resources('data')