26 lines
855 B
Python
26 lines
855 B
Python
"""Local files browser."""
|
|
|
|
from bebop.browser.browser import Browser
|
|
from bebop.page import Page
|
|
|
|
|
|
def open_file(browser: Browser, filepath: str, encoding="utf-8", history=True):
|
|
"""Open a file and render it.
|
|
|
|
This should be used only on Gemtext files or at least text files.
|
|
Anything else will produce garbage and may crash the program. In the
|
|
future this should be able to use a different parser according to a MIME
|
|
type or something.
|
|
"""
|
|
try:
|
|
with open(filepath, "rt", encoding=encoding) as f:
|
|
text = f.read()
|
|
except (OSError, ValueError) as exc:
|
|
browser.set_status_error(f"Failed to open file: {exc}")
|
|
return
|
|
browser.load_page(Page.from_gemtext(text))
|
|
file_url = "file://" + filepath
|
|
if history:
|
|
browser.history.push(file_url)
|
|
browser.current_url = file_url
|