Compare commits

..

No commits in common. "2c130bf515f71b3de811a9024ae8b5f06a6e9d11" and "f7615ff7f9a813aefe2aa00f4695cb9ef35190a8" have entirely different histories.

1 changed files with 18 additions and 27 deletions

45
nex.py
View File

@ -1,9 +1,9 @@
import sys import sys
import socket import socket
import re
import logging
import pytermgui as ptg import pytermgui as ptg
from typing import Tuple from typing import Tuple
import re
import logging
PORT = 1900 PORT = 1900
@ -58,28 +58,22 @@ class Page:
@property @property
def title(self): def title(self):
prefix = 'nex://' return f'nex://{self.url}'
if self.url.startswith(prefix):
return self.url[len(prefix):]
return self.url
def _parse_links(self): def _parse_links(self):
pattern = re.compile(r'=>\s*([\w/:\.~-]*)\s*') pattern = re.compile(r'=>\s*([\w/:\.~-]*)\s*')
self.links = pattern.findall(self.raw_content) self.links = pattern.findall(self.raw_content)
def create_landing_page() -> Page: landing_page = Page('')
landing_page = Page('about:home') landing_page.raw_content = 'Welcome to PyNex'
landing_page.raw_content = 'Welcome to PyNex' landing_page.content = landing_page.raw_content
landing_page.content = landing_page.raw_content
return landing_page
class Session: class Session:
def __init__(self): def __init__(self):
home_page = create_landing_page() self.pages = {'': landing_page}
self.pages = {home_page.url: home_page} self.history = ['']
self.history = [home_page.url]
self.curr_index = 0 self.curr_index = 0
@property @property
@ -113,17 +107,17 @@ class Browser(ptg.WindowManager):
super().__init__() super().__init__()
self.layout = ptg.Layout() self.layout = ptg.Layout()
self.session = session self.session = session
self.page_container = ptg.Container(self.session.current_page.content) self.page_container = ptg.Container(self.session.current_page.content)
self.body = ptg.Window(self.page_container, self.body = ptg.Window(self.page_container,
overflow=ptg.Overflow.SCROLL, overflow=ptg.Overflow.SCROLL,
vertical_align=ptg.VerticalAlignment.TOP) vertical_align=ptg.VerticalAlignment.TOP)
self.footer = ptg.Window( self.footer = ptg.Window(
ptg.Splitter( ptg.Splitter(
["(B)ack", self.back], ptg.KeyboardButton("Back", self.back, bound='b'),
["(F)orward", self.forward], ptg.KeyboardButton("Forward", self.forward, bound='f'),
["(R)eload", self.reload], ptg.KeyboardButton("Reload", self.reload, bound='r'),
["(Q)uit", lambda *_: self.stop()] ptg.KeyboardButton("Quit", self.stop, bound='q')
), ),
box="EMPTY", box="EMPTY",
is_persistant=True is_persistant=True
@ -134,13 +128,10 @@ class Browser(ptg.WindowManager):
self.update() self.update()
def _create_key_bindings(self): def _create_key_bindings(self):
self.bind(ptg.keys.DOWN, lambda *_: self.body.scroll(5))
self.bind(ptg.keys.UP, lambda *_: self.body.scroll(-5))
self.bind('j', lambda *_: self.body.scroll(5)) self.bind('j', lambda *_: self.body.scroll(5))
self.bind(ptg.keys.DOWN, lambda *_: self.body.scroll(5))
self.bind('k', lambda *_: self.body.scroll(-5)) self.bind('k', lambda *_: self.body.scroll(-5))
self.bind('b', self.back) self.bind(ptg.keys.UP, lambda *_: self.body.scroll(-5))
self.bind('f', self.forward)
self.bind('r', self.reload)
self.bind('q', lambda *_: self.stop()) self.bind('q', lambda *_: self.stop())
for i in range(10): for i in range(10):
@ -151,13 +142,13 @@ class Browser(ptg.WindowManager):
self.layout.add_break() self.layout.add_break()
self.layout.add_slot("Footer", height=1) self.layout.add_slot("Footer", height=1)
# self.add(self.header)
self.add(self.body) self.add(self.body)
self.add(self.footer) self.add(self.footer)
def update(self): def update(self):
page = self.session.current_page self.page_container.set_widgets([self.session.current_page.content])
self.page_container.set_widgets([page.content]) self.body.set_title(f'[bold tertiary]{self.session.current_page.title}', 1)
self.body.set_title(f'[bold tertiary]{page.title}', 1)
def back(self, *args): def back(self, *args):
self.session.prev() self.session.prev()