mit neuen venv und exe-Files
This commit is contained in:
90
venv3_12/Lib/site-packages/eel/browsers.py
Normal file
90
venv3_12/Lib/site-packages/eel/browsers.py
Normal file
@@ -0,0 +1,90 @@
|
||||
import subprocess as sps
|
||||
import webbrowser as wbr
|
||||
from typing import Union, List, Dict, Iterable, Optional
|
||||
from types import ModuleType
|
||||
|
||||
from eel.types import OptionsDictT
|
||||
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: Dict[str, str] = {}
|
||||
_browser_modules: Dict[str, ModuleType] = {'chrome': chm,
|
||||
'electron': ele,
|
||||
'edge': edge}
|
||||
|
||||
|
||||
def _build_url_from_dict(page: Dict[str, str], options: OptionsDictT) -> str:
|
||||
scheme = page.get('scheme', 'http')
|
||||
host = page.get('host', 'localhost')
|
||||
port = page.get('port', options["port"])
|
||||
path = page.get('path', '')
|
||||
if not isinstance(port, (int, str)):
|
||||
raise TypeError("'port' option must be an integer")
|
||||
return '%s://%s:%d/%s' % (scheme, host, int(port), path)
|
||||
|
||||
|
||||
def _build_url_from_string(page: str, options: OptionsDictT) -> str:
|
||||
if not isinstance(options['port'], (int, str)):
|
||||
raise TypeError("'port' option must be an integer")
|
||||
base_url = 'http://%s:%d/' % (options['host'], int(options['port']))
|
||||
return base_url + page
|
||||
|
||||
|
||||
def _build_urls(start_pages: Iterable[Union[str, Dict[str, str]]], options: OptionsDictT) -> List[str]:
|
||||
urls: List[str] = []
|
||||
|
||||
for page in start_pages:
|
||||
if isinstance(page, dict):
|
||||
url = _build_url_from_dict(page, options)
|
||||
else:
|
||||
url = _build_url_from_string(page, options)
|
||||
urls.append(url)
|
||||
|
||||
return urls
|
||||
|
||||
|
||||
def open(start_pages: Iterable[Union[str, Dict[str, str]]], options: OptionsDictT) -> None:
|
||||
# Build full URLs for starting pages (including host and port)
|
||||
start_urls = _build_urls(start_pages, options)
|
||||
|
||||
mode = options.get('mode')
|
||||
if not isinstance(mode, (str, bool, type(None))) or mode is True:
|
||||
raise TypeError("'mode' option must by either a string, False, or None")
|
||||
if mode is None or mode is False:
|
||||
# Don't open a browser
|
||||
pass
|
||||
elif mode == 'custom':
|
||||
# Just run whatever command the user provided
|
||||
if not isinstance(options['cmdline_args'], list):
|
||||
raise TypeError("'cmdline_args' option must be of type List[str]")
|
||||
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: str, path: str) -> None:
|
||||
_browser_paths[browser_name] = path
|
||||
|
||||
|
||||
def get_path(browser_name: str) -> Optional[str]:
|
||||
return _browser_paths.get(browser_name)
|
||||
|
||||
Reference in New Issue
Block a user