# GUI Demo - just a worker script to invoke all the other demo/test scripts.
import win32ui
import __main__
import sys
import regutil
import win32api

demos = [ \
#	('Font', 'import fontdemo;fontdemo.FontDemo()'),
	('Open GL Demo', 'import openGLDemo;openGLDemo.test()'),
	('Threaded GUI', 'import threadedgui;threadedgui.ThreadedDemo()'),
	('Tree View Demo', 'import hiertest;hiertest.demoboth()'),
	('3-Way Splitter Window', 'import splittst;splittst.demo()'),
	('Custom Toolbars and Tooltips', 'import toolbar;toolbar.test()'),
	('Progress Bar', 'import progressbar;progressbar.demo()'),
	('Slider Control', 'import sliderdemo;sliderdemo.demo()'),
	('Dynamic window creation', 'import createwin;createwin.demo()'),
	('Various Dialog demos', 'import dlgtest;dlgtest.demo()'),
	('OCX Control Demo', 'from ocx import ocxtest;ocxtest.demo()'),
	('OCX Serial Port Demo', 'from ocx import ocxserialtest;	ocxserialtest.test()'),
	('IE4 Control Demo', 'from ocx import webbrowser; webbrowser.Demo("http://www.python.org")'),
]

def demo():
	try:
		# seeif I can locate the demo files.
		import fontdemo
	except ImportError:
		# else put the demos direectory on the path (if not already)
		try:
			instPath = regutil.GetRegistryDefaultValue(regutil.BuildDefaultPythonKey() + "\\InstallPath")
		except win32api.error:
			print("The InstallPath can not be located, and the Demos directory is not on the path")
			instPath="."
			
		demosDir = win32ui.FullPath(instPath + "\\Demos")
		for path in sys.path:
			if win32ui.FullPath(path)==demosDir:
				break
		else:
			sys.path.append(demosDir)
		import fontdemo

	import sys
	if "/go" in sys.argv:
		for name, cmd in demos:		
			try:
				exec(cmd)
			except:
				print("Demo of %s failed - %s:%s" % (cmd,sys.exc_info()[0], sys.exc_info()[1]))
		return
	# Otherwise allow the user to select the demo to run

	import pywin.dialogs.list
	while 1:
		rc = pywin.dialogs.list.SelectFromLists( "Select a Demo", demos, ['Demo Title'] )
		if rc is None:
			break
		title, cmd = demos[rc]
		try:
			exec(cmd)
		except:
			print("Demo of %s failed - %s:%s" % (title,sys.exc_info()[0], sys.exc_info()[1]))

if __name__==__main__.__name__:
	import demoutils
	if demoutils.NeedGoodGUI():
		demo()
