def make_app(sec, width, height, frame=True, gcalender=None, color=False): """make auto refresh application class""" kb = KeyBindings() @kb.add('c-c') def _(event): event.app.exit() def _vsplit(padding, m): return VSplit([Window(width=padding, always_hide_cursor=True), m, Window(width=padding, always_hide_cursor=True)]) if height == 14: clock = BigClock(sec=sec, color=color, gcalender=gcalender) elif height == 7: clock = MinimumClock(sec=sec, color=color, gcalender=gcalender) else: clock = SmallClock(sec=sec, color=color, gcalender=gcalender) padding = to_dimension(D(preferred=0)) body = Window(content=FormattedTextControl(text=clock.get_clock), width=width, height=height, always_hide_cursor=True) if frame: body = Frame(body) if gcalender is None: under_text = Window(height=padding, always_hide_cursor=True) else: ct = gcalender.get_calender_text_formatted if color else gcalender.get_calender_text under_text = Window(content=FormattedTextControl(text=ct), width=gcalender.get_max_length(), height=padding, always_hide_cursor=True) # make container app root_container = HSplit([Window(height=padding, always_hide_cursor=True), _vsplit(padding, body), _vsplit(padding, under_text)], key_bindings=None) layout = Layout(container=root_container) return Application(layout=layout, key_bindings=kb, full_screen=True, refresh_interval=.1)
def preferred_dimensions(self, width): dimensions = [[]] * self.columns for row in self.children: assert isinstance(row, _Row) j = 0 for cell in row.children: assert isinstance(cell, _Cell) if cell.merge != 1: dimensions[j].append(cell.preferred_width(width)) j += cell.merge for i, c in enumerate(dimensions): yield D.exact(1) try: w = self.column_widths[i] except IndexError: w = self.column_width if w is None: # fitted yield max_layout_dimensions(c) else: # fixed or weighted yield to_dimension(w) yield D.exact(1)
def get(value: AnyDimension) -> D: if value is None: value = padding return to_dimension(value)
def get(value): if value is None: value = padding return to_dimension(value)
def get(value): if value is None: value = padding return to_dimension(value)
def preferred_height(self, width, max_available_height): return to_dimension(self.height)
def preferred_width(self, max_available_width): return to_dimension(self.width)
def get(value: AnyDimension) -> D: if value is None: value = padding return to_dimension(value)
def preferred_height(self, width, max_available_height): return to_dimension(self.height)
def preferred_width(self, max_available_width): return to_dimension(self.width)