#31 - Creating thread with callback, on pre_load(). /JL

This commit is contained in:
2025-03-28 17:26:58 +01:00
parent 1be429c5cd
commit 406c1b77ed
4 changed files with 16 additions and 15 deletions

View File

@@ -25,6 +25,6 @@ class XtendRBase(ABC):
pass
@abstractmethod
def pre_load(self):
def pre_load(self, *args):
pass

View File

@@ -5,7 +5,7 @@ import json
import threading
from xtendr.xtendrbase import XtendRBase
__version__ = "0.1.3"
__version__ = "0.3.0"
class XtendRSystem:
"""Plugin system to manage plugins.
@@ -29,7 +29,7 @@ class XtendRSystem:
def version(self) -> str:
return "XtendR v" + __version__
def attach(self, name: str) -> None:
def attach(self, name: str, callback) -> None:
"""Dynamically load a plugin from its folder."""
if name in self.plugins:
print(f"Plugin '{name}' is already attached.")
@@ -68,15 +68,12 @@ class XtendRSystem:
'autorun': False
}
print(f"Attached plugin '{name}'.")
print(f"Running pre-load on '{name}'.")
thread = threading.Thread(target=self.plugins[name].pre_load(), args=(callback,))
thread.start()
except (ModuleNotFoundError, json.JSONDecodeError, AttributeError) as e:
print(f"Failed to attach plugin '{name}': {e}")
def _pre_load(self, name: str):
"""Pre-load data if needed"""
if name in plugins:
if self.plugins[name].use_pre_load: # Is pre-loading neccessary?
threading.Thread(target=self.plugins[name].pre_load()).start()
def run(self, name: str, *args, **kwargs):
"""Run the plugin's 'run' method if available."""
if name in self.plugins: