def __init__(self): self.lira = LiraApp() self.lira.setup() self.content = ContentArea(self) self.status = StatusBar(self) self.menu = SidebarMenu(self) self.menu.reset(BooksList(self)) self.container = HSplit( [ VSplit( [ self.menu, self.content, ], padding=Dimension.exact(1), padding_char="│", padding_style=theme["separator"], ), self.status, ], padding=Dimension.exact(1), padding_char="─", padding_style=theme["separator"], ) self.app = Application( layout=Layout(self.container), key_bindings=self.get_key_bindings(), mouse_support=True, full_screen=True, style=style, after_render=self._ready, )
def _get_status_area(self, status=""): return TextArea( text=status, height=Dimension.exact(1), prompt=">>> ", multiline=False, wrap_lines=False, focusable=False, read_only=True, )
def __init__( self, title=None, elements=None, width=None, height=None, align=WindowAlign.LEFT, get_bullet=None, allow_select=True, scrollbar=True, ): self.index = 0 self.get_bullet = get_bullet self.selected = -1 self.elements = elements or [] self.title = title self.allow_select = allow_select self.cursor = Point(0, 0) self.scrollbar = scrollbar self.control = FormattedTextControl( text=self._get_text, focusable=True, get_cursor_position=lambda: self.cursor, key_bindings=self.get_key_bindings(), ) # TODO: figure out how to the make it look nicer right_margins = [ ConditionalMargin( ScrollbarMargin(display_arrows=True), filter=Condition(lambda: self.scrollbar), ), ] self.title_window = FormattedTextArea( text=self.title, height=Dimension(min=1), width=Dimension(min=1), ) self.list_window = Window( content=self.control, width=width, height=height, always_hide_cursor=False, style="class:list", wrap_lines=True, dont_extend_height=True, dont_extend_width=False, cursorline=False, right_margins=right_margins, allow_scroll_beyond_bottom=True, get_line_prefix=self._get_line_prefix, ) self.window = HSplit( children=[ Box( self.title_window, padding=Dimension.exact(1), ), Box( self.list_window, padding=Dimension.exact(1), padding_top=Dimension.exact(0), ), ], height=Dimension(min=1), width=Dimension(min=1), )