Ejemplo n.º 1
0
    def trimmed(self, width):
        separator = PanelStrip().icon('split')

        if width < separator.width:
            return PanelStrip()

        if PanelVisual.char_width:
            side_chars = (width - separator.width) // (2 * PanelVisual.char_width)
            left_text = self.text[:side_chars]
            right_text = self.text[len(self.text) - side_chars:]
        else:
            left_text = self.text
            right_text = self.text
            fragment_width = (width - separator.width) // 2

            while Raster.text_width(left_text) > fragment_width:
                left_text = left_text[len(left_text) - 1:]
            while Raster.text_width(right_text) > fragment_width:
                right_text = right_text[1:]

        return (
            PanelStrip().text(left_text.rstrip())
            + separator
            + PanelStrip().text(right_text.lstrip())
        )
Ejemplo n.º 2
0
 def update(self, text):
     self.text = text
     self.width = Raster.text_width(text)