import json
import os
import easygui

autocfg = {}
#autocfg["SNES"] = [r"S:\Emulators\snes9x-1.53-x64\snes9x-x64.exe",r"S:\roms\SNES","-fullscreen"]
#autocfg["NES"] = [r"S:\Emulators\jnes\Jnes.exe",r"S:\roms\NES","-fullscreen"]
#autocfg["Genesis"] = [r"S:\Emulators\Fusion364\Fusion.exe",r"S:\roms\Genesis","-fullscreen"]
#autocfg["Game Boy"] = [r"S:\Emulators\VBA\VisualBoyAdvance",r"S:\roms\Gameboy","-fullscreen"]

manualcfg = {}
manualcfg["TestMenu"] = [("Item 1", "Executable Path"),
                         ("Item 2", "Executable Path 2"),
                         ("TestItem", "xmessage \"test\""),
			 ]

def write(menus):
	for menu in menus:
		with open(os.path.join("Menus",i),'w') as outfile:
			json.dump(menu,outfile)


def generate():
	menus = {}
	for i in manualcfg:
		menus[i] = manualcfg[i]
	for i in autocfg:
		menu = []
		for filename in sorted(os.listdir(autocfg[i][1])):
			menu.append((filename,autocfg[i][0] + ' "' + (os.path.join(autocfg[i][1],filename)) + '" ' + autocfg[i][2]))
		#sorted(menu,key=lambda(x):x[0])

def interactive():
	MenuList = {}
	done0 = False
	NEWSTRING = "00/NEW"
	DELSTRING = "01/DELETE"
	MenuList[NEWSTRING] = None
	for f in os.listdir("Menus"):
		infile = open(os.path.join("Menus",f)).read()
		MenuList[f] = dict(json.loads(infile))

	while done0 == False:
		e0 = easygui.choicebox(msg='Select Menu to edit, or add new', choices=MenuList.keys())
		if e0 is None:
			done0 = True
			break
		elif e0 == NEWSTRING:
			newname = easygui.enterbox(msg="Enter name of new menu")
			if newname is not None:
				MenuList[newname] = {}
		else:
			done1 = False
			while done1 == False:
				MenuList[e0][NEWSTRING] = None
				MenuList[e0][DELSTRING] = None
				e1 = easygui.choicebox(msg='Select entry to edit, or add new', choices=MenuList[e0].keys())
				if e1 is None:
					done1 = True
				elif e1 == NEWSTRING:
					chng0 = easygui.multenterbox(msg="Add new item to " + e0, fields=("Name","Instruction"))
					if chng0 == None:
						pass
					else:
						MenuList[e0][chng0[0]] = chng0[1]
				elif e1 == DELSTRING:
					yn = easygui.ynbox(msg="Are you sure you want to delte THE ENTIRE MENU " + e0 + "?")
					if yn:
						del(MenuList[e0])
						done1 = True
				else:
					e2 = easygui.choicebox(msg='select action for ' + e1, choices=['Edit','Delete'])
					if e2 is not None:
						if e2 == 'Edit':
							chng1 = easygui.multenterbox(msg="Update " + e2, fields=("Name","Instruction"),values=(e1,MenuList[e0][e1]))
							if chng1 is not None:
								if chng1[0] == e1:
									MenuList[e0][e1] = chng1[1]
								else:
									del(MenuList[e0][e1])
									MenuList[e0][chng1[0]] = chng1[1]


						if e2 == 'Delete':
							yn = easygui.ynbox(msg="Are you sure you want to delte " + e2 + "?")
							if yn:
								del(MenuList[e0][e1])



def main():
	#generate()
	interactive()

if __name__ == "__main__":
	main()
