; M>c@sedZdkZdkZdkZdkZdkZdkZdkZdkTdk Z dk Z dk Z dk Z dk Z dkZdkZdkZdklZdklZdklZdfdYZdfd YZd fd YZd efd YZdefdYZdefdYZe iZeZeeZei dS(s& tkinter interface module for pyching N(s*(s smgDialog(s smgHtmlView(ssmgAbouts WidgetColorscBstZdZdZRS(s9 colours for widgets in the reading display area cCs^d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ dS( Ns#323c4as#FFE4B5s#000000s#FFA07As#FFFFFFs#DAA520s#EEE8AAs#B8860B( sselfs bgReadings bgLabelHints fgLabelHints fgLabelPlacessfgLabelHexTitless fgLabelLinessfgMessageQuestionslineBodys lineHighlights lineShadow(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys__init__4s         (s__name__s __module__s__doc__s__init__(((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys WidgetColors0s s WidgetFontscBstZdZdZRS(s. fonts for widgets in the main window cCstidjo1d|_d|_d|_d|_d|_notidjo1t|_t|_t|_d|_t|_n.t|_t|_t|_t|_t|_dS(Nsposixs0-*-Helvetica-Normal-R-*--*-120-*-*-*-*-ISO8859-1s.-*-Helvetica-Bold-R-*--*-140-*-*-*-*-ISO8859-1snts.-*-Helvetica-Bold-R-*--*-150-*-*-*-*-ISO8859-1( spychingsosTypesselfsmenusbuttonslabelslabelHexTitless labelLineHintsNone(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys__init__Xs"              (s__name__s __module__s__doc__s__init__(((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys WidgetFontsTs s WindowMaincBstZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z eed Zeeed dZdZdZdZdZdZdZdZdZdZd dZd dZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-RS(,s! main application window cCs9||_|iidtdtti|_y"|iiddti dWnt j onX|ii ti dti |ii d|i|ii d|i|ii d |i|ii d |i|iid |it|_|iitt|_|iitt|_|iitt|_t|_|i|i|i|i |it!|id d dt"dd}|i$dtdt%ddt!|d|ii&|_'|i'i$dtdt%|i(|i'|i)|i'|i*|i't+|_,dS(Nsheightswidthsbitmaps@s /icon.xbms sssssWM_DELETE_WINDOWs borderwidthisreliefshighlightthicknessisexpandsfillspadxisbg(-smastersselfs resizablesFALSEspyching_cimagess CoinImagessimagess iconbitmapspychingsexecPathsTclErrorstitlesversionsbinds HelpBindingsCastButtonBindingsViewHex1InfoButtonBindingsViewHex2InfoButtonBindingsprotocolsQuits BooleanVars showPlacesssetsTRUEs showLineHintsscastAlls WidgetColorsscolorss WidgetFontssfontss LoadSettingss MakeMenuss MakeStatusBarsFramesSUNKENsframeMainBevelspacksBOTHs bgReadings frameMainsMakeCastDisplaysMakeQuestionDisplaysMakeHexDisplaysNoneshexes(sselfsmastersframeMainBevel((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys__init__ps@ "      !cCs|iidS(N(sselfsmastersquit(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysQuitscCs|djo d}nt}t|d|ddd|ii}||i jo$|i d||i ddn|i d |d dd||SdS( NsHelpshelpsnamestearoffisfontsmenus borderwidthslabels underline( stitlesmenuNamesNonesMenusparentsselfsfontssmenus_menusmasters configures add_cascade(sselfsparentstitles_menusmenuName((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys __AddMenus $cCs |i|d|_|i|id|_|i|id|_|i|id|_d}||iddd|ifdd d|i fd fdd d |i fd fdd d|i ff||iddd|i |i fdddt|ifd fdddt|itfdddt|itfd fddd|ifd fddd|iff ||iddtid|ifddd|ifddd|ifd fddtidd|iff|iiddt|iid dtdS(!NssFilesSettingssHelpc Cs x|D]}|ddjo|iq|ddjo,|id|dd|dd|d q|dd jo6|id|dd|dd|d d |d q|dd jo@|id|dd|dd|d d |d d|dqqWdS(Nissscslabelis underlineiscommandisksvariableisrsvaluei(sitemssitemsmenus add_separators add_commandsadd_checkbuttonsadd_radiobutton(smenusitemssitem((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys AddMenuItemss,6scsLoad Reading...isSave Reading...sssSave Reading As Text...isExitisks Show PlacesisShow Line Hintsi srsCast Each Line Separatelys"Cast Entire Hexagram Automaticallyi sConfigure Colors...s Save SettingssUsing sIntroduction to the I ChingsBrowse Hexagram InformationsAbout s...sstatei(sselfs_WindowMain__AddMenusparentsmenuMains menuMainFilesmenuMainSettingss menuMainHelps AddMenuItemss LoadReadings SaveReadingsSaveReadingAsTextsQuits_WindowMain__ToggleLabelsPlacess showPlacessNones showLineHintsscastAllsFALSEsTRUEs SetColorss SaveSettingsspychingstitlesShowHelpUsingPychingsShowHelpIChingIntrosShowHelpHexInfos ShowAboutsentryconfiguresDISABLED(sselfsparents AddMenuItems((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys MakeMenuss dpcCs|idS(N(sselfsShowHelpUsingPyching(sselfsevent((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys HelpBindingscCs.|iiddjo|iindS(Nsstatesnormal(sselfs buttonCastscgetsinvoke(sselfsevent((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysCastButtonBindingscCs.|iiddjo|iindS(Nsstatesnormal(sselfsbuttonViewHex1Infoscgetsinvoke(sselfsevent((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysViewHex1InfoButtonBindingscCs.|iiddjo|iindS(Nsstatesnormal(sselfsbuttonViewHex2Infoscgetsinvoke(sselfsevent((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysViewHex2InfoButtonBindingscCs'|idtiddddddS(Nstitles - Helps htmlSourcespyching_hlhtx_data.hlHelpData()sindex(sselfsShowHtmlspychingstitle(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysShowHelpUsingPychingscCs'|idtiddddddS(Nstitles - Helps htmlSources pyching_hlhtx_data.hlIntroData()sindexspyching_hlhtx_data.hlHelpData()(sselfsShowHtmlspychingstitle(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysShowHelpIChingIntroscCs!|idtiddddS(Nstitles - Hexagram Infomation Browsers hexBrowseri(sselfsShowHtmlspychingstitle(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysShowHelpHexInfoscCs%t|id|d|dd}dS(Nstitles htmlSources plainTexti(s smgHtmlViewsselfsmasterstitlestextFiles dialogTxt(sselfstitlestextFiles dialogTxt((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysShowTextsic Cs1t|id|d|dtd|d|}dS(Nstitles htmlSources internalLinksindexs hexBrowser( s smgHtmlViewsselfsmasterstitles htmlSourcesNonesindexs hexBrowsers dialoghtml(sselfstitles htmlSourcesindexs hexBrowsers dialoghtml((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysShowHtmlscCsd}t|iddtidtiddtiddd d d d tid dtid|dti ddti dd|i i d|i i d|i id|i i}dS(NsR0lGODlhMgAyAKEAAAICBP4CBAIC/P///yH+Dk1hZGUgd2l0aCBHSU1QACH5BAEKAAMALAAA AAAyADIAAAL+nI+ZwO0Ko1SOhYvvmzw2YWUi1nTmwAgqMLYic0rp6tYkEC+AStt+AMvNeKyf L2ga9oxHXEe5ZNqQnh0v2nIwqZQrcXot/pwQqxdUM3+NZAR0nT2Lm90zNqO+pxd2+CiPJtUG GAbmx3bw5jX31yB1Y0C4+EjpJDlJuRXZh5k5hsIp58l2acc42hhqeoqqUcoZ0nqjGuooq0i7 GJuJmyvHOvbqGwacJjxcKHiMfDgFyuxbjLcJnStNQl1New0UuUzcG2icyDxXKj2IfHqJzhf9 B7un8/4Sn9VGbg3fB4zvRq+hVpYJ4cC9WudvnjZRLxJS+KaKEReCEPk1zIGiIkMfVxgTaVwy EWNBU5A6lhkJgkUJkxRxVXDIssrLkCYKAAA7stitlesAbout sappTitlesversions Version: s copyrights'Copyright (c) 1999-2003 Stephen M. Gavaslicences-Released under the GNU General Public Licencesemailsemail: swwwsweb: s pictureDatas licenceFilesCOPYINGs creditsFilesCREDITSs fontAppTitlesfontTextsfgsbg(s aboutPicDatassmgAboutsselfsmasterspychingstitlesversions emailAddresss webAddresssexecPathsfontsslabelHexTitlesslabelscolorssfgLabelHexTitless bgReadings dialogAbout(sselfs dialogAbouts aboutPicData((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys ShowAbout s         cCsCt|idti|i}|io|i|indS(Ns currentColors(sDialogSetColorssselfsmasterscopyscolorssdialogSetColorssresults RepaintColors(sselfsdialogSetColors((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys SetColors$s! cCstiiddjo/tiiti otitiqHn|ii }|i i }|i i }ti|i|||f}ytitid|Wn0tj o$tiddddtinX|iidddS( Ns~sdatastitles File Errorsmessages$Unable to write configuration file: stextssaved settings(sosspaths expandusersexistsspychings configPathsmkdirsselfscastAllsgets castAllValues showPlacessshowPlacesValues showLineHintssshowLineHintsValuesversionscolorss configDataspyching_enginesStorages configFilesIOErrors tkMessageBoxs showerrors labelStatuss configure(sselfsshowPlacesValues castAllValues configDatasshowLineHintsValue((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys SaveSettings)s cCstiitioytitidt}Wn[t j o"t i i dtidqdj o"t i i dtidqX|\}|_}}}|ii||ii||ii|ndS(Nsdatas4 error (IOError): unable to read configuration files spychingUnpickleErrors: error (pychingUnpickleError): invalid configuration file(sosspathsexistsspychings configFilespyching_enginesStoragesNones configDatasIOErrorssyssstderrswritesversionsselfscolorss castAllValuesshowPlacesValuesshowLineHintsValuescastAllssets showPlacess showLineHints(sselfsshowPlacesValues castAllValues configDatasshowLineHintsValuesversion((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys LoadSettings;scCs|id|iddS(Nsfgsbg(slabels configurescget(sselfslabel((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys __HideLabelSscCsi|io[xX|iD]I}|id|iijo|i|q|id|iiqWndS(Nsfg( sselfshexesslabelsHexPlacesslabelscgetscolorss fgLabelPlacess_WindowMain__HideLabels configure(sselfslabel((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys__ToggleLabelsPlacesVs   cCs|ix+|iD] }|id|iidqWx<tdD].}x%|i |D]}|i dt qYWqEWx|i D]}|i|qWx(|iiD]}|i|iqW|i|i|iidd|iidd|iidd|iidS(Nsimageiislinetypestexts(sselfsHideInfoButtonss labelsCoinsscoins configuresimagess coinFramessrangesishexLinesslinesDrawsNoneslabelsHexPlacesslabels_WindowMain__HideLabelslabelsNoMovingLinesskeysskeyslowers labelBecomess labelH1Titles labelH2TitlesmessageQuestionsmastersupdate(sselfsislabelskeyslinescoin((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys ClearReading^s(    cCs&d|i_t|i}|ii|io|ix+|i D] }|i d|i i dqFWtid|_|i|i_|i|iio|iq"x-tddD]}|ii|dtqW|ii ddd |i|ii dd n d |i_dS( NisimagescoiniisstatestextsCast Line 1 of 6scommandsWaiting to cast line 1 of 6 ...i(sselfs labelLineHintsshowsDialogGetQuestionsmastersquestionDialogsupdatesresults ClearReadings labelsCoinsscoins configuresimagess coinFramesspyching_engines Hexagramsshexessquestions ShowQuestionscastAllsgets CastAllLinessrangesmenuItemsmenuMainSettingssentryconfiguresDISABLEDs buttonCasts CastNextLines labelStatus(sselfsmenuItemscoinsquestionDialog((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys CastHexesqs&      cCs|iidt|i|iidt|iiiddjoP|iidd|ii d d|i idd|ii d d n`x-t d dD]}|i i|dtqW|iidd d |i|i idd dS(Nsstateiistexts Cast Line is of 6sWaiting to cast line s of 6 ...isCreate 2nd Hexagramscommands"Waiting to create 2nd hexagram ...(sselfs buttonCasts configuresDISABLEDsCastLinesNORMALshexesshex1s lineValuess currentLines labelStatussrangesmenuItemsmenuMainSettingssentryconfigures BuildHex2(sselfsmenuItem((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys CastNextLines &*cCs|iidt|od|i_|inxl|idD]]}|o|iid|i_n|i d||i i | ot idqBqBW|i|iidtdS(NsstateiisloadingFromFile(sselfs buttonCasts configuresDISABLEDsloadingSaveFileshexess currentLines ShowQuestionshexLinesslinesCastLinesmastersupdate_idletasksstimessleeps BuildHex2sNORMAL(sselfsloadingSaveFilesline((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys CastAllLiness   cCs|| o|ii|iidd|ii dxstdD]e}x\tdD]N}x8|i D]-}|id|i i ||iiqgWtidqWWqDWxTtdD]B}|i |id|i i |ii|d |iiqWn|iio+|i|iid id |iin|id |iid i|iii|iid dS( Nstexts Casting Line s of 6 ...iisimagef0.02ii isfgi(sloadingFromFilesselfshexessNewLines labelStatuss configures currentLinesrangesspinssframeNums labelsCoinsscoinsimagess coinFramessmastersupdate_idletasksstimessleepsiscurrentOracleValuess showPlacessgetslabelsHexPlacesscolorss fgLabelPlacesshexLinessDrawshex1s lineValues(sselfsloadingFromFilesisframeNumscoinsspins((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysCastLines& "    /+cCs|iid|iiid|iii|iiiddjoJ|i id|i i |i id|iiid|iiind}x|idD]}}|iii|djo,|ii|o|i|iq n|i|iii||ii|d}qW|iiddd|i_x+|iD] }|id|iidqOW|ii o |iidd d |i n|i!|i"i#dd t$|i"i#d d t$dS( Nstexts. isfgissimageisCast New Hexagramscommandsstatei(%sselfs labelH1Titles configureshexesshex1snumbersnameshex2s lineValuess labelBecomesscolorss fgLabelLiness labelH2TitlesishexLinesslineslabelsNoMovingLinesshas_keystkraisesDrawsmastersupdate_idletaskss labelStatuss labelLineHintsshows labelsCoinsscoinsimagess coinFramesscastAllsgets buttonCasts CastHexessShowInfoButtonss menuMainFilesentryconfiguresNORMAL(sselfsiscoinsline((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys BuildHex2s.-1     cCst|d|ii|_|iidtdtt |idddddd dt d t d |i i d dd t d|i |_|iidddddtdd dd g|_xvtdD]h}|iit|id|iidd|ii|i|id|dddddddqWt|id|ii|_t |idt dddddt d t d |i i d dd t dtd|i |_t |idt dddddt d t d |i i d dd t dtd|i |_dS(NsbgsanchorssidestextsCast New Hexagrams underlineiswidthisfgsfontshighlightthicknesss takefocusscommandscolumnsrowsstickyspadxspadyisimageiii isstate(sFramesparentsselfscolorss bgReadings frameCastspacksNWsTOPsButtonsNonesfontssbuttonsFALSEs CastHexess buttonCastsgrids labelsCoinssrangesisappendsLabelsimagess coinFramessframeInfoButtonssDISABLEDs ViewHex1InfosbuttonViewHex1Infos ViewHex2InfosbuttonViewHex2Info(sselfsparentsi((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysMakeCastDisplays&$+  "1$$c Csd}|iiiddjoZ|iid||iiid|iiidt |ii ddddd }n|ii d }|i id||iiid|iiidt |i i ddddd ||ii ddddd d dtd d dS(NsView information on: istexts. sstatescolumnsrowiiispadys columnspanissticky(stextStubsselfshexesshex2s lineValuessbuttonViewHex2Infos configuresnumbersnamesNORMALsgrids button1Pads grid_forgetsbuttonViewHex1Infoshex1sframeInfoButtonssNW(sselfstextStubs button1Pad((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysShowInfoButtonss-   - cCs7|ii|iidt|iidtdS(Nsstate(sselfsframeInfoButtonss grid_forgetsbuttonViewHex1Infos configuresDISABLEDsbuttonViewHex2Info(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysHideInfoButtons s cCsA|idd|iiid|iiid|iiidS(NstitlesHexagram Information - s. s htmlSource(sselfsShowHtmlshexesshex1snumbersnames infoSource(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys ViewHex1Infos*cCsA|idd|iiid|iiid|iiidS(NstitlesHexagram Information - s. s htmlSource(sselfsShowHtmlshexesshex2snumbersnames infoSource(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys ViewHex2Infos*cCs[t|d|ii|_|iidtdtddt|iddd|ii|_ |i i dd d d g|_ d d ddddf}xt dD]}|i it|id||d|iid|iid|ii|i|i ||i |i ddd |ddtqW|i it|iddd|iid|iid|ii|_|ii dd d dt|iddd|iid|iid|ii|_|ii ddd dt|iddd|iid|iid|ii|_|ii ddd d hdd<d d<dd<|_x{|iiD]j}t|id|i|d|iid|iid|ii|i|<|i|i d |ddqqWggf|_xt dD]}xt dD]}|i|it"|id |i#d!|i$d"|i|djo d }nd}|i||i d|d |dddd#d qW|i|iqWt|id$dd|ii|_&|i&i dd d dt|i'dt(d|ii)d|ii*d|ii+d%d d&t,dd|_+|i+i-d|i+_.dS('Nsbgsanchorssidespadxisheightiscolumnisrowistopmostsfifthsfourthsthirdssecondsbottomistextsfgsfontiisstickysisbecomessnosmovingisliness bindingEnters bindingLeaves currentColorsspadyswidths borderwidthsrelief(/sFramesparentsselfscolorss bgReadings frameHexesspacksNWsTOPsframeSpacerC4R1sgridslabelsHexPlacess labelsTextssrangeslabelNumsappendsLabelsfontsslabels_WindowMain__HideLabelsEsreversesfgLabelHexTitlesslabelHexTitless labelH1Titles labelH2Titles labelBecomesslabelsNoMovingLinesskeysskeys fgLabelLinesshexLinesshexNumslineNumsHexLinesShowLineDetailssClearLineDetailsscolNumsframeSpacerC4R7smastersNones bgLabelHints fgLabelHints labelLineHintsSOLIDs place_forgetsshow(sselfsparents labelsTextsscolNumslineNumskeyshexNumslabelNum((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysMakeHexDisplaysb$  ++ !!!$ %!   5$ c Cs|iio |iio|iid|ii|ii oX|iid|ii|ii ddddddddd |i|ii qndS( Nstextsrelxf0.10000000000000001srelyf1.0sxisysin_( sselfs labelLineHintsshowseventswidgetshints labelStatuss configures showLineHintssgetsplacesupdate(sselfsevent((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysShowLineDetailsWs .cCs\|iioK|iidd|iio$|iidt |ii qXndS(Nstexts( seventswidgetshintsselfs labelStatuss configures showLineHintssgets labelLineHintsNones place_forget(sselfsevent((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysClearLineDetails`s  cCst|d|iidd|_|iidtdtdt dt dd d d t |id d dt dt d|iid|iid|ii|_|iidtdS(Nsbgs borderwidthisanchorssidesexpandsfillspadxi spadyiswidthistextsjustifysfgsfont(sFramesparentsselfscolorss bgReadings frameQuestionspacksSWsBOTTOMsTRUEsXsMessagesNonesLEFTsfgMessageQuestionsfontsslabelsmessageQuestionsW(sselfsparent((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysMakeQuestionDisplaygs !1cCs,|iid|iid|iidS(Nswidthstext(sselfsmessageQuestions configures frameQuestions winfo_widthshexessquestion(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys ShowQuestionpscCs|iidddtdS(Nswidthistext(sselfsmessageQuestions configuresNone(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys HideQuestiontsc Cst|dddtdd|_|iidtdtdtddt |id t i d t i d |i i|_|iidS( Ns borderwidthisreliefshighlightthicknesssanchorssidesfillspadxstexts sfont(sFramesparentsSUNKENsselfsframeStatusBarspacksSWsBOTTOMsXsLabelspychingstitlesversionsfontsslabels labelStatus(sselfsparent((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys MakeStatusBarxs !% )cCsdGHtiGHdGHdS(Ns begin debug s end debug(ssysspath(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysDEBUGscCsO|i}||_|iid|ii|iid|iix1tdD]#}|i |id|iiqQW|i id|ii|i id|ii|i id|ii|iid|ii|iid|ii|iid|iid|ii|iid|iid|ii|iid|iid|ii|iid|iid|iix@|iiD]/}|i|id|iid|iiqWxctdD]U}xLtdD]>}|i||id|ii|i|i||_qWqWx=tdD]/}|i |id|iid|iiq?W|i!id|iid|ii|i"o|i#i$o8x5tdD]#}|i |id|ii%qWn|i"i&i'ddjo|i!id|iin|i(|ii(jp)|i)|ii)jp|i*|ii*joXxtdD]C}x:tdD],}|i||i+|i||i,qWqoWqK|i|iijowxttdD]b}xYtdD]K}|i||i,djo*|i||i+|i||i,qqWqWqKndS(Nsbgisfgiiii (-sselfscolorss oldColorss newColorss frameMains configures bgReadings frameCastsrangesis labelsCoinss frameHexessframeInfoButtonssframeSpacerC4R1sframeSpacerC4R7s frameQuestions labelLineHints bgLabelHints fgLabelHintsmessageQuestionsfgMessageQuestions labelH1TitlesfgLabelHexTitless labelH2TitleslabelsNoMovingLinesskeysskeys fgLabelLinesshexNumslineNumshexLinesslabelNumslabelsHexPlacess labelBecomesshexess showPlacessgets fgLabelPlacesshex2s lineValuesslineBodys lineHighlights lineShadowsDrawsvalue(sselfs newColorssis oldColorsslineNumskeyslabelNumshexNum((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys RepaintColorssb   !%%%%-  ! -%  %B  2  c Cstid|idddtidtiddtifgdti}| odSny|i i |Wn-t j o!t i dd d d |nX|iid d |dS(Nsparentstitles Save Readingsdefaultextensions filetypess save filess*s initialdirs File ErrorsmessagesUnable to write save file: stextssaved reading: (s tkFileDialogsasksaveasfilenamesselfsmasterspychings saveFileExtstitlessavePathsfileNameshexessSavesIOErrors tkMessageBoxs showerrors labelStatuss configure(sselfsfileName((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys SaveReadings c Csd|i_tid|idddtidtiddtifgd ti }| od |i_dSnt i }y|i|}Wnhtj o!tidd d d |ndj o0tiddd d|dtidnX|dtidj o-tiddd d|dtidn;||_|i|idd |iidd|d |i_dS(NisparentstitlesLoad Saved Readingsdefaultextensions filetypess save filess*s initialdiris File ErrorsmessagesUnable to load save file: spychingUnpickleErrorsNot A Save Files!The file you attempted to load: s is not a s save file.sloadingSaveFilestextsloaded reading: (sselfs labelLineHintsshows tkFileDialogsaskopenfilenamesmasterspychings saveFileExtstitlessavePathsfileNamespyching_engines Hexagramss tempHexessLoads saveFileIDsIOErrors tkMessageBoxs showerrorshexess ClearReadings CastAllLiness labelStatuss configure(sselfsfileNames tempHexess saveFileID((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys LoadReadings2     " !  c Cstid|idddddddfgd ti}| odSn|ii}yt |d }Wn-t j o!t idd d d |nUXzEy|i|Wn-t j o!t idd d d|nXWd|iXdS(NsparentstitlesSave Reading As Textsdefaultextensions.txts filetypess text filess*.txts initialdirsws File ErrorsmessagesUnable to create text file: sUnable to write text file: (s tkFileDialogsasksaveasfilenamesselfsmasterspychingssavePathsfileNameshexess ReadingAsTextstextDatasopenstextFilesIOErrors tkMessageBoxs showerrorswritesclose(sselfstextDatasfileNamestextFile((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysSaveReadingAsTexts(   (.s__name__s __module__s__doc__s__init__sQuits_WindowMain__AddMenus MakeMenuss HelpBindingsCastButtonBindingsViewHex1InfoButtonBindingsViewHex2InfoButtonBindingsShowHelpUsingPychingsShowHelpIChingIntrosShowHelpHexInfosNonesShowTextsShowHtmls ShowAbouts SetColorss SaveSettingss LoadSettingss_WindowMain__HideLabels_WindowMain__ToggleLabelsPlacess ClearReadings CastHexess CastNextLines CastAllLinessCastLines BuildHex2sMakeCastDisplaysShowInfoButtonssHideInfoButtonss ViewHex1Infos ViewHex2InfosMakeHexDisplaysShowLineDetailssClearLineDetailssMakeQuestionDisplays ShowQuestions HideQuestions MakeStatusBarsDEBUGs RepaintColorss SaveReadings LoadReadingsSaveReadingAsText(((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys WindowMainlsV  5  '                  #      =     3  'sHexLinecBs}tZdZeeedZedZddfddddZddfddddZddfdddd ZRS( s( creates a hexagram line object c Cst|_t|_|o ||_n t|_ti||ddddd|ii dt dd|i d ||i d |dS( Nsheightiswidthisbgs takefocusshighlightthicknessiss(sNonesselfsvalueshints currentColorsscolorss WidgetColorssCanvass__init__sparents bgReadingsFALSEsbinds bindingEnters bindingLeave(sselfsparents bindingEnters bindingLeaves currentColors((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys__init__s    $cCs;hdd<dd<dd<dd<}|id |ii|i|djo||_|||_|i d d dfd d dd|i d ddfd d dd|i d ddfd dddna|djo<||_|||_|i d ddfd d ddn|djo^||_|||_|i d ddfd d dd|i d ddfd d ddn|djo||_|||_|i d ddfd d dd|i d ddfd d dd|i d ddfd dddn t |_t |_|i ddS(Nisline value = 6 (moving yin)isline value = 7 (yang)isline value = 8 (yin)i sline value = 9 (moving yang)sbgsoriginisheighti swidthi<iTi>iiiiSsall(shintssselfs configurescolorss bgReadingsupdateslinetypesvalueshintsDrawBevelRectangles DrawBevelXs DrawBevelOsNonesdelete(sselfslinetypeshints((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysDraw#s6*    ""&   &   "&   ""&  ii ic CsQ|ii}|iif}|ii}|i|d|df|d|d|d|dffddd|d|ddxt |D]}tidjoz|i|d||d||df|d||d|f|d|||d|ffddd|dd ns|i|d||d||f|d||d|f|d|||d|ffddd|dd tidjo|i|d|d|d||df|d|||d||dffddd|dd |i|d||d|d||df|d||d|d|ffddd|dd q|i|d|d|d||df|d|||d||dffddd|dd |i|d||d|d||df|d||d|d|dffddd|dd qWdS( NiiswidthsoutlinesfillstagssBODYsnts HIGHLIGHTsSHADOW(sselfscolorsslineBodyscolors lineHighlightshighlightcolors lineShadows shadowcolorscreate_rectanglesoriginswidthsheightsrangesbevelsispychingsosTypes create_line( sselfsoriginsheightswidthsbevelsiscolors shadowcolorshighlightcolor((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysDrawBevelRectangleCs,  ; `\SSSWic Cs|ii}|iif} |ii}|d|d|d|df}|dd}|i|d||df|d|d|f|d|||df|d||d|f|d||df|d||d||f|d|||d|f|d|d|f|d||d|f|d|d||f|d||df|d|d|ff d|ddd|dd|i|dd|d|df|d|d|dffddd|dd |i|d||ddf|d|d|d|ffddd|dd |i|dd|d||df|d||d|df|d|d|df|d|||d|df|d|d|d||ffddd|dd |i|d|d||f|d|d|ddffddd| dd |i|dd|d||f|d|dd|ddffddd| dd |i|d||df|d|d|d||dffddd| dd |i|d|d|df|d||d||dffddd| dd |i|d|d|f|d||df|d|d|f|d|||df|d|d|d|dffddd| dd |i|dd|d|f|d||ddf|d|d|df|d|||ddf|d||d|dffddd| dd dS( NiiisoutlineswidthsfillstagssBODYsSHADOWs HIGHLIGHT(sselfscolorsslineBodyscolors lineHighlightshighlightcolors lineShadows shadowcolorsoriginswidthsheightscentres thicknesssiCOscreate_polygons create_line( sselfsoriginsheightswidths thicknesssiCOscentrescolors shadowcolorshighlightcolor((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys DrawBevelXjs4  $& ???GCCcCs|ii}|iif}|ii}|i|d|df|d||d|ffd|ddd||i|dd|ddf|d|d|d|dffd|ddd|dd|i|d|d|d|df|d||d|d||dffd|ddd||i|d|d|d|df|d||d|d||dffd|ddd|i d dd |i|d|df|d||d|ffd d d dddddd|dd|i|dd|ddf|d|d|d|dffd dd dddddd|dd|i|d|d|d|df|d||d|d||dffd dd dddddd|dd|i|d|d|d|df|d||d|d||dffd dd dddddd|ddtidjo<|i|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddffddd|dd|i|dd|ddf|dd|ddf|dd|ddf|dd|ddffddd|ddndS( NiisoutlineswidthsfillstagssBODYisbgsSHADOWsstarti(sextentisstylesarcs HIGHLIGHTi#iisnti iiiiiii ii (sselfscolorsslineBodyscolors lineHighlightshighlightcolors lineShadows shadowcolors create_ovalsoriginswidthsheights thicknessscgets create_arcspychingsosTypes create_line(sselfsoriginsheightswidths thicknessscolors shadowcolorshighlightcolor((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys DrawBevelOs8  3CSS%3 C S S m( s__name__s __module__s__doc__sNones__init__sDrawsDrawBevelRectangles DrawBevelXs DrawBevelO(((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysHexLines  '=sDialogSetColorscBstZdZedZdZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZRS(s/ display a colour configuration dialog cCs|o ||_n t|_t|_ti||dddhdd<dd<dd<dt <d d s buttonCancelsCancelss buttonsDefis buttonsWidthis buttonsPadis resizeables transientiswait( s currentColorssselfscolorss WidgetColorss WidgetFontssfontss smgDialogs__init__sparentsNone(sselfsparents currentColors((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys__init__s   fcCs|idddtddt|d|iidddt|_|ii ddd d d d d d |ii d|i t |iddd|i idd d|iid|ii|_|ii dd d d d d|ii d|i g|_xtdD]}|iit|id|i|i|id|d|i|i d|dd d d d |i|i d|i q Wt |iddd|i idd d|iid|ii|_|ii ddd d d d|ii d|i t |iddd|i idd d|iid|ii|_|ii ddd dd d|ii d|i t |iddd|i idd d|iid|ii|_|ii ddd dd d|ii d|i t |iddd|i idd d|iid|ii|_|ii ddd dd d|ii d|i t |iddd|i idt ddd|ii!|_"|i"i ddd ddt#t$t%t&fd d|i"i d|i t |i"ddd|i idd d|ii'd|ii!|_(|i(i dd d d |i(i d|i |i)hd|i*d d <d|i*d d<|_+t|d|i+ddt dd|_,|i,i dd d d d d d d d d d!d t-|i,dd"d#d dd d|i i.d$t/d%|i0|_1|i1i dd d d d dt2|i,d&d'd|i*d d d|i i3d(t4d#t5i6|i*d d d)dt7dd |_8|i8i dd d dd ddt#t$ft9|i8d*d d|i i3|_:|i8id+|i:x1|i*D]&}|i:i<d,|d d%|i=q(Wt-|dd-t>i?d.d#d dd d|i i.d$t/d%|i@|_A|iAi ddd d d d d d dt&t%f|i d/|iB|i d0|iC|i d1|iDdS(2Ns borderwidthisreliefshighlightthicknessisbgsrowiscolumnispadxspadyi sstextsHexagram Titlesfontsfgis currentColorsslinetypeisReading Questions place namesbecomessno moving linesis line hintsstickysnamescolorsipadxsipadys Set Color of:s underlines takefocusscommandswidthi s indicatoronsestearoffsmenuslabelsReset All Colors To s Defaultssss(Esmasters configuresSUNKENsFramesselfscolorss bgReadingsFLATs frameDemosgridsbindsSetColorExampleDetailssLabelsfontsslabelHexTitlessfgLabelHexTitlesslabelTitleDemos lineDemossrangesisappendsHexLinesDrawslabelsfgMessageQuestionslabelQuestionDemos fgLabelPlacesslabelPlaceDemos fgLabelLinesslabelBecomesDemoslabelNoMovingDemos labelLineHintsSOLIDs bgLabelHintsframeHintBgDemosNsSsEsWs fgLabelHints labelHintDemosSetColorButtonDetailsscolorButtonDetailsscolorExampleDetailssframeColorSelectsButtonsbuttonsFALSEsGetColorsbuttonGetColors MenubuttonsmenusTRUEsstringsfindsRAISEDsmenubuttonOptionssMenus menuOptionssitems add_commandsSetColorExamplespychingstitlesSetDefaultColorssbuttonDefaultssSetColorButtonBindingsScreenElementButtonBindingsResetColorsButtonBinding(sselfsmastersisitem((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysBodys'%!  "'!!!!1! 11#+$ $1cCs|iidS(N(sselfsbuttonGetColorsinvoke(sselfsevent((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysSetColorButtonBindingNscCs6|ii|ii|ii|iidS(N(sselfs menuOptionsspostsmenubuttonOptionss winfo_rootxs winfo_rootys winfo_height(sselfsevent((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysScreenElementButtonBindingQscCs|iidS(N(sselfsbuttonDefaultssinvoke(sselfsevent((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysResetColorsButtonBindingYsc Csd|iifd|iifd|iifd|iifd|iifd|iifd|iifd|ii fd |ii fd |ii ff |_ dS( NsReading BackgroundsHexagram TitlessReading Questions Place Namess'becomes' & 'no moving lines'sLine Hint BackgroundsLine Hint TextsHexagram Line BodysHexagram Line HighlightsHexagram Line Shadow( sselfscolorss bgReadingsfgLabelHexTitlessfgMessageQuestions fgLabelPlacess fgLabelLiness bgLabelHints fgLabelHintslineBodys lineHighlights lineShadowscolorButtonDetails(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysSetColorButtonDetails\scCsn|i|ijo4|idd|id<|idd|ids buttonCancelsCancelss buttonsDefis buttonsWidthis buttonsPadis resizeables transientiswait(s smgDialogs__init__sselfsparentsNone(sselfsparent((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys__init__sfc Cst|ddidddddtddd d}t|_|iid t |d |id d |_ |i idddddtdd|i SdS(Nstexts<Enter a question to ask the I Ching (maximum 70 characters):scolumnisrowsstickyspadxispadys'Tell me about my current circumstances.s textvariableswidthiFi( sLabelsmastersgridsWs labelPrompts StringVarsselfs questionTextssetsEntrys entryQuestion(sselfsmasters labelPrompt((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysBodys 6 %cCs|ii|_dS(N(sselfs questionTextsgetsresult(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysApplyscCst|iidjotidddddSnHtti|iidjotidddddSnd SdS( NiFstitlesQuestion Too Longsmessages;The question you have entered is longer than 70 characters.isNo Question Entereds"You have entered a blank question.i(slensselfs questionTextsgets tkMessageBoxs showerrorsstringsstrip(sself((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysValidates  %  (s__name__s __module__s__doc__s__init__sBodysApplysValidate(((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pysDialogGetQuestions   (!s__doc__sstringssyssosstimescopyshtmllibs formattersTkinters tkFileDialogs tkMessageBoxstkColorChooserspyching_enginespyching_cimagesspyching_idimage_dataspyching_int_dataspyching_hlhtx_datas smgDialogs smgHtmlViewssmgAbouts WidgetColorss WidgetFontss WindowMainsCanvassHexLinesDialogSetColorssDialogGetQuestionsPychingAppDetailsspychingsTks windowRoots windowMainsmainloop(s tkFileDialogs WidgetFontss WindowMainspyching_cimagess WidgetColorss windowRoots smgHtmlViewssmgAboutshtmllibspyching_int_datas formattersDialogGetQuestionsstringspyching_idimage_dataspyching_enginespyching_hlhtx_datasDialogSetColorsssysscopystkColorChoosers smgDialogsHexLines tkMessageBoxstimes windowMainsosspyching((sB/mnt/gmirror/ports/games/pyching/work/pyching_interface_tkinter.pys?s*?   $$