;ò ÃrzFc@s@dkZdkTdkTyeWnd„ZnXdeefd„ƒYZdefd„ƒYZd„Z d„Z d „Z d „Z d „Z d efd „ƒYZdefd„ƒYZdefd„ƒYZd„Zdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd „ƒYZd!efd"„ƒYZd#efd$„ƒYZd%efd&„ƒYZd'efd(„ƒYZd)efd*„ƒYZd+efd,„ƒYZd-efd.„ƒYZ d/efd0„ƒYZ!d1efd2„ƒYZ"d3efd4„ƒYZ#d5efd6„ƒYZ$d7efd8„ƒYZ%d9„Z&d:„Z'd;„Z(e)d<„Z*d=efd>„ƒYZ+d?efd@„ƒYZ,dAefdB„ƒYZ-dCefdD„ƒYZ.dEefdF„ƒYZ/dGefdH„ƒYZ0dIefdJ„ƒYZ1dS(KN(s*cCstd„|dƒS(NcCs||S(N(sasb(sasb((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyssi(sreducesl(sl((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysss WidgetMetacBstZdZd„ZRS(s Automatic caching of render and rows methods. Class variable no_cache is a list of names of methods to not cache. Class variable ignore_focus if defined and True indicates that this widget is not affected by the focus parameter, so it may be ignored when caching. cCsÐ|idgƒ}tt|ƒi|||ƒd|jo6d|jot |ƒ}n t |ƒ}||_ nd|jo d|jot |ƒ|_nd|jo |`nd|jo |`ndS(Nsno_cachesrendersrowss ignore_focus(sdsgetsno_cachessupers WidgetMetasclss__init__snamesbasesscache_widget_renders render_fnsnocache_widget_rendersrenderscache_widget_rowssrowss ignore_focus(sclssnamesbasessds render_fnsno_cache((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__'s       (s__name__s __module__s__doc__s__init__(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys WidgetMetas s WidgetErrorcBstZRS(N(s__name__s __module__(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys WidgetError:scCsŒ|o(|ddfjo|d|iƒjp't|ƒdjo|d|iƒjo,td||iƒ|iƒ|fƒ‚ndS(s; Raise a WidgetError if a canv does not match size size. iis8Widget %r rendered (%d x %d) canvas when passed size %r!N(ssizescanvscolsslensrowss WidgetErrorswidget(swidgetssizescanv((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys validate_size=s\csDtt|dtƒƒ‰|i‰t‡‡d†}ˆ|_|SdS(sk Return a function that wraps the cls.render() method and fetches and stores canvases with CanvasCache. s ignore_focuscs™|oˆ }ti|||ƒ}|o|Snˆ||d|ƒ}t|||ƒ|i ot |ƒ}n|i |||ƒti |ƒ|SdS(Nsfocus( sfocuss ignore_focuss CanvasCachesfetchsselfssizescanvsfns validate_sizes widget_infosCompositeCanvassfinalizesstore(sselfssizesfocusscanv(s ignore_focussfn(sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys cached_renderOs  N( sboolsgetattrsclssFalses ignore_focussrendersfns cached_renders original_fn(sclss cached_renders ignore_focussfn((s ignore_focussfnsD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyscache_widget_renderHs   csF|i‰tˆdƒo ˆi‰nt‡d†}ˆ|_|SdS(sc Return a function that wraps the cls.render() method and finalizes the canvas that it returns. s original_fncsZˆ||d|ƒ}|iot|ƒ}nt|||ƒ|i|||ƒ|SdS(Nsfocus( sfnsselfssizesfocusscanvs widget_infosCompositeCanvass validate_sizesfinalize(sselfssizesfocusscanv(sfn(sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysfinalize_rendergs  N(sclssrendersfnshasattrs original_fnsFalsesfinalize_render(sclssfinalize_rendersfn((sfnsD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysnocache_widget_render_s   cs/ˆii‰t‡‡d†}ˆ|_|SdS(s„ Return a function that wraps the cls.render() method and finalizes the canvas that it returns, but does not cache the canvas. csJˆˆ|d|ƒ}|iot|ƒ}n|iˆ||ƒ|SdS(Nsfocus(sfnsselfssizesfocusscanvs widget_infosCompositeCanvassfinalize(ssizesfocusscanv(sselfsfn(sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysfinalize_renderxs  N(sselfsrenders original_fnsfnsFalsesfinalize_render(sselfsfinalize_rendersfn((sselfsfnsD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysnocache_widget_render_instanceqs   cs;tt|dtƒƒ‰|i‰t‡‡d†}|SdS(sk Return a function that wraps the cls.rows() method and returns rows from the CanvasCache if available. s ignore_focuscsL|oˆ }ti|||ƒ}|o|iƒSnˆ|||ƒSdS(N( sfocuss ignore_focuss CanvasCachesfetchsselfssizescanvsrowssfn(sselfssizesfocusscanv(s ignore_focussfn(sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys cached_rowsˆs N(sboolsgetattrsclssFalses ignore_focussrowssfns cached_rows(sclss ignore_focuss cached_rowssfn((s ignore_focussfnsD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyscache_widget_rowss  sWidgetcBs5tZdZeZeZd„Zd„Zd„Z RS(s base class of widgets cCsti|ƒdS(N(s CanvasCaches invalidatesself(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys _invalidate™scGsti|||ŒdS(N(sSignalssemitsselfsnamesargs(sselfsnamesargs((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys_emitœscCs |iSdS(N(sselfs _selectable(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectableŸs( s__name__s __module__s__doc__s WidgetMetas __metaclass__sFalses _selectables _invalidates_emits selectable(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysWidget’s   s FlowWidgetcBs&tZdZed„Zed„ZRS(s base class of widgets cCs|\}tƒ‚dS(s4 All flow widgets must implement this function. N(smaxcolsNotImplementedError(sselfs.2sfocussmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrows§s cCs|\}tƒ‚dS(s/ All widgets must implement this function. N(smaxcolsNotImplementedError(sselfs.2sfocussmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrender­s (s__name__s __module__s__doc__sFalsesrowssrender(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys FlowWidget£s  s BoxWidgetcBs tZdZeZed„ZRS(ss base class of width and height constrained widgets such as the top level widget attached to the display object cCs tƒ‚dS(s/ All widgets must implement this function. N(sNotImplementedError(sselfssizesfocus((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrender»s(s__name__s __module__s__doc__sTrues _selectablesFalsesrender(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys BoxWidget´s cCs&|fjotd| ƒ‚ndS(sS raise ValueError if size != (). Used by FixedWidgets to test size parameter. s-FixedWidget takes only () for size.passed: %sN(ssizes ValueError(ssize((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys fixed_sizeÂs s FixedWidgetcBs)tZdZed„Zeed„ZRS(sQ base class of widgets that know their width and height and cannot be resized cCs tƒ‚dS(s/ All widgets must implement this function. N(sNotImplementedError(sselfssizesfocus((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrenderÑscCs tƒ‚dS(s5 All fixed widgets must implement this function. N(sNotImplementedError(sselfssizesfocus((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyspack×s(s__name__s __module__s__doc__sFalsesrendersNonespack(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys FixedWidgetÌs  sDividercBs>tZdZeZdddd„Zed„Zed„ZRS(s Horizontal divider widget s icCs,|iiƒ||_||_||_dS(s~ div_char -- character to repeat across line top -- number of blank lines above bottom -- number of blank lines below N(sselfs_Divider__supers__init__sdiv_charstopsbottom(sselfsdiv_charstopsbottom((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__ãs    cCs|\}|id|iSdS(s1Return the number of lines that will be rendered.iN(smaxcolsselfstopsbottom(sselfs.2sfocussmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrowsïs cCs`|\}t|i|dƒ}t|ƒ}|ip|io|i|i|iƒn|SdS(s-Render the divider as a canvas and return it.iN( smaxcols SolidCanvassselfsdiv_charscanvsCompositeCanvasstopsbottomspad_trim_top_bottom(sselfs.2sfocussmaxcolscanv((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrenderós  ( s__name__s __module__s__doc__sTrues ignore_focuss__init__sFalsesrowssrender(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysDividerÝs  s SolidFillcBs,tZeZeZdd„Zed„ZRS(Ns cCs|iiƒ||_dS(s. fill_char -- character to fill area with N(sselfs_SolidFill__supers__init__s fill_char(sselfs fill_char((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__s cCs#|\}}t|i||ƒSdS(s*Render the Fill as a canvas and return it.N(smaxcolsmaxrows SolidCanvassselfs fill_char(sselfs.2sfocussmaxcolsmaxrow((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrenders (s__name__s __module__sFalses _selectablesTrues ignore_focuss__init__srender(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys SolidFillüs s TextErrorcBstZRS(N(s__name__s __module__(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys TextError ssTextcBs¤tZdZeZdded„Zd„Zd„Zd„Z d„Z d„Z ed „Z e d „Ze d „Zed „Zd „Zd„Zee d„ZRS(s) a horizontally resizeable text widget sleftsspacecCs:|iiƒt|_|i|ƒ|i|||ƒdS(sT markup -- content of text widget, one of: plain string -- string is displayed ( attr, markup2 ) -- markup2 is given attribute attr [ markupA, markupB, ... ] -- list items joined together align -- align mode for text layout wrap -- wrap mode for text layout layout -- layout object to use, defaults to StandardTextLayout N( sselfs _Text__supers__init__sNones _cache_maxcolsset_textsmarkups set_layoutsalignswrapslayout(sselfsmarkupsalignswrapslayout((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__s    cCst|_|iiƒdS(N(sNonesselfs _cache_maxcols _Text__supers _invalidate(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys _invalidate#s cCs&t|ƒ\|_|_|iƒdS(sSet content of text widget.N(sdecompose_tagmarkupsmarkupsselfstextsattribs _invalidate(sselfsmarkup((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysset_text'scCs|i|ifSdS(sŒ Returns (text, attributes). text -- complete string content of text widget attributes -- run length encoded attributes for text N(sselfstextsattrib(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_text,scCs@|ii|ƒ otd| ƒ‚n||_|iƒdS(sy Set text alignment / justification. Valid modes for StandardTextLayout are: 'left', 'center' and 'right' s Alignment mode %s not supported.N(sselfslayoutssupports_align_modesmodes TextErrors align_modes _invalidate(sselfsmode((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysset_align_mode5s  cCs@|ii|ƒ otd| ƒ‚n||_|iƒdS(s¹ Set wrap mode. Valid modes for StandardTextLayout are : 'any' : wrap at any character 'space' : wrap on space character 'clip' : truncate lines instead of wrapping sWrap mode %s not supportedN(sselfslayoutssupports_wrap_modesmodes TextErrors wrap_modes _invalidate(sselfsmode((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_wrap_modeBs  cCs>|tjo t}n||_|i|ƒ|i|ƒdS(s¼ Set layout object, align and wrap modes. align -- align mode for text layout wrap -- wrap mode for text layout layout -- layout object to use, defaults to StandardTextLayout N(slayoutsNonesdefault_layoutsselfsset_align_modesaligns set_wrap_modeswrap(sselfsalignswrapslayout((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_layoutPs     cCsJ|\}|iƒ\}}|i|||fƒ}t||||ƒSdS(sB Render contents with wrapping and alignment. Return canvas. N(smaxcolsselfsget_textstextsattrsget_line_translationstranssapply_text_layout(sselfs.2sfocussmaxcolsattrstextstrans((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrender^s cCs |\}t|i|ƒƒSdS(s2Return the number of rows the rendered text spans.N(smaxcolslensselfsget_line_translation(sselfs.2sfocussmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrowsfs cCs:|i p |i|jo|i||ƒn|iSdS(s=Return layout structure for mapping self.text to a canvas. N(sselfs _cache_maxcolsmaxcols_update_cache_translationstas_cache_translation(sselfsmaxcolsta((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_line_translationjscCsK|o|\}}n|iƒ\}}||_|i||ƒ|_dS(N( stastextsattrsselfsget_textsmaxcols _cache_maxcols_calc_line_translations_cache_translation(sselfsmaxcolstastextsattr((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys_update_cache_translationqs  cCs&|ii||i|i|iƒSdS(N(sselfslayoutstexts _cache_maxcols align_modes wrap_mode(sselfstextsmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys_calc_line_translationzsc Cs|iƒ\}}|tj o]|\}t|idƒ o|Sn|i |||fƒ} |ii || ƒ}|fSnd}d}xz|t|ƒjof|id|ƒ}|djot|ƒ}nt|||ƒ} | |jo | }n|d}q‹W|fSdS(sú Return the number of screen columns required for this Text widget to be displayed without wrapping or clipping, as a single element tuple. size -- None for unlimited screen columns or (maxcol,) to specify a maximum column size spackis iÿÿÿÿiN(sselfsget_textstextsattrssizesNonesmaxcolshasattrslayoutsget_line_translationstransspackscolssislensfindsjs calc_widthsc( sselfssizesfocussattrsistextsjscolssmaxcolscstrans((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyspacks*      (s__name__s __module__s__doc__sTrues ignore_focussNones__init__s _invalidatesset_textsget_textsset_align_modes set_wrap_modes set_layoutsFalsesrendersrowssget_line_translations_update_cache_translations_calc_line_translationspack(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysTexts         sEditc Bs×tZdZd„Zd„Zddeddeeed„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„Zd„Zd„Zd„Zed„Zed„Zd„Zd„ZRS(sText edit widgetcCs7t|dƒp#t|ƒdjot|ƒdjSdS(s%Return true for printable characters.iii N(s is_wide_charschslensord(sselfsch((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys valid_char¢scCstSdS(N(sTrue(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectable¦sssleftsspacec Cs¾|iid|||ƒt|ƒtdƒjpt|ƒtdƒjpt‚||_ ||_ d|_ |i |ƒ|i|ƒ|tjot|ƒ}n|i|ƒt|_dS(sY caption -- markup for caption preceeding edit_text edit_text -- text string for editing multiline -- True: 'enter' inserts newline False: return it align -- align mode wrap -- wrap mode allow_tab -- True: 'tab' inserts 1-8 spaces False: return it edit_pos -- initial position for cursor, None:at end layout -- layout object suiN(sselfs _Edit__supers__init__salignswrapslayoutstypes edit_textsAssertionErrors multilines allow_tabsedit_poss set_captionscaptions set_edit_textsNoneslens set_edit_possFalses_shift_view_to_cursor( sselfscaptions edit_texts multilinesalignswraps allow_tabsedit_posslayout((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__¨s 9       cCs|i|i|ifSdS(sŒget_text() -> text, attributes text -- complete text of caption and edit_text attributes -- run length encoded attributes for text N(sselfscaptions edit_textsattrib(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_textÂscCsE|\}|i\}}||jo|i|fƒdSn|SdS(sLReturn the preferred column for the cursor, or the current cursor x value.iN(smaxcolsselfspref_col_maxcolspref_cols then_maxcolsget_cursor_coords(sselfs.2smaxcolspref_cols then_maxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_pref_colÊs  cCs|iƒdS(stDeprecated. Use set_caption and/or set_edit_text instead. Make sure any cached line translation is not reused.N(sselfs _invalidate(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys update_textÓscCs&t|ƒ\|_|_|iƒdS(s'Set the caption markup for this widget.N(sdecompose_tagmarkupscaptionsselfsattribs _invalidate(sselfscaption((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_captionÙscCs\|djo|t|iƒjp td‚t|_ttf|_||_|i ƒdS(s5Set the cursor position with a self.edit_text offset.is out of rangeN( sposslensselfs edit_textsAssertionErrorsNones highlightspref_col_maxcolsedit_poss _invalidate(sselfspos((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_edit_posÞs -  cCsIt|_||_|it|ƒjot|ƒ|_n|iƒdS(s"Set the edit text for this widget.N(sNonesselfs highlightstexts edit_textsedit_posslens _invalidate(sselfstext((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_edit_textæs   cCs |iSdS(s%Return the edit text for this widget.N(sselfs edit_text(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_edit_textîscCsJ|i}|i|i| ||i|ƒ|i|it|ƒƒdS(s5Insert text at the cursor position and update cursor.N(sselfsedit_possps set_edit_texts edit_textstexts set_edit_posslen(sselfstextsp((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys insert_textòs #cCsÊ|\}|i}|i|ƒoG|iƒt|ƒtdƒjo|idƒ}n|i |ƒn^|djo|i o0|iƒdd|id}|i |ƒn|djo|i o!|iƒd}|i |ƒnß|djo;|d jo|Snt |i d |ƒ}|i|ƒn—|d joM|t|i ƒjo|Snt|i |t|i ƒƒ}|i|ƒn=|d d fjo’t|_|i|fƒ\}}|i|fƒ}|tj pt‚|d jo|d 8}n |d 7}|i|f||ƒ o|SqÆn˜|djov|iƒttf|_|d jo|Snt |i d |ƒ}|i|i | |i |iƒ|i|ƒn|djo{|iƒttf|_|t|i ƒjo|Snt|i |t|i ƒƒ}|i|i |i |i |ƒn|ddfjout|_ttf|_|i|fƒ\}}|djo|i|fd|ƒn|i|fd |ƒdSn|SdS(s)Handle editing keystrokes, return others.usutf-8stabs isenters sleftisrightsupsdownis backspacesdeleteshomesendN(smaxcolsselfsedit_possps valid_charskeys_delete_highlightedstypesencodes insert_texts allow_tabs multilinesmove_prev_chars edit_texts set_edit_posslensmove_next_charsNones highlightsget_cursor_coordssxsys get_pref_colspref_colsAssertionErrorsmove_cursor_to_coordsspref_col_maxcols set_edit_text(sselfs.2skeysmaxcolspspref_colsysx((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypressùsv               "  &  c Csô|\}|i|ƒ} |i|dƒ\}}||jp|t| ƒjot Snt |i ƒd| ||ƒ}|t|iƒ}|djo d}n|t|iƒjot|iƒ}n||_||f|_|iƒtSdS(sfSet the cursor position with (x,y) coordinates. Returns True if move succeeded, False otherwise. iN(smaxcolsselfsget_line_translationstranssposition_coordsstop_xstop_ysyslensFalsescalc_possget_textsxsposscaptionse_poss edit_textsedit_posspref_col_maxcols _invalidatesTrue( sselfs.2sxsysmaxcolse_possposstop_ystop_xstrans((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysmove_cursor_to_coordsIs     cCs4|\}|djo|i|f||ƒSndS(s; Move the cursor to the location clicked for button 1. iN(smaxcolsbuttonsselfsmove_cursor_to_coordssxsy(sselfs.2seventsbuttonsxsysfocussmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys mouse_event\s  cCsi|i odSn|i\}}|i| |i|f\}}|i||ƒ||_t |_dS(s[ Delete all highlighted text and update cursor position, if any text is highlighted. N( sselfs highlightsstartsstops edit_textsbtextsetexts set_edit_textsedit_possNone(sselfsstopsstartsbtextsetext((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys_delete_highlightedds   cCs]|\}| |_ti||fƒ}|o%t|ƒ}|i|fƒ|_ n|SdS(sM Render edit widget and return canvas. Include cursor when in focus. N( smaxcolsfocussselfs_shift_view_to_cursorsTextsrenderscanvsCompositeCanvassget_cursor_coordsscursor(sselfs.2sfocussmaxcolscanv((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrenderqs   cCsæti|||ƒ}|i o|Sn|iƒ\}}t |||i t |i ƒƒ\}}|djo-|| t||| ƒg||dSnC||jo5|| t||||d ƒg||dSn|SdS(Nii(sTextsget_line_translationsselfsmaxcolstastranss_shift_view_to_cursorsget_textstextsignores calc_coordssedit_posslenscaptionsxsys shift_line(sselfsmaxcolstasignorestextsysxstrans((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_line_translation„s   - 5cCs)|\}t|_|i||iƒSdS(s5Return the (x,y) coordinates of cursor within widget.N(smaxcolsTruesselfs_shift_view_to_cursorsposition_coordssedit_pos(sselfs.2smaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_cursor_coords—s  cCsR|t|iƒ}|i|ƒ}t|i ƒd||ƒ\}}||fSdS(sA Return (x,y) coordinates for an offset into self.edit_text. iN( sposslensselfscaptionspsget_line_translationsmaxcolstranss calc_coordssget_textsxsy(sselfsmaxcolsposspsysxstrans((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysposition_coordsžs "(s__name__s __module__s__doc__s valid_chars selectablesFalsesNones__init__sget_texts get_pref_cols update_texts set_captions set_edit_poss set_edit_texts get_edit_texts insert_textskeypresssmove_cursor_to_coordss mouse_events_delete_highlightedsrendersget_line_translationsget_cursor_coordssposition_coords(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysEditŸs(   !        P     sIntEditcBs8tZdZd„Zded„Zd„Zd„ZRS(sEdit widget for integer valuescCsFt|ƒdjo/t|ƒtdƒjot|ƒtdƒjSdS(sReturn true for decimal digits.is0s9N(slenschsord(sselfsch((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys valid_char°sscCs:|tj ot|ƒ}nd}|ii||ƒdS(s? caption -- caption markup default -- default edit value sN(sdefaultsNonesstrsvalsselfs_IntEdit__supers__init__scaption(sselfscaptionsdefaultsval((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__´s  cCs”|\}|tdƒjoXxU|idjo|id djo,|i|idƒ|i|idƒqWnti ||f|ƒ}|SdS(s*Handle editing keystrokes. Return others.s 0123456789iis0N( smaxcolskeyslistsselfsedit_poss edit_texts set_edit_poss set_edit_textsEditskeypresss unhandled(sselfs.2skeysmaxcols unhandled((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypress½s $cCs#|iot|iƒSndSdS(s+Return the numeric value of self.edit_text.iN(sselfs edit_textslong(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysvalueÉs (s__name__s __module__s__doc__s valid_charsNones__init__skeypresssvalue(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysIntEdit­s   s WidgetWrapcBsPtZd„Zd„Zd„ZeeeƒZed„Zd„Z d„Z RS(NcCs ||_dS(s† w -- widget to wrap, stored as self.w This object will pass the functions defined in Widget interface definition to self.w. N(swsselfs_w(sselfsw((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__ÑscCs |iSdS(N(sselfs_w(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_wÚscCs||_|iƒdS(N(swsselfs_ws _invalidate(sselfsw((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysset_wÜs cCs&|ii|d|ƒ}t|ƒSdS(sRender self.w.sfocusN(sselfswsrenderssizesfocusscanvsCompositeCanvas(sselfssizesfocusscanv((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrenderáscCs|iiƒSdS(N(sselfsws selectable(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectableæscCs@|ddddddgjot|i|ƒSnt|‚dS(s6Call self.w if name is in Widget interface definition.sget_cursor_coordss get_pref_colskeypresssmove_cursor_to_coordssrowss mouse_eventN(snamesgetattrsselfs_wsAttributeError(sselfsname((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys __getattr__és( s__name__s __module__s__init__sget_wsset_wspropertyswsFalsesrenders selectables __getattr__(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys WidgetWrapÐs    sSelectableIconcBs/tZd„Zed„Zd„Zd„ZRS(NcCstSdS(N(sTrue(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectableñscCsU|\}ti||f|ƒ}|o%t|ƒ}|i|fƒ|_n|SdS(N( smaxcolsTextsrendersselfsfocusscsCompositeCanvassget_cursor_coordsscursor(sselfs.2sfocussmaxcolsc((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrenderôs  cCs(|\}|djoddfSndS(Nii(smaxcol(sselfs.2smaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_cursor_coordsûs  cCs|\}|SdS(N(smaxcolskey(sselfs.2skeysmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypressÿs (s__name__s __module__s selectablesFalsesrendersget_cursor_coordsskeypress(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysSelectableIconðs   sCheckBoxcBs¡tZheedƒ<eedƒ<dedƒ|itjo|i||ƒq_|i|||iƒn||_td|i|i|f|i gƒ|_ d|i _ |i ƒdS(sU Call on_state_change if do_callback is True, then change the check box state. sfixediN( s do_callbacksselfsstatesNoneson_state_changes user_datasColumnssreserve_columnssstatesslabelsws focus_cols _invalidate(sselfsstates do_callback((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_state*s!  + cCs |iSdS(s!Return the state of the checkbox.N(sselfsstate(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_state=scCs2|\}|ddfjo|Sn|iƒdS(sToggle state on space or enter.s senterN(smaxcolskeysselfs toggle_state(sselfs.2skeysmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypressAs cCsŒ|itjo|itƒn^|itjo,|io|idƒq~|itƒn"|idjo|itƒn|iƒdS(sCycle to the next valid state.smixedN(sselfsstatesFalses set_statesTrues has_mixeds _invalidate(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys toggle_stateHs cCs>|\}|djp t|ƒ otSn|iƒtSdS(sToggle state on button 1 press.iN(smaxcolsbuttonsis_mouse_pressseventsFalsesselfs toggle_statesTrue(sselfs.2seventsbuttonsxsysfocussmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys mouse_eventUs  (s__name__s __module__sTruesSelectableIconsFalsesstatessreserve_columnss selectablesNones__init__s set_labels get_labels set_states get_stateskeypresss toggle_states mouse_event(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysCheckBoxs3       s RadioButtoncBs•tZheedƒ<eedƒ<dedƒ|itjo|i||ƒq_|i|||iƒn||_td|i|i|f|i gƒ|_ d|i _ |i ƒ|t j odSnx@|iD]5}||joqÈn|io|itƒqÈqÈWdS(sš Call on_state_change if do_callback is True, then change the radio button state. if state is True set all other radio buttons in group to False. sfixediN(s do_callbacksselfsstatesNoneson_state_changes user_datasColumnssreserve_columnssstatesslabelsws focus_cols _invalidatesTruesgroupscbs set_statesFalse(sselfsstates do_callbackscb((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_states$!  +      cCs |iSdS(s%Return the state of the radio button.N(sselfsstate(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_state«scCsM|\}|ddfjo|Sn|itj o|itƒn|SdS(s$Set state to True on space or enter.s senterN(smaxcolskeysselfsstatesTrues set_state(sselfs.2skeysmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypress¯s cCsU|\}|djp t|ƒ otSn|itj o|itƒntSdS(s$Set state to True on button 1 press.iN( smaxcolsbuttonsis_mouse_pressseventsFalsesselfsstatesTrues set_state(sselfs.2seventsbuttonsxsysfocussmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys mouse_event¹s (s__name__s __module__sTruesSelectableIconsFalsesstatessreserve_columnss selectablesNones__init__s set_labels get_labels set_states get_stateskeypresss mouse_event(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys RadioButton^s3      sButtoncBsqtZedƒZedƒZd„Zeed„Zd„Zd„Z e d„Z d„Z d „Z d „ZRS( NscCstSdS(N(sTrue(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectableÆscCs3|iitƒ|i|ƒ||_||_dS(s  label -- markup for button label on_press -- callback function for button "press" on_press( button object, user_data=None) user_data -- additional param for on_press callback, ommited if None for compatibility reasons N(sselfs_Button__supers__init__sNones set_labelslabelson_presss user_data(sselfslabelson_presss user_data((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__És   cCsS||_tdd|ift|ƒdd|ifgddƒ|_|iƒdS(Nsfixedis dividechars(slabelsselfsColumnss button_leftsTexts button_rightsws _invalidate(sselfslabel((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_label×s -cCs |iSdS(N(sselfslabel(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_labelàscCs_|\}|ii|fd|ƒ}t|ƒ}|o |djoddf|_n|SdS(s,Display button. Show a cursor when in focus.sfocusiiN(smaxcolsselfs_Button__supersrendersfocusscanvsCompositeCanvasscursor(sselfs.2sfocussmaxcolscanv((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrenderãs  cCs,|\}|djoddfSntSdS(s"Return the location of the cursor.iiN(smaxcolsNone(sselfs.2smaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_cursor_coordsës  cCsj|\}|ddfjo|Sn|io8|itjo|i|ƒqf|i||iƒndS(s Call on_press on spage or enter.s senterN(smaxcolskeysselfson_presss user_datasNone(sselfs.2skeysmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypressñs  cCsA|\}|djp t|ƒ otSn|i|ƒtSdS(s Call on_press on button 1 press.iN(smaxcolsbuttonsis_mouse_pressseventsFalsesselfson_presssTrue(sselfs.2seventsbuttonsxsysfocussmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys mouse_eventüs  (s__name__s __module__sTexts button_lefts button_rights selectablesNones__init__s set_labels get_labelsFalsesrendersget_cursor_coordsskeypresss mouse_event(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysButtonÂs       sGridFlowcBsƒtZd„Zd„Zd„Zd„Zd„Zd„Zd„Ze d„Z e d „Z d „Z d „Z d „Zd „ZRS(NcCs|io |iiƒSdS(s/Return True if the cell in focus is selectable.N(sselfs focus_cells selectable(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectablescCsh|iiƒ||_||_||_||_||_t|_ |o|d|_ nt|_ dS(sz cells -- list of flow widgets to display cell_width -- column width for each cell h_sep -- blank columns between each cell horizontally v_sep -- blank rows between cells vertically (if more than one row is required to display all the cells) align -- horizontal alignment of cells, see "align" parameter of Padding widget for available options iN( sselfs_GridFlow__supers__init__scellss cell_widthsh_sepsv_sepsalignsNones focus_cells _cache_maxcol(sselfscellss cell_widthsh_sepsv_sepsalign((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__ s        cCsŽt|ƒtdƒjo>|djo|t|iƒjpt‚|i||_n!||ijpt‚||_t|_|i ƒdS(sMSet the cell in focus. cell -- widget or integer index into self.cellsiN( stypescellslensselfscellssAssertionErrors focus_cellsNones _cache_maxcols _invalidate(sselfscell((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_focus!s*  cCsM|\}|i|jo |iSn||_|i|fƒ|_|iSdS(sg Arrange the cells into columns (and possibly a pile) for display, input or to calculate rows. N(smaxcolsselfs _cache_maxcols_cache_display_widgetsgenerate_display_widget(sselfs.2smaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_display_widget/s   cCsÀ|\}tƒ}t|iƒdjo|Sn|idjo|id|_n||i|i |i} | djo‡|idg} d} x]|idD]N}||ijot| ƒ} n|io| i|ƒn| i|ƒq Wt| | ƒSn| t|iƒjott|iƒ}|ii|iƒ} t|i|i| ƒ}|i |i||i}t||i|ƒ}|Sng}d} d} x | t|iƒjoö|o|io|i|ƒntt|iƒ| | ƒ}|i| |!} |i| jo7t|ƒ} | i|iƒ}t| |i|ƒ}nt| |iƒ}|i |i|| |i}t||i|ƒ}|i|ƒ| | 7} q¢Wt|| ƒSdS(s7 Actually generate display widget (ignoring cache) iiN(smaxcolsDividersdslensselfscellssv_sepstopsh_seps cell_widthsbprslsfsbs focus_cellsappendsPilesksindexsColumnsscolssrwidthsPaddingsalignsrowsoutsssminsfcol(sselfs.2smaxcolscolssoutsrowsrwidthsbsdsfscellsslsssbprsfcolsk((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysgenerate_display_widget>sX      cCsˆt|tƒo |i}n|iƒ}||ijo|i|ƒdSnt|tƒo |i}n|iƒ}|i|ƒdS(s9Set the focus to the item in focus in the display widget.N(s isinstanceswsPaddings get_focussselfscellss set_focus(sselfsw((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys_set_focus_from_display_widgetus     cCsl|\}|i|fƒ}|iƒ o|Sn|i|f|ƒ}|tjo|i|ƒn|SdS(sK Pass keypress to display widget for handling. Capture focus changes.N( smaxcolsselfsget_display_widgetsds selectableskeyskeypresssNones_set_focus_from_display_widget(sselfs.2skeysmaxcolsd((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypress…s  cCs5|\}|i|fƒ}|i|fd|ƒSdS(s Return rows used by this widget.sfocusN(smaxcolsselfsget_display_widgetsdsrowssfocus(sselfs.2sfocussmaxcolsd((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrows’s cCs2|\}|i|fƒ}|i|f|ƒSdS(sUse display widget to render.N(smaxcolsselfsget_display_widgetsdsrendersfocus(sselfs.2sfocussmaxcolsd((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrender—s cCsE|\}|i|fƒ}|iƒ otSn|i|fƒSdS(sGet cursor from display widget.N(smaxcolsselfsget_display_widgetsds selectablesNonesget_cursor_coords(sselfs.2smaxcolsd((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_cursor_coordsœs cCsx|\}|i|fƒ}|iƒ otSn|i|f||ƒ}| ot Sn|i |ƒ|i ƒtSdS(s/Set the widget in focus based on the col + row.N( smaxcolsselfsget_display_widgetsds selectablesTruesmove_cursor_to_coordsscolsrowsrsFalses_set_focus_from_display_widgets _invalidate(sselfs.2scolsrowsmaxcolsdsr((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysmove_cursor_to_coords£s   c Csk|\}|i|fƒ}|i|f|||||ƒ} | ot Sn|i |ƒ|i ƒtSdS(s%Send mouse event to contained widget.N(smaxcolsselfsget_display_widgetsds mouse_eventseventsbuttonscolsrowsfocussrsFalses_set_focus_from_display_widgets _invalidatesTrue( sselfs.2seventsbuttonscolsrowsfocussmaxcolsdsr((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys mouse_event²s !  cCsE|\}|i|fƒ}|iƒ otSn|i|fƒSdS(s$Return pref col from display widget.N(smaxcolsselfsget_display_widgetsds selectablesNones get_pref_col(sselfs.2smaxcolsd((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_pref_col¿s (s__name__s __module__s selectables__init__s set_focussget_display_widgetsgenerate_display_widgets_set_focus_from_display_widgetskeypresssFalsesrowssrendersget_cursor_coordssmove_cursor_to_coordss mouse_events get_pref_col(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysGridFlows     7      s PaddingErrorcBstZRS(N(s__name__s __module__(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys PaddingErrorÈssPaddingcBsktZed„Zed„Zd„Zd„Zed„Zd„Z d„Z d„Z d „Z d „Z RS( Nc Csq|iiƒt||tƒ\}}}}||_ ||f\|_ |_ ||f\|_|_||_dS(sÉ w -- a box, flow or fixed widget to pad on the left and/or right align -- one of: 'left', 'center', 'right' ('fixed left', columns) ('fixed right', columns) ('relative', percentage 0=left 100=right) width -- one of: number of columns wide ('fixed right', columns) Only if align is 'fixed left' ('fixed left', columns) Only if align is 'fixed right' ('relative', percentage of total width) None to enable clipping mode min_width -- the minimum number of columns for w or None Padding widgets will try to satisfy width argument first by reducing the align amount when necessary. If width still cannot be satisfied it will also be reduced. Clipping Mode: In clipping mode w is treated as a fixed widget and this widget expects to be treated as a flow widget. w will be clipped to fit within the space given. For example, if align is 'left' then w may be clipped on the right. N(sselfs_Padding__supers__init__sdecompose_align_widthsalignswidths PaddingErrorsatsaaswtswasws align_types align_amounts width_types width_amounts min_width( sselfswsalignswidths min_widthsaaswaswtsat((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__Ìs  cCs$|i||ƒ\}}|d}|||8}|itjo|i i f|ƒ}n!|i i |f|d|ƒ}|i ƒdjoCt d|d|iƒƒ}t|ƒ}|i|i gƒ|Snt|ƒ}|i|i gƒ|djp |djo|i||ƒn|SdS(Niis (sselfspadding_valuesssizesfocussleftsrightsmaxcols width_typesNoneswsrenderscanvscolss SolidCanvassrowssCompositeCanvass set_dependsspad_trim_left_right(sselfssizesfocussmaxcolsrightscanvsleft((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrenderïs     c CsŠ|d}|itjoD|iid|ƒ\}}t |i |i d|t|dt ƒSnt |i |i |i|i|i|ƒSdS(sxReturn the number of columns to pad on the left and right. Override this method to define custom padding behaviour.isfocussfixedsclipN(ssizesmaxcolsselfs width_typesNoneswspacksfocusswidthsignorescalculate_paddings align_types align_amountsTrues width_amounts min_width(sselfssizesfocussmaxcolsignoreswidth((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyspadding_valuess    cCs|iiƒSdS(s&Return the selectable value of self.w.N(sselfsws selectable(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectablescCsy|\}|itjo |ii|ƒ\}}|Sn|i |f|ƒ\}}|ii |||fd|ƒSdS(s"Return the rows needed for self.w.sfocusN( smaxcolsselfs width_typesNoneswspacksfocussignoresheightspadding_valuessleftsrightsrows(sselfs.2sfocussmaxcolsrightsignoresheightsleft((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrowss cCsR|d}|i|tƒ\}}|||f|d}|ii ||ƒSdS(sPass keypress to self.w.iiN( ssizesmaxcolsselfspadding_valuessTruesleftsrightsmaxvalsswskeypressskey(sselfssizeskeysmaxvalssmaxcolsrightsleft((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypress s  c Csœt|idƒ otSn|i|tƒ\}}|d}|||f|d}|ii |ƒ}|tjotSn|\}}|||fSdS(s5Return the (x,y) coordinates of cursor within self.w.sget_cursor_coordsiiN(shasattrsselfswsNonespadding_valuesssizesTruesleftsrightsmaxcolsmaxvalssget_cursor_coordsscoordssxsy( sselfssizesmaxvalssrightsmaxcolscoordssysxsleft((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_cursor_coords's   cCsÒt|idƒ otSn|i|tƒ\}}|d}|||f|d}t |ƒt dƒjoH||jo |}n$|||jo||d}n||8}n|ii |||ƒSdS(spSet the cursor position with (x,y) coordinates of self.w. Returns True if move succeeded, False otherwise. smove_cursor_to_coordsiiN(shasattrsselfswsTruespadding_valuesssizesleftsrightsmaxcolsmaxvalsstypesxsmove_cursor_to_coordssy(sselfssizesxsysmaxvalssmaxcolsrightsleft((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysmove_cursor_to_coords4s   c Cs¤t|idƒ otSn|i||ƒ\} } |d}|| jp||| jotSn|| | f|d}|ii ||||| ||ƒSdS(s.Send mouse event if position is within self.w.s mouse_eventiiN(shasattrsselfswsFalsespadding_valuesssizesfocussleftsrightsmaxcolsxsmaxvalss mouse_eventseventsbuttonsy( sselfssizeseventsbuttonsxsysfocussmaxvalssmaxcolsrightsleft((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys mouse_eventFs cCs–t|idƒ otSn|i|tƒ\}}|d}|||f|d}|ii |ƒ}t |ƒt dƒjo ||Sn|SdS(s1Return the preferred column from self.w, or None.s get_pref_coliiN(shasattrsselfswsNonespadding_valuesssizesTruesleftsrightsmaxcolsmaxvalss get_pref_colsxstype(sselfssizesmaxvalssrightsmaxcolsxsleft((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_pref_colSs  (s__name__s __module__sNones__init__sFalsesrenderspadding_valuess selectablesrowsskeypresssget_cursor_coordssmove_cursor_to_coordss mouse_events get_pref_col(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysPaddingËs #       s FillerErrorcBstZRS(N(s__name__s __module__(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys FillerError`ssFillercBsetZdeed„Zd„Zd„Zed„Zd„Zd„Z d„Z d „Z d „Z RS( Nsmiddlec Cs”|iiƒt||tƒ\}}}}||_ ||f\|_ |_ ||f\|_|_|idtfjo ||_n t|_dS(s` body -- a flow widget or box widget to be filled around valign -- one of: 'top', 'middle', 'bottom' ('fixed top', rows) ('fixed bottom', rows) ('relative', percentage 0=top 100=bottom) height -- one of: None if body is a flow widget number of rows high ('fixed bottom', rows) Only if valign is 'fixed top' ('fixed top', rows) Only if valign is 'fixed bottom' ('relative', percentage of total height) min_height -- one of: None if no minimum or if body is a flow widget minimum number of rows for the widget when height not fixed If body is a flow widget then height and min_height must be set to None. Filler widgets will try to satisfy height argument first by reducing the valign amount when necessary. If height still cannot be satisfied it will also be reduced. sfixedN(sselfs_Filler__supers__init__sdecompose_valign_heightsvalignsheights FillerErrorsvtsvashtshasbodys valign_types valign_amounts height_types height_amountsNones min_height( sselfsbodysvalignsheights min_heightsvashtsvtsha((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__ds   cCs|iiƒSdS(sReturn selectable from body.N(sselfsbodys selectable(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectableˆscCs†|\}}|itjo>|ii|fd|ƒ}t |i |i d|t|ƒSnt |i |i |i|i |i |ƒSdS(suReturn the number of rows to pad on the top and bottom. Override this method to define custom padding behaviour.sfocussfixedN(smaxcolsmaxrowsselfs height_typesNonesbodysrowssfocussheightscalculate_fillers valign_types valign_amounts height_amounts min_height(sselfs.2sfocussmaxcolsmaxrowsheight((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys filler_valuesŒs    c Cs6|\}}|i||f|ƒ\}}|itjo|i i |f|ƒ}n$|i i ||||f|ƒ}t |ƒ}|o |i ƒ|jo |itj oD|i\} }||jo$|i||d|||ƒqón|i ƒ|jo|id|ƒ|Sn|i||ƒ|SdS(s/Render self.body with space above and/or below.iiN(smaxcolsmaxrowsselfs filler_valuessfocusstopsbottoms height_typesNonesbodysrenderscanvsCompositeCanvassrowsscursorscxscystrimspad_trim_top_bottom( sselfs.2sfocussmaxcolsmaxrowscanvsbottomstopscyscx((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrenderœs # * (cCsy|\}}|itjo|ii|f|ƒSn|i||ft ƒ\}}|ii||||f|ƒSdS(sPass keypress to self.body.N( smaxcolsmaxrowsselfs height_typesNonesbodyskeypressskeys filler_valuessTruestopsbottom(sselfs.2skeysmaxcolsmaxrowsbottomstop((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypress±s c CsØ|\}}t|idƒ otSn|i||ftƒ\}}|i tjo|ii |fƒ}n!|ii ||||fƒ}| otSn|\}}||jo|d}n|||fSdS(s+Return cursor coords from self.body if any.sget_cursor_coordsiN(smaxcolsmaxrowshasattrsselfsbodysNones filler_valuessTruestopsbottoms height_typesget_cursor_coordsscoordssxsy( sselfs.2smaxcolsmaxrowsbottomscoordssysxstop((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_cursor_coords¹s    cCs—|\}}t|idƒ otSn|itjo|ii|fƒ}n?|i ||ft ƒ\}}|ii||||fƒ}|SdS(s&Return pref_col from self.body if any.s get_pref_colN( smaxcolsmaxrowshasattrsselfsbodysNones height_types get_pref_colsxs filler_valuessTruestopsbottom(sselfs.2smaxcolsmaxrowsbottomsxstop((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_pref_colËs  cCsÉ|\}}t|idƒ otSn|i||ftƒ\}}||jp|||jot Sn|i t jo!|ii |f|||ƒSn|ii ||||f|||ƒSdS(sPass to self.body.smove_cursor_to_coordsN(smaxcolsmaxrowshasattrsselfsbodysTrues filler_valuesstopsbottomsrowsFalses height_typesNonesmove_cursor_to_coordsscol(sselfs.2scolsrowsmaxcolsmaxrowsbottomstop((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysmove_cursor_to_coordsÙs c CsÛ|\}}t|idƒ otSn|i||ftƒ\} } || jp||| jotSn|i t jo*|ii |f||||| |ƒSn|ii ||| | f||||| |ƒSdS(sPass to self.body.s mouse_eventN(smaxcolsmaxrowshasattrsselfsbodysFalses filler_valuessTruestopsbottomsrows height_typesNones mouse_eventseventsbuttonscolsfocus( sselfs.2seventsbuttonscolsrowsfocussmaxcolsmaxrowsbottomstop((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys mouse_eventès ( s__name__s __module__sNones__init__s selectables filler_valuessFalsesrenderskeypresssget_cursor_coordss get_pref_colsmove_cursor_to_coordss mouse_event(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysFillercs$       s OverlayErrorcBstZRS(N(s__name__s __module__(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys OverlayErrorøssOverlaycBsYtZeed„Zd„Zd„Zd„Zd„Zd„Ze d„Z d„Z RS( Nc Cs|iiƒt||tƒ\}} } } t ||tƒ\}} } }||_||_|| f\|_|_| | f\|_|_|io |idjo ||_n t|_|| f\|_|_| |f\|_|_|idtfjo ||_n t|_dS(s& top_w -- a flow, box or fixed widget to overlay "on top" bottom_w -- a box widget to appear "below" previous widget align -- one of: 'left', 'center', 'right' ('fixed left', columns) ('fixed right', columns) ('relative', percentage 0=left 100=right) width -- one of: None if top_w is a fixed widget number of columns wide ('fixed right', columns) Only if align is 'fixed left' ('fixed left', columns) Only if align is 'fixed right' ('relative', percentage of total width) valign -- one of: 'top', 'middle', 'bottom' ('fixed top', rows) ('fixed bottom', rows) ('relative', percentage 0=top 100=bottom) height -- one of: None if top_w is a flow or fixed widget number of rows high ('fixed bottom', rows) Only if valign is 'fixed top' ('fixed top', rows) Only if valign is 'fixed bottom' ('relative', percentage of total height) min_width -- the minimum number of columns for top_w when width is not fixed min_height -- one of: minimum number of rows for the widget when height not fixed Overlay widgets behave similarly to Padding and Filler widgets when determining the size and position of top_w. bottom_w is always rendered the full size available "below" top_w. sfixedN(sselfs_Overlay__supers__init__sdecompose_align_widthsalignswidths OverlayErrorsatsaaswtswasdecompose_valign_heightsvalignsheightsvtsvashtshastop_wsbottom_ws align_types align_amounts width_types width_amounts min_widthsNones valign_types valign_amounts height_types height_amounts min_height(sselfstop_wsbottom_wsalignswidthsvalignsheights min_widths min_heightsaasvaswashtswtsvtsatsha((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__üs #      cCs|iiƒSdS(sReturn selectable from top_w.N(sselfstop_ws selectable(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectable6scCs|ii||ƒSdS(sPass keypress to top_w.N(sselfstop_wskeypressssizeskey(sselfssizeskey((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypress:scCs™t|idƒ otSn|i|tƒ\}}}}|i i t ||t||fƒ\}}|tjotd}n||||fSdS(s(Return cursor coords from top_w, if any.sget_cursor_coordsiN(shasattrsselfsbodysNonescalculate_padding_fillerssizesTruesleftsrightstopsbottomstop_wsget_cursor_coordssmaxcolsmaxrowsxsy(sselfssizesrightsbottomsysxstopsleft((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_cursor_coords>s . c Cs¢|\}}t}|itjo]|iid|ƒ\}}|p t d‚t |i |i d|t|dtƒ\} }n1t |i |i |i|i|i|ƒ\} }|oRt|i|id|t|ƒ\} }|| ||jo|| |}qŽn‡|itjoF|ii|fd|ƒ}t|i|id|t|ƒ\} }n1t|i|i|i|i|i|ƒ\} }| || |fSdS(s1Return (padding left, right, filler top, bottom).sfocussfixed widget must have a heightsfixedsclipN(smaxcolsmaxrowsNonesheightsselfs width_typestop_wspacksfocusswidthsAssertionErrorscalculate_paddings align_types align_amountsTruesleftsrights width_amounts min_widthscalculate_fillers valign_types valign_amountstopsbottoms height_typesbodysrowss height_amounts min_height( sselfs.2sfocussmaxcolsmaxrowsrightsbottomsheightswidthstopsleft((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyscalculate_padding_fillerJs4           cCsu|itjofSn|\}}|itj o |itjo|||fSn||||||fSdS(s!Return the size to pass to top_w.N( sselfs width_typesNonessizesmaxcolsmaxrows height_typesleftsrightstopsbottom(sselfssizesleftsrightstopsbottomsmaxcolsmaxrow((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys top_w_sizels  c Cs|i||ƒ\}}}}|ii |ƒ}|i i |i |||||ƒ|ƒ}|djp |djo2t|ƒ}|itd|ƒtd|ƒƒn|djp |djo2t|ƒ}|itd|ƒtd|ƒƒnt||td|ƒ|ƒSdS(s#Render top_w overlayed on bottom_w.iN(sselfscalculate_padding_fillerssizesfocussleftsrightstopsbottomsbottom_wsrendersbottom_cstop_ws top_w_sizestop_csCompositeCanvasspad_trim_left_rightsminspad_trim_top_bottoms CanvasOverlaysmax( sselfssizesfocussrightsbottomstop_cstopsbottom_csleft((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrenderxs * & &c CsÊt|idƒ otSn|i||ƒ\} }} } |\}} || jp,|||jp|| jp|| | jotSn|ii|i|| || | ƒ|||| || |ƒSdS(s0Pass event to top_w, ignore if outside of top_w.s mouse_eventN(shasattrsselfstop_wsFalsescalculate_padding_fillerssizesfocussleftsrightstopsbottomsmaxcolsmaxrowscolsrows mouse_events top_w_sizeseventsbutton( sselfssizeseventsbuttonscolsrowsfocussmaxcolsrightsbottomstopsmaxrowsleft((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys mouse_event‰s  <!( s__name__s __module__sNones__init__s selectableskeypresssget_cursor_coordsscalculate_padding_fillers top_w_sizesFalsesrenders mouse_event(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysOverlayûs:   " cCssy\|dddfjo|df}n|\}}|ddddddfjpt‚Wn|d| ƒ‚nXyy|tjottf}n*t|ƒtdƒjod |f}n|\}}|d dddtfjpt‚Wn|d | ƒ‚nX|djo |djo|d ƒ‚n|djo |djo|d ƒ‚n||||fSdS( Nsleftscentersrightis fixed lefts fixed rightsrelatives”align value %s is not one of 'left', 'center', 'right', ('fixed left', columns), ('fixed right', columns), ('relative', percentage 0=left 100=right)sfixeds~width value %s is not one of ('fixed', columns width), ('fixed right', columns), ('relative', percentage of total width), Nones8fixed left width may only be used with fixed right aligns8fixed right width may only be used with fixed left align( saligns align_types align_amountsAssertionErrorserrswidthsNonestypes width_types width_amount(salignswidthserrs width_types align_types align_amounts width_amount((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysdecompose_align_widthšs* *  'cCsgy\|dddfjo|df}n|\}}|ddddddfjpt‚Wn|d| ‚nXyy|tjottf}n*t|ƒtdƒjod |f}n|\}}|td dddfjpt‚Wn|d | ‚nX|djo |djo |d ‚n|djo |djo |d ‚n||||fSdS( Nstopsmiddlesbottomis fixed tops fixed bottomsrelativesInvalid valign: %ssfixedsInvalid height: %ss:fixed top height may only be used with fixed bottom valigns:fixed bottom height may only be used with fixed top valign( svaligns valign_types valign_amountsAssertionErrorserrsheightsNonestypes height_types height_amount(svalignsheightserrs height_types height_amounts valign_types valign_amount((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysdecompose_valign_height¾s* *  '  c Cs |djo |}n’|djo<t||ddƒ}|tj ot||ƒ}q¨nI|ddfjpt‚|||}|tj ot||ƒ}n||joddfSn|djo?|}|||jo||||fSn||dfSnÀ|djo?|}|||jo||||fSnd||fSnt|djo t|||ddƒ}nG|djo||}n,|d jot||d ƒ}nd}|||jo||}n|djo d}n|||}||fSdS( Nsfixedsrelativeidf0.5s fixed bottoms fixed topisbottomsmiddlei( s height_types height_amountsheightsintsmaxrows min_heightsNonesmaxsAssertionErrors valign_amounts valign_typestopsbottom( s valign_types valign_amounts height_types height_amounts min_heightsmaxrowstopsbottomsheight((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyscalculate_fillerÙsF             c CsZ|djo |}n’|djo<t||ddƒ}|tj ot||ƒ}q¨nI|ddfjpt‚|||}|tj ot||ƒ}n||jp||jo| oddfSn|djo?|} | ||jo| || |fSn||dfSnÔ|djo?|}|||jo||||fSnd||fSnˆ|djo t|||ddƒ} n[|djo||} n@|d jot||d ƒ} n|d jpt‚d} ||jo:| ||jo||} n| djo d} q>n||| }| |fSdS( Nsfixedsrelativeidf0.5s fixed rights fixed leftisrightscenterisleft(s width_types width_amountswidthsintsmaxcols min_widthsNonesmaxsAssertionErrors align_amountsclips align_typesleftsright( s align_types align_amounts width_types width_amounts min_widthsmaxcolsclipsrightswidthsleft((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyscalculate_paddingsJ     "        sFramecBs­tZeedd„Zd„Zd„ZeeeƒZd„Zd„Z eee ƒZ d„Z d„Z ee e ƒZ d „Zd „Zed „Zd „Zd „ZRS(NsbodycCs5|iiƒ||_||_||_||_ dS(sÏ body -- a box widget for the body of the frame header -- a flow widget for above the body (or None) footer -- a flow widget for below the body (or None) focus_part -- 'header', 'footer' or 'body' N( sselfs _Frame__supers__init__sheaders_headersbodys_bodysfooters_footers focus_part(sselfsbodysheadersfooters focus_part((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__9s     cCs |iSdS(N(sselfs_header(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_headerGscCs||_|iƒdS(N(sheadersselfs_headers _invalidate(sselfsheader((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_headerIs cCs |iSdS(N(sselfs_body(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_bodyNscCs||_|iƒdS(N(sbodysselfs_bodys _invalidate(sselfsbody((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysset_bodyPs cCs |iSdS(N(sselfs_footer(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_footerUscCs||_|iƒdS(N(sfootersselfs_footers _invalidate(sselfsfooter((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_footerWs cCs4|dddfjpt‚||_|iƒdS(sVSet the part of the frame that is in focus. part -- 'header', 'footer' or 'body' sheadersfootersbodyN(spartsAssertionErrorsselfs focus_parts _invalidate(sselfspart((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_focus\s c Cs|\}}d}}|io,|ii|f|idjo|ƒ}n|i o,|i i|f|idjo|ƒ}n|}|idjo\||jod|f||ffSn||8}||jo||f||ffSqænó|idjo\||jo|df||ffSn||8}||jo||f||ffSqæn‡|||jout d|dƒ}||djod|f||ffSn||8}t d|dƒ}||f||ffSn||f||ffSdS(sœCalculate the number of rows for the header and footer. Returns (head rows, foot rows),(orig head, orig foot). orig head/foot are from rows() calls. isheadersfooteriN( smaxcolsmaxrowsfrowsshrowssselfsheadersrowss focus_partsfocussfooters remainingsmaxsrless1( sselfs.2sfocussmaxcolsmaxrows remainingsrless1sfrowsshrows((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysframe_top_bottomes:           cCs|\}}|i||f|ƒ\\}} \} } g}g} t } |o || jo8t |idƒi||f|o |idjƒ} nQ|oI|ii|f|o |idjƒ} | iƒ| jp td‚n| o3|i| d|idjfƒ| i|iƒn| ||jof|ii||| |f|o |idjƒ}|i|d|idjfƒ| i|iƒnt }| o | | jo8t |idƒi|| f|o |idjƒ}nQ| oI|ii|f|o |idjƒ}|iƒ| jp td‚n|o3|i|d|idjfƒ| i|iƒnt|ƒSdS(sRender frame and return it.stopsheadersrows, render mismatchsbodysbottomsfooterN(smaxcolsmaxrowsselfsframe_top_bottomsfocusshtrimsftrimshrowssfrowss combinelists depends_onsNonesheadsFillersheadersrenders focus_partsrowssAssertionErrorsappendsbodysfootsfooters CanvasCombine(sselfs.2sfocussmaxcolsmaxrowsbodyshtrims combinelistsfootsftrims depends_onsfrowssheadshrows((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrender•s@ *!!cCsu|\}}|idjo |itj o3|iiƒ o|Sn|ii|f|ƒSn|idjo |i tj o3|i iƒ o|Sn|i i|f|ƒSn|idjo|Sn|}|itj o||ii |fƒ8}n|i tj o||i i |fƒ8}n|djo|Sn|i iƒ o|Sn|i i||f|ƒSdS(s!Pass keypress to widget in focus.sheadersfootersbodyiN( smaxcolsmaxrowsselfs focus_partsheadersNones selectableskeyskeypresssfooters remainingsrowssbody(sselfs.2skeysmaxcolsmaxrows remaining((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypressÃs*    c Cs0|\}}|i||f|ƒ\\} } \} } || jo—|o |i dj}t |ƒo |djo%|iiƒo|idƒq˜nt|idƒ otSn|ii|f|||||ƒSn||| joŸ|o |i dj}t |ƒo |djo%|iiƒo|idƒq@nt|idƒ otSn|ii|f|||||| |ƒSn|o |i dj}t |ƒo |djo%|iiƒo|idƒqßnt|idƒ otSn|ii||| | f||||| |ƒSdS(s^ Pass mouse event to appropriate part of frame. Focus may be changed on button 1 press. sheaderis mouse_eventsfootersbodyN(smaxcolsmaxrowsselfsframe_top_bottomsfocusshtrimsftrimshrowssfrowssrows focus_partsis_mouse_pressseventsbuttonsheaders selectables set_focusshasattrsFalses mouse_eventscolsfootersbody( sselfs.2seventsbuttonscolsrowsfocussmaxcolsmaxrowshtrimsftrimshrowssfrows((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys mouse_eventÜs8 * (s__name__s __module__sNones__init__s get_headers set_headerspropertysheadersget_bodysset_bodysbodys get_footers set_footersfooters set_focussframe_top_bottomsFalsesrenderskeypresss mouse_event(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysFrame8s       0 . sAttrWrapcBs›tZdZed„Zd„Zd„ZeeeƒZd„Z d„Z ee e ƒZ d„Z d„Z ee e ƒZed„Zd „Zd „ZRS( s^ AttrWrap is a decorator that changes the default attribute for a FlowWidget or BoxWidget cCs||_||_||_dS(sÝ w -- widget to wrap attr -- attribute to apply to w focus_attr -- attribute to apply when in focus, if None use attr This object will pass all function calls and variable references to the wrapped widget. N(swsselfs_wsattrs_attrs focus_attrs _focus_attr(sselfswsattrs focus_attr((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__ s  cCs |iSdS(N(sselfs_w(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_wscCs||_|iƒdS(N(swsselfs_ws _invalidate(sselfsw((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysset_ws cCs |iSdS(N(sselfs_attr(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_attrscCs||_|iƒdS(N(sattrsselfs_attrs _invalidate(sselfsattr((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysset_attr s cCs |iSdS(N(sselfs _focus_attr(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_focus_attr%scCs||_|iƒdS(N(s focus_attrsselfs _focus_attrs _invalidate(sselfs focus_attr((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysset_focus_attr's cCsf|i}|o |itj o |i}n|ii|d|ƒ}t |ƒ}|i |ƒ|SdS(s Render self.w and apply attribute. Return canvas. size -- (maxcol,) if self.w contains a flow widget or (maxcol, maxrow) if it contains a box widget. sfocusN( sselfsattrsfocuss focus_attrsNoneswsrenderssizescanvsCompositeCanvass fill_attr(sselfssizesfocussattrscanv((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrender,s    cCs|iiƒSdS(N(sselfsws selectable(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectable:scCst|i|ƒSdS(sCall getattr on wrapped widget.N(sgetattrsselfswsname(sselfsname((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys __getattr__=s(s__name__s __module__s__doc__sNones__init__sget_wsset_wspropertyswsget_attrsset_attrsattrsget_focus_attrsset_focus_attrs focus_attrsFalsesrenders selectables __getattr__(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysAttrWraps         s PileErrorcBstZRS(N(s__name__s __module__(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys PileErrorBssPilecBs’tZed„Zd„Zd„Zd„Zd„Zed„Zd„Z e d„Z d „Z e d „Z d „Zd „Zd „Zd„ZRS(NcCs’|iiƒt|ƒ|_g|_x&tt|ƒƒD]}||}t |ƒt fƒjo|ii ddfƒn¬|ddjo9|\}}||i|<|ii |tfƒ|}nb|dddfjo<|\}}}||i|<|ii ||fƒ|}ntd| ‚|tjo |iƒo |}q8q8W|ii|iƒ|tjo d}n|i|ƒt|_dS(s widget_list -- list of widgets focus_item -- widget or integer index, if None the first selectable widget will be chosen. widget_list may also contain tuples such as: ('flow', widget) always treat widget as a flow widget ('fixed', height, widget) give this box widget a fixed height ('weight', weight, widget) if the pile is treated as a box widget then treat widget as a box widget with a height based on its relative weight value, otherwise treat widget as a flow widget widgets not in a tuple are the same as ('weight', 1, widget) If the pile is treated as a box widget there must be at least one 'weight' tuple in widget_list. sweightiisflowsfixedswidget list item invalid %sN(sselfs _Pile__supers__init__s MonitoredLists widget_lists item_typessrangeslensiswstypesappendsfswidgetsNonesheights PileErrors focus_items selectablesset_modified_callbacks _invalidates set_focusspref_col(sselfs widget_lists focus_itemswidgetsfsheightsisw((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__Fs6           cCs|iiƒSdS(s,Return True if the focus item is selectable.N(sselfs focus_items selectable(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectableuscCs…t|ƒtdƒjo>|djo|t|iƒjpt‚|i||_n!||ijpt‚||_|iƒdS(s=Set the item in focus. item -- widget or integer indexiN(stypesitemslensselfs widget_listsAssertionErrors focus_items _invalidate(sselfsitem((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_focusys* cCs |iSdS(sReturn the widget in focus.N(sselfs focus_item(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_focus…scCs.|iƒ otSn|i|ƒ|iSdS(s4Return the preferred column for the cursor, or None.N(sselfs selectablesNones_update_pref_col_from_focusssizespref_col(sselfssize((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_pref_col‰s  cCs“|d}|i|\}}|djo||fSnX|djot|ƒdjo0| o|i ||ƒ}n|||fSn|fSdS(sB Return a size appropriate for passing to self.widget_list[i] isfixedsweightiN( ssizesmaxcolsselfs item_typessisfsheightslens item_rowss get_item_rowssfocus(sselfssizesisfocuss item_rowssmaxcolsfsheight((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_item_sizes   c CsEt} |d}t|ƒdjo|d} ng}| tjoxvt|i|i ƒD]_\\}} } |djo|i | ƒqZ|i | i|fd|o |i| jƒƒqZW|Snd}x¸t|i|i ƒD]¡\\}} } |djoC| i|fd|o |i| jƒ}|i |ƒ| |8} qá|djo|i | ƒ| | 8} qá|i tƒ|| 7}qáW|djo td‚n| djo d} nd}x}t|i|ƒD]i\\}} } | tjo@tt| ƒ| |dƒ}|||<| |8} || 8}n|d7}qÐW|Sd S( sR Return a list of the number of rows used by each widget in self.item_list. iiisfixedsfocussflows:No weighted widgets found for Pile treated as a box widgetf0.5N(sNones remainingssizesmaxcolslenslszipsselfs item_typess widget_listsfsheightswsappendsrowssfocuss focus_itemswtotals PileErrorsislisintsfloat( sselfssizesfocussrowsslsfsiswtotalsmaxcolswslisheights remaining((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_item_rowsŸsN   3 (           c Csl|d}t}g}d}x?t|i|i ƒD](\\}} } |i | j} t} |djo&| i|| fd|o| ƒ} n¤|djpt|ƒdjo#| i|fd|o| ƒ} na|tjo|i||ƒ}n||}|djo&| i||fd|o| ƒ} n| o|i| || fƒn|d7}q2Wt|ƒSdS(se Render all widgets in self.widget_list and return the results stacked one on top of the next. isfixedsfocussflowiN(ssizesmaxcolsNones item_rowss combinelistsiszipsselfs item_typess widget_listsfsheightsws focus_items item_focusscanvsrendersfocusslens get_item_rowssrowssappends CanvasCombine( sselfssizesfocussrowssfsis combinelistsmaxcols item_rowsscanvsws item_focussheight((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrenderØs4         c Cs—|iiƒ otSnt|idƒ otSn|ii|iƒ}|i|\}}t}|d}|djp|djot|ƒdjoc|djo |}n1|tjo|i|dtƒ}n||}|ii||fƒ} n|ii|fƒ} | tjotSn| \} } |djoI|tjo|i|dtƒ}nx || D]}| |7} qqWn| | fSdS(s2Return the cursor coordinates of the focus widget.sget_cursor_coordsisfixedsweightisfocusN(sselfs focus_items selectablesNoneshasattrs widget_listsindexsis item_typessfsheights item_rowsssizesmaxcolslensmaxrows get_item_rowssTruesget_cursor_coordsscoordssxsysr( sselfssizesfsismaxcols item_rowssheightsmaxrowsrscoordssysx((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_cursor_coordsùs8 -          cCs&|\}t|i|f|ƒƒSdS(s3Return the number of rows required for this widget.N(smaxcolssumsselfs get_item_rowssfocus(sselfs.2sfocussmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrows s cCs6|d}t} t|ƒdjo|i|dtƒ} n|ii |i ƒ}|i |\}} |i iƒoL|i||t| ƒ} |i i| |ƒ}|ddfjo|SqÀn|djot|dddƒ} nt|dt|iƒƒ} | o|i|dtƒ} nx| D]ÿ}|i|iƒ oq+n|i|ƒ|i }|i|ƒt|i dƒ od Sn|i |\}} | |}|djot|dddƒ} n t|ƒ} xG| D]?}|i||t| ƒ} |i i| |i|ƒoPqãqãWd Sq+W|Sd S( sdPass the keypress to the widget in focus. Unhandled 'up' and 'down' keys may cause a focus change.iisfocussupsdowniiÿÿÿÿsmove_cursor_to_coordsN( ssizesmaxcolsNones item_rowsslensselfs get_item_rowssTrues widget_listsindexs focus_itemsis item_typessfsheights selectables get_item_sizestsizeskeypressskeysranges candidatessjs_update_pref_col_from_focuss old_focuss set_focusshasattrsrowssrowlistsrowsmove_cursor_to_coordsspref_col(sselfssizeskeysrowsrowssfsisjsmaxcols item_rowssheightsrowlists candidatesstsizes old_focus((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypress! sL          cCsv|i}t|dƒ odSn|ii|ƒ}|i||t ƒ}|i |ƒ}|t j o ||_ ndS(s+Update self.pref_col from the focus widget.s get_pref_colN(sselfs focus_itemswidgetshasattrs widget_listsindexsis get_item_sizessizesTruestsizes get_pref_colspref_colsNone(sselfssizestsizesiswidgetspref_col((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys_update_pref_col_from_focusU s  c Cs||_t}d} |i||ƒ}x@t ||i ƒD],\} } | | |joPn| | 7} q:W| iƒ otSnt| dƒo\|i i| ƒ}|i||||ƒ}| i|||| ƒ}|tjotSqìn|i| ƒtSdS(s#Capture pref col and set new focus.ismove_cursor_to_coordsN(scolsselfspref_colsTruesfocusswrows get_item_rowsssizes item_rowsszips widget_listsrswsrows selectablesFalseshasattrsindexsis get_item_sizestsizesmove_cursor_to_coordssrvals set_focus( sselfssizescolsrowstsizesisrvalsfocuss item_rowsswrowsrsw((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysmove_cursor_to_coordsb s(     c Csd} |i||ƒ} x@t| |iƒD],\} } | | |joPn| | 7} q+W|o |i | j}t |ƒo |djo"| iƒo|i| ƒq­nt| dƒ otSn|ii| ƒ}|i|||| ƒ}| i|||||| |ƒSdS(sS Pass the event to the contained widget. May change focus on button 1 press. iis mouse_eventN(swrowsselfs get_item_rowsssizesfocuss item_rowsszips widget_listsrswsrows focus_itemsis_mouse_pressseventsbuttons selectables set_focusshasattrsFalsesindexsis get_item_sizestsizes mouse_eventscol( sselfssizeseventsbuttonscolsrowsfocusstsizesis item_rowsswrowsrsw((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys mouse_event| s$  (s__name__s __module__sNones__init__s selectables set_focuss get_focuss get_pref_cols get_item_sizes get_item_rowssFalsesrendersget_cursor_coordssrowsskeypresss_update_pref_col_from_focussmove_cursor_to_coordss mouse_event(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysPileEs /     9 ! #  4 s ColumnsErrorcBstZRS(N(s__name__s __module__(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys ColumnsError— ssColumnscBs¡tZdeded„Zd„Zd„Zd„Zd„Zd„Zd „Z e d „Z d „Z d „Z d „Zd„Zdd„Zd„Zd„ZRS(Niic Csh|iiƒt|ƒ|_g|_xÜtt|ƒƒD]È}||} t | ƒt fƒjo|ii ddfƒnb| dddfjo<| \}} }||i|<|ii || fƒ|} ntd| ‚|tjo | iƒo |}q8q8W|ii|iƒ||_|tjo d}n||_t|_||_||_t|_dS(sB widget_list -- list of flow widgets or list of box widgets dividechars -- blank characters between columns focus_column -- index into widget_list of column in focus, if None the first selectable widget will be chosen. min_width -- minimum width for each column before it is hidden box_columns -- a list of column indexes containing box widgets whose maxrow is set to the maximum of the rows required by columns not listed in box_columns. widget_list may also contain tuples such as: ('fixed', width, widget) give this column a fixed width ('weight', weight, widget) give this column a relative weight widgets not in a tuple are the same as ('weight', 1, widget) box_columns is ignored when this widget is being used as a box widget because in that case all columns are treated as box widgets. sweightiisfixedswidget list item invalid: %sN(sselfs_Columns__supers__init__s MonitoredLists widget_lists column_typessrangeslensiswstypesappendsfswidthswidgets ColumnsErrors focus_columnsNones selectablesset_modified_callbacks _invalidates dividecharss focus_colspref_cols min_widths box_columnss _cache_maxcol( sselfs widget_lists dividecharss focus_columns min_widths box_columnsswidgetsisfswswidth((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__œ s4            cCst|_|iiƒdS(N(sNonesselfs _cache_maxcols_Columns__supers _invalidate(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys _invalidateÎ s cCs||_|iƒdS(s9Set the column in focus by its index in self.widget_list.N(snumsselfs focus_cols _invalidate(sselfsnum((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysset_focus_columnÒ s cCs |iSdS(sReturn the focus column index.N(sselfs focus_col(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_focus_column× scCsvt|ƒtdƒjo4|djo|t|iƒjpt‚|}n|ii|ƒ}||_|i ƒdS(s=Set the item in focus. item -- widget or integer indexiN( stypesitemslensselfs widget_listsAssertionErrorspositionsindexs focus_cols _invalidate(sselfsitemsposition((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys set_focusÛ s*  cCs|i|iSdS(sReturn the widget in focus.N(sselfs widget_lists focus_col(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_focusç scCs|d}||ijo |iSn|i} t|iƒt|iƒf\}} || jo| ddfg|| } ng}g}||i }d} d} x™| D]‘\}}|djo |}n |i}|||i joPn|i|ƒ|||i 8}|djo|i|| fƒn| d7} qªW|o½|iƒtgi}|D]\}} ||ƒqa~ƒ}|t|ƒ|i} xf|D]Z\}} tt| ƒ||dƒ}t|i|ƒ}||| <| |8} ||8}q¡Wn||_||_|SdS(s”Return a list of column widths. size -- (maxcol,) if self.widget_list contains flow widgets or (maxcol, maxrow) if it contains box widgets. isweightisfixedf0.5N(ssizesmaxcolsselfs _cache_maxcols_cache_column_widthss column_typess col_typesslens widget_listslwlslctswidthssweighteds dividecharsssharedsgrowablesistswidthsstatic_ws min_widthsappendssortssums_[1]sweightswtotalsgrowsintsfloatsmax(sselfssizesweightedsstatic_wsweightsmaxcolswidthslwlssharedslctsgrowables col_typessgrowsiswidthss_[1]stswtotal((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys column_widthsë sN   $         3     c Cs|i|ƒ}| o'td|d|ddfdƒSnt}t|ƒdjo|ioŒd}xƒt t|ƒƒD]k}||ijoqzn||}|i |} | i|fd|o |i|jƒ}t||ƒ}qzWng}xØt t|ƒƒD]Ä}||}|i |} |o ||ijo||f} n|f|d} | i| d|o |i|jƒ} |t|ƒdjo||i7}n|i| ||i|j|fƒqWt|ƒ} | iƒ|djo"| id|d| iƒƒn| SdS(s–Render columns and return canvas. size -- (maxcol,) if self.widget_list contains flow widgets or (maxcol, maxrow) if it contains box widgets. s iisfocusN(sselfs column_widthsssizeswidthss SolidCanvassNones box_maxrowslens box_columnssrangesismcs widget_listswsrowssfocuss focus_colsmaxslssub_sizesrenderscanvs dividecharssappends CanvasJoinscolsspad_trim_left_right( sselfssizesfocussrowssmcsiswidthss box_maxrowslscanvssub_sizesw((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrender# sB'      & "cCsñ|i|i}|iƒ otSnt|dƒ otSn|i|ƒ}t |ƒ|idjotSn||i}|i |f|dƒ}|tjotSn|\}}||i|i7}|t||i ƒ7}||fSdS(s4Return the cursor coordinates from the focus widget.sget_cursor_coordsiN(sselfs widget_lists focus_colsws selectablesNoneshasattrs column_widthsssizeswidthsslenscolwsget_cursor_coordsscoordssxsys dividecharsssum(sselfssizeswidthsscoordsswscolwsysx((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_cursor_coordsO s"   c CsÔ|i|ƒ}t} d} xÍtt|ƒƒD]¹}|i |} | ||}| i ƒo~| |jo | tjo|| |f} Pn| |jo|| d| |joPn|| |f} ||joPqÚn||i} q.W| tjotSn| \}} }|i |} t| dƒo„t|ƒtdƒjo(ttd|| ƒ|| dƒ}n|}| i|| f|d||ƒ}|tjotSq°n||_||_|iƒtSdS(s8Choose a selectable column to focus based on the coords.iismove_cursor_to_coordsiN(sselfs column_widthsssizeswidthssNonesbestsxsrangeslensis widget_listswsends selectablescols dividecharssFalseshasattrstypesminsmaxsmove_xsmove_cursor_to_coordssrowsrvals focus_colspref_cols _invalidatesTrue( sselfssizescolsrowsendsiswidthssrvalsmove_xswsxsbest((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysmove_cursor_to_coordse sD  &    (      c Cs%|i|ƒ}d} xtt|ƒƒD]ñ}|| jot Sn|i |} | ||} || jo| |i } q(n|o |i|j}t|ƒo |djo"| iƒo|i| ƒqÑnt| dƒ ot Sn| i| | f|d|||| ||ƒSq(Wt SdS(sM Send event to appropriate column. May change focus on button 1 press. iis mouse_eventN(sselfs column_widthsssizeswidthssxsrangeslensiscolsFalses widget_listswsends dividecharssfocuss focus_colsis_mouse_pressseventsbuttons selectables set_focusshasattrs mouse_eventsrow( sselfssizeseventsbuttonscolsrowsfocussiswidthssendswsx((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys mouse_event s*     cCsM|d}|i|fƒ}|i|i}t|ƒ|idjodSnt }t |dƒom|i ||if|dƒ}t |ƒt dƒjo/||i|i7}|t||i ƒ7}qÑn|t jo |i}n|t jo |iƒo@||id}||i|i7}|t||i ƒ7}n|SdS(s-Return the pref col from the column in focus.iis get_pref_coliN(ssizesmaxcolsselfs column_widthsswidthss widget_lists focus_colswslensNonescolshasattrs get_pref_colstypes dividecharsssumspref_cols selectable(sselfssizesmaxcolswidthsswscol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_pref_col­ s& !  c Cs¯|\}|i|fƒ}d}xƒtt|ƒƒD]o}|io ||ijoq4n||}|i |}t ||i|fd|o |i|jƒƒ}q4W|SdS(spReturn the number of rows required by the columns. Only makes sense if self.widget_list contains flow widgets.isfocusN(smaxcolsselfs column_widthsswidthssrowssrangeslensis box_columnssmcs widget_listswsmaxsfocuss focus_col( sselfs.2sfocussmaxcolsrowssmcsiswidthssw((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrowsà s   #c CsY|itjo|Sn|i|ƒ}|idjp|it|ƒjo|Sn|i}||}|i |}|ddddfjo t|_ n|i |f|d|ƒ}|ddfjo|Sn|djot|dd d ƒ}nt|dt|ƒƒ}x;|D]3}|i |iƒ oqn|i|ƒd SqW|Sd S( s—Pass keypress to the focus column. size -- (maxcol,) if self.widget_list contains flow widgets or (maxcol, maxrow) if it contains box widgets. isupsdownspage ups page downisleftsrightiÿÿÿÿN(sselfs focus_colsNoneskeys column_widthsssizeswidthsslensismcs widget_listswspref_colskeypresssranges candidatessjs selectablesset_focus_column( sselfssizeskeyswsmcsiswidthssjs candidates((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypressÒ s0&      cCs|i|iiƒSdS(s0Return the selectable value of the focus column.N(sselfs widget_lists focus_cols selectable(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectableö s(s__name__s __module__sNones__init__s _invalidatesset_focus_columnsget_focus_columns set_focuss get_focuss column_widthssFalsesrendersget_cursor_coordssmove_cursor_to_coordss mouse_events get_pref_colsrowsskeypresss selectable(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysColumns› s2     8 ,  *    $s BoxAdaptercBswtZdZdgZd„Zed„Zd„Zd„Zd„Z d„Z d„Z d „Z ed „Z d „ZRS( sG Adapter for using a box widget where a flow widget would usually go srowscCs#|iiƒ||_||_dS(s{ Create a flow widget that contains a box widget box_widget -- box widget height -- number of rows for box widget N(sselfs_BoxAdapter__supers__init__sheights box_widget(sselfs box_widgetsheight((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys__init__ s  cCs|\}|iSdS(s Return self.height N(smaxcolsselfsheight(sselfs.2sfocussmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrows s cCs|iiƒSdS(s* Return box widget's selectable value N(sselfs box_widgets selectable(sself((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys selectable scCsB|\}t|idƒ otSn|ii||ifƒSdS(Nsget_cursor_coords(smaxcolshasattrsselfs box_widgetsNonesget_cursor_coordssheight(sselfs.2smaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysget_cursor_coords s cCsB|\}t|idƒ otSn|ii||ifƒSdS(Ns get_pref_col(smaxcolshasattrsselfs box_widgetsNones get_pref_colsheight(sselfs.2smaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys get_pref_col s cCs)|\}|ii||if|ƒSdS(N(smaxcolsselfs box_widgetskeypresssheightskey(sselfs.2skeysmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pyskeypress% s cCsH|\}t|idƒ otSn|ii||if||ƒSdS(Nsmove_cursor_to_coords( smaxcolshasattrsselfs box_widgetsTruesmove_cursor_to_coordssheightscolsrow(sselfs.2scolsrowsmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysmove_cursor_to_coords( s cCsQ|\}t|idƒ otSn|ii||if|||||ƒSdS(Ns mouse_event( smaxcolshasattrsselfs box_widgetsFalses mouse_eventsheightseventsbuttonscolsrowsfocus(sselfs.2seventsbuttonscolsrowsfocussmaxcol((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys mouse_event. s cCs;|\}|ii||if|ƒ}t|ƒ}|SdS(N(smaxcolsselfs box_widgetsrendersheightsfocusscanvsCompositeCanvas(sselfs.2sfocussmaxcolscanv((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pysrender4 s  cCst|i|ƒSdS(s Pass calls to box widget. N(sgetattrsselfs box_widgetsname(sselfsname((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys __getattr__9 s(s__name__s __module__s__doc__sno_caches__init__sFalsesrowss selectablesget_cursor_coordss get_pref_colskeypresssmove_cursor_to_coordss mouse_eventsrenders __getattr__(((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys BoxAdapterý s          (2sstringsutilscanvasssums MetaSupers MetaSignalss WidgetMetas Exceptions WidgetErrors validate_sizescache_widget_rendersnocache_widget_rendersnocache_widget_render_instancescache_widget_rowssobjectsWidgets FlowWidgets BoxWidgets fixed_sizes FixedWidgetsDividers SolidFills TextErrorsTextsEditsIntEdits WidgetWrapsSelectableIconsCheckBoxs RadioButtonsButtonsGridFlows PaddingErrorsPaddings FillerErrorsFillers OverlayErrorsOverlaysdecompose_align_widthsdecompose_valign_heightscalculate_fillersFalsescalculate_paddingsFramesAttrWraps PileErrorsPiles ColumnsErrorsColumnss BoxAdapter(+sIntEdits BoxWidgetsCheckBoxsOverlaysFillers WidgetWrapsPiles WidgetMetasDividersColumnssstringsWidgetsnocache_widget_render_instancessums PileErrorsPaddingsEdits SolidFills FixedWidgetscalculate_paddings FillerErrors WidgetErrors fixed_sizescalculate_fillersButtonsGridFlowsdecompose_align_widths RadioButtons validate_sizes TextErrors FlowWidgets PaddingErrorsAttrWraps OverlayErrorsdecompose_valign_heightsSelectableIconsTextsnocache_widget_renderscache_widget_renderscache_widget_rowss ColumnsErrors BoxAdaptersFrame((sD/mnt/gmirror/ports/devel/py-urwid/work/urwid-0.9.8.1/urwid/widget.pys?sd       ‘ÿ# \dD••Ÿ $  . 1Í=ÿSÿc