
# 2015-Mar-25

import wx

'''
Mp3 Player
-> GPS
-> GPS Telemetry
-> Graphs
-> Settings
-> Diagnostics
-> Retuen to main
-> power off
'''

print('hit the tab key')
print('go to main to close or alt+F4 to close each one')

def OnTab(event):
	global frames
	active = event.GetEventObject()
	frame = active.GetMainWindowOfCompositeControl()
	print('getmainwindowofcompositecontrol', frame.GetName())
	next_frame = get_next_frame()
	if next_frame:# account for "closed" frames
		next_frame.SetFocus()
	else:
		print('huh', next_frame)


def OnClose(event):
	global frames
	obj = event.GetEventObject()
	if obj in frames:
		frames.remove(obj)
	print(len(frames))
	event.Skip()

def get_next_frame():
	'''Get the next frame after the active frame in a list of frames'''
	global frames

	#if frame not in frames:
	#	return None

	for frame in frames:
		if frame and frame.IsActive(): # has focus
			break
	next_frame =  frames[(0 if (frames.index(frame)+1 > len(frames)-1) else frames.index(frame)+1)]
	if next_frame is None:
		frames.remove(None)
	return next_frame


def create_frame(parent, name):
	style=0
	if name == 'main':
		style=wx.DEFAULT_FRAME_STYLE
	frame = wx.Frame(parent, title=name, name=name, style=style, 
		pos=(0,0), size = (320,240))
	st = wx.StaticText(frame, label=name)
	sizer = wx.BoxSizer()
	sizer.Add(st, 1, wx.EXPAND | wx.ALL, 0)
	frame.SetSizer(sizer)
	frame.Layout()
	frame.Show()
	frame.Bind(wx.EVT_KEY_UP, OnTab)
	frame.Bind(wx.EVT_CLOSE, OnClose)
	return frame

app = wx.App()
main = create_frame(None, 'main')
frames = [
	main,
	create_frame(main, 'GPS'),
	create_frame(main, 'GPS Telemetry'),
	create_frame(main, 'Graphs'),
	create_frame(main, 'Settings'),
	create_frame(main, 'Diagnostics'), ]

main.Show()
main.SetFocus()
app.MainLoop()

