From 9502ee247ef8c494a06f1ce66ee7e6335f6c0b58 Mon Sep 17 00:00:00 2001 From: justuswolff Date: Fri, 14 Jun 2024 22:07:08 +0200 Subject: [PATCH] plugin --- main.py | 34 +++++++++++++++++++++++----------- testplugins/base.plg | 1 + 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/main.py b/main.py index cb922fc..ab31185 100644 --- a/main.py +++ b/main.py @@ -10,20 +10,27 @@ import subprocess import pkg_resources import ast -required = open("requirements.txt", 'r') -required = ast.literal_eval(required.read()) -installed = {pkg.key for pkg in pkg_resources.working_set} -missing = required - installed +def installmodules(required, silent=False): + required = required + installed = {pkg.key for pkg in pkg_resources.working_set} + missing = required - installed -if missing: - while True: - ans = input(f"Einige benötigte Module sind nicht installiert ({missing}), installieren per pip? Y/N ") - if ans == "y": + if missing: + if silent == False: + while True: + ans = input(f"Einige benötigte Module sind nicht installiert ({missing}), installieren per pip? Y/N ") + if ans == "y": + python = sys.executable + subprocess.check_call([python, '-m', 'pip', 'install', *missing], stdout=subprocess.DEVNULL) + break + elif ans == "n": + exit() + else: python = sys.executable subprocess.check_call([python, '-m', 'pip', 'install', *missing], stdout=subprocess.DEVNULL) - break - elif ans == "n": - exit() + +installmodules(ast.literal_eval(open("requirements.txt", 'r').read())) + import mtTkinter as tk from tkinter import ttk as tkk from tkinter import messagebox @@ -954,11 +961,15 @@ def ungridobjtrees(): def loadplugins(GUIe=True): global APIPLUG + print("loading plugins...") for pluginname in os.listdir(plugindir): if pluginname.split(".")[1] == "plg": file = open(plugindir+"/"+pluginname, 'r') plugindata = file.read() plugindata = ast.literal_eval(plugindata) + print(plugindata["name"]) + print("loading...") + installmodules(plugindata["modules"], True) file.close() if "init" in plugindata and GUIe == True: exec(plugindata["init"], globals()) @@ -966,6 +977,7 @@ def loadplugins(GUIe=True): APIPLUG.append(plugindata["API"]) if "run" in plugindata: RUNPLUG.append(plugindata["run"]) + print("done.") return [APIPLUG, RUNPLUG] def GUIinit(): diff --git a/testplugins/base.plg b/testplugins/base.plg index f7a4258..9c21fe0 100644 --- a/testplugins/base.plg +++ b/testplugins/base.plg @@ -1,5 +1,6 @@ { "name": "pluginname", +"modules": [], "permissions": [ 1, 2,