Broken project to implement a cross-protocol browser in textual
Diffstat (limited to 'browset.py')
| -rw-r--r-- | browset.py | 17 |
1 files changed, 15 insertions, 2 deletions
@@ -7,6 +7,7 @@ from gemtext import Gemtext from protocol.gemini import GeminiProtocol class Browset(App): + url = "" CSS_PATH = "browset.css" BINDINGS = [ Binding("ctrl+c,ctrl+q", "app.quit", "Quit", show=True), @@ -21,12 +22,24 @@ class Browset(App): Button("🔜"), # ⏩ Button("🔄"), # 🔁 - Input(placeholder="Enter URI"), + Input(placeholder="Enter URI", id="url"), id="toolbar" ) yield Gemtext(fp=self.content, id="content") async def on_input_submitted(self, message: Input.Submitted) -> None: - (mime, fp) = GeminiProtocol.get(message.value) + self._do_url(message.value) + + async def on_button_pressed(self, event: Button.Pressed) -> None: + url = event.button.name + if not ":" in url: + url = GeminiProtocol.relativeURL(url, self.url) + input = self.query_one("#url") + input.value = url + self._do_url(url) + + def _do_url(self, url): + self.url = url + (mime, fp) = GeminiProtocol.get(url) self.query_one("#content").remove() self.mount(Gemtext(fp=fp, id="content")) |