make page titles consistent, add landing page func

This commit is contained in:
yequari 2023-07-04 17:23:03 -07:00
parent f7615ff7f9
commit 55196c60fe
1 changed files with 18 additions and 11 deletions

29
nex.py
View File

@ -1,9 +1,9 @@
import sys import sys
import socket import socket
import pytermgui as ptg
from typing import Tuple
import re import re
import logging import logging
import pytermgui as ptg
from typing import Tuple
PORT = 1900 PORT = 1900
@ -58,22 +58,28 @@ class Page:
@property @property
def title(self): def title(self):
return f'nex://{self.url}' prefix = 'nex://'
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)
landing_page = Page('') def create_landing_page() -> Page:
landing_page.raw_content = 'Welcome to PyNex' landing_page = Page('about:home')
landing_page.content = landing_page.raw_content landing_page.raw_content = 'Welcome to PyNex'
landing_page.content = landing_page.raw_content
return landing_page
class Session: class Session:
def __init__(self): def __init__(self):
self.pages = {'': landing_page} home_page = create_landing_page()
self.history = [''] self.pages = {home_page.url: home_page}
self.history = [home_page.url]
self.curr_index = 0 self.curr_index = 0
@property @property
@ -107,7 +113,7 @@ 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,
@ -147,8 +153,9 @@ class Browser(ptg.WindowManager):
self.add(self.footer) self.add(self.footer)
def update(self): def update(self):
self.page_container.set_widgets([self.session.current_page.content]) page = self.session.current_page
self.body.set_title(f'[bold tertiary]{self.session.current_page.title}', 1) self.page_container.set_widgets([page.content])
self.body.set_title(f'[bold tertiary]{page.title}', 1)
def back(self, *args): def back(self, *args):
self.session.prev() self.session.prev()