Exemple #1
0
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)
Exemple #3
0
 def get(value: AnyDimension) -> D:
     if value is None:
         value = padding
     return to_dimension(value)
Exemple #4
0
 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)
Exemple #6
0
 def preferred_height(self, width, max_available_height):
     return to_dimension(self.height)
Exemple #7
0
 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)
Exemple #9
0
 def preferred_height(self, width, max_available_height):
     return to_dimension(self.height)
Exemple #10
0
 def preferred_width(self, max_available_width):
     return to_dimension(self.width)