+
    niI  c                   s    R t ^ RIt ^ RIHu Ht ^ RIH	t	H
t
HtHtHt ^ RIHtHt ^ RIHt ^ RIHt  ! R R]4      tR#   ] d    ^ RIHu Ht  LAi ; i)zCLass to edit XDG Menus N)Menu	MenuEntryLayout	SeparatorXMLMenuBuilder)xdg_config_dirsxdg_data_dirs)ParsingError)setRootModec                   sB  a  ] tR t^t o R)R ltR)R ltR tR*R ltR+R ltR,R lt	R,R lt
R,R	 ltR,R
 ltR,R ltR-R ltR.R ltR tR tR tR tR tR tR tR tR t R tR tR tR tR/R ltR tR tR0R lt R t!R  t"R! t#R,R" lt$R,R# lt%R$ t&R% t'R& t(R' t)R(t*V t+R# )1
MenuEditorNc                s    R V n         R V n        R V n        \        4       V n        V P                  WV4       . V n        R # N)menufilenametreer   parserparse	filenamesselfr   r   Zroot   &&&&3/usr/lib/python3.14/site-packages/xdg/MenuEditor.py__init__ZMenuEditor.__init__   s8    		$&

44(     c                s   V'       d   \        R 4       \        V\        4      '       d   Wn        MHV'       d"   V P                  P                  V4      V n        MV P                  P                  4       V n        V'       d   V P                  P                  V n        MxV'       d   W n        Mi\        P                  P                  \        ^ ,          R\        P                  P                  V P                  P                  4      ^,          4      V n         \        P
                  ! V P                  4      V n        T P'                  T P                  4       R#   \         dP    \        P                   ! RT P                  P                  ,          4      p\        P"                  ! T4      T n         Lv\$         d    \%        RT P                  4      hi ; i)Tmenusz
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://standards.freedesktop.org/menu-spec/menu-1.0.dtd">
    <Menu>
        <Name>Applications</Name>
        <MergeFile type="parent">%s</MergeFile>
    </Menu>
zNot a valid .menu fileN)r   
isinstancer    r   r   r   Filenamer   ospathjoinr   splitetreer   ZIOErrorZ
fromstringElementTreer   $_MenuEditor__remove_whitespace_nodesr   r   r   r   ZMenuEditor.parse$   s=   dD!!I))$/DI))+DI II..DM$MGGLL);WbggmmTXT]T]TfTfFghiFjkDM	HDMM2DI 	&&tyy1  	0## % ii% D ))$/DI 	H7GG	Hs   %E AG1G:Gc                s\    V P                  V P                  4       V P                  4        R # r
   )_MenuEditor__saveEntriesr   _MenuEditor__saveMenur      &r   saveZMenuEditor.saveG   s    499%r   c
           	     s    \        V P                  VR 4      4      p
V P                  WWEW6V4      p
V P                  WW4       V P                  P                  4        V
# ).desktop)r   _MenuEditor__getFileNameeditMenuEntry_MenuEditor__addEntryr   sort)r   parentnamecommandgenericnamecommenticonterminalafterbefore	menuentry   &&&&&&&&&& r   createMenuEntryZMenuEditor.createMenuEntryK   sR    d00zBC	&&yg]ef	59		r   c                s   \        4       pWn        VP                  ^,           Vn        VP                  Vn        VP                  Vn        V P                  WW4V4      pV P                  WWg4       V P                  P                  4        V# )   )	r    ParentZDepthZDefaultLayoutr   editMenur)   r   r*   )	r   r+   r,   r.   r/   r0   r2   r3   r   s	   &&&&&&&& r   
createMenuZMenuEditor.createMenuU   sl    v\\A%
**#11}}TtDe4		r   c                st    \        V4      pV P                  WW#4       V P                  P                  4        V# r
   )r   r)   r   r*   )r   r+   r2   r3   	separator   &&&& r   createSeparatorZMenuEditor.createSeparatore   s.    f%	59		r   c                s    V P                  W!WE4       V P                  W1WE4       V P                  P                  4        V# r
   _MenuEditor__deleteEntryr)   r   r*   r   r4   	oldparent	newparentr2   r3      &&&&&&r   moveMenuEntryZMenuEditor.moveMenuEntryn   s4    9?	e<		r   c           	     s   V P                  W!WE4       V P                  W1WE4       V P                  V P                  P                  4      pVP                  R 4      VP                  R 4      8w  d   V P                  V\        P                  P                  VP                  R 4      VP                  4      \        P                  P                  VP                  R 4      VP                  4      4       V P                  P                  4        V# )T)r?   r)   _MenuEditor__getXmlMenur   NamegetPath_MenuEditor__addXmlMover   r   r   r*   )r   r   rA   rB   r2   r3   Z	root_menus   &&&&&& r   moveMenuZMenuEditor.moveMenuv   s    9E:	7%%diinn5	T"i&7&7&==ii6G6G6Mtyy)Y[][b[b[g[ghqhyhyz~h  BF  BK  BK  \L  M		r   c                s    V P                  W!W44       V P                  W!W44       V P                  P                  4        V# r
   r>   )r   r;   r+   r2   r3   s   &&&&&r   moveSeparatorZMenuEditor.moveSeparator   s4    6e<59		r   c                s^    V P                  W1WE4       V P                  P                  4        V# r
   )r)   r   r*   r@   rC   r   copyMenuEntryZMenuEditor.copyMenuEntry   s$    	e<		r   c
                s   VP                   p
V'       d>   V
P                  R 4      '       g   V
P                  R V4       V
P                  R VRR7       V'       d>   V
P                  R4      '       g   V
P                  RV4       V
P                  RVRR7       V'       d>   V
P                  R4      '       g   V
P                  RV4       V
P                  RVRR7       V'       d   V
P                  RV4       V'       d   V
P                  RV4       V'       d   V
P                  RR4       MV'       g   V
P                  RR	4       VRJ d   V
P                  R
R4       MVRJ d   V
P                  R
R	4       V	RJ d   V
P                  RR4       MV	RJ d   V
P                  RR	4       VP                  4        \	        VP
                  4      ^ 8  d   V P                  P                  4        V# )rF   TZlocaleCommentGenericNameZExecIconZTerminaltruefalse	NoDisplayFHidden)DesktopEntryhasKeysetupdateAttributeslenParentsr   r*   )r   r4   r,   r.   r/   r-   r0   r1   	nodisplayhidden	deskentryr5   r   r(   ZMenuEditor.editMenuEntry   sv   **	##F++fd+MM&$tM4##I..i1MM)WTM:##M22m[9MM-TMBMM&'*MM&$'MM*f-MM*g.MM+v.%MM+w/T>MM(F+u_MM(G,""$y  !A%IINNr   c                sP   \        VP                  \        4      '       d   VP                  P                  R 8X  ds   V P	                  VP                  RR4      4      pV P                  VRVP                  R ,           4       VP                  P                  VP                  R ,           4       M\        VP                  \        4      '       g   V'       g   VP                  pV P                  VR 4      P                  RR4      p	VP                  '       g   V	P                  R R4      Vn        V P	                  VP                  RR4      4      pV P                  VRV	4       \        V	4      Vn        VP                  P                  p
V'       d>   V
P                  R4      '       g   V
P                  RV4       V
P                  RVRR7       V'       d>   V
P                  R4      '       g   V
P                  RV4       V
P                  RVRR7       V'       d>   V
P                  R4      '       g   V
P                  RV4       V
P                  RVRR7       V'       d   V
P                  R	V4       VRJ d   V
P                  R
R4       MVRJ d   V
P                  R
R4       VRJ d   V
P                  RR4       MVRJ d   V
P                  RR4       VP                  P                  4        \        VP                  \         4      '       d   V P"                  P%                  4        V# )
.directoryT	Directory/ rF   rL   rN   rM   rO   rR   rP   FrQ   rS   )r   r^   r   r   rE   rG   _MenuEditor__addXmlTextElementrF   ZsetAttributesr'   ZreplacerT   rU   rV   rW   r8   r    r   r*   )r   r   r,   r.   r/   r0   rZ   r[   xml_menur   r\   s   &&&&&&&&   r   r9   ZMenuEditor.editMenu   sN   dnni00T^^5L5LP\5\((dD)ABH$$X{DII<TUNN((\)ABDNNI66yy))$=EEc2NH999$,,\2>	((dD)ABH$$X{HE&x0DNNN//	##F++fd+MM&$tM4##M22m[9MM-TMB##I..i1MM)WTM:MM&$'MM+v.%MM+w/T>MM(F+u_MM(G,'')dkk4((IINNr   c                ,    V P                  VR R7       R# T)rZ   Nr(   r   r4      &&r   hideMenuEntryZMenuEditor.hideMenuEntry   s    95r   c                s.    V P                  VR R R7       R# )FrZ   r[   Nre   rf   rg   r   unhideMenuEntryZMenuEditor.unhideMenuEntry   s    9eDr   c                rc   rd   )r9   r   r   rg   r   hideMenuZMenuEditor.hideMenu   s    dd+r   c                s    V P                  VR R R7       V P                  VP                  RR4      R 4      pVP                  R4      pVP                  R4      pW4,            F  pVP	                  V4       K  	  R# )Fri   TZDeletedZ
NotDeletedN)r9   rE   rG   findallremove)r   r   rb   ZdeletedZnot_deletednodes   &&    r   
unhideMenuZMenuEditor.unhideMenu   sm    deE:$$T\\$%=uE""9-&&|4))DOOD! *r   c                s    V P                  V4      R 8X  dd   V P                  VP                  P                  4       VP                   F  pV P                  W!4       K  	  V P                  P                  4        V# )delete)	getAction_MenuEditor__deleteFilerT   r   rY   r?   r   r*   )r   r4   r+      && r   deleteMenuEntryZMenuEditor.deleteMenuEntry   s_    >>)$0i44==>#++""65 ,IINNr   c                s   V P                  V4      R 8X  d   V P                  VP                  P                  4       . VP                  n        VP
                   F  pVP                  P                  V4      pVP                  VP                  V&   VP                  P                  V4      pVP                  VP                  V&   VP                  P
                  P                  V4       K  	  V P                  P                  4        V# revert)rr   rs   rT   r   OriginalrY   EntriesindexMenuEntriesappendr   r*   )r   r4   r+   rz      &&  r   revertMenuEntryZMenuEditor.revertMenuEntry  s    >>)$0i44==>)+I&#++,,Y7(1(:(:u%**00;,5,>,>""5)""**11&9 , IINNr   c                s   V P                  V4      R 8X  d   V P                  VP                  P                  P                  4       V P                  VP                  V4       V P                  VP                  RR4      4      pV P                  V4      pVP                  V4       V P                  P                  4        V# )rq   T)rr   rs   r^   rT   r   r?   r8   rE   rG   _MenuEditor__get_parent_nodern   r   r*   )r   r   rb   r+   r}   r   
deleteMenuZMenuEditor.deleteMenu  s    >>$8+dnn99BBCt{{D1((dD)ABH++H5FMM(#IINNr   c                s    V P                  V4      R 8X  de   V P                  VP                  P                  P                  4       VP                  P
                  Vn        V P                  P                  4        V# rv   )rr   rs   r^   rT   r   rx   r   r*   rk   rg   r   
revertMenuZMenuEditor.revertMenu  sU    >>$8+dnn99BBC!^^44DNIINNr   c                sv    V P                  VP                  VR R7       V P                  P                  4        V# )T)r2   )r?   r8   r   r*   )r   r;   rg   r   deleteSeparatorZMenuEditor.deleteSeparator%  s1    9++YdC		r   c                s   \        V\        4      '       d   \        VP                  \        4      '       g   R # VP                  P	                  4       R8X  d   R# VP                  P	                  4       R8X  d7   \        VP                  4      \        VP                  4      ,           ^ 8X  d   R# R # \        V\        4      '       d1   VP	                  4       R8X  d   R# VP	                  4       R8X  d   R# R # R # )ZnoneZBothrw   ZUserrq   )r   r    r^   r   ZgetTyperX   Submenusr{   )r   entryrg   r   rr   ZMenuEditor.getAction-  s    eT""eooy99((*f4((*f4ENN#c%*;*;&<<:    y))}}&(F*r   c                sv   V'       g   V P                   p\        VP                  \        4      '       d   VP                  P	                  4        VP                  R R7       FT  p\        V\        4      '       d   VP	                  4        K+  \        V\        4      '       g   KC  V P                  V4       KV  	  R# )T)r[   N)r   r   r^   r   r%   Z
getEntriesr    r!   )r   r   r   rt   r   Z__saveEntriesZMenuEditor.__saveEntriesB  su    99Ddnni00NN!__D_1E%++

E4((""5)	 2r   c                sf   \         P                  P                  \         P                  P                  V P                  4      4      '       g>   \         P
                  ! \         P                  P                  V P                  4      4       V P                  P                  V P                  R R7       R# )zutf-8)ZencodingN)r   r   ZisdirZdirnamer   Zmakedirsr   Zwriter#   r$   r   Z
__saveMenuZMenuEditor.__saveMenuM  s[    ww}}RWW__T]];<<KK67		8r   c                s   ^ p V^ 8X  d
   W,           pM VR,           \        V4      ,           V,           pVR8X  d   RpM	VR8X  d   RpW@P                  9   gn   \        P                  P	                  \        P                  P                  \        ^ ,          XV4      4      '       g   V P                  P                  V4        V# V^,          pK  )i    Z-r&   Zapplicationsr]   zdesktop-directories)Zstrr   r   r   Zisfiler   r   r|   )r   r,   Z	extensionZpostfixr   Zdir   &&&   r   Z__getFileNameZMenuEditor.__getFileNameR  s    !|+#:G4y@J&$l*+~~-bggnn]1-sH=7 7 %%h/  1r   c                s   V'       g   V P                   pR V9   d   VP                  R ^4      w  rAMTpRpRpVP                  R4       FL  pVP                  R4      pVP                  V8X  d   V'       d   V P                  WV4      pMTpV'       g   KL   M	  V'       g8   V'       d0   V P                  W44      pV'       d   V P                  WV4      pV# TpV# )r_   r`   Nr    rF   )r   r   rm   ZfindtextrE   _MenuEditor__addXmlMenuElement)r   r   Zcreateelementr,   Zfoundro   	name_nodes   &&&&    r   Z__getXmlMenuZMenuEditor.__getXmlMenug  s     iiG$;::c1-LT4DDOOF+D		&)I~~% --dDAE Eu , ++G:D))$=  r   c                sn    \         P                  ! R V4      p\         P                  ! RV4      pW$n        V# )r    rF   r   
SubElementr   )r   r   r,   Z	menu_noder   s   &&&  r   Z__addXmlMenuElementZMenuEditor.__addXmlMenuElement  s1    $$VW5	$$VY7	r   c                s>    \         P                  ! W!4      pW4n        V# r
   r   )r   r   r,   r   ro   r<   r   Z__addXmlTextElementZMenuEditor.__addXmlTextElement  s    .	r   c                sH   VP                  R 4      pVP                  R4      pWE,           pV FH  pV^ ,          P                  R8X  g   K  V^ ,          P                  V8X  g   K7  VP                  V4       KJ  	  \        P
                  ! W14      pV P                  VRV4       V# )IncludeExcluder   )rm   Ztagr   rn   r   r   ra   )	r   r   r   Ztype_ZincludesZexcludesZrulesZrulero   s	   &&&&     r   Z__addXmlFilenameZMenuEditor.__addXmlFilename  s    ??9-??9-#DAw{{j(T!W\\X-Et$  /  z8<r   c                s    \         P                  ! R V4      pV P                  VRV4       V P                  VRV4       V# )ZMoveZOldZNew)r   r   ra   )r   r   ZoldZnewro   r<   r   Z__addXmlMoveZMenuEditor.__addXmlMove  s=    0  uc2  uc2r   c                s   VP                  R 4       F  pVP                  V4       K  	  \        P                  ! R V4      pVP                   F  pV^ ,          R8X  d   \        P                  ! RV4      pK*  V^ ,          R8X  d   V P                  VRV^,          4      pKT  V^ ,          R8X  d   V P                  VRV^,          4      pK~  V^ ,          R8X  g   K  \        P                  ! RV4      pV^,          VP                  R&   K  	  V# )r   r   r   ZMenunameMergeZtype)rm   rn   r   r   orderra   Zattrib)r   r   layoutro   r   childr   r   Z__addXmlLayoutZMenuEditor.__addXmlLayout  s    OOH-DNN4  . '2\\EQx;&((d;qZ'00z58LqZ'00z58LqW$(($7',QxV$ " r   c                s   \        4       p. Vn        VP                   P                  Vn        VP                   P                  Vn        VP                   P                  Vn        VP                   P
                  Vn        VP                   P                  Vn        VP                  P                  R R.4       VP                   F  p\        V\        4      '       d   VP                  VP                  4       K6  \        V\        4      '       d   VP                  VP                  4       Ki  \        V\         4      '       g   K  VP#                  4        K  	  VP                  P                  R R.4       W!n         V# )r   r   Zfiles)r   r   Z
show_emptyZinlineZinline_headerZinline_aliasZinline_limitr|   ry   r   r    ZparseMenunamerF   r   ZparseFilenameDesktopFileIDr   ZparseSeparator)r   r+   r   r   r}   r   Z__addLayoutZMenuEditor.__addLayout  s
   "MM44,,%}}::$mm88$mm88Wg./^^E%&&$$UZZ0E9--$$U%8%89E9--%%' $ 	Wg./r   c                s   V'       g	   V'       dl   V'       d$   VP                   P                  V4      ^,           pM#V'       d   VP                   P                  V4      pVP                   P                  XV4       MVP                   P                  V4       V P	                  VP                  RR4      4      p\        V\        4      '       dT   VP                  P                  V4       VP                  P                  V4       V P                  WbP                  R4       M'\        V\        4      '       d   VP                  V4       V'       g	   V'       d/   V P                  V4       V P                  WaP                   4       R# R# )r7   Tr   N)ry   rz   Zinsertr|   rE   rG   r   r   r{   rY   _MenuEditor__addXmlFilenamer   r    Z
addSubmenu_MenuEditor__addLayout_MenuEditor__addXmlLayoutr   )r   r+   r   r2   r3   rz   
xml_parents   &&&&&  r   Z
__addEntryZMenuEditor.__addEntry  s	   F,,U3a7,,V4NN!!%/NN!!%(&&v~~dD'AB
eY''%%e,MM  (!!*.A.A9Mt$$e$FV$
MM: r   c                s.   VP                   P                  V4       V P                  VP                  R R 4      4      p\	        V\
        4      '       dT   VP                  P                  V4       VP                  P                  V4       V P                  WRP                  R4       M1\	        V\        4      '       d   VP                  P                  V4       V'       g	   V'       d/   V P                  V4       V P                  WQP                  4       R# R# )Tr   N)ry   rn   rE   rG   r   r   rY   r{   r   r   r    r   r   r   r   )r   r+   r   r2   r3   r   s   &&&&& r   Z__deleteEntryZMenuEditor.__deleteEntry  s    e$&&v~~dD'AB
eY''MM  (%%e,!!*.A.A9Mt$$OO""5)FV$
MM: r   c                s     \         P                  ! V4        V P                  P                  V4       R #   \         d     L+i ; i  \         d     R # i ; ir
   )r   rn   ZOSErrorr   Z
ValueError)r   r   rg   r   Z__deleteFileZMenuEditor.__deleteFile  sQ    	IIh	NN!!(+  		  		s    6 A AAAAc                s   V Fy  pVP                   P                  4       pV'       g   R Vn         VP                  P                  4       pV'       g   R Vn        \        V4      '       g   Kh  V P	                  V4       K{  	  R# )r`   N)r   ZstriptailrX   Z$_MenuEditor__remove_whilespace_nodes)r   ro   r   r   r   s   &&   r   Z__remove_whitespace_nodesZ$MenuEditor.__remove_whitespace_nodes	  s[    E::##%D
::##%D
5zz..u5 r   c                sJ    V P                  4        F  w  r#W1J g   K  Vu # 	  R # r
   )_MenuEditor__iter_parent)r   ro   r+   r   r}   r   Z__get_parent_nodeZMenuEditor.__get_parent_node  s!    !//1MF} 2r   c              #  sl   "   V P                   P                  4        F  pV F  pW3x  K
  	  K  	  R # 5ir
   )r   Zgetiterator)r   r+   r   s   &  r   Z__iter_parentZMenuEditor.__iter_parent  s.     ii++-Fm#   .s   24)r   r   r   r   r   )NNF)NNNNNNN)NNNNN)NN)NNNNNNNN)NNNNNN)TN)r   ),Z__name__Z
__module__Z__qualname__Z__firstlineno__r   r   r%   r6   r:   r=   rD   rI   rJ   rK   r(   r9   rh   rj   rl   rp   ru   r~   r   r   r   rr   r!   r"   r'   rE   r   ra   r   rH   r   r   r)   r?   rs   r    r   r   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r   r	   r	      s     !2F 
(T1f6E," *	*9
*@
,&.;.; 	6$ $r   r	   )Z__doc__r   Zxml.etree.cElementTreer   ZcElementTreeZImportErrorZxml.etree.ElementTreer   Zxdg.Menur    r   r   r   r   Zxdg.BaseDirectoryr   r   Zxdg.Exceptionsr   Z
xdg.Configr   Zobjectr	   ) r   r   <module>r      sM     	*** H G < ' "E$ E$'  *))*s   	A   AA