Defer actual rendering to the iconset class
This commit is contained in:
@@ -1,8 +1,22 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
#from django.utils.translation import ugettext_lazy as _
|
||||
#from django.conf import settings
|
||||
import inspect
|
||||
import os
|
||||
import glob
|
||||
|
||||
from .classes import Icon
|
||||
#from storage.backends.filebasedstorage import FileBasedStorage
|
||||
#afrom app_registry.models import App
|
||||
from django.utils.importlib import import_module
|
||||
from django.conf import settings as django_settings
|
||||
|
||||
from .classes import Icon, IconSetBase
|
||||
|
||||
for app_name in django_settings.INSTALLED_APPS:
|
||||
try:
|
||||
sets_top = import_module('%s.iconsets' % app_name)
|
||||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
for icon_set_name in [os.path.basename(f)[:-3] for f in glob.glob(os.path.dirname(sets_top.__file__)+"/*.py")][1:]:
|
||||
icon_set_module = import_module('%s.iconsets.%s' % (app_name, icon_set_name))
|
||||
klass = getattr(icon_set_module, 'IconSet', None)
|
||||
if klass:
|
||||
klass()
|
||||
|
||||
@@ -5,37 +5,23 @@ import os
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.conf import settings
|
||||
|
||||
from .settings import ICON_SET
|
||||
from .sets import ICON_THEMES
|
||||
from .literals import ERROR
|
||||
|
||||
SIZE_SMALL = '16x16'
|
||||
SIZE_BIG = '32x32'
|
||||
from .literals import ERROR, SIZE_SMALL, SIZE_BIG
|
||||
|
||||
|
||||
class Icon(object):
|
||||
_registry = {}
|
||||
|
||||
def __init__(self, literal, icon_set=None):
|
||||
self.literal = literal
|
||||
def __init__(self, id, icon_set=None):
|
||||
self.id = id
|
||||
self.icon_set = icon_set
|
||||
self.__class__._registry[literal] = self
|
||||
self.__class__._registry[id] = self
|
||||
|
||||
def get_file_name(self, size):
|
||||
# TODO: Move name + size resolution to sets to support size/name and
|
||||
# name_size filename conventions
|
||||
try:
|
||||
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:
|
||||
pass
|
||||
def get_url(self, size):
|
||||
from .settings import ICON_SET
|
||||
return IconSetBase.get_by_name(self.icon_set or ICON_SET).get_url(self, size)
|
||||
|
||||
def display(self, size): # TODO: move to widgets?
|
||||
return mark_safe(u'<img src="%s/icons/%s" />' % (settings.STATIC_URL, self.get_file_name(size)))
|
||||
return mark_safe(u'<img src="%s/icons/%s" />' % (settings.STATIC_URL, self.get_url(size)))
|
||||
|
||||
def display_small(self):
|
||||
return self.display(SIZE_SMALL)
|
||||
@@ -43,8 +29,30 @@ 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))
|
||||
#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))
|
||||
|
||||
|
||||
class IconSetBase(object):
|
||||
_registry = {}
|
||||
|
||||
@classmethod
|
||||
def get_all(cls):
|
||||
return cls._registry.values()
|
||||
|
||||
@classmethod
|
||||
def get_by_name(cls, name):
|
||||
return cls._registry.get(name)
|
||||
|
||||
def __init__(self):
|
||||
self.__class__._registry[self.name] = self
|
||||
|
||||
def get_filename(self, icon, size):
|
||||
return os.path.join([self.path, size, self.dictionary.get(icon.id, ERROR)])
|
||||
|
||||
def get_url(self, icon, size):
|
||||
return '%s/%s/%s' % (self.path, size, self.dictionary.get(icon.id, ERROR))
|
||||
|
||||
|
||||
0
apps/icons/iconsets/__init__.py
Normal file
0
apps/icons/iconsets/__init__.py
Normal file
14
apps/icons/iconsets/custom.py
Normal file
14
apps/icons/iconsets/custom.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from icons.literals import *
|
||||
from icons.classes import IconSetBase
|
||||
|
||||
|
||||
class IconSet(IconSetBase):
|
||||
path = 'custom'
|
||||
name = 'custom'
|
||||
label = _(u'Custom')
|
||||
dictionary = {
|
||||
FILE_EXTENSION_ERROR: 'file_extension_error.png',
|
||||
FILE_EXTENSION_UNKNOWN: 'file_extension_unknown.png'
|
||||
}
|
||||
109
apps/icons/iconsets/fat_cow.py
Normal file
109
apps/icons/iconsets/fat_cow.py
Normal file
@@ -0,0 +1,109 @@
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from icons.literals import *
|
||||
from icons.classes import IconSetBase
|
||||
|
||||
|
||||
class IconSet(IconSetBase):
|
||||
name='fat_cow'
|
||||
label=_(u'Fat cow')
|
||||
path='fat_cow'
|
||||
dictionary={
|
||||
ADD: 'add.png',
|
||||
APPLICATION_VIEW_ICONS: 'application_view_icons.png',
|
||||
BLACKBOARD_SUM: 'blackboard_sum.png',
|
||||
BOOK: 'book.png',
|
||||
BOOK_GO: 'book_go.png',
|
||||
BOOK_OPEN: 'book_open.png',
|
||||
CAMERA_DELETE: 'camera_delete.png',
|
||||
CD_BURN: 'cd_burn.png',
|
||||
COG: 'cog.png',
|
||||
COG_ADD: 'cog_add.png',
|
||||
COG_EDIT: 'cog_edit.png',
|
||||
COG_DELETE: 'cog_delete.png',
|
||||
COMPUTER_KEY: 'computer_key.png',
|
||||
CROSS: 'cross.png',
|
||||
DELETE: 'delete.png',
|
||||
DRAW_AIRBRUSH: 'draw_airbrush.png',
|
||||
DOCUMENT_SIGNATURE: 'document_signature.png',
|
||||
ERROR: 'error.png',
|
||||
FOLDER: 'folder.png',
|
||||
FOLDERS: 'folders.png',
|
||||
FOLDER_ADD: 'folder_add.png',
|
||||
FOLDER_EDIT: 'folder_edit.png',
|
||||
FOLDER_DELETE: 'folder_delete.png',
|
||||
FOLDER_GO: 'folder_go.png',
|
||||
FOLDER_USER: 'folder_user.png',
|
||||
GROUP: 'group.png',
|
||||
GROUP_ADD: 'group_add.png',
|
||||
GROUP_EDIT: 'group_edit.png',
|
||||
GROUP_DELETE: 'group_delete.png',
|
||||
GROUP_KEY: 'group_key.png',
|
||||
GROUP_LINK: 'group_link.png',
|
||||
INFORMATION: 'information.png',
|
||||
KEY: 'key.png',
|
||||
KEY_GO: 'key_go.png',
|
||||
KEY_ADD: 'key_add.png',
|
||||
KEY_DELETE: 'key_delete.png',
|
||||
KEYBOARD: 'keyboard.png',
|
||||
LAYOUT: 'layout.png',
|
||||
LIGHTNING: 'lightning.png',
|
||||
LINK: 'link.png',
|
||||
LINK_ADD: 'link_add.png',
|
||||
LINK_EDIT: 'link_edit.png',
|
||||
LINK_DELETE: 'link_delete.png',
|
||||
LOCK: 'lock.png',
|
||||
LOCK_EDIT: 'lock_edit.png',
|
||||
MAGNIFIER: 'magnifier.png',
|
||||
MEDAL_GOLD: 'medal_gold_1.png',
|
||||
MEDAL_GOLD_ADD: 'medal_gold_add.png',
|
||||
MEDAL_GOLD_DELETE: 'medal_gold_delete.png',
|
||||
PAGE: 'page.png',
|
||||
PAGE_COPY: 'page_copy.png',
|
||||
PAGE_GEAR:'page_gear.png',
|
||||
PAGE_GO: 'page_go.png',
|
||||
PAGE_DELETE: 'page_delete.png',
|
||||
PAGE_EDIT: 'page_edit.png',
|
||||
PAGE_LINK: 'page_link.png',
|
||||
PAGE_REFRESH: 'page_refresh.png',
|
||||
PAGE_SAVE: 'page_save.png',
|
||||
PAGE_WHITE_COPY: 'page_white_copy.png',
|
||||
PAGE_WHITE_CSHARP: 'page_white_csharp.png',
|
||||
PAGE_WORLD: 'page_world.png',
|
||||
PICTURES: 'pictures.png',
|
||||
PILL: 'pill.png',
|
||||
PLUGIN: 'plugin.png',
|
||||
PRINTER: 'printer.png',
|
||||
RAINBOW: 'rainbow.png',
|
||||
ROUTING_TURNAROUND_RIGHT: 'routing_turnaround_right.png',
|
||||
SCRIPT: 'script.png',
|
||||
SERVER: 'server.png',
|
||||
STORAGE: 'storage.png',
|
||||
TABLE: 'table.png',
|
||||
TABLE_ADD: 'table_add.png',
|
||||
TABLE_EDIT: 'table_edit.png',
|
||||
TABLE_DELETE: 'table_delete.png',
|
||||
TABLE_REFRESH: 'table_refresh.png',
|
||||
TABLE_RELATIONSHIP: 'table_relationship.png',
|
||||
TAG_BLUE: 'tag_blue.png',
|
||||
TAG_BLUE_ADD: 'tag_blue_add.png',
|
||||
TAG_BLUE_DELETE: 'tag_blue_delete.png',
|
||||
TAG_BLUE_EDIT: 'tag_blue_edit.png',
|
||||
TEXT_DROPCAPS: 'text_dropcaps.png',
|
||||
TEXT_STRIKETHROUGH: 'text_strikethrough.png',
|
||||
TICK: 'tick.png',
|
||||
TIME: 'time.png',
|
||||
TIMELINE_MARKER: 'timeline_marker.png',
|
||||
USER: 'user.png',
|
||||
USER_ADD:'user_add.png',
|
||||
USER_EDIT: 'user_edit.png',
|
||||
USER_DELETE: 'user_delete.png',
|
||||
VCARD: 'vcard.png',
|
||||
VCARD_EDIT: 'vcard_edit.png',
|
||||
WRENCH: 'wrench.png',
|
||||
XHTML: 'xhtml.png',
|
||||
XHTML_GO: 'xhtml_go.png',
|
||||
XHTML_ADD: 'xhtml_add.png',
|
||||
XHTML_DELETE: 'xhtml_delete.png',
|
||||
ZOOM: 'zoom.png',
|
||||
}
|
||||
@@ -1,8 +1,5 @@
|
||||
#from icons.sets import fat_cow, famfamfam
|
||||
|
||||
#DEFAULT_ICON_SET = fat_cow.ID
|
||||
ICON_SET_FAT_COW = 'fat_cow'
|
||||
ICON_SET_CUSTOM = 'custom'
|
||||
SIZE_SMALL = '16x16'
|
||||
SIZE_BIG = '32x32'
|
||||
|
||||
DEFAULT_ICON_SET = 'fat_cow'
|
||||
|
||||
@@ -26,7 +23,14 @@ DOCUMENT_SIGNATURE = 'document_signature'
|
||||
ERROR = 'error'
|
||||
FILE_EXTENSION_ERROR = 'file_extension_error'
|
||||
FILE_EXTENSION_UNKNOWN = 'file_extension_unknown'
|
||||
GROUP = 'user',
|
||||
FOLDER = 'folder'
|
||||
FOLDERS = 'folders'
|
||||
FOLDER_ADD = 'folder_add'
|
||||
FOLDER_EDIT = 'folder_edit'
|
||||
FOLDER_DELETE = 'folder_delete'
|
||||
FOLDER_GO = 'folder_go'
|
||||
FOLDER_USER = 'folder_user'
|
||||
GROUP = 'user'
|
||||
GROUP_ADD = 'group_add'
|
||||
GROUP_EDIT = 'group_edit'
|
||||
GROUP_DELETE = 'group_delete'
|
||||
|
||||
Reference in New Issue
Block a user