diff --git a/clang b/clang index 0a0e2fe..320a739 100644 --- a/clang +++ b/clang @@ -1 +1 @@ -de_DE \ No newline at end of file +en_EN \ No newline at end of file diff --git a/icons/obj.png b/icons/obj.png new file mode 100644 index 0000000..3bfb6d2 Binary files /dev/null and b/icons/obj.png differ diff --git a/icons/object.png b/icons/object.png deleted file mode 100644 index a4c4c42..0000000 Binary files a/icons/object.png and /dev/null differ diff --git a/langsys/lang/de_DE.LAN b/langsys/lang/de_DE.LAN index bd1b397..d7fa74d 100644 --- a/langsys/lang/de_DE.LAN +++ b/langsys/lang/de_DE.LAN @@ -7,4 +7,7 @@ "add": "Erstellen", "obj": "Objekt", "script": "Skript", +"rename": "Umbenennen", +"delete": "Loeschen", +"NN": "Neuer Name:", } \ No newline at end of file diff --git a/langsys/lang/en_EN.LAN b/langsys/lang/en_EN.LAN index 09fad92..fd00feb 100644 --- a/langsys/lang/en_EN.LAN +++ b/langsys/lang/en_EN.LAN @@ -7,4 +7,7 @@ "add": "Create", "obj": "Object", "script": "Script", +"rename": "Rename", +"delete": "Delete", +"NN": "New name:", } \ No newline at end of file diff --git a/main.py b/main.py index 41a49eb..27951a4 100644 --- a/main.py +++ b/main.py @@ -9,10 +9,14 @@ import time import subprocess import sys import hashengine +import os +import random +import string +import easygui global LH global gamedata -gamedata = [] +gamedata = {} LH = langsys.langhandler() lang = open("clang", 'r') lang = lang.read() @@ -65,18 +69,59 @@ def selectlang(new): subprocess.Popen([sys.executable, __file__]) def add(objtype): - obj = dir(types)[objtype]() - temp = {"id": objtype, "args": dir(obj)} - gamedata.append(temp()) + global objtree + obj = getattr(types, objtype)() + temp = {"id": objtype, "args": dir(obj), "name": LH.string(objtype)} + id = "" + chars = list(string.ascii_letters) + for i in range(255): + id = id + random.choice(chars) + objtree.insert("", tk.END, text=LH.string(objtype), image=icons[objtype], iid=id) + gamedata[id] = temp + +def renameobj(): + target = objtree.focus() + if target == "": return + new = easygui.enterbox(LH.string("NN"), LH.string("rename")) + if new: + objtree.item(target, text=new) + gamedata[target]["name"] = new + +def delobj(): + target = objtree.focus() + if target == "": return + objtree.delete(target) + gamedata.pop(target) + +def rpopup(event): + try: + rmenu.tk_popup(event.x_root, event.y_root) + finally: + rmenu.grab_release() def GUIinit(): global container + global objtree + global rmenu container = tk.Tk() + global icons + icons = {} + + for i in os.listdir("icons"): + icons[i.split(".")[0]] = tk.PhotoImage(file=f"icons/{i}") + #tree init objtree = tkk.Treeview(container) objtree.grid() + #right click menu + rmenu = tk.Menu(container, tearoff=0) + rmenu.add_command(label=LH.string("rename"), command=renameobj) + rmenu.add_command(label=LH.string("delete"), command=delobj) + + objtree.bind("", rpopup) + #menu init menu = tk.Menu(container) container.config(menu=menu) @@ -89,7 +134,8 @@ def GUIinit(): addmenu = tk.Menu(menu) menu.add_cascade(label=LH.string("add"), menu=addmenu) - filemenu.add_command(label=LH.string("obj"), command=lambda: add("obj")) + addmenu.add_command(label=LH.string("obj"), command=lambda: add("obj")) + addmenu.add_command(label=LH.string("script"), command=lambda: add("script")) langmenu = tk.Menu(menu) menu.add_cascade(label=LH.string("langs"), menu=langmenu) @@ -100,5 +146,6 @@ def GUIinit(): global types types = hashengine.enum({"obj": hashengine.obj, "script": script}) +icon = hashengine.enum({"obj": "icons/object.png", "script": "icons/script.pngg"}) GUIinit() \ No newline at end of file