From 945eed7ad5a68fa595e4715ebabe89beed18b23c Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 27 Dec 2018 04:42:06 -0400 Subject: [PATCH] Add two new icon classes Add new icon classes based on Font Awesome that support layering, masking and combining glyphs. Signed-off-by: Roberto Rosario --- mayan/apps/appearance/classes.py | 59 ++++++++++++++++++- .../appearance/icons/font_awesome_layers.html | 5 ++ .../appearance/icons/font_awesome_masks.html | 1 + 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 mayan/apps/appearance/templates/appearance/icons/font_awesome_layers.html create mode 100644 mayan/apps/appearance/templates/appearance/icons/font_awesome_masks.html diff --git a/mayan/apps/appearance/classes.py b/mayan/apps/appearance/classes.py index 53ee859a7f..04aec84c33 100644 --- a/mayan/apps/appearance/classes.py +++ b/mayan/apps/appearance/classes.py @@ -28,6 +28,34 @@ class FontAwesomeDriver(IconDriver): ) +class FontAwesomeDualDriver(IconDriver): + name = 'fontawesome-dual' + template_name = 'appearance/icons/font_awesome_layers.html' + + def __init__(self, primary_symbol, secondary_symbol): + self.primary_symbol = primary_symbol + self.secondary_symbol = secondary_symbol + + def render(self): + return get_template(self.template_name).render( + context={ + 'data': ( + { + 'class': 'fas fa-circle', + 'transform': 'down-3 right-10', + 'mask': 'fas fa-{}'.format(self.primary_symbol) + }, + {'class': 'far fa-circle', 'transform': 'down-3 right-10'}, + { + 'class': 'fas fa-{}'.format(self.secondary_symbol), + 'transform': 'shrink-4 down-3 right-10' + }, + ) + } + ) + + + class FontAwesomeCSSDriver(IconDriver): name = 'fontawesomecss' template_name = 'appearance/icons/font_awesome_css.html' @@ -41,6 +69,32 @@ class FontAwesomeCSSDriver(IconDriver): ) +class FontAwesomeMasksDriver(IconDriver): + name = 'fontawesome-masks' + template_name = 'appearance/icons/font_awesome_masks.html' + + def __init__(self, data): + self.data = data + + def render(self): + return get_template(self.template_name).render( + context={'data': self.data} + ) + + +class FontAwesomeLayersDriver(IconDriver): + name = 'fontawesome-layers' + template_name = 'appearance/icons/font_awesome_layers.html' + + def __init__(self, data): + self.data = data + + def render(self): + return get_template(self.template_name).render( + context={'data': self.data} + ) + + class Icon(object): def __init__(self, driver_name, **kwargs): self.driver = IconDriver.get(name=driver_name)(**kwargs) @@ -49,5 +103,8 @@ class Icon(object): return self.driver.render(**kwargs) -IconDriver.register(driver_class=FontAwesomeDriver) IconDriver.register(driver_class=FontAwesomeCSSDriver) +IconDriver.register(driver_class=FontAwesomeDriver) +IconDriver.register(driver_class=FontAwesomeDualDriver) +IconDriver.register(driver_class=FontAwesomeLayersDriver) +IconDriver.register(driver_class=FontAwesomeMasksDriver) diff --git a/mayan/apps/appearance/templates/appearance/icons/font_awesome_layers.html b/mayan/apps/appearance/templates/appearance/icons/font_awesome_layers.html new file mode 100644 index 0000000000..4356ad89e1 --- /dev/null +++ b/mayan/apps/appearance/templates/appearance/icons/font_awesome_layers.html @@ -0,0 +1,5 @@ + + {% for entry in data %} + + {% endfor %} + diff --git a/mayan/apps/appearance/templates/appearance/icons/font_awesome_masks.html b/mayan/apps/appearance/templates/appearance/icons/font_awesome_masks.html new file mode 100644 index 0000000000..ef345c4d21 --- /dev/null +++ b/mayan/apps/appearance/templates/appearance/icons/font_awesome_masks.html @@ -0,0 +1 @@ +