Broken project to implement a cross-protocol browser in textual
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from textual.widgets import Button, Static
from textual.app import ComposeResult
from textual.containers import Container

class Gemtext(Static):
    """Gemtext widget."""
    items = []
    #def compose(self) -> ComposeResult:
    #    yield Container(id="content")

    def __init__(self, txt, id):
        super().__init__(id=id)
        self.update(txt)
    def update(self, txt):
        #S = self.query("Static")
        #if S:
        #    S.last().remove()
        for line in txt.split('\n'):
            if line.startswith("=>"):
                path = line[2:].lstrip().split(' ')[0]
                text = ' '.join(line[2:].lstrip().split(' ')[1:])
                self.mount(Button(text or path, name=path))
            else:
                self.mount(Static(line))

if __name__ == "__main__":
    from textual.app import App
    class Test(App):
        def compose(self) -> ComposeResult:
            yield Gemtext(txt="#title\n=> /href link text\nworld star hiphop", id="yo")
    app = Test()
    app.run()