rL i[ddlZddlZddlZddlZddlmZmZmZddlm Z m Z m Z m Z m Z mZmZ ddlZ ej&ddddlmZmZmZmZmZdd lmZdd lmZmZm Z m!Z!m"Z#ejHd k\Z%ejLd d dduZ'GddeejPZ)Gdde!ejTZ+Gdde ejTZ,ejZe)Gddej\Z/ejZe)Gddej`Z1ejZe)GddejdZ3ejZe)ejhejZe)ejje,Z6Gdde Z7ejpGddeZ9y#e$rZededZ[wwxYw#e$rZeeedZ[wwxYw)N)_api backend_toolscbook)ToolContainerBase MouseButtonKeyEvent LocationEvent MouseEvent ResizeEvent CloseEventz#The GTK4 backends require PyGObjectGtkz4.0)GioGLibr Gdk GdkPixbuf) _backend_gtk) _BackendGTK_FigureCanvasGTK_FigureManagerGTK_NavigationToolbar2GTKTimerGTK)/r ceZdZdZdZej dZdfd ZdZ dZ ddZ dZ d Z d Zd Zd Zd ZdZdZdZdZddZdZdZdZdZdZdZdZdZdZdZ xZ!S)FigureCanvasGTK4gtk4FctSN)FigureManagerGTK4)clss f/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/backends/backend_gtk4.pyzFigureCanvasGTK4.'s3Dc&t |||jd|jdd|_d|_|j |j|jd|jtr|jd|jn|jd|jtj}|jd|jd|j |jd|j"|j%|tj&}|jd |j(|jd |j*|j%|tj,}|jd |j.|jd |j0|jd |j2|j%|tj4j7tj8j:}|jd|j<|j%||j?dtj@}d}tjBddd|jE|dn |jE|jGd|jI}|jK|tjL|jOdy)N)figureTrresizerealizeznotify::scale-factorpressedreleasedz key-pressedz key-releasedmotionenterleavescrollz/.matplotlib-canvas { background-color: white; }r rzutf-8zmatplotlib-canvas)(super__init__ set_hexpand set_vexpand _idle_draw_id_rubberband_rect set_draw_func _draw_funcconnect resize_event _GTK_GE_4_12_realize_event_update_device_pixel_ratior GestureClick set_buttonbutton_press_eventbutton_release_eventadd_controllerEventControllerKeykey_press_eventkey_release_eventEventControllerMotionmotion_notify_evententer_notify_eventleave_notify_eventEventControllerScrollnewEventControllerScrollFlagsVERTICAL scroll_event set_focusable CssProvider check_versionload_from_dataencodeget_style_context add_provider#STYLE_PROVIDER_PRIORITY_APPLICATION add_class) selfr(clickkeyr-r0cssstyle style_ctx __class__s r$r4zFigureCanvasGTK4.__init__)sT '   $ 4??+ Xt001  LLD$7$7 8 LL/1P1P Q  "  i!8!89 j$";";< E"$$& M4#7#78 ND$:$:; C **,x!9!9:w 7 78w 7 78 F#**..  * * 3 35x!2!23 F# 4 ooA   Q1 % -   ub )   u||G4 5**, sC$K$KL/0r&c8td|jy)N close_event)r _processrZs r$destroyzFigureCanvasGTK4.destroy[s=$'002r&cL|jtj|yr!)set_cursor_from_namermpl_to_gtk_cursor_name)rZcursors r$ set_cursorzFigureCanvasGTK4.set_cursor^s !!,"E"Ef"MNr&cT|_|jj}|j|jj j \}}}}n|\}}||j z}|jjj||j zz }||fS)a Convert the *xy* position of a GTK event, or of the current cursor position if *xy* is None, to Matplotlib coordinates. GTK use logical pixels, but the figure is scaled to physical pixels for rendering. Transform to physical pixels so that all of the down-stream transforms work as expected. Also, the origin is different and needs to be corrected. ) get_native get_surfaceget_device_position get_displayget_default_seat get_pointerdevice_pixel_ratior(bboxheight)rZxysurfaceis_overxymasks r$ _mpl_coordszFigureCanvasGTK4._mpl_coordsbs :oo'335G")"="=  "335AAC#E GQ4DAq '' ' KK   # #a$*A*A&A A!t r&ctd|g|j||j|tr|j nddj y)NrP)step modifiersguiEventT)r r{_mpl_modifiers_GOBJECT_GE_3_47get_current_eventrc)rZ controllerdxdys r$rPzFigureCanvasGTK4.scroll_eventxsR D #'#3#3#5 <>))*57GZ113T  (*r&ctd|g|j||f|j|j|tr|j nddj |jy)NrBr~r)r r{get_current_buttonrrrrc grab_focusrZrn_pressrxrys r$rBz#FigureCanvasGTK4.button_press_eventso $ )-)9)91a&)A  ) ) + ))*57GZ113T  (* r&ctd|g|j||f|j|j|tr|j nddj y)NrCr)r r{rrrrrcrs r$rCz%FigureCanvasGTK4.button_release_eventse "D +/+;+;QF+C  ) ) + ))*57GZ113T  (*r&c td||j|||g|jdtr|j ndij y)NrFrTr_get_keyr{rrrcrZrkeyvalkeycodestates r$rFz FigureCanvasGTK4.key_press_eventsS tT]]67E%J     8HZ113T  (*r&c td||j|||g|jdtr|j ndij y)NrGrTrrs r$rGz"FigureCanvasGTK4.key_release_eventsS t}}VWe'L     8HZ113T  (*r&ctd|g|j||f|j||j|tr|j nddj y)NrI)buttonsr~r)r r{ _mpl_buttonsrrrrcrZrrxrys r$rIz$FigureCanvasGTK4.motion_notify_events` !4 *.*:*:Aq6*B %%j1))*57GZ113T  (*r&ctd|g|j||f|jtr|j nddj y)Nfigure_enter_eventrr r{rrrrcrs r$rJz#FigureCanvasGTK4.enter_notify_eventsP $ )-)9)91a&)A ))+7GZ113T  (*r&ctd|g|j|jtr|j nddj y)Nfigure_leave_eventrr)rZrs r$rKz#FigureCanvasGTK4.leave_notify_eventsJ $ )-)9)9); ))+7GZ113T  (*r&c(|j|jj}||jz|z }||jz|z }|jj ||dt d|j |jy)NF)forwardr<)r?r(dpirrset_size_inchesr rc draw_idle)rZareawidthrtrwinchhinchs r$r<zFigureCanvasGTK4.resize_events{ '')kkoo///#500036 ##E5%#@ND)224 r&c|jj}|j|jj j \}}}}t jtjjft jtjjft jtjjft jtjj ft j"tjj$fg}|D chc] \}} || zs |c} }Scc} }wr!)rlrmrnrorprqrLEFTr ModifierType BUTTON1_MASKMIDDLE BUTTON2_MASKRIGHT BUTTON3_MASKBACK BUTTON4_MASKFORWARD BUTTON5_MASK rZrrvrwrxry event_state mod_tablenamerzs r$rzFigureCanvasGTK4._mpl_buttonss//#//1%,%@%@     / / 1 = = ?&A"A{  s//<< =   !1!1!>!> ?    0 0 = = >   s//<< =  #"2"2"?"? @  (1GtK$4FGGGs 3 E E c|_|jj}|j|jj j \}}}}n|j }dtjjfdtjjfdtjjfdtjjfg}|D cgc] \}} || zs |c} }Scc} }w)Nctrlaltshiftr3) rlrmrnrorprqget_current_event_staterr CONTROL_MASKALT_MASK SHIFT_MASK SUPER_MASKrs r$rzFigureCanvasGTK4._mpl_modifierss  oo'335G)0)D)D  "335AAC*E &GQ;%<<>K S%%22 3 C$$-- . c&&11 2 c&&11 2  (1GtK$4FGGGs % C;3C;cttj|}tj|tj |}dtj jdfdtj jdfdtj jdfdtj jdfg}|D cgc]'\}}} | |k7r||zr|dk(r|js|)} }}} djg| |Scc} }}w)Nrcontrolrrr3+) chrrkeyval_to_unicoder_unikey_or_keysym_to_mplkey keyval_namerrrrr isprintablejoin) rZrrrunikeyr\r~modrzmod_keymodss r$rzFigureCanvasGTK4._get_keysS**623//  OOF #%S%%22I > C$$--u 5 c&&117 ; c&&117 ;  +4DD&Cw354<F,>,>,@ DDxx $  %% Ds,Dc|jj}|jd|j|jy)Nz notify::scale)rlrmr;r?)rZobjrvs r$r>zFigureCanvasGTK4._realize_events7//#//1)H)HI '')r&ctr-|jjj}n|j }|J|j |r|j yyr!)r=rlrm get_scaleget_scale_factor_set_device_pixel_ratiodraw)rZargskwargsscales r$r?z+FigureCanvasGTK4._update_device_pixel_ratios[ OO%113==?E))+E    ' ' . IIK /r&c2||_|jyr!)r8 queue_draw)rZrects r$_draw_rubberbandz!FigureCanvasGTK4._draw_rubberbands $ r&cL|j|||j||yr!) on_draw_event _post_draw)rZ drawing_areactxrrts r$r:zFigureCanvasGTK4._draw_func s  4% c"r&cjyd}d}fdjD\}}}}||z} ||z} |j|||j|| |j|||j| ||j|| |j| | |j| ||j| | |jd|j ||j ||fd|j ddd|j|j ||f||j ddd|jy)Nrrc3<K|]}|jz ywr!)rr).0dimrZs r$ z.FigureCanvasGTK4._post_draw..s$:d555:sr) r8move_toline_to set_antialiasset_line_widthset_dashset_source_rgbstroke_preservestroke) rZwidgetrlwdashx0y0whx1y1s ` r$rzFigureCanvasGTK4._post_draw s6  (  :#'#8#8: B1 !V !V B B B B B B B B ! 2 dD\1% 1a#  dD\4( 1a# r&cyr!)rZrrs r$rzFigureCanvasGTK4.on_draw_event-s r&cF|jr|jyyr!) is_drawablerrds r$rzFigureCanvasGTK4.draw1s     OO  r&cdjdk7ryfd}tj|_y)NrcN jd_y#d_wxYw)NrF)rr7)rrZs r$ idle_drawz-FigureCanvasGTK4.draw_idle..idle_draw:s( ' %&"&'"s $)r7ridle_add)rZrs` r$rzFigureCanvasGTK4.draw_idle6s,    "   "]]95r&ctjj}|jr#|j d|jr"yy)NT)r MainContextdefaultpending iteration)rZcontexts r$ flush_eventszFigureCanvasGTK4.flush_eventsBs:""**,oo   d #oor&r!)"__name__ __module__ __qualname__required_interactive_framework supports_blitr classproperty manager_classr4rerjr{rPrBrCrFrGrIrJrKr<rrrr>r?rr:rrrrr __classcell__)r`s@r$rr$s%+"M&D&&'DEM01d3O,H( H&"*  #@  6$r&rceZdZdZdZy)NavigationToolbar2GTK4c tjj||jdi|_|j D];\}}}}|$|j tj/tjjtjjttjd|d}|dvrtj ntj"x|j|<}|j%||jd|jd|j'dt)|||_|j-||j |>tj.}|j1d|j3d |j |tj.|_|j4j7tj8j:|j |j4t=j||y) Ntoolbarimages -symbolic.svg)zoompanflat image-buttonclicked   T)r Boxr4 add_css_class_gtk_ids toolitemsappend SeparatorImagenew_from_giconrIconnew_for_stringstrr_get_data_path ToggleButtonButton set_childr;getattr_signal_handlerset_tooltip_textLabel set_markupr5message set_justify Justificationrr) rZcanvastext tooltip_text image_filecallbackimagebuttonlabels r$r4zNavigationToolbar2GTK4.__init__Js  9% 8< 4D, H| CMMO,II,,'',,X0:|=-IKLMNE '//&A  "  DMM$ &   U #   (   0%+^^742&4F "  # #L 1 KK % 0   C E $ Eyy{    !2!2!8!89 DLL!''f5r&ctjdjjtjj d}|_tj}|jd|jd|j||j|g}d}tjjjD]\}\}}tj}|j||D]} |jd| |j||j|jj!|vs|}||g|d|||dzd}|j#dd |||j%d|d |j't(j*j-t.j0j3t4j6d |j9jj;t=j>|j@d fd } |jCjDS)NzSave the figureT)title transient_foractionmodalz All files*z*.rformatz File formatrsavefig.directoryresponsec |j}|jd}jj|d}|j d_|t jjk7rytjdr1|j}|jtjd< jjj|j|y#t$r}t j jj#t j$j&t j(j*dt-|}|j/Yd}~yd}~wwxYw)Nr>rr?)r>T)r: message_typerr<r1)get_file get_choicer0get_supported_filetypes_groupedre _save_dialogr ResponseTypeACCEPTmplrcParams get_parentget_pathr(savefig Exception MessageDialogget_root MessageTypeERROR ButtonsTypeOKr#show)dialogr@filefmtparentemsgrZs r$ on_responsez7NavigationToolbar2GTK4.save_figure..on_responses??$D##H-C++==?DQGC NN  $D 3++222||/0*4:OO4E 01  ""**4==?3*G ''"&++"6"6"8!$!6!6OO..dQ !   s=5C33 F*0W_n-E0N1,-.0(M7GD(GAJ/!!#(("7"7 GG  s||,?@ A#C D @ @ BC   6>>: 6  7 ,  (((r&N)rrrr4rzrr&r$rrIs (6T=)r&rcFeZdZdZdZdZdZdZdZdZ dZ d Z d Z y ) ToolbarGTK4rctj||tjj||j dtj j tj|_|j|ji|_ i|_ tj}|jd|jd|j|tj|_|jjtj j"|j|jy)N orientationrT)rr4r r set_property Orientation HORIZONTAL _tool_boxr_groups _toolitemsr+r,r5_messager.r/r)rZ toolmanagerr7s r$r4zToolbarGTK4.__init__s""45  -)C)CD DNN#     C E $ E   !!#"3"3"9"9: DMM"r&c`|rtj}ntj}|j||j d|^tj j tjj|}|j||j d|d}|j||||jd|j|} |j||jj!|g|j|j#|| fy)Nrrr2r)r r%r& set_labelrrr rr!r"r' _add_buttonr; _call_toolr*r setdefaultr) rZrgrouppositionr3 descriptiontoggler6r5signals r$ add_toolitemzToolbarGTK4.add_toolitems %%'FZZ\FV$  !II,,'' 35E   U #   0  H 1 4??DA , ""4, $$ff%56r&cdg}|j|j}|$|j||j}|$||Sr!)rget_first_childrget_next_sibling)rZrrchildrenchilds r$_find_child_at_positionz#ToolbarGTK4._find_child_at_positionsU6 U#335 OOE "**,E!!r&c2||jvrZ|jr|jtj}|jj |||j|<|j|j ||j||yr!)r_add_separatorr rrrinsert_child_afterr)rZr6rr group_boxs r$rzToolbarGTK4._add_buttonsv  $||##% I NN ! !) ,"+DLL  U.. D00A Cr&c&|j|yr!) trigger_tool)rZbtnrs r$rzToolbarGTK4._call_tools $r&c||jvry|j|D]8\}}|j||j||j|:yr!)r handler_block set_activehandler_unblock)rZrtoggledtoolitemrs r$toggle_toolitemzToolbarGTK4.toggle_toolitemsX t &  $ 5 - Hf  " "6 *    (  $ $V , -r&c|jj|gD]F\}}|jD]2}||j|vs|j|j|4Hyr!)rpoprremove)rZrr_signalrs r$remove_toolitemzToolbarGTK4.remove_toolitemsb!%!4!4T2!> 9 Hg 9t||E22LL'..x8 9 9r&ctj}|jdtjj|j j |y)Nr~)r rrrrOrr)rZseps r$rzToolbarGTK4._add_separator s9mmo (@(@A c"r&c:|jj|yr!)rr)rZss r$ set_messagezToolbarGTK4.set_messages "r&N) rrr_icon_extensionr4rrrrrrrrrr&r$r|r|s5%O#270"C -9 # #r&r|ceZdZdZy)SaveFigureGTK4cJtj|jyr!)rrz"_make_classic_style_pseudo_toolbar)rZrrs r$triggerzSaveFigureGTK4.triggers**  3 3 5 7r&Nrrrrrr&r$rrs7r&rceZdZdZdZdZy)HelpGTK4cddddd}|jd}|ddDcgc] }d |zd z }}|d}||vr||}n5t|d kDr|j}n|jr|d gz }d j ||zScc}w)z Convert Matplotlib key presses to GTK+ accelerator identifiers. Related to `FigureCanvasGTK4._get_key`. BackSpace Page_DownPage_Up Scroll_Lock) backspacepagedownpageup scroll_lockrNr2<>rz)splitlen capitalizeisupperr)rZr\specialpartsrrs r$_normalize_shortcutzHelpGTK4._normalize_shortcuts%#(   #+0":6Cc C66Bi '>#,C X\.."C [[] YK Dwwt}s""7sB c2d|vxr|jd S)z Check for a valid shortcut to be displayed. - GTK will never send 'cmd+' (see `FigureCanvasGTK4._get_key`). - The shortcut window only shows keyboard shortcuts, not mouse buttons. zcmd+z MouseButton.) startswith)rZr\s r$_is_valid_shortcutzHelpGTK4._is_valid_shortcut7s S G)G%GGr&c tj}tjjj D]\}}|j stj}|j||j}|$|jd|j}|$tjdjfdjj|D|j|j }|j|tj ddj"j$j'}|j)||j+y)NF c3bK|]&}j|rj|(ywr!)rr)rr\rZs r$rz#HelpGTK4.trigger..Ts2%5..s3,,S1%5s,/) acceleratorr9subtitleHelpT)r9r<r:)r ShortcutsSectionsortedrtoolsrfrShortcutsGrouprr set_visiblerShortcutsShortcutrget_tool_keymaprShortcutsWindow_figurer0rPr'rU) rZrsectionrtoolrrshortcutwindows ` r$rzHelpGTK4.trigger@sA&&( !1!1!7!7!=!=!?@ #JD$## &&(E NN5 !))+E#!!%(..0#,,HH%5#//??E%55ii)) +H LL "/ #2$$,,--668: ! r&N)rrrrrrrr&r$rrs#4H"r&rceZdZdZy)ToolCopyToClipboardGTK4c tj5}|jj||jj \}}t j j|jt jjdd|||dz}ddd|jj}|jy#1swY5xYw)NTr) ioBytesIOr0 print_rgbaget_width_heightrPixbuf new_from_data getbuffer ColorspaceRGB get_clipboardset)rZrrfrrpb clipboards r$rzToolCopyToClipboardGTK4.triggergs ZZ\ >Q KK " "1 %;;//1DAq!!// 090D0D0H0H$011a1>B > KK--/  b > >s BCCNrrr&r$rresr&rceZdZeZeZy)r"N)rrrr_toolbar2_classr|_toolmanager_toolbar_classrr&r$r"r"ys ,O!,r&r"ceZdZeZeZy) _BackendGTK4N)rrrr FigureCanvasr" FigureManagerrr&r$rr~s #L%Mr&r):rrrrm matplotlibrIrrrmatplotlib.backend_basesrrrr r r r gi ImportErrorerrrequire_version ValueErrorrZ gi.repositoryrrr rrrrrrrrr TimerGTK4 version_inforrSr= DrawingArearrrr|_register_tool_classSaveFigureBaser ToolHelpBaserToolCopyToClipboardBaserConfigureSubplotsGTK RubberbandGTKToolbarr"exportrrr&r$rs  11BBBF  Bue$ 98 ??j0 s  B*d2 b$'b$J h)3SWWh)V]##SWW]#@$##$457]11767 $##$45F}))F6FR$##$45 mCC 6 # ""l779" ""l002 -)-  &;&&eF ; <#EF  a.a s.F/G/G4 F==GG GG