Icon class can now be force to display a particular icon set

This commit is contained in:
Roberto Rosario
2012-09-10 22:10:47 -04:00
parent 54a7038873
commit e63b596ff5

View File

@@ -1,5 +1,7 @@
from __future__ import absolute_import
import os
from django.utils.safestring import mark_safe
from django.conf import settings
@@ -14,15 +16,19 @@ SIZE_BIG = '32x32'
class Icon(object):
_registry = {}
def __init__(self, literal):
def __init__(self, literal, icon_set=None):
self.literal = literal
self.icon_set = icon_set
self.__class__._registry[literal] = self
def get_file_name(self, size):
# TODO: Move name + size resolution to sets to support size/name and
# name_size filename conventions
try:
return '%s/%s/%s' % (ICON_THEMES[ICON_SET].PATH, size, ICON_THEMES[ICON_SET].DICTIONARY[self.literal])
if self.icon_set:
return '%s/%s/%s' % (ICON_THEMES[self.icon_set].PATH, size, ICON_THEMES[self.icon_set].DICTIONARY[self.literal])
else:
return '%s/%s/%s' % (ICON_THEMES[ICON_SET].PATH, size, ICON_THEMES[ICON_SET].DICTIONARY[self.literal])
except KeyError:
return '%s/%s/%s' % (ICON_THEMES[ICON_SET].PATH, size, ICON_THEMES[ICON_SET].DICTIONARY[ERROR])
except AttributeError:
@@ -36,3 +42,9 @@ class Icon(object):
def display_big(self):
return self.display(SIZE_BIG)
def get_filepath(self):
if settings.DEVELOPMENT:
return os.path.join(settings.PROJECT_ROOT, 'apps', 'icons', 'static', 'icons', self.get_file_name(SIZE_BIG))
else:
return os.path.join(settings.STATIC_ROOT, self.get_file_name(SIZE_BIG))