Пример #1
0
    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()
Пример #2
0
    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()
Пример #3
0
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