aion/aion-0.1.0_alpha/etc/ACC/Aion Command Creator.py
2020-06-28 11:15:51 +00:00

445 lines
18 KiB
Python

from tkinter import *
from tkinter import scrolledtext
from tkinter import filedialog
from tkinter import messagebox
from tkinter.ttk import *
root = Tk()
menu = Menu(root)
root.config(menu=menu)
filemenu = Menu(menu, tearoff=FALSE)
helpmenu = Menu(menu, tearoff=FALSE)
ACC = Menu(menu, tearoff=FALSE)
active_window = ""
def info():
info = Tk()
info.title("Info")
info.resizable(width=0, height=0)
text = """Aion Command Creator
Version 1.0
Offizielles Programm zum erstellen von eigenen Befehlen für die Aion Platform"""
Label(info, text=text).pack()
info.mainloop()
def command_window():
def start_config_creator():
global root
global menu
global filemenu
global helpmenu
global ACC
root.destroy()
root = Tk()
menu = Menu(root)
root.config(menu=menu)
filemenu = Menu(menu, tearoff=FALSE)
helpmenu = Menu(menu, tearoff=FALSE)
ACC = Menu(menu, tearoff=FALSE)
config_window()
def anwser_extension():
global global_answer
global active_window
active_window = "answer_extension"
try:
for variable in global_command:
variable.destroy()
except:
pass
separator = Frame(height=2, relief=SUNKEN)
separator.pack(fill=X, padx=5, pady=5)
answer_extension_choose = Combobox(root, values=["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaggggggggggnjmrjrzhzaaaaaaaaaaaaa", "b"], width=100)
answer_extension_choose.pack()
answer_extension_choose.current(0)
free_space = Label(root)
free_space.pack()
answer = Text(root, width=80, height=5)
answer.pack()
global_answer = [separator, answer_extension_choose, free_space, answer]
def own_command():
global global_command
global active_window
active_window = "own_command"
try:
for variable in global_answer:
variable.destroy()
except:
pass
separator = Frame(height=2, relief=SUNKEN)
separator.pack(fill=X, padx=5, pady=5)
global_command = [separator]
def command_event(event):
global active_window
if command_choose.get() == "----------------------------":
new()
active_window = ""
elif command_choose.get() == "Antwort Erweiterung":
if active_window == "answer_extension":
pass
else:
anwser_extension()
elif command_choose.get() == "Eigener Befehl":
if active_window == "own_command":
pass
else:
own_command()
def new():
try:
for variable in global_answer:
variable.destroy()
except:
pass
try:
for variable in global_command:
variable.destroy()
except:
pass
command_choose.current(0)
root.title("ACC | Aion Command Creator | command Creator")
root.resizable(width=0, height=0)
menu.add_cascade(label="Datei", menu=filemenu)
filemenu.add_command(label="Neu", command=new)
filemenu.add_command(label="Öffnen...")
filemenu.add_command(label="Speichern")
filemenu.add_command(label="Speichern unter...")
filemenu.add_separator()
filemenu.add_command(label="Beenden", command=root.destroy)
menu.add_cascade(label="Hilfe", menu=helpmenu)
helpmenu.add_command(label="Hilfe anzeigen")
helpmenu.add_separator()
helpmenu.add_command(label="Info", command=info)
menu.add_cascade(label="ACC", menu=ACC)
ACC.add_command(label="Zum config Creator", command=start_config_creator)
Label(root, text="Was für eine Art soll dein Befehls sein?").pack()
command_choose = Combobox(root, values=["----------------------------", "Antwort Erweiterung", "Eigener Befehl"])
command_choose.pack()
command_choose.current(0)
command_choose.bind("<<ComboboxSelected>>", command_event)
root.mainloop()
def config_window():
def acc_file_search(file_name, search_element):
not_needed_informations = ["author=", "version=", "command_type="]
no_square_bracket = ["name=", "author=", "version=", "command_type="]
if "=" not in search_element:
search_element = search_element + "="
fileprint = open(file_name).read().splitlines()
acc_search_line = acc_search_file_element(file_name, search_element)
acc_file_search = fileprint[acc_search_line]
acc_file_line = []
if search_element in acc_file_search:
acc_file_search = acc_file_search.replace(search_element, "")
if "\n" in acc_file_search:
acc_file_search = acc_file_search.replace("\n", "")
acc_file_line.append(acc_file_search)
if "]" not in acc_file_search:
if search_element in no_square_bracket:
pass
elif search_element not in no_square_bracket:
acc_first_square_bracket_line = acc_search_file_element(file_name, search_element)
acc_second_square_bracket_line = acc_search_file_element(file_name, "]", acc_first_square_bracket_line)
while True:
bracket_lines = list(range(acc_first_square_bracket_line, acc_second_square_bracket_line + 1))
elements = []
for element_numbers in bracket_lines:
element_list = fileprint[element_numbers]
if search_element in element_list:
if not "=" in search_element:
search_element = search_element + "="
element_list = element_list.replace(search_element, "")
element_list = element_list.lstrip()
elements.append(element_list)
acc_file_line = elements
break
global acc_file
acc_file_temporary = []
for acc_file in acc_file_line:
acc_file = acc_file
if acc_file == "":
if search_element in not_needed_informations:
acc_file = ""
return acc_file
elif search_element not in not_needed_informations:
acc_file = ""
return acc_file
else:
acc_file = ""
return acc_file
if "[" in acc_file:
acc_file = acc_file.replace("[", "")
if "]" in acc_file:
acc_file = acc_file.replace("]", "")
if '"' in acc_file:
acc_file = acc_file.replace('"', "")
acc_file_temporary.append(acc_file)
if len(acc_file_temporary) > 1:
acc_file = (", ".join(acc_file_temporary))
else:
acc_file = ("".join(acc_file_temporary))
if ",," in acc_file:
acc_file = acc_file.replace(",,", ",")
return acc_file
def acc_search_file_element(file_name, search_element, from_line=0):
if "]" in search_element:
pass
if "[" in search_element:
pass
while True:
if search_element in open(file_name, "r").readlines()[from_line]:
break
else:
from_line = from_line + 1
return from_line
def start_command_creator():
global root
global menu
global filemenu
global helpmenu
global ACC
root.destroy()
root = Tk()
menu = Menu(root)
root.config(menu=menu)
filemenu = Menu(menu, tearoff=FALSE)
helpmenu = Menu(menu, tearoff=FALSE)
ACC = Menu(menu, tearoff=FALSE)
command_window()
def create_acc_config():
name = name_entry.get()
author = author_entry.get()
version = version_entry.get()
command_type = command_type_entry.get()
command_file = command_file_entry.get()
raw_command = raw_command_scrolledtext.get(1.0, END)
new_file = filedialog.asksaveasfile(mode="w", defaultextension=".cfg", filetypes=(("CFG Datei", "*.cfg"),))
global new_file_name
new_file_name = new_file.name
new_file.write(
'name=' + name + '\nauthor=' + author + '\nversion=' + version + '\ncommand_type=' + command_type + '\ncommand_file=["' + command_file + '"]\nraw_command=["' + raw_command + '"]')
def get_def():
get_def_list = []
numbers = []
def_print = open(open_command_file_name, "r").read().splitlines()
with open(open_command_file_name, "r") as get_def:
for line in get_def:
if "def " in line:
def_line = line
numbers.append(def_print[acc_search_file_element(open_command_file_name, def_line)])
for space in numbers:
non_space = space.lstrip()
get_def_list.append(non_space)
raw_command_scrolledtext.config(state=NORMAL)
for insert in get_def_list:
raw_command_scrolledtext.insert(1.0, insert + " = '',\n")
def new():
get_function.config(state=DISABLED)
name_entry.delete(0, END)
author_entry.delete(0, END)
version_entry.delete(0, END)
command_type_entry.delete(0, END)
command_file_entry.delete(0, END)
raw_command_scrolledtext.delete(1.0, END)
def open_acc_config():
open_file = filedialog.askopenfile(filetypes=(("CFG Datei", "*.cfg"), ("Alle Dateien", "*.*")))
global open_file_name
open_file_name = open_file.name
if ".cfg" not in open_file_name:
messagebox.showerror("Aion Command Creator", "Die Ausgewählte Datei ist keine config (*.cfg) Datei")
else:
open_file_read = open(open_file_name, "r").read()
if "name=" and "version=" and "command_type=" and "command_file=" and "raw_command=" in open_file_read:
raw_command_scrolledtext.config(state=NORMAL)
name_entry_insert = acc_file_search(open_file_name, "name")
author_entry_insert = acc_file_search(open_file_name, "author")
version_entry_insert = acc_file_search(open_file_name, "version")
command_type_entry_insert = acc_file_search(open_file_name, "command_type")
command_file_entry_insert = acc_file_search(open_file_name, "command_file")
raw_command_scrolledtext_insert = acc_file_search(open_file_name, "raw_command")
raw_command_scrolledtext_insert = raw_command_scrolledtext_insert.replace(",", "\n")
raw_command_scrolledtext_insert = raw_command_scrolledtext_insert.replace(" ", "")
name_entry.delete(0, END)
name_entry.insert(0, name_entry_insert)
author_entry.delete(0, END)
author_entry.insert(0, author_entry_insert)
version_entry.delete(0, END)
version_entry.insert(0, version_entry_insert)
command_type_entry.delete(0, END)
command_type_entry.insert(0, command_type_entry_insert)
command_file_entry.delete(0, END)
command_file_entry.insert(0, command_file_entry_insert)
raw_command_scrolledtext.delete(1.0, END)
raw_command_scrolledtext.insert(1.0, raw_command_scrolledtext_insert)
else:
print(open_file.name + " kann nicht gelesen werden")
def open_command_file():
import ntpath
open_file = filedialog.askopenfile(filetypes=(("PY Datei", "*.py"), ("Alle Dateien", "*.*")))
global open_command_file_name
open_command_file_name = open_file.name
if ".py" not in open_command_file_name:
messagebox.showerror("Aion Command Creator", "Die Ausgewählte Datei ist keine Python (*.py) Datei")
else:
command_file_entry.delete(0, END)
command_file_entry.insert(0, ntpath.basename(open_file.name))
raw_command_scrolledtext.config(state=NORMAL)
get_function.config(fg="green", state=NORMAL)
def save():
global file_name
try:
file_name = open_file_name
except:
try:
file_name = new_file_name
except:
create_acc_config()
return
name = name_entry.get()
author = author_entry.get()
version = version_entry.get()
command_type = command_type_entry.get()
command_file = command_file_entry.get()
raw_command = raw_command_scrolledtext.get("1.0", END)
file = open(file_name, "w")
file.write('name=' + name + '\nauthor=' + author + '\nversion=' + version + '\ncommand_type=' + command_type + '\ncommand_file=["' + command_file + '"]\nraw_command=["' + raw_command + '"]')
def show_help():
help = Tk()
help.title("Hilfe anzeigen")
help.resizable(width=0, height=0)
Label(help, text="Hilfe zum Aion Command Creator im Bereich 'config Creator'\n\n").pack()
Label(help, text="'Befehlspaket' = Paket, worin sich alle Dateien befinden").pack()
Label(help, text="'/' = oder").pack()
Label(help, text="Name: ").pack()
name = Text(help, height=2, width=100)
name.insert(1.0, "Legt den Namen für das Befehlspaket fest\n"
"Bsp: Tiergeräusche -> geräusche.py(Datei mit den Befehlsnamen) + geräusche.cfg(Konfigurations Datei)")
name.config(state=DISABLED)
name.pack()
Label(help, text="Autor").pack()
author = Text(help, height=2, width=100)
author.insert(1.0, "Legt den Namen vom Autor des Befehlspaket fest\n"
"Bsp: xXauthorXx / CaCtUsFiGhTeR")
author.config(state=DISABLED)
author.pack()
Label(help, text="Version").pack()
version = Text(help, height=2, width=100)
version.insert(1.0, "Legt die Version vom Befehlspaket fest\n"
"Bsp: v.1.1 / 1.3.7.4")
version.config(state=DISABLED)
version.pack()
Label(help, text="Befehls Typ").pack()
command_type = Text(help, height=2, width=100)
command_type.insert(1.0, "Legt den Befehlstyp des Befehlspaket fest\n"
"Bsp: Spiel / Antwort Erweiterung")
command_type.config(state=DISABLED)
command_type.pack()
Label(help, text="Befehlsdatei").pack()
command_file = Text(help, height=2, width=100)
command_file.insert(1.0, "Legt die Datei mit den Befehlen fest\n"
"Bsp: geräusche.py -> def kuh(): (enthält z.B. den Code zum abspielen von einem Kuh Geräusch)")
command_file.config(state=DISABLED)
command_file.pack()
Label(help, text="Befehl(e)").pack()
raw_command = Text(help, height=2, width=100)
raw_command.insert(1.0, "Legt den Namen der Funktion fest und mit welchen Spracheingaben diese aufgerufen wird\n"
"Bsp: def kuh(): = 'Mach Kuh Geräusche'")
raw_command.config(state=DISABLED)
raw_command.pack()
root.title("ACC | Aion Command Creator | config Creator")
root.resizable(width=0, height=0)
menu.add_cascade(label="Datei", menu=filemenu)
filemenu.add_command(label="Neu", command=new)
filemenu.add_command(label="Öffnen...", command=open_acc_config)
filemenu.add_command(label="Speichern", command=save)
filemenu.add_command(label="Speichern unter...", command=create_acc_config)
filemenu.add_separator()
filemenu.add_command(label="Beenden", command=root.destroy)
menu.add_cascade(label="Hilfe", menu=helpmenu)
helpmenu.add_command(label="Hilfe anzeigen", command=show_help)
helpmenu.add_separator()
helpmenu.add_command(label="Info", command=info)
menu.add_cascade(label="ACC", menu=ACC)
ACC.add_command(label="Zum command Creator", command=start_command_creator)
Label(root, text="* = Wird nicht unbedingt benötigt").pack()
Label(root, text="Name:", font="Times").pack()
name_entry = Entry(root, width=40)
name_entry.pack()
Label(root, text="Autor*:", font="Times").pack()
author_entry = Entry(root, width=40)
author_entry.pack()
Label(root, text="Version*: ", font="Times").pack()
version_entry = Entry(root, width=40)
version_entry.pack()
Label(root, text="Befehls Typ*:", font="Times").pack()
command_type_entry = Entry(root, width=40)
command_type_entry.pack()
Label(root, text="Befehls Datei:", font="Times").pack()
command_file_entry = Entry(root, width=55)
command_file_entry.pack()
Button(root, text="Wähle Datei aus", command=open_command_file).pack()
get_function = Button(root, text="Versuche alle Befehle aufzulisten", command=get_def)
get_function.config(state=DISABLED)
get_function.pack()
Label(root, text="Befehl(e):", font="Times").pack()
raw_command_scrolledtext = scrolledtext.ScrolledText(root, height=15, width=50)
raw_command_scrolledtext.config(state=DISABLED)
raw_command_scrolledtext.pack()
root.mainloop()
command_window()