;ņ }4‚Gc@sdkZdkZdkZdkZdkZdkZdkZdkZdkZdk Z dk Z dk Z dk Z dk lZdkTdklZlZdklZlZlZdklZdklZdklZdkTdklZdkTdk Td k!l"Z"l#Z#l$Z$d k l%Z%d k l&Z&d k'l(Z(d „Z)de*fd„ƒYZ+dei,fd„ƒYZ-dfd„ƒYZ.d„Z/e0djoydk1Z1y)e1i1ei2dddgƒ\Z3Z4Wn*e1i5j oe/ƒei6dƒnXe7e4ƒdjoļdk8Z8e8i9dƒZ:x4e3D],\Z;Z<e;ddfjo de8_=q0q0We>ƒZ?ye?i?i@ddƒWneAiBj onXe?iCd d!ƒe?iCd"d!ƒe?iCd#d!ƒe?iCd$d!ƒe?iCd%d&ƒe+e?ƒZDeDiEd'joe?i?iFd(eDiGƒne7e4ƒdjo~e4d)ZHe4dZIeDiJeHƒeDiKƒeDiLƒeDiMeIƒeDiKƒeDiLƒeDiNeDiOƒeDiPƒeDiKƒnCe7e4ƒdjo/e4d)ZQeDiReQƒeDiKƒeDiLƒneDiSƒqe/ƒei6dƒndS(*N(sGred(s*(saskopenfilenamesasksaveasfilename(s askokcancels showerrorsaskyesno(s ScrolledText(sGatoConfiguration(sGraph(sGraphDisplayToplevel(sAboutBoxs SplashScreens HTMLViewer(s GatoIcons(sGatoSystemConfiguration(sAnimationHistorycCsŠy&|iƒti|iƒdƒ}Wntj oddfSnXti|dƒ}ti|dƒ}|i ƒ}|i ƒ}t ||ƒ}t ||ƒ}td|ƒ}td|ƒ}||fSdS(sŹ Returns (top,else) where - top is the amount of extra pixels the WM puts on top of the window - else is the amount of extra pixels the WM puts everywhere else around the window NOTE: Does not work with tk8.0 style menus, since those are handled by WM (according to Tk8.1 docs) NOTE: Some window managers return bad geometry definition Handle in caller s+i iiN(swindowsgeometrysstringssplitsgsTclErrorsatois trueRootxs trueRootys winfo_rootxsrootxs winfo_rootysrootysabss topWMExtrasWMExtrasmin(swindows trueRootysgs trueRootxs topWMExtrasWMExtrasrootysrootx((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysWMExtrasGeometryFs    sAlgoWincBs<tZdZed„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z d „Z d „Z d „Zd „Zd „Zd„Zd„Zdd„Zd„Zdd„Zdd„Zdd„Zd„Zd„Zed„Zd„Zed„Zed„Zed„Zd„Zed„Z d„Z!d „Z"d!„Z#d"„Z$d#„Z%d$„Z&d%„Z'd&„Z(d'„Z)d(„Z*d)„Z+d*„Z,d+„Z-d,„Z.d-„Z/d.„Z0d/„Z1d0„Z2d1„Z3d2„Z4d3„Z5d4„Z6d5„Z7d6„Z8d7„Z9d8„Z:d9„Z;eed:„Z<d;„Z=RS(<so Provide GUI with main menubar for displaying and controlling algorithms and the algorithm text widget cCsti||ƒt|iƒ}|iiddƒ|_ d|_ d|_ ddddd d d d d dddddddddddddddddg|_ t iƒt|ƒ|_tiƒ|_|iƒ|idd d!tƒ|iƒ|iƒ|iƒ|iid"ƒ|iid#ƒtƒ|_|ii|ƒtƒ|_t |_!t |_"t |_#d$|_$d$|_%t |_&t'ƒ|_(|ii)d%|i*ƒ|i+ƒt,i-d&jp t,i-d'jo+|ii.ƒ|ii.ƒ|ii/ƒn |i.ƒt0|iƒ}|ii2ƒ}|ii4ƒ}t6i7t,i-t8|ƒd(||fƒt9d)|ii2ƒƒ}t9d*|ii4ƒƒ}t,i-d&jp t,i-d'jo|ii:|||d ƒn$|ii:|||d$|d ƒ|i;|iƒ|i;|iƒ|i<ƒdS(+NstkswindowingsystemsCourieri sdelsfromslambdasreturnsandselifsglobalsnotstrysbreakselsesifsorswhilesclasssexceptsimportspassscontinuesfinallysinsprintsdefsforsissraisesexpandisfillsGato 0.99 - Algorithms Gato 0.99isWM_DELETE_WINDOWsntsdoss width = %f height = %f iXiī(=sFrames__init__sselfsparents SplashScreensmastersSplashstkscallswindowingsystemsalgoFonts algoFontSizes keywordsLists GatoIconssInitsGatoConfigurationsconfigsGatoSystemConfigurations GatoInstallers gatoInstallerspacksBOTHs makeMenuBarsmakeAlgoTextWidgets makeToolBarstitlesiconnames Algorithms algorithmsSetGUIsGraphDisplayToplevels graphDisplaysNonessecondaryGraphDisplaysAboutAlgorithmDialogsAboutGraphDialogslastActiveLinesalgorithmIsRunningscommandAfterStopsIntVarsgoOnsprotocolsQuitsDestroysossnamestkraises focus_forcesWMExtrasGeometryswmExtrasswinfo_reqwidthswidthswinfo_reqheightsheightslogsdebugsstrsminsminsizesBindKeyss SetFromConfig(sselfsparentswidthsSplashsheightswmExtras((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys__init__zsZ  W                   ( #cCsÜt|ddƒ|_|idjo d}nd}t|iddƒ|_|iiddd|iƒ|iiddd|iƒ|idjo |iidd d|i ƒn|iidd d|i ƒ|iidd d|i ƒ|idjoj|ii ƒ|iidd d|i d d|ƒ|ii ƒ|iiddd|id d|ƒn|iiddd|iddƒt|iddƒ|_|iiddd d|d|iƒ|iiddd d|d|iƒ|iiddd|iddƒt|iddddƒ|_|idjo |iiddd|iƒn|iiddd d|d|iƒ|ii ƒ|iiddd|iƒ|iiddd|iƒ|ii ƒ|iidd d|iƒ|iidd!d|iƒ|iiddd|iddƒ|idjoƒt|idddd"ƒ|_|iiddd|iƒ|ii ƒ|iidd d d#d|i ƒ|iid|iƒn|iid|iƒd$S(%s *Internal* stearoffisaquascommandsCtrlslabelsOpen Algorithm...s Open Graph...s New Graph...sReload Algorithm & GraphsExport Graph as EPS...sPreferences...s accelerators%s-,sQuits%s-QsFilesmenus underlinesOne graph windows%s-1sTwo graph windowss%s-2s Window Layoutsnameshelps About GatosHelps%s-?sGo to Gato websitesGo to CATBox websitesAbout Algorithms About Graphsapples command-,N(sMenusselfsmenubarswindowingsystemsaccModsfileMenus add_commands OpenAlgorithms OpenGraphsNewGraphsReloadAlgorithmGraphs ExportEPSFs add_separators PreferencessQuits add_cascades windowMenusOneGraphWindowsTwoGraphWindowshelpMenusAboutBoxsHelpBoxsGoToGatoWebsitesGoToCATBoxWebsitesAboutAlgorithms AboutGraphsapplesmasters configure(sselfsaccMod((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys makeMenuBarŠs„                           cCs÷t|dddtƒ}|idtdtƒ|idddƒti d jp ti d jod }d }n d }d }|i d jo d}nd}t|d|d|d|ddd|iddƒ|_t|d|d|d|ddd|iddƒ|_t|d|d|d|ddd|iddƒ|_t|d|d|d|ddd|iddƒ|_t|d|d|d|ddd|iddƒ|_|iidd dd ddddƒ|iidd ddddddƒ|iidd ddddddƒ|iidd dd ddddƒ|iidd ddddddƒt|id t|dtd!dƒ}|idd dddd"ddƒnd#S($s4 *Internal* Creates Start/Stop/COntinue ... toolbar scursorshand2sreliefssidesfillisweightisntsdosiisaquai iswidthspadxspadystextsStartscommandshighlightbackgrounds#DDDDDDsStepsTracesContinuesStopsrowscolumniisstatesbdiN(sFramesselfsFLATstoolbarspacksBOTTOMsXscolumnconfiguresossnamespxspyswindowingsystemsbWidthsButtonsCmdStarts buttonStartsCmdSteps buttonStepsCmdTraces buttonTraces CmdContinuesbuttonContinuesCmdStops buttonStopsgridsDISABLEDsdummy(sselfspysbWidthspxstoolbarsdummy((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys makeToolBar,sP   %%%%%     cCsC|idjo"t|dtddddƒ}nt|dtddƒ}t|dtdd d d dd d d ddddƒ|_|i|i |i ƒ|ii dddt ƒ|i dt dddt ƒ|iidddddƒ|iidddddƒ|iidddƒ|iid|iƒt|idsstateN(sselfswindowingsystemsFramesFLATs borderFramesSUNKENs ScrolledTextsalgoTextsSetAlgorithmFontsalgoFonts algoFontSizespacksBOTHsTOPs tag_configsbinds handleMousesDISABLED(sselfs borderFrame((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysmakeAlgoTextWidget^s "   cCsŪ||_||_ti|||tifƒ}ti|||ti fƒ}ti|||ti fƒ}|i id|ƒ|i idd|ƒ|i idd|ƒ|i idd|ƒ|i idd|ƒdS(Nsfontskeywordsstringscomments identifier(sfontsselfsalgoFontssizes algoFontSizestkFontsFontsNORMALsfsBOLDsbfsITALICsitfsalgoTextsconfigs tag_config(sselfsfontssizesbfsfsitf((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysSetAlgorithmFontzs  cCs|ii}|i|dƒt|dƒƒƒ|iid|dƒd|dƒƒ|iidd|d ƒd |d ƒƒ|iid d|d ƒd |dƒƒ|iidd|dƒd |dƒƒt|dƒƒtƒd...this feature is under developement. Do you want to proceed?sstitlesSave Graph and Algorithmsdefaultextensions.gatos filetypessGato( sGatoFilesaskyesnosselfsalgorithmIsRunningsCmdStops SaveGatoFilescommandAfterStopsfilenamesasksaveasfilename(sselfsfilenamesGatoFile((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys SaveGatoFile<s       c Cs„dk}|io|iƒ|i|_dSn|djo(tdddddddfgƒ}n|dj o h}y:|i|ƒ} | i ƒ}| o| i |ƒ}nWn3|i j o$}|id |i|ƒdSnX|tjodSn|id ƒo½y>|d iƒ}|ii|d d ||d iƒfƒWn-ttfj o|id|ƒdSnX|iiƒot|id |i?ƒ|iiƒot|id scstsbsrsusdsaquasCommandsControls<%s-q>s <%s-comma>s<%s-KeyPress-1>s<%s-KeyPress-2>s <%s-question>(swidgetsbindsselfsKeyStartsKeyStopsKeySteps KeyContinuesKeyTracesKeyBreaks KeyReplaysKeyUndosKeyDoswindowingsystemsaccModsQuits PreferencessOneGraphWindowsTwoGraphWindowsHelpBox(sselfswidgetsaccMod((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysBindKeys©s" cCs&|idtjo|iƒndS(s# Command linked to toolbar 'Start' sstateN(sselfs buttonStartsDISABLEDsCmdStart(sselfsevent((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysKeyStartĆscCs&|idtjo|iƒndS(Nsstate(sselfs buttonStopsDISABLEDsCmdStop(sselfsevent((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysKeyStopČscCs3|idtjo|iƒn|i|ƒdS(s" Command linked to toolbar 'Step' sstateN(sselfs buttonStepsDISABLEDsCmdStepsKeyStartsevent(sselfsevent((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysKeyStepĢscCs&|idtjo|iƒndS(s& Command linked to toolbar 'Continue' sstateN(sselfsbuttonContinuesDISABLEDs CmdContinue(sselfsevent((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys KeyContinueÓscCs&|idtjo|iƒndS(s# Command linked to toolbar 'Trace' sstateN(sselfs buttonTracesDISABLEDsCmdTrace(sselfsevent((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysKeyTraceŲscCs|iiƒdS(s" Command for toggling breakpoints N(sselfs algorithmsToggleBreakpoint(sselfsevent((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysKeyBreakŻscCs|iiƒdS(s& Command for Replaying last animation N(sselfs algorithmsReplay(sselfsevent((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys KeyReplayįscCs|iiƒdS(s& Command for Replaying last animation N(sselfs algorithmsUndo(sselfsevent((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysKeyUndoåscCs|iiƒdS(s& Command for Replaying last animation N(sselfs algorithmsDo(sselfsevent((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysKeyDoéscCs?ti|iitƒdƒd}|iiti |ƒƒdS(s7 Callback for canvas to allow toggeling of breakpoints s.iN( sstrings splitfieldssselfsalgoTextsindexsCURRENTscurrLines algorithmsToggleBreakpointsatoi(sselfseventscurrLine((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys handleMouseös"cCsb|idjo|i|idƒn||_|i|dƒ|iid|ƒ|iƒdS(s Show lineNo as active line isActives%d.0N(sselfslastActiveLines unTagLineslineNostagLinesalgoTextsyview_pickplacesupdate(sselfslineNo((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys ShowActives cCs|i|dƒdS(s Show lineNo as breakpoint sBreakN(sselfstagLineslineNo(sselfslineNo((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysShowBreakpoint scCs|i|dƒdS(s Show lineNo w/o breakpoint sBreakN(sselfs unTagLineslineNo(sselfslineNo((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysHideBreakpointscCs|i|iƒdS(s` Stop Execution until user does something. This avoids busy idling. See touchLock() N(sselfs wait_variablesgoOn(sself((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys WaitNextEventscCs'|i||iƒ|i|iƒdS(s\ Stop Execution until delay is passed. This avoids busy idling. See touchLock() N(sselfsaftersdelays touchLocks wait_variablesgoOn(sselfsdelay((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysWaitTimescCs||f|_|iƒdS(s& *Internal* Callback for GraphDisplay N(stypestsselfs clickResults touchLock(sselfstypest((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys ClickHandler!scCsm|ii|iƒ|djo|iid|dƒnB|tjo|iid|dƒn|iid|dƒttf|_d}x“|djo…|i |i ƒ|id|jo9|tjo"||idƒo d}qūq’d}n|iddd gjo d}q•q•W|ii ƒ|ii ƒ|idd jotSn |idSd S( s7 Pick a vertex or an edge (specified by 'type') interactively GUI blocks until - a fitting object is clicked - the algorithm is stopped - 'Step' is clicked which will randomly select a vertex or an edge filterChoice is an optional method (only argument: the vertex or edge). It returns true if the choice is acceptable NOTE: To avoid fatal blocks randomly selected objects are not subjected to filterChoice sNones Select a s/ or click 'Step' or 'Continue' for no selections3 or click 'Step' or 'Continue' for random selections4 or click 'Step' or 'Continue' for default selectioniisabortsautoN(sselfs graphDisplaysRegisterClickhandlers ClickHandlersdefaults UpdateInfostypesNones clickResultsgoOns wait_variables filterChoicesUnregisterClickhandlers DefaultInfo(sselfstypes filterChoicesdefaultsgoOn((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysPickInteractive&s0       cCstid||fƒdS(Ns"%s file named %s produced an error(slogserrorsfileDescriptionsfileName(sselfsfileDescriptionsfileName((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysHandleFileIOErrorVs(>s__name__s __module__s__doc__sNones__init__s makeMenuBars makeToolBarsmakeAlgoTextWidgetsSetAlgorithmFonts SetFromConfigsOpenSecondaryGraphDisplaysWithdrawSecondaryGraphDisplays touchLocks activateMenusdeactivateMenustagLines unTagLinestagLiness tokenEaters OpenAlgorithmsNewGraphs OpenGraphs SaveGatoFiles OpenGatoFilesCleanUpsReloadAlgorithmGraphs Preferencess ExportEPSFsQuitsOneGraphWindowsTwoGraphWindowsAboutBoxsHelpBoxsGoToGatoWebsitesGoToCATBoxWebsitesAboutAlgorithms AboutGraphsCmdStartsCmdStops CommitStopsCmdSteps CmdContinuesCmdTracesBindKeyssKeyStartsKeyStopsKeySteps KeyContinuesKeyTracesKeyBreaks KeyReplaysKeyUndosKeyDos handleMouses ShowActivesShowBreakpointsHideBreakpoints WaitNextEventsWaitTimes ClickHandlersPickInteractivesHandleFileIOError(((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysAlgoWinvsv  V \ 2           *    t   * *                      0sAlgorithmDebuggercBs•tZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„ZRS(sž*Internal* Bdb subclass to allow debugging of algorithms REALLY UGLY CODE: Written before I understood the Debugger. Probably should use sys.settrace() directly with the different modes of debugging encoded in appropriate methodscCs/||_tii|ƒd|_d|_dS(s/ *Internal* dbgGUI is the GUI for the debugger ii’’’’N(sdbgGUIsselfsGUIsbdbsBdbs__init__sdoTraceslastLine(sselfsdbgGUI((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys__init__cs   cCs‰|ii}||iijotSn|i|ƒ}||i jo |i Sn||_ |i |ƒ|i o ti‚n|i SdS(s: *Internal* Only dispatch if we are in the algorithm file N(sframesf_codes co_filenamesfnsselfsGUIs algoFileNamesNones currentLineslineslastLinestrace_dispatchs user_linesquittingsbdbsBdbQuit(sselfsframeslinesfn((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys dispatch_linejs      cCsä|ii}|i|ƒ}|i}||ii jot Sn||i d<|i t jo||_ |iSn|i||ƒ|io ti‚n|djod|_|iSn|i|ƒod|_|iSnt SdS(Ns__args__ii(sframesf_codes co_filenamesfnsselfs currentLineslinesdoTracesGUIs algoFileNamesNonesargsf_localssbotframestrace_dispatchs user_callsquittingsbdbsBdbQuitsbreak_anywherestrace_nofeedback_dispatch(sselfsframesargsdoTraceslinesfn((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys dispatch_callxs&           cCsŽ|iodSn|djoG|i|ƒ}||iijod|i_|i |ƒSqft Sn|djo|i ||ƒSn|djo|i ||ƒSn|djo|i||ƒSntid|ƒdS(Nslineiscallsreturns exceptions-bdb.Bdb.dispatch: unknown debugging event: %s(sselfsquittingsevents currentLinesframeslinesGUIs breakpointssmodes dispatch_linesNones dispatch_callsargsdispatch_returnsdispatch_exceptionslogsdebug(sselfsframeseventsargsline((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pystrace_nofeedback_dispatch•s      cCstii|ƒ|iƒdS(s< *Internal* Put debugger into initial state, calls forget() N(sbdbsBdbsresetsselfsforget(sself((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysreset§scCs(t|_g|_d|_t|_dS(Ni(sNonesselfslinenosstackscurindexscurframe(sself((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysforget­s   cCs9|i||ƒ\|_|_|i|id|_dS(Ni(sselfs get_stacksfstsstackscurindexscurframe(sselfsfst((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pyssetup“scCsu|i|ƒ}|idjoR|i|ƒ}||iijod|i_n|iii|ƒd|_ndS(sS *Internal* This function is called when we stop or break at this line iiiN( sselfs currentLinesframeslinesdoTracesGUIs breakpointssmodes ShowActive(sselfsframes argument_listsline((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys user_callŗs cCsbd|_|i|ƒ}||iijod|i_n|iii|ƒ|i |t ƒdS(sH *Internal* This function is called when we stop or break at this line iiN( sselfsdoTraces currentLinesframeslinesGUIs breakpointssmodes ShowActives interactionsNone(sselfsframesline((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys user_lineŹs cCs||id""" information about the algorithm Parameter: filelike object Ns breakpointss"breakpoints[ ]*=[ ]*(\[[^\]]+\])s interactives"interactive[ ]*=[ ]*(\[[^\]]+\])s graphDisplayssgraphDisplays[ ]*=[ ]*([1-2])isabout[ ]*=[ ]*"""s"""sabout(sressyssfilesreadstextsoptionss optionPatternskeyss patternNamescompiles compPatternssearchsmatchsNonesevalsgroups aboutStartPats aboutEndPatsendsleftsstartsright(sselfsfiles patternNamesrights compPatternstexts aboutEndPats aboutStartPatssyssres optionPatternsoptionssmatchsleft((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysReadPrologOptionsYs*    !  !cCs#|itjo |iSndSdS(s; Return a HTML-page giving information about the algorithm s<

No information available

N(sselfsaboutsNone(sself((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysAbout„s cCsÓt|ƒtijo ||_nFt|ƒtijpt|it i ƒo ||_n t dƒ‚t |ƒ|_ |iƒ|iiiƒ|iii|it|iƒƒ|iiit|iƒƒdS(s0 Read in a graph from file and open the display sAwrong types in argument list: expected string or file like objectN(stypesfilestypess StringTypessselfs graphFileNamesFileTypes issubclasss __class__sStringIOsfileNames ExceptionsOpenCATBoxGraphscleanGraphCopys restoreGraphsGUIs graphDisplaysShows ShowGraphsgraphs stripPathsRegisterGraphInformersWeightedGraphInformer(sselfsfilesfileName((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys OpenGraph‹s ,   "cCs"ti|iƒ|_d|_dS(Ni(scopysdeepcopysselfscleanGraphCopysgraphs graphIsDirty(sself((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys restoreGraph™scCsK|iiƒ|iii||ƒ|tjo|iii |ƒndS(s9 Read in graph from file and open the the second display N( sselfsGUIsOpenSecondaryGraphDisplayssecondaryGraphDisplays ShowGraphsGstitlesinformersNonesRegisterGraphInformer(sselfsGstitlesinformer((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pysOpenSecondaryGraphs   cCs0|idjo |idjodSndSdS(sn Return 1 if we are ready to run. That is when we user has opened both an algorithm and a graph. siiN(sselfs graphFileNames algoFileName(sself((s1/mnt/gmirror/ports/math/py-gato/work/Gato/Gato.pys ReadyToStart„s cBsO|idjo\|iƒ|iiiƒ|iii|ie|i ƒƒ|iii e |iƒƒn|iiiƒd|_d|_ h|_ ||i d<|i|i d