More work on themes kitten
This commit is contained in:
parent
43ccf9cb41
commit
064fc17ce3
@ -40,6 +40,7 @@ def limit_length(text: str, limit: int = 32) -> str:
|
|||||||
class State(Enum):
|
class State(Enum):
|
||||||
fetching = auto()
|
fetching = auto()
|
||||||
browsing = auto()
|
browsing = auto()
|
||||||
|
searching = auto()
|
||||||
|
|
||||||
|
|
||||||
def dark_filter(q: Theme) -> bool:
|
def dark_filter(q: Theme) -> bool:
|
||||||
@ -243,6 +244,13 @@ class ThemesHandler(Handler):
|
|||||||
self.cmd.sgr('0')
|
self.cmd.sgr('0')
|
||||||
self.print()
|
self.print()
|
||||||
|
|
||||||
|
def draw_bottom_bar(self) -> None:
|
||||||
|
self.print(styled(' ' * self.screen_size.cols, reverse=True), end='\r')
|
||||||
|
for t in ('search', 'accept'):
|
||||||
|
text = mark_shortcut(t.capitalize(), t[0])
|
||||||
|
self.cmd.styled(f' {text} ', reverse=True)
|
||||||
|
self.cmd.sgr('0')
|
||||||
|
|
||||||
def draw_theme_demo(self) -> None:
|
def draw_theme_demo(self) -> None:
|
||||||
theme = self.themes_list.current_theme
|
theme = self.themes_list.current_theme
|
||||||
xstart = self.themes_list.max_width + 3
|
xstart = self.themes_list.max_width + 3
|
||||||
@ -266,7 +274,6 @@ class ThemesHandler(Handler):
|
|||||||
while text:
|
while text:
|
||||||
sp = truncate_point_for_length(text, sz)
|
sp = truncate_point_for_length(text, sz)
|
||||||
self.write(text[:sp])
|
self.write(text[:sp])
|
||||||
self.debug(sp, text[:sp])
|
|
||||||
next_line()
|
next_line()
|
||||||
text = text[sp:]
|
text = text[sp:]
|
||||||
|
|
||||||
@ -288,7 +295,7 @@ class ThemesHandler(Handler):
|
|||||||
self.cmd.styled(theme.name.center(sz), bold=True, fg='green')
|
self.cmd.styled(theme.name.center(sz), bold=True, fg='green')
|
||||||
next_line()
|
next_line()
|
||||||
if theme.author:
|
if theme.author:
|
||||||
self.cmd.styled(theme.author, italic=True)
|
self.cmd.styled(theme.author.center(sz), italic=True)
|
||||||
next_line()
|
next_line()
|
||||||
if theme.blurb:
|
if theme.blurb:
|
||||||
next_line()
|
next_line()
|
||||||
@ -311,16 +318,17 @@ class ThemesHandler(Handler):
|
|||||||
self.print(separator)
|
self.print(separator)
|
||||||
if self.themes_list:
|
if self.themes_list:
|
||||||
self.draw_theme_demo()
|
self.draw_theme_demo()
|
||||||
|
self.cmd.set_cursor_position(0, self.screen_size.rows)
|
||||||
|
if self.state is State.browsing:
|
||||||
|
self.draw_bottom_bar()
|
||||||
|
|
||||||
def on_browsing_key_event(self, key_event: KeyEventType, in_bracketed_paste: bool = False) -> None:
|
def on_browsing_key_event(self, key_event: KeyEventType, in_bracketed_paste: bool = False) -> None:
|
||||||
if key_event.matches('esc'):
|
if key_event.matches('esc') or key_event.matches('q'):
|
||||||
self.quit_loop(0)
|
return self.quit_loop(0)
|
||||||
return
|
|
||||||
for cat in 'all dark light recent'.split():
|
for cat in 'all dark light recent'.split():
|
||||||
if key_event.matches(cat[0]) or key_event.matches(f'alt+{cat[0]}'):
|
if key_event.matches(cat[0]) or key_event.matches(f'alt+{cat[0]}'):
|
||||||
self.current_category = cat
|
self.current_category = cat
|
||||||
self.redraw_after_category_change()
|
return self.redraw_after_category_change()
|
||||||
return
|
|
||||||
if key_event.matches('left') or key_event.matches('shift+tab'):
|
if key_event.matches('left') or key_event.matches('shift+tab'):
|
||||||
return self.next_category(-1)
|
return self.next_category(-1)
|
||||||
if key_event.matches('right') or key_event.matches('tab'):
|
if key_event.matches('right') or key_event.matches('tab'):
|
||||||
@ -333,6 +341,9 @@ class ThemesHandler(Handler):
|
|||||||
return self.next(delta=self.screen_size.rows - 3, allow_wrapping=False)
|
return self.next(delta=self.screen_size.rows - 3, allow_wrapping=False)
|
||||||
if key_event.matches('page_up'):
|
if key_event.matches('page_up'):
|
||||||
return self.next(delta=3 - self.screen_size.rows, allow_wrapping=False)
|
return self.next(delta=3 - self.screen_size.rows, allow_wrapping=False)
|
||||||
|
if key_event.matches('s') or key_event.matches('/'):
|
||||||
|
self.state = State.searching
|
||||||
|
return self.draw_screen()
|
||||||
|
|
||||||
def next_category(self, delta: int = 1) -> None:
|
def next_category(self, delta: int = 1) -> None:
|
||||||
idx = self.tabs.index(self.current_category) + delta + len(self.tabs)
|
idx = self.tabs.index(self.current_category) + delta + len(self.tabs)
|
||||||
@ -359,7 +370,7 @@ class ThemesHandler(Handler):
|
|||||||
self.enforce_cursor_state()
|
self.enforce_cursor_state()
|
||||||
if self.state is State.fetching:
|
if self.state is State.fetching:
|
||||||
self.draw_fetching_screen()
|
self.draw_fetching_screen()
|
||||||
elif self.state is State.browsing:
|
elif self.state in (State.browsing, State.searching):
|
||||||
self.draw_browsing_screen()
|
self.draw_browsing_screen()
|
||||||
|
|
||||||
def on_resize(self, screen_size: ScreenSize) -> None:
|
def on_resize(self, screen_size: ScreenSize) -> None:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user