XׯdFddlmZd!dZd!dZGddZeZGddeZGd d eZdZ d Z Gd d eZ GddeZ Gdde Z Gdde ZGdde ZGdde ZGddeZGddeZGddeZGdde Zd S)") cairo_utilsc||\}}||||||dz z ||zdz |||dz z||zdz |dS)N?new_pathmove_toline_to close_pathcrtip_posahawxys ..\workbench\graphics\canvas.py draw_varrowrsKKMMM DAqJJq!JJq2a4xR#&&&JJq2a4xR#&&&MMOOOOOc||\}}||||||z dz ||dz z |||z dz ||dz z|dS)Nrrrr s r draw_harrowr"sKKMMM DAqJJq!JJq2v|QAX&&&JJq2v|QAX&&&MMOOOOOrceZdZdZdS)Settings HelveticaN)__name__ __module__ __qualname__ default_fontrrrr,sLLLrrc\eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdS)Canvascpd|_d|_||_g|_dgdz|_d|_d|_dS)Nr%)rrr)_sizetooltipset_needs_repaint_figures_mouse_down_figures _hover_figure_background_color)selfset_needs_repaint_cbs r__init__zCanvas.__init__4sC  !5 $(6A: !!(rcX|jr"|jd|_dSdSN)r(closer.s r deactivatezCanvas.deactivateBs5 < L   DLLL  rcdSr2r r4s ractivatezCanvas.activateH rc|||f|_dSr2)r-)r.rgbs rset_background_colorzCanvas.set_background_colorLs!"Aqrc|||j||dSr2) set_canvasr*append invalidater.objs raddz Canvas.addPs@ t S!!! rc|j|j||d|j|dSr2)rAboundsr)r?r*removerBs rrGz Canvas.removeVsS$$     t S!!!!!rc|j|j|dd|||||||jD],}||||-dSNr%)set_source_rgbr- rectanglefill translater*relayoutrender)r.rrrwhfs rrepaintzCanvas.repaint]s4122 Q1a      Q  A JJrNNN HHRLLLL  rc6|||||dSr2)r)r.rrrPrQs rrAzCanvas.invalidategs" q!Q*****rcN|jD]}|||r|cSdSr2)r*contains_point)r.rrrRs r figure_atzCanvas.figure_atks>  A1%%  trc||||}|r#||j|<||||dSdS)NTF)rXr+ mouse_down)r.buttonrrfigs rrZzCanvas.mouse_downrsJnnQ""  /2D $V , NN61a ( ( (4urc||j|r.|j||||d|j|<dSdSr2)r+mouse_upr.r[rrs rr^zCanvas.mouse_upzsO  #F + 4  $V , 5 5fa C C C/3D $V , , , 4 4rcdSr2r r4s r mouse_leavezCanvas.mouse_leaves  rcd}t|jD]"\}}|rd}||||n#|s|||}||jkrB|jr|j|||r|||||_n"|jr|j|||jr|j||dSdSdS)NFT) enumerater+ mouse_dragrXr, hover_outhover_inhover mouse_move)r.rrdraggedr<rRr\s rrhzCanvas.mouse_moves*d677  DAq  Q1%%%  4..A&&Cd(((%7&00A666'LLA&&&%(""%3&,,Q222! 4"--a33333 4 4 4 4rN)rrrr0r5r7r=rDrGrSrArXrZr^rarhr rrr"r"3s ) ) )      ))) """+++444    44444rr"cfeZdZdZdZddZdZdZdZdd Z d Z d Z d Z d Z dZdZdZdS)ElementcZd|_d|_d|_d|_d|_d|_dS)NFr%r%r%r)canvasparent _layout_dirty_color on_hover_in on_hover_outr4s rr0zElement.__init__s5  ""  rc||_dSr2)rn)r.rns rr?zElement.set_canvass  rFcR|sd|_|jr|jj|jdSdS)NT)rprnrArF)r. repaint_onlys rrAzElement.invalidates@ &!%D  ; 1 "DK "DK 0 0 0 0 1 1rcL|jr||d|_dSNF)rp do_relayoutr.rs rrNzElement.relayouts/   !   R "rcdSr2r rzs rryzElement.do_relayoutr8rcdSr2r rzs rrOzElement.renderr8r?c||||f|_dSr2)rqr.r:r;r<as r set_colorzElement.set_colors!Ql rcdSr2r r_s rrZzElement.mouse_downr8rcdSr2r r_s rr^zElement.mouse_upr8rcdSr2r r_s rrdzElement.mouse_dragr8rcdSr2r r.rrs rrhzElement.mouse_mover8rcF|jr||||dSdSr2)rrrs rrfzElement.hover_ins5   )   T1a ( ( ( ( ( ) )rcF|jr||||dSdSr2)rsrs rrezElement.hover_outs5   *   dAq ) ) ) ) ) * *rcdSr2r rs rrgz Element.hoverr8rN)Fr})rrrr0r?rArNryrOrrZr^rdrhrfrergr rrrkrks!!!1111 ###       ####            )))***     rrkrceZdZdZedZedZedZedZedZ edZ edZ ed Z ed Z ed Zed Zed ZedZedZdZdZdZdZdZdZdZdZdZdZdZd!dZdZdZ dZ!d S)"Figurect|d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ ttz|_dS)Nr%)rrrrr)NNr%r%r%r%)rkr0_x_y_width_height_uwidth_uheight _fill_color _line_width_dash_paddingHFillVFill _layout_flagsr4s rr0zFigure.__init__sp    '! $ "U]rc|jSr2)rr4s rrzFigure.x wrc|jSr2)rr4s rrzFigure.yrrc<|j|jr |jjndzSrI)rroroot_xr4s rrz Figure.root_x vt{A++BBrc<|j|jr |jjndzSrI)rroroot_yr4s rrz Figure.root_yrrc,|j|jn|jSr2)rrr4s rwidthz Figure.widths"l2t{{ Drc,|j|jn|jSr2)rrr4s rheightz Figure.heights#}4t||$-Grc|j|jfSr2)rrr4s rposz Figure.poss!!rc|j|jfSr2rrr4s rsizez Figure.sizes DK((rc"dd|j|jfSrIrr4s rrFz Figure.bounds s!TZ,,rc6|j|j|j|jfSr2)rrrrr4s rframez Figure.framesvtvtz4;66rc|jdSrIrr4s r padding_topzFigure.padding_top}Qrc|jdS)Nrrr4s r padding_leftzFigure.padding_leftrrc|jdSNrrr4s rpadding_bottomzFigure.padding_bottomrrc|jdS)Nrr4s r padding_rightzFigure.padding_right rrc|jr|jj|j||_||_|jr|jj|jdSdSr2)rnrArrrrs rmovez Figure.move$s\ ; 0 "DK "DJ / / ; 0 "DK "DJ / / / / 0 0rc|j}|j}||dko5||d|dzko ||dko||d|dzkSNr%rrr)r.rrrrs rrWzFigure.contains_point,s]hyCF{\q3q6DG#33\SV \CPQFUYZ[U\L\H\\rc~|j\}}|j\}}t||dz zt||dz zfSr)rrintrUs rcenterz Figure.center1s?x1y11qs7||SQqS\\))rc@|j\}}|j\}}||f||z|ffSr2rrUs r top_vertexzFigure.top_vertex6s/x1y11v!QxrcL|j\}}|j\}}|||zf||z||zffSr2rrUs r bottom_vertexzFigure.bottom_vertex;s7x1y11Q3x!A#qs##rcL|j\}}|j\}}||z|f||z||zffSr2rrUs r right_vertexzFigure.right_vertex@s7x1y1!Qx!A#qs##rc@|j\}}|j\}}||f|||zffSr2rrUs r left_vertexzFigure.left_vertexEs/x1y11v1Q3xrc||||f|_dSr2r)r.tlr<r:s r set_paddingzFigure.set_paddingKs1a  rc||_dSr2)r)r.flagss rset_layout_flagszFigure.set_layout_flagsNs"rc@||f|_|dSr2)rrA)r.dashoffsets r set_line_dashzFigure.set_line_dashQs#F^  rc<||_|dSr2)rrA)r.rs rset_line_widthzFigure.set_line_widthUs  rr}cD||||f|_|dSr2)rrArs rset_fill_colorzFigure.set_fill_colorYs(q!Q< rc|j|j|jdr,||jd|jd||jdSr)set_source_rgbarqrset_dashrrr.cs rapply_attributeszFigure.apply_attributes]s_4;'' :a= 5 JJtz!}djm 4 4 4 )*****rc$|j|jdSr2)rrrs rapply_fill_attributeszFigure.apply_fill_attributescs4+,,,,rc"||_||_dSr2)rr)r.rPrQs r set_usizezFigure.set_usizefs  rNr)"rrrr0propertyrrrrrrrrrFrrrrrrrWrrrrrrrrrrrrrr rrrrs + + +XXCCXCCCXCEEXEHHXH""X"))X)--X-77X7  X   X   X   X 000]]] ***    $$$ $$$    ######+++ ---rrc0eZdZdZedZdZdS)LinecVt|d|_d|_dSr2)rkr0_end1_end2r4s rr0z Line.__init__ls(  rcdS)Nrr r4s rrFz Line.boundsqszrcdSr2r rs rrWzLine.contains_pointustrN)rrrr0rrFrWr rrrrksM Xrrc&eZdZdZdZdZdZdS) ContainercHt|g|_dSr2)rr0_itemsr4s rr0zContainer.__init__}s rcH||_|j|dSr2)rorr@r.items rrDz Container.add%  4     rcHd|_|j|dSr2)rorrGrs rrGzContainer.removerrc|||j|j|jD]}|||dSr2)saverMrrrrOrestore)r.ris rrOzContainer.rendersZ   TVTV$$$  A HHRLLLL rN)rrrr0rDrGrOr rrrr|sP!!! !!! rrc eZdZdZdZdZdS) VBoxFigurecHt|d|_dSrI)rr0_spacingr4s rr0zVBoxFigure.__init__s!4    rc||_dSr2)r)r.sps r set_spacingzVBoxFigure.set_spacings  rc^|j\}}}}|}|}|j}|jD]a} | || ||t || j}|t| j|j zz }b|jr ||j z}|jD]h} | j tzr1| || j | |B| || jz dz | ji||z|z|_||z|_|dSr)rrrryrmaxrrrrrrrrrrrA) r.rlptprpbprr max_widthrs rryzVBoxFigure.do_relayouts9BB  K  / /A MM"    FF1aLLLIqw//I QX. .AA ;   A 7 7A& 7 Iqz222 b!!!! AG+q0!#6666"nr) 2v  rN)rrrr0rryr rrrrsA rrcBeZdZd dZd dZdZdZdZdZd Z d Z d S) TextFigurect|||_tj|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ dS)N rmrFgr%)rr0_textsettingsr_font _font_size _text_color _line_spacing_bold _xalignment _yalignment _line_height _text_heightr.texts rr0zTextFigure.__init__si * ' rr}cD||||f|_|dSr2)rrArs rset_text_colorzTextFigure.set_text_colors(aA: rc||_dSr2)rr.ss r set_font_sizezTextFigure.set_font_sizes rc||_dSr2)rrs r set_font_boldzTextFigure.set_font_bolds  rcL||_||_|ddSrx)rrrArs r set_alignmentzTextFigure.set_alignments* rc>||_|ddSrx)rrArs rset_textzTextFigure.set_texts!  rcV|||jd|j||jd|jvr|jd}d\}}d}d|_|D]}| |}t|t|j |j z}t|t|j|jz|jz}|xj|j|jzz c_|r|xj|jzc_t||_|j\}} } } || z| z|j|z| zc|_|_n| |j}||_|j\}} } } t|jt|j|jzz|_t|j |j z| z| z|_|j|z| z|_|j|_|dS)NF r$r%)rset_fontrrr rrsplitr text_extentsrr x_bearing x_advancer y_bearingrrrrr_extentsr r.ctxlinesrPrQlhlineextrrr<r:s rryzTextFigure.do_relayouts    TZ 333 $/*** 4:  J$$T**EDAqB !D  E E&&t,,3s}s}<==>>Scj!83=!HIIJJ!!SZ$2D%DD!!! 8!!T%77!! #BD JAq!Q)*Qq$2Ca2G2I %DK""4:..CDMJAq!Q #CJ#cj3=6P2Q2Q QD cmcm;<replacerr?r@rA)r.rJs rswitch_image_modezImageFigure.switch_image_mode)s\  =++GV<>>">>> DDD     rr;c eZdZdZdZdZdS) ShapeFigurect|||dd|ddS)Nrr)r r0r$r)r.captions rr0zShapeFigure.__init__>sHD'*** 3$$$ Arc|||j|j||||||||| t ||dSr2) rrMrr make_pathr fill_preserverr8rr rOrQs rrOzShapeFigure.renderEs   dfdf%%% s ""3'''  c"""  $$$$$$rc$|j|jdSr2)rKrFrQs rrWzShapeFigure.make_pathTs t{####rN)rrrr0rOrWr rrrSrS=sA % % %$$$$$rrSceZdZdZdS)DiamondShapeFigurec2|d|jdz ||jdz d||j|jdz ||jdz |j|dS)Nr%r)r rr rr rQs rrWzDiamondShapeFigure.make_pathYs At{1}%%% DJqL!$$$ DJ A ... DJqL$+... rN)rrrrWr rrr[r[Xs#rr[ceZdZdZdZdZdS)RectangleShapeFigurer%c|jdkr$|dd|j|jdS|dd|j|j|jdS)Nr%r)_corner_radiusrKrr rounded_rectrQs rrWzRectangleShapeFigure.make_pathds[  ! # # MM#sDJ < < < < <   S#tz4;@S T T T T Trc||_dSr2)r`)r.r:s rset_corner_radiusz&RectangleShapeFigure.set_corner_radiusjsrN)rrrr`rWrcr rrr^r^as:NUUU      rr^c&eZdZdZdZdZdZdS)HoverTipct|||_d|_d|_d|_d|_d|_dS)Nr Fr )rrrr)rr0r font_sizebold line_spacing line_heightpaddingrs rr0zHoverTip.__init__rsD  # rc |||j|jr|dd|jd|jvr|jd}d\}}d}|D]{}||}t|t|j |j z}t|t|j |j |j z|jzz}|||_|t!|z|jt!|dz zz}|j\}} } } || z| z||z| zc|_|_n||j}||_|j\}} } } t|j |j |j z|jzz|_t|j |j z| z| z|_|j|z| z|_|dS)NrFr(r$r%r)rr rhrir)rr*r+rrr,r-r y_advancer.rklenrjrlrrr/rr0s rcalcz HoverTip.calc|s   $.))) 9 8 LLeTY 7 7 7 49  IOOD))EDAqB ] ]&&t,,3s}s}<==>>SszCM/ICM/Y!Z[[\\!D SZZ$"3s5zz!|"DDAJAq!Q)*Qq!a%' %DK""49--CDMJAq!Q"3:cm1Kcm1[#\]]D cmcm;<rvs. 8::g4g4g4g4g4Vg4g4g4V7 7 7 7 7 f7 7 7 v KKKKKWKKK\     6   ".        JWWWWWWWWt'''''&'''V$$$$$*$$$6      ;    <<<<<v<<<<<r