KiBot/kiplot/pre_base.py

87 lines
2.2 KiB
Python

from . import log
logger = log.get_logger(__name__)
class BasePreFlight(object):
_registered = {}
_in_use = {}
_options = {}
def __init__(self, name, value):
self._value = value
self._name = name
self._sch_related = False
self._pcb_related = False
self._enabled = True
@staticmethod
def register(name, aclass):
BasePreFlight._registered[name] = aclass
@staticmethod
def is_registered(name):
return name in BasePreFlight._registered
@staticmethod
def get_registered():
return BasePreFlight._registered
@staticmethod
def get_class_for(name):
return BasePreFlight._registered[name]
@staticmethod
def add_preflight(o_pre):
BasePreFlight._in_use[o_pre._name] = o_pre
@staticmethod
def get_preflight(name):
return BasePreFlight._in_use.get(name)
@staticmethod
def get_in_use_objs():
return BasePreFlight._in_use.values()
@staticmethod
def _set_option(name, value):
BasePreFlight._options[name] = value
@staticmethod
def get_option(name):
return BasePreFlight._options.get(name)
@staticmethod
def run_enabled():
for k, v in BasePreFlight._in_use.items():
if v._enabled:
logger.debug('Preflight apply '+k)
v.apply()
for k, v in BasePreFlight._in_use.items():
if v._enabled:
logger.debug('Preflight run '+k)
v.run()
def disable(self):
self._enabled = False
def is_enabled(self):
return self._enabled
def __str__(self):
return "{}: {}".format(self._name, self._enabled)
def is_sch(self):
""" True for outputs that works on the schematic """
return self._sch_related
def is_pcb(self):
""" True for outputs that works on the PCB """
return self._pcb_related
def run(self, brd_file): # pragma: no cover
logger.error("The run method for the preflight class name `{}` isn't implemented".format(self._name))
def apply(self, brd_file): # pragma: no cover
logger.error("The apply method for the preflight class name `{}` isn't implemented".format(self._name))