-í ˃æ>cs:dklZdklZdkTdkZdkZdkZdkZdkZdkZdk l Z l Z dk l Z dkZdkZdkZdkZdZdfd„ƒYZd fd „ƒYZd fd „ƒYZd fd„ƒYZdeefd„ƒYZedjo#eeƒZeiƒdkZeidƒeiiƒheid<eid<ei d<ei!d<ei"d<ei#d<ei$d<ei%dtZd„Zd„Zd„Zd„Zd„Zd„ZRS(NcsM||_t|_tƒ|_d|_tƒ|_t ƒ|_ |i ƒdS(Ni( sutilssscsNonesbgcharsLocks inputlockslockhelds statuslocksEventsstartups startthread(sssutil((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys__init__ðs      cs?tid|iddƒ|_|iidƒ|iiƒdS(NstargetsnamesInputHandler loopi(s threadutilsExitNotifyThreadsss bgreaderloopsthreads setDaemonsstart(ss((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys startthreadùscsÑxÊdoÂ|iiƒ|ip |itjo|iiƒ|iiƒnz|iiƒ|i i i ƒ}|iiƒz<|ip |itjot i|ƒn|i|ƒWd|iiƒXqWdS(Ni(sss statuslocksacquireslockheldsbgcharsNonesreleasesstartupswaitscsstdscrsgetchschscursessungetch(sssch((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys bgreaderloopÿs    csi|iiƒ|i}|}||_|o| on|o| o|iiƒn|ii ƒdS(sSets a "background" character handler. If a key is pressed while not doing anything else, it will be passed to this handler. callback is a function taking a single arg -- the char pressed. If callback is None, clears the request.N( sss statuslocksacquiresbgchars oldhandlerscallbacks newhandlersstartupssetsrelease(ssscallbacks newhandlers oldhandler((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys set_bgchars   cs4|iiƒ|iiƒd|_|iiƒdS(stCall this method when you want exclusive input control. Make sure to call input_release afterwards! iN(sss inputlocksacquires statuslockslockheldsrelease(ss((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys input_acquire$s    csA|iiƒd|_|iiƒ|iiƒ|iiƒdS(s1Call this method when you are done getting input.iN(sss statuslocksacquireslockheldsreleases inputlocksstartupsset(ss((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys input_release.s     (s__name__s __module__s__init__s startthreads bgreaderloops set_bgchars input_acquires input_release(((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys InputHandlerïs     s Blinkenlightscs§tZd„Zd„Zdd„Zd„Zd„Zed„Zd„Z d „Z d „Z ed „Z ed „Z d „Zdd„Zd„Zd„Zd„ZRS(Ncs¸h|_tƒ|_tƒ|_g|_ti|ƒ|i ƒt |iƒ|_ |i ƒi dƒ|itiƒ|i i|iƒtiti|iƒtƒ|_d|_dS(Nsredi(sssafsLocksaflocks CursesUtilscstexts BlinkenBases init_banners setupwindowss InputHandlers inputhandlersgettfssetcolors_msgsversionsbanners set_bgcharskeypressssignalsSIGWINCHs resizehandlers resizelocks resizecount(ss((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys init_banner7s       cs|iƒdS(N(sss resizeterm(ssssignumsframe((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys resizehandlerFsics|iidƒ o|id7_dSntititiƒ|iiƒ|ii ƒ|id7_x5|io*|ii ƒ|i ƒ|id8_qmW|ii ƒ|ii ƒ|ii ƒtiti|iƒ|otidƒ|idƒndS(Nii(sss resizelocksacquires resizecountssignalsSIGWINCHsSIG_IGNsaflockscslocksresets setupwindowssunlocksreleases resizehandlersdosleepstimessleeps resizeterm(sssdosleep((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys resizetermIs&         cs²tiiƒ o tiiƒodSny!ttidƒ odSnWn dSnXtiƒ}|o"ti ti |dƒdƒ Sn"t i ƒt i ƒtidƒdS(NisTERMi(ssyssstdoutsisattysstdinslensossenvironsforkspids WEXITSTATUSswaitpidscursessinitscrsendwinsexit(ssspid((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pysisusable]s!  "  cs¥|djodSnt|ƒdjo|iƒnytit|ƒƒ}Wntj o dSnX|t|iƒjodSn|i |i|ƒi ƒdS(Niÿsq( skeyschrsss terminatesacctkeyssindexs ValueErrorslenshotkeyssgetaccountframessyncnow(ssskeysindex((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pyskeypressws  csÉ|iiƒ|iiƒ|iiƒzo|iƒidƒ|i d|iƒi ƒƒ|i d||iƒi ƒƒ|i i ƒ|i iƒ}Wd|iiƒ|iiƒ|iiƒX|SdS(Nswhites *** Input Requireds+ *** Please enter password for account %s: (sss inputhandlers input_acquirestflocksacquirescslocksgettfssetcolors_addlines getcolorpairs accountnames logwindowsrefreshsgetstrspasswordsreleasesunlocks input_release(sss accountnamesconfigserrmsgspassword((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pysgetpasss       cs™|iiƒzwtid|iiddƒ|_|iƒ|iidt |i i ƒƒ|_ ti|i |iiddƒ|_ |i idƒ|i idƒ|i i|i ddƒ|iƒ|i i ƒ}|iƒ|iƒ|iid}d}g|_xk|D]c}tid|ii|dƒ}|i |i|t|ƒ|ii|ƒ|d7}|d8}qWtiƒWd|iiƒXdS(Nii(ssscslockscursessnewwinswidths bannerwindowssetupwindow_drawbannersheightslensafskeyss logheights logwindowsidloksscrolloksmovessetupwindow_drawlogsaccountsssortsreversespossindexshotkeyssaccounts accountwindows setwindowsacctkeyssappendsdoupdatesunlock(sssindexsaccountssaccounts accountwindowspos((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys setupwindows¡s4 ! &$     cs·|iio&|iititiƒtiB}n ti }|i i d|ƒ|i i dt it ifƒ|i i d|i iƒdtt iƒdt iƒ|i iƒdS(Ns s%s %sii(ssscs has_colorsgetpairscursess COLOR_WHITEs COLOR_BLUEsA_BOLDscolors A_REVERSEs bannerwindowsbkgdsaddstrsversions productnames versionstrsgetmaxyxslens copyrights noutrefresh(ssscolor((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pyssetupwindow_drawbanner¾s &  - csŠ|iio|iititiƒ}n ti}|i i d|ƒx.|i D]#\}}|i i d||ƒqRW|i iƒdS(Ns s (ssscs has_colorsgetpairscursess COLOR_WHITEs COLOR_BLACKscolorsA_NORMALs logwindowsbkgdstextslinesaddstrs noutrefresh(ssscolorsline((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pyssetupwindow_drawlogÌs   cs¿|tjo|iƒ}n|iiƒzu||ijo|i|Snt|i|ƒ|i|<|ii ƒz|ii ƒ|i ƒWd|ii ƒXWd|ii ƒX|i|SdS(N(s accountnamesNonesssgetthreadaccountsaflocksacquiresafsCursesAccountFramescslocksresets setupwindowssunlocksrelease(sss accountname((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pysgetaccountframeÖs     csád|jo/x$|idƒD]}|i|ƒqWdSn|iiƒ|iiƒzi|ii ƒ o |GHdSn|o|i ƒi |ƒn|i ||i ƒiƒƒ|iiƒWd|iiƒ|iiƒXdS(Ns (smsgssplitsthislinesss_msgstflocksacquirescslocksisactivescolorsgettfssetcolors_addlines getcolorpairs logwindowsrefreshsunlocksrelease(sssmsgscolorsthisline((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys_displayës$    cs„|iiƒzb|iid||ƒ|ii||fƒx.t |iƒ|i jo|id|_q@WWd|ii ƒXdS(Ns i( ssscslocks logwindowsaddstrsmsgscolorstextsappendslens logheightsunlock(sssmsgscolor((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys_addlines ics!|iiƒti||ƒdS(N(ssscsstopsUIBases terminates exitstatus(sss exitstatus((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys terminates cs!|iiƒti||ƒdS(N(ssscsstopsUIBasesthreadExceptionsthread(sssthread((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pysthreadExceptions cs|iiƒti|ƒdS(N(ssscsstopsUIBases mainException(ss((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys mainExceptions csF|iƒidƒ|id|d|dfƒti||ƒdS(NsredsNext sync in %d:%02di<(sssgettfssetcolors_msgs sleepsecss BlinkenBasessleep(sss sleepsecs((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pyssleeps(s__name__s __module__s init_banners resizehandlers resizetermsisusableskeypresssNonesgetpasss setupwindowsssetupwindow_drawbannerssetupwindow_drawlogsgetaccountframes_displays_addlines terminatesthreadExceptions mainExceptionssleep(((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys Blinkenlights6s              s__main__isblacksredsgreensyellowsbluesmagentascyanswhiteiiis Black/normal s%s s Blue/normal s Black/bright is Blue/bright (8s Blinkenlightss BlinkenBasesUIBases threadingsthreadstimessyssosssignals offlineimapsversions threadutilsofflineimap.threadutils MultiLockscursess curses.panelscurses.textpadscurses.wrappersacctkeyss CursesUtilsCursesAccountFramesCursesThreadFrames InputHandlers__name__sNonesxs init_bannerssleepscsstops COLOR_BLACKs COLOR_REDs COLOR_GREENs COLOR_YELLOWs COLOR_BLUEs COLOR_MAGENTAs COLOR_CYANs COLOR_WHITEsfgssnewwinsheightswidthswin1saddstrsitemssnamesfgsgetpairsgetmaxyxswin2swin3sA_BOLDswin4srefreshsstdscrs has_color(sCursesThreadFramesUIBases InputHandlerscursessfgsCursesAccountFramessyss Blinkenlightssfgssnames BlinkenBasesacctkeyssthreads CursesUtils MultiLockswin3ssignalswin1swin4swin2sversionstimesxsoss threadutil((s=/usr/pkg/lib/python2p2/site-packages/offlineimap/ui/Curses.pys?sf  6 $b69Gë      f &  '0  '>  .4  .