o =Œ_íI ã @ s d Z ddlZzddlm mZ W n ey# ddlm mZ Y nw ddlm Z m Z mZmZm Z ddlmZmZ ddlmZ ddlmZ G dd„ deƒZdS ) z CLass to edit XDG Menus é N)ÚMenuÚ MenuEntryÚLayoutÚ SeparatorÚXMLMenuBuilder)Úxdg_config_dirsÚ xdg_data_dirs)ÚParsingError)ÚsetRootModec @ s\ e Zd ZdQdd„ZdQdd„Zdd„ ZdRd d „ZdSdd„ZdTd d„ZdTdd„Z dTdd„Z dTdd„ZdTdd„ZdUdd„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Ú MenuEditorNFc C s2 d | _ d | _d | _tƒ | _| |||¡ g | _d S ©N)ÚmenuÚfilenameÚtreer ÚparserÚparseÚ filenames©Úselfr r Úroot© r ú0/usr/lib/python3/dist-packages/xdg/MenuEditor.pyÚ__init__ s zMenuEditor.__init__c C sì |rt dƒ t|tƒr|| _n|r| j |¡| _n| j ¡ | _|r'| jj| _n|r-|| _ntj td dtj | jj¡d ¡| _z t | j¡| _W n$ tya t d| jj ¡}t |¡| _Y n tym td| jƒ‚w | | j¡ d S )NTr Úmenusé zÞ
zNot a valid .menu file)r Ú isinstancer r r r ÚFilenamer ÚosÚpathÚjoinr ÚsplitÚetreer ÚIOErrorÚ fromstringÚElementTreer Ú$_MenuEditor__remove_whitespace_nodesr r r r r $ s. &úÿzMenuEditor.parsec C s | | j¡ | ¡ d S r )Ú_MenuEditor__saveEntriesr Ú_MenuEditor__saveMenu©r r r r ÚsaveG s zMenuEditor.savec C sD t | |d¡ƒ} | | ||||||¡} | || || ¡ | j ¡ | S )Nú.desktop)r Ú_MenuEditor__getFileNameÚ editMenuEntryÚ_MenuEditor__addEntryr Úsort)r ÚparentÚnameÚcommandÚgenericnameÚcommentÚiconÚterminalÚafterÚbeforeÚ menuentryr r r ÚcreateMenuEntryK s zMenuEditor.createMenuEntryc C sX t ƒ }||_|jd |_|j|_|j|_| |||||¡}| ||||¡ | j ¡ |S )Nr ) r ÚParentÚDepthÚ DefaultLayoutr ÚeditMenur- r r. ) r r/ r0 r2 r3 r4 r6 r7 r r r r Ú createMenuU s zMenuEditor.createMenuc C s&