Improved formatting
This commit is contained in:
@@ -1,92 +1,92 @@
|
||||
#!python3
|
||||
|
||||
import abc
|
||||
from inkycal.custom import *
|
||||
|
||||
|
||||
class inkycal_module(metaclass=abc.ABCMeta):
|
||||
"""Generic base class for inkycal modules"""
|
||||
"""Generic base class for inkycal modules"""
|
||||
|
||||
@classmethod
|
||||
def __subclasshook__(cls, subclass):
|
||||
return (hasattr(subclass, 'generate_image') and
|
||||
callable(subclass.generate_image) or
|
||||
NotImplemented)
|
||||
@classmethod
|
||||
def __subclasshook__(cls, subclass):
|
||||
return (hasattr(subclass, 'generate_image') and
|
||||
callable(subclass.generate_image) or
|
||||
NotImplemented)
|
||||
|
||||
def __init__(self, config):
|
||||
"""Initialize module with given config"""
|
||||
def __init__(self, config):
|
||||
"""Initialize module with given config"""
|
||||
|
||||
# Initializes base module
|
||||
# sets properties shared amongst all sections
|
||||
self.config = conf = config['config']
|
||||
self.width, self.height = conf['size']
|
||||
# Initializes base module
|
||||
# sets properties shared amongst all sections
|
||||
self.config = conf = config['config']
|
||||
self.width, self.height = conf['size']
|
||||
|
||||
self.padding_left = self.padding_right = conf["padding_x"]
|
||||
self.padding_top = self.padding_bottom = conf['padding_y']
|
||||
self.padding_left = self.padding_right = conf["padding_x"]
|
||||
self.padding_top = self.padding_bottom = conf['padding_y']
|
||||
|
||||
self.fontsize = conf["fontsize"]
|
||||
self.font = ImageFont.truetype(
|
||||
fonts['NotoSansUI-Regular'], size = self.fontsize)
|
||||
self.fontsize = conf["fontsize"]
|
||||
self.font = ImageFont.truetype(
|
||||
fonts['NotoSansUI-Regular'], size=self.fontsize)
|
||||
|
||||
def set(self, help=False, **kwargs):
|
||||
"""Set attributes of class, e.g. class.set(key=value)
|
||||
see that can be changed by setting help to True
|
||||
"""
|
||||
lst = dir(self).copy()
|
||||
options = [_ for _ in lst if not _.startswith('_')]
|
||||
if 'logger' in options: options.remove('logger')
|
||||
def set(self, help=False, **kwargs):
|
||||
"""Set attributes of class, e.g. class.set(key=value)
|
||||
see that can be changed by setting help to True
|
||||
"""
|
||||
lst = dir(self).copy()
|
||||
options = [_ for _ in lst if not _.startswith('_')]
|
||||
if 'logger' in options: options.remove('logger')
|
||||
|
||||
if help == True:
|
||||
print('The following can be configured:')
|
||||
print(options)
|
||||
if help == True:
|
||||
print('The following can be configured:')
|
||||
print(options)
|
||||
|
||||
for key, value in kwargs.items():
|
||||
if key in options:
|
||||
if key == 'fontsize':
|
||||
self.font = ImageFont.truetype(self.font.path, value)
|
||||
self.fontsize = value
|
||||
else:
|
||||
setattr(self, key, value)
|
||||
print(f"set '{key}' to '{value}'")
|
||||
else:
|
||||
print(f'{key} does not exist')
|
||||
pass
|
||||
for key, value in kwargs.items():
|
||||
if key in options:
|
||||
if key == 'fontsize':
|
||||
self.font = ImageFont.truetype(self.font.path, value)
|
||||
self.fontsize = value
|
||||
else:
|
||||
setattr(self, key, value)
|
||||
print(f"set '{key}' to '{value}'")
|
||||
else:
|
||||
print(f'{key} does not exist')
|
||||
pass
|
||||
|
||||
# Check if validation has been implemented
|
||||
try:
|
||||
self._validate()
|
||||
except AttributeError:
|
||||
print('no validation implemented')
|
||||
# Check if validation has been implemented
|
||||
try:
|
||||
self._validate()
|
||||
except AttributeError:
|
||||
print('no validation implemented')
|
||||
|
||||
@abc.abstractmethod
|
||||
def generate_image(self):
|
||||
# Generate image for this module with specified parameters
|
||||
raise NotImplementedError(
|
||||
'The developers were too lazy to implement this function')
|
||||
@abc.abstractmethod
|
||||
def generate_image(self):
|
||||
# Generate image for this module with specified parameters
|
||||
raise NotImplementedError(
|
||||
'The developers were too lazy to implement this function')
|
||||
|
||||
@classmethod
|
||||
def get_config(cls):
|
||||
# Do not change
|
||||
# Get the config of this module for the web-ui
|
||||
try:
|
||||
|
||||
if hasattr(cls, 'requires'):
|
||||
for each in cls.requires:
|
||||
if not "label" in cls.requires[each]:
|
||||
raise Exception(f"no label found for {each}")
|
||||
|
||||
if hasattr(cls, 'optional'):
|
||||
for each in cls.optional:
|
||||
if not "label" in cls.optional[each]:
|
||||
raise Exception(f"no label found for {each}")
|
||||
|
||||
conf = {
|
||||
"name": cls.__name__,
|
||||
"name_str": cls.name,
|
||||
"requires": cls.requires if hasattr(cls, 'requires') else {},
|
||||
"optional": cls.optional if hasattr(cls, 'optional') else {},
|
||||
}
|
||||
return conf
|
||||
except:
|
||||
raise Exception(
|
||||
'Ohoh, something went wrong while trying to get the config of this module')
|
||||
@classmethod
|
||||
def get_config(cls):
|
||||
# Do not change
|
||||
# Get the config of this module for the web-ui
|
||||
try:
|
||||
|
||||
if hasattr(cls, 'requires'):
|
||||
for each in cls.requires:
|
||||
if not "label" in cls.requires[each]:
|
||||
raise Exception(f"no label found for {each}")
|
||||
|
||||
if hasattr(cls, 'optional'):
|
||||
for each in cls.optional:
|
||||
if not "label" in cls.optional[each]:
|
||||
raise Exception(f"no label found for {each}")
|
||||
|
||||
conf = {
|
||||
"name": cls.__name__,
|
||||
"name_str": cls.name,
|
||||
"requires": cls.requires if hasattr(cls, 'requires') else {},
|
||||
"optional": cls.optional if hasattr(cls, 'optional') else {},
|
||||
}
|
||||
return conf
|
||||
except:
|
||||
raise Exception(
|
||||
'Ohoh, something went wrong while trying to get the config of this module')
|
||||
|
Reference in New Issue
Block a user