mirror of
https://gitea.com/Lerking/XtendR.git
synced 2026-01-06 16:50:10 +01:00
#31 - Creating thread with callback, on pre_load(). /JL
This commit is contained in:
@@ -25,6 +25,6 @@ class XtendRBase(ABC):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def pre_load(self):
|
||||
def pre_load(self, *args):
|
||||
pass
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user