main.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import os
  4. from DynLoader.modInfo import modInfo
  5. class DynLoaderMod(object):
  6. instance = dict()
  7. @staticmethod
  8. def getInstance():
  9. return DynLoaderMod.instance
  10. def __init__(self,dir:str,method_prefix:str=""):
  11. self._modules = []
  12. files = os.listdir(dir)
  13. self._prefix = method_prefix
  14. _mod = modInfo
  15. for f in files:
  16. if f!='__pycache__' and f.endswith(".py"):
  17. self._modules.append({
  18. "file": f,
  19. "modInfo": modInfo(dir+f, os.path.splitext(f)[0], "mods"),
  20. "path": dir+f
  21. })
  22. elif f!='__pycache__' and os.path.exists(dir+f+"/__init__.py"):
  23. self._modules.append({
  24. "file": f+"/__init__.py",
  25. "modInfo": modInfo(dir+f+"/__init__.py", os.path.splitext(f)[0], "mods"),
  26. "path": dir+f+"/__init__.py"
  27. })
  28. DynLoaderMod.instance = self
  29. def __del__(self):
  30. #for x in range(self._modules):
  31. # del self._modules[x]
  32. #del self._modules
  33. for m in self._modules:
  34. del m
  35. del self._modules
  36. def execute(self, method, arg1 = None, arg2 = None, arg3 = None):
  37. for m in self._modules:
  38. if m["modInfo"].Loaded:
  39. m["modInfo"].Execute(self._prefix + method, arg1, arg2, arg3)