optimized bro ui

This commit is contained in:
Luxferre
2026-01-01 09:37:13 +02:00
parent 4e59993b99
commit dac949ab2b
+10 -10
View File
@@ -1,5 +1,5 @@
# DeckBro: a simple DeckText/HTML browser for T-DeckARD environment # DeckBro: a simple DeckText/HTML browser for T-DeckARD environment
# Usage: from app.bro import DeckBro # Usage: from app.bro import bro
# Created by Luxferre in 2025-2026, released into public domain # Created by Luxferre in 2025-2026, released into public domain
import re import re
@@ -38,12 +38,12 @@ class DeckBro:
def display(self): def display(self):
curpage = 1 curpage = 1
totalpages = len(self.rendered_pages)
menustring = 'g)o r)ef b)ack f)wd n)ext p)rev l)ink or pg#: ' menustring = 'g)o r)ef b)ack f)wd n)ext p)rev l)ink or pg#: '
do_new_display = True do_new_display = True
while True: while True:
totalpages = len(self.rendered_pages)
if do_new_display and curpage > 0 and curpage <= totalpages: if do_new_display and curpage > 0 and curpage <= totalpages:
print_paged(self.rendered_pages[curpage - 1]) print_paged('\x1b[2J' + self.rendered_pages[curpage - 1])
print(f'[{self.url}]') print(f'[{self.url}]')
user_choice = input(menustring).strip() user_choice = input(menustring).strip()
pgnum = None pgnum = None
@@ -77,8 +77,8 @@ class DeckBro:
if curpage < 1: # wrap around if curpage < 1: # wrap around
curpage = totalpages curpage = totalpages
elif ch_letter == 'g': elif ch_letter == 'g':
do_new_display = True
self.go(user_opt) self.go(user_opt)
break
elif ch_letter == 'l': elif ch_letter == 'l':
addr = None addr = None
try: try:
@@ -89,19 +89,19 @@ class DeckBro:
print('Invalid link number entered!') print('Invalid link number entered!')
do_new_display = False do_new_display = False
else: else:
do_new_display = True
self.go(addr) self.go(addr)
break
elif ch_letter == 'r': elif ch_letter == 'r':
do_new_display = True
self.refresh() self.refresh()
break
elif ch_letter == 'b': elif ch_letter == 'b':
if self.back() is not None: if self.back() is not None:
break do_new_display = True
else: else:
do_new_display = False do_new_display = False
elif ch_letter == 'f': elif ch_letter == 'f':
if self.forward() is not None: if self.forward() is not None:
break do_new_display = True
else: else:
do_new_display = False do_new_display = False
@@ -117,7 +117,7 @@ class DeckBro:
if new_url.startswith('/'): if new_url.startswith('/'):
new_url = base_url + new_url new_url = base_url + new_url
else: else:
new_url = current_url + '/' + new_url new_url = current_url + new_url
self.url = re.sub(r'([^:])//+', r'\1/', new_url) self.url = re.sub(r'([^:])//+', r'\1/', new_url)
status, pagetext = http_fetch(self.url) status, pagetext = http_fetch(self.url)
if status != 200: if status != 200:
@@ -131,7 +131,6 @@ class DeckBro:
self.history.append(self.url) self.history.append(self.url)
self.history_pos = len(self.history) - 1 self.history_pos = len(self.history) - 1
self.render() self.render()
self.display()
def refresh(self): def refresh(self):
self.go(self.url, update_history=False) self.go(self.url, update_history=False)
@@ -156,3 +155,4 @@ class DeckBro:
def bro(url=None): def bro(url=None):
inst = DeckBro() inst = DeckBro()
inst.go(url) inst.go(url)
inst.display()