%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
# Copyright 2015 Canonical, Ltd. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. import logging from urwid import ( int_scale, SolidFill, Text, ) from subiquitycore.ui.container import ( Columns, Pile, WidgetWrap, ) from subiquitycore.ui.utils import Color from subiquitycore.ui.width import widget_width log = logging.getLogger('subiquitycore.ui.anchors') class HeaderColumns(Columns): # The idea is to render output like this: # # [ pad ][ message ][ btn ][ pad ] # # The constraints are: # # 1. pad + message + btn + pad = maxcol # # 2. pad is at least 1 # # 3. btn is fixed # # 4. message + btn is 79% of maxcol or 76, whichever is greater. def column_widths(self, size, focus=False): maxcol = size[0] btn = widget_width(self.contents[2][0]) center = max(int_scale(79, 101, maxcol + 1), 76) message = center - btn pad = (maxcol - center)//2 if pad <= 0: pad = 1 message = maxcol - 2 - btn return [pad, message, btn, pad] class Header(WidgetWrap): """ Header Widget """ def __init__(self, title, right_icon): if isinstance(title, str): title = Text(title) title = HeaderColumns([ Text(""), title, right_icon, Text(""), ]) super().__init__( Pile([ (1, Color.frame_header_fringe( SolidFill("\N{lower half block}"))), Color.frame_header(title), (1, Color.frame_header_fringe( SolidFill("\N{upper half block}"))), ]))