;ò zªè>c@s"dZdkZdkZdkZdkZdkZdkZdkZdkZdk Z dk Z dk Z dk Z dk Z dkZdkZdkZdkZdkZdkZdkZdkZdkZdfd„ƒYZdeifd„ƒYZdeifd„ƒYZeieedƒZeieƒeiei d ƒd ƒei!d joxei d ƒZ"e"oeie"d ƒn["ei#ƒZ$ei%d e$ddƒei%de$ddƒe$i&ƒ[$nBei!djo1ei dƒZ"e"oeie"d ƒn["nd„Z'dS(s%Module that interacts with Python/Tk.NsmainWincBs7tZdZd„Zd„Zd„Zd„Zd„Zei e i ƒZ d„Z d„Zd„Zd „Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zed„Zedd„Zd„Zd„Zeed„Zd„Zd„Zd„Z d„Z!dd„Z"d„Z#d„Z$d„Z%RS( s Tk interfacec CsV|t_t_t_t_t_atit ƒ|_g|_ g|_ g|_ d|_ t |_|iidƒtiƒ|_ti|iddƒ}|iddddd d ƒti|idd d |id dddƒ}|id|d d ddƒ|ii|dƒti|ƒ|_ti|iddddƒ|_|iid|d d ddƒ|iid|iƒ|iiddƒd|id„ƒ|iid?|i8ƒt9i:|i0d@d(d5dAdBdCdDdEfƒti;ƒ|_<ti=ƒ|_>|ii?ƒ|ii@dƒ|i@dƒtAƒdS(FNisPython/Tk Empire Interfacesnames statusbarssidesbottomsanchorsssfillsbothscoords textvariableswidthisreliefssunkensin_srightsEmpire coordinatessstatussexpandis sWelcome to empire!sdisabledsstatesmapframesclass_sMaps infoframeslefts cmdpromptsnesxs cCs|ihd|i<ƒS(Ns wraplength(scps configureseswidth(sescp((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pys¨ss Empire promptsioframesCensorsprompts scCs |idƒS(Ni(sss DoHistoryMove(sess((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pys¸sscCs |idƒS(Niÿÿÿÿ(sss DoHistoryMove(sess((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pys¹ss ioscrollbarsesysioboxsyscrollcommandsnextssescommands cCs |idƒS(Nsend(ssssee(sess((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysÌss Resize windowscCs|idddƒS(Nsscrolliÿÿÿÿspage(sssyview(sess((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysÕsscCs|idddƒS(Nsscrollispage(sssyview(sess((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysØsscCs|i|iiƒƒpdS(Nsbreak(sss insertTextscensgetKey(sess((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysÛss sdatasflushs subcommandsflashsinverseserror(BsselfsMapWinsviewersCenWinsLoginWinsTeleWinsOutWinsPmwsBalloonsDisplaysmsgQueuesstsLists updateListsatPromptsRootstitlesTkinters StringVarscoordsFrames statusbarspacksLabels coordLabelsbinds QueueStatuss queueStatussEntrysStatussDoStatussinsertsmapframes mapSubWinsmapsmapLists infoframes CmdPromptscenWinscensioframesPromptsDoCmdsDoCtldsfocuss ScrollbarsscrollYsMyTextssetsOutputs setEditablesyviewsDoLocateSectorsTk_PanespanedspanesGrips DoAltHandlersTk_VDBssetTextOptionssloginWins loginCallbacksteleWinstelegramWindowsupdate_idletasksspack_propagatesInitFileHandler(sselfs infoframesioframes statusbarspanes coordLabelsscrollYsmapframe((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pys__init__qs)      !   % "        cCsoy"|ii||iiƒƒ}Wn tj o|ii ƒn(X|ii ddƒ|ii d|ƒdS(s.Move up or down the command-line history list.isendN( sselfsioqsHistMovesoffsetsPromptsgetscmds IndexErrorsRootsbellsdeletesinsert(sselfsoffsetscmd((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pys DoHistoryMoveòs"cCs]|iiƒ}|iiddƒy|ii|ƒWn tj o|ii ƒnXdS(s5Tk callback: Accept the command, and send to server.isendN( sselfsPromptsgetscmdsdeletesioqsHistSends IndexErrorsRootsbell(sselfseventscmd((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysDoCmdüscCsÐ|i}t|ƒdjp |tijodSn|iiƒi d|ƒ|i i ƒ}ti |d|df|ƒ}ti |d|df|ƒ}|i i|d|d|d|dfƒdSdS(s$Tk callback: Handle Alt+key events.iNsinsertiiisbreak(seventskeysymskeyslensempDbspathDirectionssselfsRoots focus_lastforsinsertscensgetSectsrangesdirectionToSectorssect1ssect2sSetSect(sselfseventssect2ssect1srangeskey((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pys DoAltHandlers #  ,cCs|iidƒdS(Nsctld(sselfsioqsSend(sselfsevent((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysDoCtldsc CsÊ|i}d|i|if}|id|dddddƒ}|id|ddƒ}|i i|i ||ƒƒ}|o;t t|iƒƒ\}}|ii||||fƒn|iiƒdS( sqTk callback: Highlight a sector from its text description. This function will grab a sector designation (of the form x,y) from a text output window and highlight the sector on the map. It works with any text output window; in addition to the main command-line window, this function is called from the telegram/output windows. s@%s,%ss ^|[^-0-9,]s + 1 charssregexpis backwardss [^-0-9,]|$N(seventswidgetswinsxsysposssearchsstartsendsselfs sectorFormatsgetsmmsmapsintsgroupsscensSetSectsRootsbell( sselfseventsendsmmswinspossstartsysx((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysDoLocateSectors  cCsz|iidƒdg|id*t|iit|iƒƒ|iiddƒ|iidƒ|iidƒ|i2dS(s4Send the internal message queue to the Tk interface.isendis1.0send - 1000 linesN( sselfsOutputs setEditablesmsgQueuesapplysinsertstuplesdeletessee(sself((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pys displayMsgs2scCs„|i }|io)|dg|it|iƒ)d|_n/ddtiƒd|dg|it|iƒ)|o|iƒndS(s2empQueue handler: Note the beginning of a command.scommandis sspromptN( sselfsmsgQueues forceOutputsatPromptscmdslensempDbs GetPrompts displayMsgs(sselfscmds forceOutput((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysBegin?s   .c Csætt|ƒ}d|jo_|idƒ}x.t|ƒD] }|idƒ|i i ƒq8Wt i tt|ƒdƒ}nt|ƒ}ttidg||ƒ} d| jottttidg||ƒƒ}ddfddff} d} d}d dg}x•|oy| i| | dƒ}Wn%tj ot| ƒ}d}nXt i |dƒ| | | dg|t|ƒ)| |4||4| dA} qW||it|iƒ)n#d d|dg|it|iƒ)d|_d S( s0empQueue handler: Process a line of server data.isi€iÿÿÿsdatasinverseiis N(smapsordsmsgsochrscountsnumsrangesisremovesselfsRootsbellsstringsjoinschrslenslsoperatorsand_stsnamessnscontslstsindexsposs ValueErrorsmsgQueuesatPrompt( sselfsmsgscontslstsislsochrsnumsposstsnsnames((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysdataRs<     %   ."cCs¢|ii|ƒ}|o&|itt|iƒƒgdƒndd|dg|i t |i ƒ)|t j o'|i ||d|iiiƒ ƒnd|_dS(s%empQueue handler: Handle a subprompt.sprompts ssflushs subpromptiN(sselfs sectorFormatssearchsmsgsmms markSectorssmapsintsgroupssmsgQueueslenshdlsNones bufferStatuss queueStatussburstsgetsatPrompt(sselfsmsgshdlsmm((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysflushvs&" cCso|idƒo|iiiƒ o|iiƒn|tj o |dg|i t |i ƒ)nd|_ dS(s1empQueue handler: Note the answer to a subprompt.s subprompts subcommandiN( sselfs delStatuss queueStatussburstsgetsRootsbellsmsgsNonesmsgQueueslensatPrompt(sselfsmsg((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysAnswerƒs $  cCsXtiƒ}dd|dg|it|iƒ)|igdƒ|i|ƒd|_dS(s,empQueue handler: Note the end of a command.s sspromptiN( sempDbs GetPromptspsselfsmsgQueueslens markSectorss setpromptsatPrompt(sselfscmdsp((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysEnds  " cCsC|io|iƒntttiiƒƒo|iƒndS(s1empQueue handler: Note a lull in socket activity.N( sselfsmsgQueues displayMsgssfiltersNonesempDbsupdateDBsvaluessredraw(sself((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysProcess˜s  cCsŽtiƒ}|idjo&dd|dg|it|iƒ)n<|io1ddtidddg|it|iƒ)n|i |ƒdS(s8empQueue handler: Process an asynchronous prompt update.is sspromptsinformN( sempDbs GetPromptspsselfsatPromptsmsgQueueslensstsListsmegaDBs setprompt(sselfsp((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysinform¢s & 1cCs/dd|dg|it|iƒ)d|_dS(s7empQueue handler: Process an asynchronous line of data.s ssflashiN(smsgsselfsmsgQueueslensatPrompt(sselfsmsg((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysflash¯s"cCs9dd|dg|it|iƒ)d|_|iƒdS(s9empQueue handler: Process an internal error notification.s sserroriN(smsgsselfsmsgQueueslensatPrompts displayMsgs(sselfsmsg((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysErrorµs" cCs@|iodSn|tjotiƒ}n||idcCsq|i p"|iiƒititifjpAti i ƒi ƒp+ti i dd|i d|id|iƒS(Nssstateskeysymskeycode(sescharswidgets focus_gets __class__sMyTextsTkintersEntrysviewersRoots focus_lastforsfocussevent_generatesstateskeysymskeycode(se((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pyssR  N(swinsbind(sselfswin((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pys transferKeysscCs©|iiƒ}|iƒ}|idƒ}|idƒ}|djo||ddjod|}n||jp||djo|d}n|i d|ƒdS(s9Insert TXT into the current position in the command-line.sinsertsendis N( sselfsRoots focus_lastforsinpboxsgetscmdsindexsidxsendstxtsinsert(sselfstxtsendsidxscmdsinpbox((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pys insertTexts "icCsRx|iD]}|i|ƒq Wx*tttii ƒƒD]}|i ƒq:WdS(s7DB handler: Database has changed - update the displays.N( sselfs updateListsisredrawstotalsfiltersNonesempDbsupdateDBsvaluessclear(sselfstotalsi((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysredraw)s cGs(x!|iD]}t|i|ƒq WdS(s%Send markSectors request to all maps.N(sselfsmapListsisapplys markSectorssargs(sselfsargssi((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pys markSectors2s cCs|iiƒdS(s/Tk file callback: Process pending socket data.N(sselfsioqs HandleInput(sselfsfilesmask((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pys HandleSock7sc CsU|iitititit i ti t t t iƒ|iiƒ|iiƒdS(s5empire.py callback: Start the main input/output loop.N(sselfsioqs registerCmdssOutWinsCmdWindsLoginWinsCmdLoginsTeleWinsCmdWReadsMapWinsCmdMapsCmdCShowsCmdDispsCmdSects CmdBestpaths queueStatuss checkQueuesRootsmainloop(sself((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysmain?s    (&s__name__s __module__s__doc__s__init__s DoHistoryMovesDoCmds DoAltHandlersDoCtldsrescompilesempParsess_sectors sectorFormatsDoLocateSectors displayMsgssBeginsdatasflushsAnswersEndsProcesssinformsflashsErrorsNones setprompts bufferStatussDoStatuss delStatuss queryCommands startConnsstopConns transferKeyss insertTextsredraws markSectorss HandleSocksmain(((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysmainWinns>      $        sCmdDispcBsAtZdZdZddffZdZeidƒZd„Z RS(Ns2Gradually highlight specified sectors on main map.sesDispis@Disp [ [min ] [max ]]sv^(?P\S+)\s+(?P\S+)(?:\s+\?(?P\S+))?(\s+min\s+(?P\d+))?(\s+max\s+(?P\d+))?\s*$|^$c Cs |i}|idƒ otigdƒdSny;tidtid|idƒ|idƒƒdƒ} Wn%ti j o}ti |ƒnuXx!ti D]} | iidƒqŸWyti|idƒ} Wn"tj o|idƒ} nXt} t}xy| D]q} tid| }|i| dƒ}| tjp || jo |} n|tjp ||jo |}q q Wyt|idƒƒ}Wn | }nXyt|id ƒƒ}Wn |}nX|| jo |} n||jo |}n| |jo| d }n|| }xà| D]Ø} tid| }|i| dƒ}t dt!|| |ƒƒ}|GH|d |}d d |d|f}xeti D]Z} | i%t&| ƒƒ\}}|djo,| i)||ddddd|d|ƒq¦q¦Wq,WdS(Nssectorssdispsowner==-1 and sSECTORs selectorsscommisvminsvmaxiiÿs #%02x%02x00i€isMarkstagssfillsoutline(*sselfsparameterMatchsmmsgroupsviewers markSectorssempEvals getSectorss selectToExprslistserrorsesErrorsmapListsisMapsdeletescommodityTransforms commoditysKeyErrorsNonesvminsvmaxscoordsempDbsmegaDBsDBsgetsvalsintsuvminsuvmaxsmaxsminsnvalsscalescolorsgetCoordstuplesxsysdrawItem(sselfsDBsscalesvalsuvmaxsnvalsvmaxscolorsesvmins commoditysislistscoordsmmsysxsuvmin((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysreceiveasp               ( s__name__s __module__s descriptions sendRefreshsdefaultBindings commandUsagesrescompiles commandFormatsreceive(((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysCmdDispWs sCmdSectcBsAtZdZdZddffZdZeidƒZd„Z RS(Ns(Highlight specified sectors on main map.sesSectisSect []s4^(?P\S+)(?:\s+\?(?P\S+))?\s*$|^$cCs©|i}|idƒ otigdƒdSny;tidtid|idƒ|idƒƒdƒ}Wn%ti j o}ti |ƒnXti|dƒdS(Nssectorsssectsowner==-1 and sSECTORs selectors( sselfsparameterMatchsmmsgroupsviewers markSectorssempEvals getSectorss selectToExprslistserrorsesError(sselfsesmmslist((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysreceive«s   ( s__name__s __module__s descriptions sendRefreshsdefaultBindings commandUsagesrescompiles commandFormatsreceive(((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysCmdSect¢s sPtkeisTkOptions startupFilesposixs TkOption.x11s *Entry.fontsfonts widgetDefaults *Listbox.fontsnts TkOption.w32cs¡tiitjoKdGH‡d†‰d„}ˆti_|ti_tii i ti_ n@tii iti_tii iti_tii i ti_ dS(Ns$PTkEI: Using emulated file handlers.cs1|||‡d†}tiiid|ƒadS(NcsX|iƒtj oti|gggdƒdo|||ƒnˆ|||ƒdS(Ni(sfilesfilenosNonesselectshdlrsmasksbogusFileHandler(sfilesmaskshdlr(sbogusFileHandler(s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pyshdls3i2( sfilesmaskshdlrshdlsviewersRootstkscreatetimerhandlersbogusFileTimer(sfilesmaskshdlrshdl(sbogusFileHandler(s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysbogusFileHandlerþscCstiƒdS(N(sbogusFileTimersdeletetimerhandler(sfileno((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysbogusDelFileHandlers( sTkinterstkinterscreatefilehandlersNonesbogusFileHandlersbogusDelFileHandlersviewersRootsdeletefilehandlerstkscreatetimerhandler(sbogusDelFileHandlersbogusFileHandler((sbogusFileHandlers=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pysInitFileHandlerùs   ((s__doc__sTkintersPmwsselectsstringstypessresoperatorsossTk_PanesTk_VDBsMapWinsCenWinsLoginWinsMyTextsOutWinsTeleWinsempQueuesempDbsempParsesempCmdsempEvalsempPathsmainWins baseCommandsCmdDispsCmdSectsTksNonesDisplays initialisesoption_readfiles pathPrefixsnamesfilesTextsfs option_addsdestroysInitFileHandler(sempCmdsMyTextsempDbsfilesInitFileHandlersoperatorsselectsTk_VDBsOutWinsempQueuesresCenWinsTeleWinsTk_PanesLoginWinsTkintersstringsMapWinsempParsesempEvalsempPathsDisplaystypessPmwsfsmainWinsCmdDispsossCmdSect((s=/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/empTk.pys?s\                      DÿêK'