boxespy/boxes/generators/__init__.py

60 lines
1.8 KiB
Python
Raw Normal View History

import pkgutil
import inspect
import importlib
import boxes
ui_groups_by_name = {}
class UIGroup:
def __init__(self, name, title=None, description=""):
self.name = name
self.title = title or name
self.description = description
self.generators = []
# register
ui_groups_by_name[name] = self
def add(self, box):
self.generators.append(box)
self.generators.sort(key=lambda b:getattr(b, '__name__', None) or b.__class__.__name__)
ui_groups = [
UIGroup("Box", "Boxes"),
UIGroup("FlexBox", "Boxes with flex"),
UIGroup("Tray", "Trays and Drawer Inserts"),
UIGroup("Shelf", "Shelves"),
UIGroup("SlatWall"),
2020-07-31 21:03:11 +02:00
UIGroup("Holes", "Hole patterns"),
UIGroup("Part", "Parts and Samples"),
UIGroup("Misc"),
2017-02-15 15:55:01 +01:00
UIGroup("Unstable", description="Generators are still untested or need manual adjustment to be useful."),
]
def getAllBoxGenerators():
generators = {}
for importer, modname, ispkg in pkgutil.walk_packages(
path=__path__,
2017-12-19 19:36:37 +01:00
prefix=__name__+'.'):
module = importlib.import_module(modname)
if module.__name__.split('.')[-1].startswith("_"):
continue
for k, v in module.__dict__.items():
if v is boxes.Boxes:
continue
if (inspect.isclass(v) and issubclass(v, boxes.Boxes) and
v.__name__[0] != '_'):
generators[modname + '.' + v.__name__] = v
return generators
def getAllGeneratorModules():
generators = {}
for importer, modname, ispkg in pkgutil.walk_packages(
path=__path__,
prefix=__name__+'.',
onerror=lambda x: None):
module = importlib.import_module(modname)
generators[modname.split('.')[-1]] = module
return generators