From e63b596ff5744cd88d7fac4e5f42dc057daebd4b Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 10 Sep 2012 22:10:47 -0400 Subject: [PATCH] Icon class can now be force to display a particular icon set --- apps/icons/classes.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/apps/icons/classes.py b/apps/icons/classes.py index c3bd89d6a7..8c6b4b6ef7 100644 --- a/apps/icons/classes.py +++ b/apps/icons/classes.py @@ -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))