;ò òiýDc@sÎdkTdklZlZdklZdkTdklZdklZl Z dkZdk Z dk Z dei fd„ƒYZ defd „ƒYZd eefd „ƒYZd eefd „ƒYZdS((s*(sGraphsPoint2D(ssqrt(s GraphDisplay(s askintegersaskfloatNsEditWeightsDialogcBs,tZdZed„Zd„Zd„ZRS(sí Provide a dialog for editing vertex and edge weigths - title the title in the dialog box - nrOfWeights how many weights are there - weights an array of initial values - intFlag an array denoting whether the corresponding entry is an integer (=1) or a float (=0) Hack: A negative value will disable editing - label an optional array of strings to use for weight names cCs>||_||_||_||_tii|||ƒdS(N( s nrOfWeightssselfsweightssintFlagslabelstkSimpleDialogsDialogs__init__smasterstitle(sselfsmasterstitles nrOfWeightssweightssintFlagslabel((s8/mnt/gmirror/ports/math/py-gato/work/Gato/GraphEditor.pys__init__:s     c Cs¢|iddƒt|dddtƒ}|idddddd d d ƒtg|i|_ x>t |iƒD]-}|itjo$t|dd |ddtƒ}n t|d|i|dtƒ}|id|ddddd d d d dƒt |dddt ƒ|i |<|i|o&|i |idd|i|ƒn#|i |idd|i|ƒ|i |id|ddddd d d d dƒqmWdS(NistextsValuesanchorsrowscolumnispadxispadyis Weight %dsstickyseswidthisexportselections%ds%fsw(sselfs resizablesLabelsmastersWslabelsgridsNones nrOfWeightssentrysxrangesisEntrysFALSEsintFlagsinsertsweights(sselfsmastersislabel((s8/mnt/gmirror/ports/math/py-gato/work/Gato/GraphEditor.pysbodyBs"$,&"cCs tg|i|_xt|iƒD]ñ}y\|i|o'ti|i |i ƒƒ|i|s<1>s ss<2>s ssssN(s GraphDisplays CreateWidgetssselfsWidgetsbindscanvass MouseMotions MouseDowns MouseMovesMouseUps Mouse2Downs Mouse2MovesMouse2UpsMouse3Ups CanvasEnters CanvasLeave(sself((s8/mnt/gmirror/ports/math/py-gato/work/Gato/GraphEditor.pys CreateWidgets¨s cCs+|i|ƒ\}}|i|ƒ}|tjo|io|i |ƒ}n|i |ƒ}|tjod|d|df}n•|tjo;|i i|ƒ}d|t|iƒt|iƒf}nM|djo |djo,|i||ƒ\}}d||f}nd}|i|ƒdS(Ns Edge (%d,%d)iisVertex %d at position (%d,%d)s(%d,%d)s(sselfsWindowToCanvasCoordsseventsxsys FindVertexsvsNonesgriddingsFindGridVertexsFindEdgeses infoStringsGs GetEmbeddingstsintsCanvasToEmbeddings UpdateInfo(sselfseventses infoStringstsvsysx((s8/mnt/gmirror/ports/math/py-gato/work/Gato/GraphEditor.pys ShowCoords»s  )cCsr|i|ƒ}|tjoj|i|ƒtjoG|i|ƒ\}}t |dƒ}t |dƒ}|i ||ƒnt|_ né|i i dd|i|ƒ|i i dd|i|ƒy'|i i dd|i||fƒWnnX|i idƒ|i i|i|ƒ}|d|dd|d|_|d|dd|d|_||_ d|_dS(NismySelswithtagiii(sselfs FindVertexseventsvsNonesFindGridVertexsWindowToCanvasCoordssxsysmaxsAddVertexCanvass movedVertexscanvassaddtags drawVertexs drawLabels drawEdgessliftscoordsscsoldxsoldys didMoveVertex(sselfseventscsvsysx((s8/mnt/gmirror/ports/math/py-gato/work/Gato/GraphEditor.pysAddOrMoveVertexDownÎs(  '!! cCs|i o|i|ƒ\|_|_t|idƒ|_t|idƒ|_|iƒy |ii dƒ|ii d|i|i |i|i ƒ|i|_ |i|_ |i |i|iƒ\}}d|i||f}|i|ƒd|_Wqd}qXndS(NismySelsVertex %d at position (%d,%d)i(sselfs canvasleftsWindowToCanvasCoordsseventsnewxsnewysmaxsupdate_idletasksscanvassliftsmovesoldxsoldysCanvasToEmbeddingsxsys movedVertexs infoStrings UpdateInfos didMoveVertexsi(sselfsevents infoStringsisysx((s8/mnt/gmirror/ports/math/py-gato/work/Gato/GraphEditor.pysAddOrMoveVertexMoveès$        cCse|itjoQ|iƒ|io |i|i|i|iƒnt|_|ii dƒndS(NsmySel( sselfs movedVertexsNonesupdate_idletaskss didMoveVertexs MoveVertexsnewxsnewyscanvassdtag(sselfsevent((s8/mnt/gmirror/ports/math/py-gato/work/Gato/GraphEditor.pysAddOrMoveVertexUps     cCsˆ|i|ƒ|_|itjob|ii|i|iƒ}|d|dd|d|_ |d|dd|d|_ ndS(Niiii( sselfs FindVertexseventstailsNonescanvasscoordss drawVertexscsstartxsstarty(sselfseventsc((s8/mnt/gmirror/ports/math/py-gato/work/Gato/GraphEditor.pys AddEdgeDown s !cCsÃ|itjo¯|ii|iƒ}|ii|iƒ}|i |ijo|i |ijo[|ii |i ƒ|ii |i |i ||ƒ|_ |ii|i dƒ|iƒq¿ndS(Nsvertices(sselfstailsNonescanvasscanvasxseventsxscanvasysysstartxsstartysdeletesrubberbandLines create_lineslowersupdate_idletasks(sselfseventsxsy((s8/mnt/gmirror/ports/math/py-gato/work/Gato/GraphEditor.pys AddEdgeMoves&$cCs|itjo|ii|iƒn|itjoÙ|ii|iƒ}|ii |i ƒ}|i i ||t|iƒ}|o†|d}|ii |ƒ}t}d|jo|i|}nd|jo|i|}n|tjo|i|i|ƒq qndS(Nisverticesslabels(sselfsrubberbandLinesNonescanvassdeletestailscanvasxseventsxscanvasysyswidgets find_closestsgettagsstagssheadsvertexslabelsAddEdge(sselfseventstagsswidgetsysxshead((s8/mnt/gmirror/ports/math/py-gato/work/Gato/GraphEditor.pys AddEdgeUp&s     cCsð|iitƒoÙ|iitƒd}|ii|ƒ}d|jo'|i|\}}|i ||ƒqìd|jo|i |}nd|jo|i|}n|i|ƒt|_ |itjo|ii|iƒqìndS(Nisedgessverticesslabels(seventswidgets find_withtagsCURRENTsselfscanvassgettagsstagssedgestailsheads DeleteEdgesvertexsvslabels DeleteVertexsNonesrubberbandLinesdelete(sselfseventswidgetstagssheadstailsv((s8/mnt/gmirror/ports/math/py-gato/work/Gato/GraphEditor.pysDeleteEdgeOrVertexUp<s     cCsw|iitƒo`|iitƒd}|ii|ƒ}d|jo'|i|\}}|i ||ƒqsndS(Nisedges( seventswidgets find_withtagsCURRENTsselfscanvassgettagsstagssedgestailsheadsSwapEdgeOrientation(sselfseventswidgetstagssheadstail((s8/mnt/gmirror/ports/math/py-gato/work/Gato/GraphEditor.pysSwapOrientationUpNs  c CsV|iitƒo?|iitƒd}|ii|ƒ}d|joû|i|\}}f} f} t |iiiƒƒ}xPt|ƒD]B}| |ii|||ƒf} | |ii|iƒf} qŒWt|d||f|| | ƒ}|itj o;x8t|ƒD]&}|ii||||i|ƒqWqNqR|i|ƒ} | tjo|iiƒdjoÙf} f} t |iiiƒƒ}xLt|ƒD]>}| |ii|| f} | |ii|iƒf} q¦Wt|d| || | ƒ}|itj o6x3t|ƒD]!}|i||ii||