mirror of
https://github.com/kristoferssolo/School.git
synced 2025-10-21 20:10:38 +00:00
79 lines
2.2 KiB
Python
79 lines
2.2 KiB
Python
import subprocess as sps
|
|
import webbrowser as wbr
|
|
|
|
import eel.chrome as chm
|
|
import eel.electron as ele
|
|
import eel.edge as edge
|
|
#import eel.firefox as ffx TODO
|
|
#import eel.safari as saf TODO
|
|
|
|
_browser_paths = {}
|
|
_browser_modules = {'chrome': chm,
|
|
'electron': ele,
|
|
'edge': edge}
|
|
|
|
|
|
def _build_url_from_dict(page, options):
|
|
scheme = page.get('scheme', 'http')
|
|
host = page.get('host', 'localhost')
|
|
port = page.get('port', options["port"])
|
|
path = page.get('path', '')
|
|
return '%s://%s:%d/%s' % (scheme, host, port, path)
|
|
|
|
|
|
def _build_url_from_string(page, options):
|
|
base_url = 'http://%s:%d/' % (options['host'], options['port'])
|
|
return base_url + page
|
|
|
|
|
|
def _build_urls(start_pages, options):
|
|
urls = []
|
|
|
|
for page in start_pages:
|
|
method = _build_url_from_dict if isinstance(
|
|
page, dict) else _build_url_from_string
|
|
url = method(page, options)
|
|
urls.append(url)
|
|
|
|
return urls
|
|
|
|
|
|
def open(start_pages, options):
|
|
# Build full URLs for starting pages (including host and port)
|
|
start_urls = _build_urls(start_pages, options)
|
|
|
|
mode = options.get('mode')
|
|
if mode in [None, False]:
|
|
# Don't open a browser
|
|
pass
|
|
elif mode == 'custom':
|
|
# Just run whatever command the user provided
|
|
sps.Popen(options['cmdline_args'],
|
|
stdout=sps.PIPE, stderr=sps.PIPE, stdin=sps.PIPE)
|
|
elif mode in _browser_modules:
|
|
# Run with a specific browser
|
|
browser_module = _browser_modules[mode]
|
|
path = _browser_paths.get(mode)
|
|
if path is None:
|
|
# Don't know this browser's path, try and find it ourselves
|
|
path = browser_module.find_path()
|
|
_browser_paths[mode] = path
|
|
|
|
if path is not None:
|
|
browser_module.run(path, options, start_urls)
|
|
else:
|
|
raise EnvironmentError("Can't find %s installation" % browser_module.name)
|
|
else:
|
|
# Fall back to system default browser
|
|
for url in start_urls:
|
|
wbr.open(url)
|
|
|
|
|
|
def set_path(browser_name, path):
|
|
_browser_paths[browser_name] = path
|
|
|
|
|
|
def get_path(browser_name):
|
|
return _browser_paths.get(browser_name)
|
|
|