summary refs log tree commit diff
path: root/browset.py
diff options
context:
space:
mode:
authorZach DeCook <zachdecook@librem.one>2022-12-24 07:24:28 -0500
committerZach DeCook <zachdecook@librem.one>2022-12-24 07:24:28 -0500
commit09b393bf5de74e11a4a46ab4c697175e4ca8a480 (patch)
tree9e1ad99504d99578aea58f90363fc3007124cd18 /browset.py
parent1a2eaf6f305bd95debc0409639627bcb9cb8e6fc (diff)
downloadbrowset-09b393bf5de74e11a4a46ab4c697175e4ca8a480.tar.gz
browset: Support clicking buttons (relative path)
Diffstat (limited to 'browset.py')
-rw-r--r--browset.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/browset.py b/browset.py
index 817ad91..c316c1d 100644
--- a/browset.py
+++ b/browset.py
@@ -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"))