def on_new_log_line(self, line): log_context = self.display_state["log_output"] log_items = log_context["items"] is_at_bottom = get_selected_index(log_context) == len(log_items) - 1 log_items.append(line) if is_at_bottom: scroll_to_bottom(log_context) self.display_state["bottom_bar"]["items"][ "num_lines"] = f"Lines: {len(log_items)}" self.refresh_screen()
def update_scroll_percent(self): log_context = self.display_state["log_output"] bottom_context = self.display_state["bottom_bar"] index = get_selected_index(log_context) num_items = get_items_len(log_context) if num_items is not None: percent = int((index / num_items) * 100) else: percent = 0 bottom_context["items"]["scroll_percent"] = f"Scroll: {percent}%" self.refresh_screen()
def make_scroll_list(screen, context, remaining_height) -> []: num_rows, num_cols = screen.getmaxyx() selected_index = get_selected_index(context) is_focused = get_focused(context) start, stop, visible_items = cut_items_to_window(selected_index, context["items"], remaining_height) print_items = [] for index, item in zip(range(start, stop), visible_items): sanitized = str(item)[:num_cols] if index == selected_index and is_focused: print_items.append(partial(print_highlighted_line, 0, sanitized)) else: print_items.append(partial(print_line, 0, sanitized)) return print_items