;ò yªè>c@s¼dZdkZdkZdkZdkZdkZdkZdkZdkZdk Z dk Z dfd„ƒYZ de i fd„ƒYZ de i fd„ƒYZdfd „ƒYZdS( s'Maintains graphical map window display.Ns mapSubWincBs¿tZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z dd „Z d „Z d „Z d „Z d d„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(sMaintain map displaycCsVtidd|_|idd|iddf|_f|_|_g|_ti |dddd ƒ}|i d dd d ƒti |dd ddƒ}|i ddd dd dƒti|ddd|id|iƒ|_|ii ddd dd dƒ|ii|d<|ii|d<|idddƒ|idddƒ|iid|idƒ|iid|iƒ|iid|iƒ|iid|iƒ|iid|iƒ|iid|iƒ|iid|iƒ|iid|iƒ|iid |d!„ƒ|iid"|d#„ƒ|iid$|d%„ƒ|iid&|d'„ƒ|iid(|d)„ƒ|iid*|iƒ|iid+|iƒ|iid,|iƒyJttt i!|ii"d-d.ƒƒƒ|_#|i#dd/d0|i#ds+ssss sssscCs |idƒS(Nf0.90000000000000002(sselfs adjustSector(sesself((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysFsscCs |idƒS(Nf1.1000000000000001(sselfs adjustSector(sesself((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysIsscCs |idƒS(Nf0.5(sselfs adjustSector(sesself((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysLsscCs |idƒS(Nf2.0(sselfs adjustSector(sesself((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysOsscCs |idƒS(Ni(sselfsredraw(sesself((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysRss s s s defaultSizesf3.0f2.0f18.0f24.0scombatModeStartSizef60.0f80.0scombatModeFontscourier(.sempDbsmegaDBsselfsmaxCoordsoriginscursorsstartsdimensTkinters ScrollbarsmastersscrollXsgridsscrollYsCanvasssetsMapsxviewsyviews rowconfigurescolumnconfiguresbinds DoCoordEndBoxsDoCoords DoCoordClears DoCoordBoxsDoSelectsDoCensorsDoOriginsDoResizesmapsfloatsstringssplits option_getsgridsizes ValueErrors IndexErrorscombatModeStartSizescombatModeFonts combatmodes optionsDictsviewers updateListsappendsredraw(sselfsmastersscrollXsscrollY((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys__init__%sv%              * * 6   cCstti|gt|iƒ|iƒ|_|id|idjo|id|idjo d|_n d|_|i i ƒ}|i i ƒ}|d|dd}|d|dd}|i}|id |id |d|id|d|idf|i d<|i iddd||ƒ|i i d|d|dd|ƒ|i i d|d|dd|ƒdS( s#Scale the size of the map by RATIO.iif2.0s scrollregionsallsmovetof1.0N(smapsoperatorsmulsratioslensselfsgridsizescombatModeStartSizes combatmodesMapsxviewsyviewswinWidths winHeightsmaxCoordswssscale(sselfsratioswinWidthsxviewsyviewswss winHeight((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys adjustSector}s6   G'cCs|i|if}|i o|iƒ||_dSn|iiƒ}|ii ƒ}t t t i |idƒƒ}|d|d|d|df\}}|iid|d|id|dd|ƒ|ii d|d|id|dd|ƒ||_dS( s>Tk callback: Note a resize, and adjust the window accordingly.Ns scrollregioniiiismovetof2.0(seventswidthsheightsnewsselfsdimenscentersMapsxviewsyviewsmapsfloatsstringssplitswinsscrWidths scrHeight(sselfsevents scrHeightsxviewsscrWidthswinsyviewsnew((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysDoResize•s   *22cCsX|d|id|id|id|d|id|id|idfSdS(s,Convert empire coords to screen coordinates.iiN(scoordsselfsoriginsmaxCoordsgridsize(sselfscoord((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysgetCoord¨sc CsLttti|idƒƒ}|d|d|d|df\}}|ii ƒ}|ii ƒ}|i |ƒ\} } | |d|| |d|f\}}||djp0||djp||djp||djo^|d|dd} |d|dd} |ii d|| ƒ|ii d|| ƒndS( s?If COORD isn't currently viewable, scroll window so that it is.s scrollregioniiiif2.0smovetoN(smapsfloatsstringssplitsselfsMapswinsscrWidths scrHeightsxviewsyviewsgetCoordscoordsxsysxpossyposswinWidths winHeight( sselfscoordsxposs scrHeightsxviewsscrWidthswinsypossyviewswinWidths winHeightsysx((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pyssee­s**DcCs||iiƒ}|iiƒ}|d|dd}|d|dd}|iidd|ƒ|iidd|ƒdS(sCenter window.iiismovetof0.5N(sselfsMapsxviewsyviewswinWidths winHeight(sselfs winHeightswinWidthsxviewsyview((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pyscenter¼sc Cs¾|iƒ|d|idd|d|iddf}|i|d |d fjodSn|i|ƒ\}}|d |d f|_tt t i |i dƒƒ}|d|df\}}|i iddd|dd ƒ|i id |dd d ƒxt||d|idƒt|d |id ƒD]f}|i id ||id||iddd||idd||iddddƒq=W|i id dƒ|i id||dƒ|i id | dƒ|i idƒ|i id ƒ|i idddd ||idddƒ|i id d||idddd d ƒ|i idd||ƒ|i id d| ƒ|i idƒ|i id ƒdS( s=Change origin to LOC; the origin is the center of the window.iiiNs scrollregionismove_aiayþÿiŸ†smove_biÿÿÿÿ(sselfscenterslocsmaxCoordsoriginsgetCoordsxsysmapsfloatsstringssplitsMapswinsscrWidths scrHeightsaddtag_enclosedsrangesgridsizesisdtagsmove(sselfslocs scrHeightsscrWidthswinsisysx((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys setOriginÅsJ 2    6 "   ic Cs¦ti}ti}|p|didƒoô|dd}|_|id |id |d|id|d|idf|i d<|i i dƒ|i i |id |id |d|idd|d|iddddƒ|dd|ddf|_ |i ƒd}nti}ti} ti} |o|d }|i i d ƒn |d }xÑ|iƒD]Ã\}}|id ƒ}| oqxn|id ƒ}|id ƒ} d }|i|ƒ\}}| o‘|i i||id||id||idd||iddƒ} x?| D]3}d |i i|ƒjo|i i |ƒq9q9Wn||joa|idƒ}|t!jp |djo d} nd} | t!j o | |jo d}q™n¸|t!j o|| jp |djoEd} | t!j o | |jo!| |jo d}qJd}q™nL|| jo d} n5|djo d} n|djo d} nd} |iddƒ}|djo||}n|i i$|i%||| ddd ƒƒ|i%||| dddd d |ƒ|o |i%|||d!dd ƒqxqxW|oK|iddfƒ\}}|i i d"ƒ|i%||d"d#dd"ƒn|i i&d"ƒ|p|d$id%ƒo^|d$d%}|i i d%ƒ|o5|i|ƒ\}}|i%||d%d#dd%ƒq*n|i i&d%ƒxud&d'd(d)fd*d+d,d-fd.d/d0d1fd2d3d4d5ffD]1\}}}}| o || o'|i i&|ƒ|i i&|ƒqmn|i|hƒ}|i i |ƒx¿|i,d6d7fƒi-ƒD]¢}h}|i-ƒ}|o/|i|dd6|dd7fƒ\}}nxñ|D]Ú}|id ƒ}|id8ƒ}|id9ƒ}f}||jo |}n|| jo | }n|ol|i|ƒo||d||s&DB update handler: Redraw the window.sversions worldsizeiis scrollregionsoutlinestagsisSECTORsdessownersoldownssmobs nomobSectors ownedSectors oldownerEnemys enemySectorsoldownerMyselfsoldownerUnknowns unownedSectors.\s seaSectorsXs mineSectors unknownSectorssdess_sSectorsTexts SectorTextstextsOldownersorigins Decorationsnationscapitals LAND UNITSsLANDs landUnitssenemyLandUnitssSHIPSsSHIPsshipss enemyShipssPLANESsPLANEsplaness enemyPlanessNUKESsNUKEsnukess enemyNukessxsysidstypef0.070000000000000007sUnits EnemyUnitN(6sempDbsmegaDBsupdateDBstotalshas_keyswssselfsmaxCoordsgridsizesMapsdeletescreate_rectanglesoriginscentersCN_OWNEDsCN_ENEMYs CN_UNOWNEDsdbsitemssisjsgetsdessownsoldowns oldownNamesgetCoordsxsys find_enclosedsgroupsgettagssmobsNoneshexNamessdesslowersdrawItemsliftscoordsdbnamestagNames ownedInfos enemyInfosgetSecsvaluessnusallUnitssownersidstypeskeys combatmodes displayUnit( sselfstotalssdessjs ownedInfoscoordsownersownstagNames CN_UNOWNEDshexNamesCN_ENEMYsoldownsgroupsupdateDBsidstypesnus enemyInfosdbsallUnitsswsskeysmobsdbnamesmegaDBsCN_OWNEDsisdess oldownNamesysx((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysredrawösì  G           '         ($ $C /      c  Cs-|tijo d}nd}hdddf<dddf<d dd f<d dd f<} | |d d } | |d ||} | | f} t | ƒd} t ti||f| t ti|i| | ƒƒ} |ii| d | d d|ddt|ƒd|ddd|id|ƒdS(sBDisplay one (additional) Land Unit/Ship/Plane/Nuke for Combat ModesBlacks SaddleBrownsLANDf0.433f-0.48299999999999998sSHIPf-0.23300000000000001f-0.53300000000000003sPLANEf0.13300000000000001sNUKEiiistagsstexts#s sanchorsnwsfontsfillN(sownersempDbsCN_OWNEDs textcolorsoffsetstagNamesnxsscalesnumbersnyscoordsslenslsmapsoperatorsaddsxsysmulsselfsgridsizesMaps create_textsstrsidstypescombatModeFont(sselfsxsysnumbersscalesownersidstypestagNamesnyslsnxscoordssoffsets textcolor((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys displayUnits B 5 c Ks y|i|}Wn6tj o*ti|i||ƒ}|i|/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysdrawItem©s(  B  cOs„|oihdd<dd<dd<dd<}|i|ƒt|i|ƒ}t|ii t |ƒ|ƒn|ii dƒd S( s+Draw the bestpath between a set of sectors.stagsspathssmoothisarrowslastswidthiN( scoordssoptssupdateskwsmapsselfsgetCoordsapplysMaps create_linestuplesdelete(sselfscoordsskwsopts((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysdrawPathÀs*  smarkcCs\|ii|ƒxE|D]=}|it|ƒƒ\}}|i |||dd|ƒqWdS(s.Mark the specified COORDS with a small circle.sMarkstagsN( sselfsMapsdeletesnamescoordsscoordsgetCoordstuplesxsysdrawItem(sselfscoordssnamescoordsysx((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys markSectorsÊs cCs¯|ii|iƒ|idd|ii|iƒ|iddg\} } |_|i oˆ| |i djo|i d| g}n| |i dg}| |i djo||i d| g}qù|| |i dg}n| | | | g}|i d|i dA}t i}||dƒ||dƒjoËt||dƒƒ|Ad@}||dƒ||dƒjo4|| d|dAdƒd||d<|d/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysDoCoordÑsZU  !!4(0!*.+ F  ##cCsF|iodSnf|_|_tiidƒ|iidƒdS(s%Tk callback: Clear a range selection.Nss rubberbox(sselfsstartscursorsviewerscoordssetsMapsdelete(sselfsevent((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys DoCoordClears  cCsD|iof|_|_nf|_|i|_|i|ƒdS(s-Tk callback: Start a box for range selection.N(sselfsstartscursorsplocsDoCoordsevent(sselfsevent((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys DoCoordBox%s    cCs!f|_|_|i|ƒdS(s#Tk callback: End a range selection.N(sselfsstartscursorsDoCoordsevent(sselfsevent((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys DoCoordEndBox1scCsS|io%f|_|_|i|ƒdSntii|iƒ|i|ƒdS(s4Tk callback: Set the censor window's current sector.N( sselfsstartscursorsDoCoordseventsviewerscensSetSects DoCoordEndBox(sselfsevent((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysDoCensor6s  cCsT|io%f|_|_|i|ƒdSn|i|id|idfƒdS(s=Tk callback: Center the map window around the current sector.Nii(sselfsstartscursorsDoCoordsevents setOrigin(sselfsevent((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysDoOrigin@s   cCs@|i odSntiiƒ}ti|ƒ|i|ƒdS(s9Tk callback: Insert a sector/range into the command-line.N( sselfsstartsviewerscoordsgetsrngs insertTexts DoCoordEndBoxsevent(sselfseventsrng((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysDoSelectIs   (s__name__s __module__s__doc__s__init__s adjustSectorsDoResizesgetCoordsseescenters setOriginsredraws displayUnitsdrawItemsdrawPaths markSectorssDoCoords DoCoordClears DoCoordBoxs DoCoordEndBoxsDoCensorsDoOriginsDoSelect(((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys mapSubWin"s(  X     1 —    J  sCmdMapcBs/tZdZddffZd„Zd„ZRS(NsOpen additional map window.sMapicCsytiddƒ|_}|idƒ|idƒti|ƒt |ƒ|_ ti i |i ƒ|i d|iƒdS(Nsclass_sMaps Empire mapsWM_DELETE_WINDOW(sTkintersToplevelsselfsRootsrootstitlesiconnamesviewers transferKeyss mapSubWinsMapsmapListsappendsprotocols handleDelete(sselfsroot((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysinvokecs   cCs7tii|iƒtii|iƒ|iiƒdS(s0Tk callback: Remove the window from the display.N(sviewers updateListsremovesselfsMapsmapListsRootsdestroy(sself((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys handleDeleteps(s__name__s __module__s descriptionsdefaultBindingsinvokes handleDelete(((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysCmdMap^s s CmdBestpathcBs,tZdZdZddffZd„ZRS(NsDisplay a graphical best path.sesBestpathicCs=|iidƒ}| o f}nýyttiti |ƒƒ}Wn t j ot i dƒnXg}|d}|i|dƒxtdt|ƒƒD]y}ti||d||ƒ}|tjot i dƒdSnx0|iD]%}ti||ƒ}|i|ƒqíWqW|}tt iit|ƒƒdS(Nsargss Bad coords.iisPath could not be completed.(sselfs commandMatchsgroupsargsscoordssmapsempParses str2Coordssstringssplits ValueErrorsviewersErrorspossstartsappendsrangeslensisempPaths best_pathspathsNones directionssempDbsdirectionToSectorsapplysdrawPathstuple(sselfsisargsspossstartscoordsspath((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysreceive|s,     (s__name__s __module__s descriptions sendRefreshsdefaultBindingsreceive(((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys CmdBestpathvssMoveModecBsttZeed„Zed„Zed„Zd„Zed„Zd„Zd„Z d„Z d „Z d d „Z RS( Nc Cs||_|i|_|iiiƒddjotiiƒdSnt i |iiddƒ|_ |i i ddddƒt i ƒ|_t i|i ddd d d d d |iƒ}|id d ƒt i ƒ|_|iid |d„ƒt i|i ddd |iƒ} | id d ƒ| id|iƒ| id|iƒ| iƒt i|i ddddd|iƒ|_|iidd ddddƒt i|i ddddd|iƒ|_|iiddddddƒg|_xyd|ifd|ifd|i fd |i!ffD]A\}}|ii$||ii|ƒfƒ|ii||ƒq%W||_%||_&g|_'g|_(d!|_)|t+j o|ii,|ƒn|ii,d"ƒ|i-|ƒ|t+j o|i-|ƒnti/i$|ƒdS(#NiisnamesmodeInfosrowsstickyssweslabelsanchorswsjustifyslefts textvariablecCs |iƒS(N(sselfsredraw(svarsosmodesself((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysªssquantitys s sokstextsOkscommandssidesexpandsfillsxscancelsCancelsrights sssis(0smapClasssselfsmapsMapsmasters grid_sizesviewersRootsbellsTkintersFramesAreasgrids StringVarslblVarsLabelslabelspacksQuantitystrace_variablesEntrysentrysbindsDoOksfinishsfocussButtonsokBscancelBs oldBindingss CreateSpotsMoveSpotsDelSpotsSetSpotsactionscommandsappends commodityssourcessectorsspathListsflagssquantitysNonessetsAddSpotsdests updateList( sselfsmapClasss commodityssourcesquantitysdestslabelscommandsactionsentry((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys__init__˜sV       7 "        cCs„|iiƒ|iiƒ|iidƒx6|iD]+\}}|ii i d|i||ƒq4Wt i iƒt ii|ƒdS(s/Unmap the window, and reset the mouse bindings.s MoveSectorsbindN(sselfsAreasdestroysmapsdrawPathsMapsdeletes oldBindingssactionscommandstkscallsviewersPromptsfocuss updateListsremove(sselfseventsactionscommand((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysfinishÕs   # cCs_d}x|iD]}|d|}qWtiid|i|ii ƒ|fƒ|i ƒdS(Nss %d,%dsrdbPe;Mover %s %s%s;rdbe( ssctssselfssectorssisviewersioqsSends commoditysQuantitysgetsfinish(sselfseventsisscts((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysDoOkßs  )cCs©|ii|ƒ\}}|ii||iid||iid||iidd||iiddƒ}x/|D]'}d|ii |ƒjo|SqzqzWdS(Niis MoveSector( sselfsmapsgetCoordscoordsxsysMaps find_enclosedsgridsizesgroupsisgettags(sselfscoordsgroupsisysx((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysgetSpotçscCsx|tjot|iƒ}n|g|i||+|ii|ƒ\}}|ii ||ddddƒ|i ƒdS(Ns destSectors MoveSectorstag( spossNoneslensselfssectorsscoordsmapsgetCoordsxsysdrawItemsredraw(sselfscoordspossysx((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysAddSpotñs  cCsß|iid|iidf}||ijo|ii|ƒ|_nlxUtt|i ƒƒD],}||i |jo|d|_Pq_q_Wt|iƒ|_|i ||iƒ|ii |ƒ|_ |i|ƒ|_dS(Niii(sselfsmapscursorslocssectorssindexspossrangeslenspathListsisAddSpotsgetCoordsstartsgetSpotsspot(sselfseventslocsi((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys CreateSpotús   cCs~|ii|ƒ|ii|iƒ|ii|iƒf}|ii |i |d|i d|d|i dƒ||_ dS(Nii( sselfsmapsDoCoordseventsMapscanvasxsxscanvasysyslocsmovesspotsstart(sselfseventsloc((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysMoveSpot s*7cCsO|itjodSn|i|i=|ii|iƒ|iƒt|_dS(N(sselfspossNonessectorssMapsdeletesspotsredraw(sselfsevent((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysDelSpots   cCsÖ|itjodSn|iid|iidf}t|iƒ}||i=||jo|i |ƒnd||i|i<|ii |ƒ}|i i|i|d|id|d|idƒ|iƒdS(Niii(sselfspossNonesmapscursorscoordslistssectorssnewlistsDelSpotseventsgetCoordslocsMapsmovesspotsstartsredraw(sselfseventslocsnewlistscoord((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysSetSpots   !ic Cs@| otiidƒ odSn|iiƒ|i} t| ƒdjo|i i dƒdSnti d}y%t i|iiƒ|i| ƒ}Wn(tj od}g|_d}nqX| d}| d} d||i|d|d||i|id ƒ| d| d|| i|id ƒf}|dj} | o!t| ƒ} | iƒ| }n| d}|g}g}x{tdt| ƒƒD]d}| |d} ti | | |ƒ} d } |i#| gƒ| t$jo+d } | |}|di#|ƒd }n¥|| }t't(i)|id dƒt*i+||iƒ| i,|ƒƒ}|djo d } nxA| i-D]6}ti.||ƒ}|i#|ƒ|di#|ƒqvW|d| d| d|f}t/|iit0|dƒhd| <ƒq”W| o|iƒn||_|d| d}|i i |ƒdS(NsSECTORis,Select sectors with the right mouse button. sEnter a valid quantity. iiÿÿÿÿs+Move %d %s: (%d,%d has %s) (%d,%d has %s) is??sblacksredsmobsyellows %d,%d=>%s sfills%d,%d (1stotalsempDbsupdateDBshas_keysselfsmapsdrawPathssectorsslenslblVarssetsmegaDBssDBsempCmdsgetMoveQuantitysQuantitysgets commoditysquantitys ValueErrorsmsgspathListsfirstslastsreverseslistsstarts sectorLists newPathListsrangesisempPaths best_pathspathscolorsappendsNonesnewmobsdbsintsmathsfloors empSectors move_weightscosts directionssdirectionToSectorsapplystuple(sselfstotals newPathListssDBsstartsmsgs sectorListsdbsnewmobspathscolorslastsreversessectorssisquantitysfirst((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysredraw,sj       [          ?    - ( s__name__s __module__sNones__init__sfinishsDoOksgetSpotsAddSpots CreateSpotsMoveSpotsDelSpotsSetSpotsredraw(((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pysMoveMode—s=     (s__doc__sTkintersstringsoperatorsmathsTk_VDBsempDbs empSectorsempPathsempParsesempCmds mapSubWins baseCommandsCmdMaps CmdBestpathsMoveMode(sTk_VDBsTkintersstrings mapSubWinsempCmdsCmdMapsempParses CmdBestpathsempDbsMoveModesoperatorsempPathsmaths empSector((s>/mnt/gmirror/ports/games/ptkei/work/ptkei-1.18.1/src/MapWin.pys?s           ÿÿ>!