From 9c4bac3e9c59b19b083e051a42bca82a84697ffb Mon Sep 17 00:00:00 2001 From: Justus Jan Nico Wolff Date: Thu, 22 Dec 2022 23:18:13 +0100 Subject: [PATCH] =?UTF-8?q?Dateien=20hochladen=20nach=20=E2=80=9E=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 165 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..13fcea0 --- /dev/null +++ b/main.py @@ -0,0 +1,165 @@ +import os +import ast +import tkinter as tk +from tqdm import tqdm +from tkinter import messagebox +import easygui +try: + container = tk.Tk("filesystem") + print("loading plugins") + plugins = {} + for i in os.listdir("plugins"): + print("ID of plugin: {}".format(i)) + temp = open("plugins/{}".format(i), 'r') + temp = temp.read() + temp = ast.literal_eval(temp) + print("name of plugin: {}".format(temp["name"])) + print("author of plugin: {}".format(temp["author"])) + print("the plugin is designed for the extension: {}".format(temp["extension"])) + plugins[temp["name"]] = temp + print("initializing") + currentpath = "" + buttons = [] + def showfile(target): + global currentpath + temp = open("files/"+currentpath+"/"+target, 'r') + temp = temp.read() + if temp.isnumeric() or temp == "": + filename, file_extension = os.path.splitext("files/"+currentpath+"/"+target) + print("showfile, extension: {}".format(file_extension)) + found = [] + for i in plugins: + if plugins[i]["extension"] == file_extension or plugins[i]["extension"] == ".*": + found.append(plugins[i]["name"]) + if len(found) == 0: + messagebox.showerror("fehler!", "es wurde kein plugin gefunden dass für diese datei gemacht wurde.") + elif len(found) == 1: + exec(plugins[found[0]]["main"], {"path": "files/"+currentpath+"/"+target}) + else: + choice = easygui.choicebox("bitte plugin zum öffnen auswählen", "datei öffnen", found) + if choice: + exec(plugins[choice]["main"], {"path": "files/"+currentpath+"/"+target}) + else: + messagebox.showerror("fehler!", "datei ist beschädigt. pfad: {}".format("files/"+currentpath+"/"+target)) + + def switchtodir(target): + global currentpath + currentpath = currentpath+"/"+target + + def showobject(target): + global currentpath + container2 = tk.Tk("datei") + def delete(): + if os.path.isdir("files/"+currentpath+"/"+target): + def scandir(target): + for i in os.listdir(target): + if os.path.isdir(target+"/"+i): + scandir(target+"/"+i) + os.rmdir(target) + else: + print("removed target") + os.remove(target+"/"+i) + scandir("files/"+currentpath+"/"+target) + os.rmdir("files/"+currentpath+"/"+target) + update() + container2.destroy() + else: + os.remove("files/"+currentpath+"/"+target) + update() + container2.destroy() + def show(): + if os.path.isdir("files/"+currentpath+"/"+target): + switchtodir(target) + update() + container2.destroy() + else: + showfile(target) + update() + container2.destroy() + name = tk.Label(container2, text="name: {}".format(os.path.basename(target))) + name.grid() + showbutton = tk.Button(container2, text="anzeigen", command=show) + showbutton.grid() + deletebutton = tk.Button(container2, text="löschen", command=delete) + deletebutton.grid() + container2.mainloop() + + def goback(): + global currentpath + currentpath = currentpath.split("/") + currentpath = currentpath[:-1] + temp = "" + for i in currentpath: + temp = temp + i + "/" + temp = temp[:-1] + currentpath = temp + update() + + def createfile(): + name = easygui.enterbox("bitte namen der datei eingeben", "datei erstellen") + if name: + if not os.path.exists("files/"+currentpath+"/"+name): + open("files/"+currentpath+"/"+name, 'x') + update() + else: + messagebox.showerror("fehler beim erstellen!", "kann datei nicht erstellen, datei existiert bereits!") + + def createdir(): + name = easygui.enterbox("bitte namen des ordners eingeben", "ordner erstellen") + if name: + if not os.path.exists("files/"+currentpath+"/"+name): + os.mkdir("files/"+currentpath+"/"+name) + update() + else: + messagebox.showerror("fehler beim erstellen!", "kann ordner nicht erstellen, ordner existiert bereits!") + + def update(): + global currentpath + global container + for i in tqdm(buttons.copy()): + i.grid_forget() + buttons.remove(i) + temp = os.listdir("files/{}".format(currentpath)) + if currentpath != "" and currentpath != "/": + temp2 = tk.Button(container, text="...", command=goback) + temp2.grid() + buttons.append(temp2) + elif currentpath == "/": + currentpath = "" + temp2 = tk.Button(container, text="dateien und ordner aktualisieren", command=update) + temp2.grid() + buttons.append(temp2) + temp2 = tk.Button(container, text="neue datei erstellen", command=createfile) + temp2.grid() + buttons.append(temp2) + temp2 = tk.Button(container, text="neuen ordner erstellen", command=createdir) + temp2.grid() + buttons.append(temp2) + for i in tqdm(temp): + temp2 = tk.Button(container, text=i, command=lambda i=i: showobject(i)) + temp2.grid() + buttons.append(temp2) + + print("initializing done.") + print("checking files") + def scandir(target): + for i in os.listdir(target): + if os.path.isdir(target+"/"+i): + scandir(target+"/"+i) + else: + temp = open(target+"/"+i, 'r') + temp = temp.read() + if temp.isnumeric() or temp == "": + print("checked {}. all good".format(target+"/"+i)) + else: + if messagebox.askyesno("fehler!", "fehler beim laden der datei! soll sie gelöscht werden?"): + os.remove(target+"/"+i) + else: + messagebox.showinfo("ok", "ok. filesystem wird einen fehler geben falls die datei versucht wird zu öffnen. path zur datei: {}".format(target+"/"+i)) + scandir("files") + print("starting") + update() + container.mainloop() + +except Exception as e: + messagebox.showerror("kritischer fehler!", "ein kritischer fehler ist aufgetaucht! fehler: {}".format(e))