ó
    Öu•c6D  ã                   óf   • S r SSKJrJr  SSKrSSKJr  SSKJ	r	  SSK
rSSKrSSKr " S S\5      rg)a/  
Complete implementation of the XDG Desktop Entry Specification
http://standards.freedesktop.org/desktop-entry-spec/

Not supported:
- Encoding: Legacy Mixed
- Does not check exec parameters
- Does not check URL's
- Does not completly validate deprecated/kde items
- Does not completly check categories
é    )ÚIniFileÚis_asciiN)ÚParsingError)Úwhichc                   ój  • \ rS rSrSrSrS=S jrS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S  r!S! r"S" r#S# r$S$ r%S% r&S& r'S' r(S( r)S) r*S* r+S+ r,S, r-S- r.S. r/S/ r0S0 r1S1 r2S2 r3S3 r4S4 r5S5 r6S6 r7S7 r8S8 r9S9 r:S: r;S; r<S<r=g)>ÚDesktopEntryé   z+Class to parse and validate Desktop EntriesúDesktop EntryNc                 óÎ   • [        5       U l        U(       a6  [        R                  R	                  U5      (       a  U R                  U5        gU(       a  U R                  U5        gg)zœCreate a new DesktopEntry.

If filename exists, it will be parsed as a desktop entry file. If not,
or if filename is None, a blank DesktopEntry is created.
N)ÚdictÚcontentÚosÚpathÚexistsÚparseÚnew)ÚselfÚfilenames     Ú2/usr/lib/python3/dist-packages/xdg/DesktopEntry.pyÚ__init__ÚDesktopEntry.__init__   sB   € ô “vˆŒÞœŸ™Ÿ™ x×0Ñ0Ø�J‰J�xÕ ÞØ�H‰H�XÕð ó    c                 ó"   • U R                  5       $ ©N)ÚgetName©r   s    r   Ú__str__ÚDesktopEntry.__str__&   s   € Ø�|‰|‹~Ðr   c                 ó6   • [         R                  " XSS/5        g)z¯Parse a desktop entry file.

This can raise :class:`~xdg.Exceptions.ParsingError`,
:class:`~xdg.Exceptions.DuplicateGroupError` or
:class:`~xdg.Exceptions.DuplicateKeyError`.
r
   úKDE Desktop EntryN)r   r   )r   Úfiles     r   r   ÚDesktopEntry.parse)   s   € ô 	�Š�d ?Ð4GÐ"HÕIr   c                 ó8   • U R                  SSS9n[        U5      $ )zÍLooks in the PATH for the executable given in the TryExec field.

Returns the full path to the executable if it is found, None if not.
Raises :class:`~xdg.Exceptions.NoKeyError` if TryExec is not present.
ÚTryExecT)Ústrict)Úgetr   )r   Útryexecs     r   ÚfindTryExecÚDesktopEntry.findTryExec2   s    € ð —(‘(˜9¨T�(Ð2ˆÜ�W‹~Ðr   c                 ó$   • U R                  S5      $ )NÚType©r&   r   s    r   ÚgetTypeÚDesktopEntry.getType<   ó   € Ø�x‰x˜ÓÐr   c                 ó"   • U R                  SSS9$ )z)deprecated, use getVersionString instead ÚVersionÚnumeric©Útyper,   r   s    r   Ú
getVersionÚDesktopEntry.getVersion>   s   € à�x‰x˜	¨	ˆxÐ2Ð2r   c                 ó$   • U R                  S5      $ )Nr1   r,   r   s    r   ÚgetVersionStringÚDesktopEntry.getVersionStringA   ó   € Ø�x‰x˜	Ó"Ð"r   c                 ó"   • U R                  SSS9$ )NÚNameT©Úlocaler,   r   s    r   r   ÚDesktopEntry.getNameC   ó   € Ø�x‰x˜ tˆxÐ,Ð,r   c                 ó"   • U R                  SSS9$ )NÚGenericNameTr=   r,   r   s    r   ÚgetGenericNameÚDesktopEntry.getGenericNameE   ó   € Ø�x‰x˜¨dˆxÐ3Ð3r   c                 ó"   • U R                  SSS9$ )NÚ	NoDisplayÚbooleanr3   r,   r   s    r   ÚgetNoDisplayÚDesktopEntry.getNoDisplayG   s   € Ø�x‰x˜¨)ˆxÐ4Ð4r   c                 ó"   • U R                  SSS9$ )NÚCommentTr=   r,   r   s    r   Ú
getCommentÚDesktopEntry.getCommentI   s   € Ø�x‰x˜	¨$ˆxÐ/Ð/r   c                 ó"   • U R                  SSS9$ )NÚIconTr=   r,   r   s    r   ÚgetIconÚDesktopEntry.getIconK   r@   r   c                 ó"   • U R                  SSS9$ )NÚHiddenrH   r3   r,   r   s    r   Ú	getHiddenÚDesktopEntry.getHiddenM   s   € Ø�x‰x˜ yˆxÐ1Ð1r   c                 ó"   • U R                  SSS9$ )NÚ
OnlyShowInT©Úlistr,   r   s    r   ÚgetOnlyShowInÚDesktopEntry.getOnlyShowInO   ó   € Ø�x‰x˜¨4ˆxÐ0Ð0r   c                 ó"   • U R                  SSS9$ )NÚ	NotShowInTrY   r,   r   s    r   ÚgetNotShowInÚDesktopEntry.getNotShowInQ   ó   € Ø�x‰x˜¨$ˆxÐ/Ð/r   c                 ó$   • U R                  S5      $ )Nr$   r,   r   s    r   Ú
getTryExecÚDesktopEntry.getTryExecS   r:   r   c                 ó$   • U R                  S5      $ )NÚExecr,   r   s    r   ÚgetExecÚDesktopEntry.getExecU   r/   r   c                 ó$   • U R                  S5      $ )NÚPathr,   r   s    r   ÚgetPathÚDesktopEntry.getPathW   r/   r   c                 ó"   • U R                  SSS9$ )NÚTerminalrH   r3   r,   r   s    r   ÚgetTerminalÚDesktopEntry.getTerminalY   ó   € Ø�x‰x˜
¨ˆxÐ3Ð3r   c                 ó$   • U R                  SSSS9$ )z%deprecated, use getMimeTypes instead ÚMimeTypeTÚregex)rZ   r4   r,   r   s    r   ÚgetMimeTypeÚDesktopEntry.getMimeType[   s   € à�x‰x˜
¨°GˆxÐ<Ð<r   c                 ó"   • U R                  SSS9$ )Nrt   TrY   r,   r   s    r   ÚgetMimeTypesÚDesktopEntry.getMimeTypes^   s   € Ø�x‰x˜
¨ˆxÐ.Ð.r   c                 ó"   • U R                  SSS9$ )NÚ
CategoriesTrY   r,   r   s    r   ÚgetCategoriesÚDesktopEntry.getCategories`   r]   r   c                 ó"   • U R                  SSS9$ )NÚStartupNotifyrH   r3   r,   r   s    r   ÚgetStartupNotifyÚDesktopEntry.getStartupNotifyb   s   € Ø�x‰x˜¨iˆxÐ8Ð8r   c                 ó$   • U R                  S5      $ )NÚStartupWMClassr,   r   s    r   ÚgetStartupWMClassÚDesktopEntry.getStartupWMClassd   s   € Ø�x‰xÐ(Ó)Ð)r   c                 ó$   • U R                  S5      $ )NÚURLr,   r   s    r   ÚgetURLÚDesktopEntry.getURLf   ó   € Ø�x‰x˜‹Ðr   c                 ó"   • U R                  SSS9$ )NÚServiceTypesTrY   r,   r   s    r   ÚgetServiceTypesÚDesktopEntry.getServiceTypesk   s   € Ø�x‰x˜¨TˆxÐ2Ð2r   c                 ó$   • U R                  S5      $ )NÚDocPathr,   r   s    r   Ú
getDocPathÚDesktopEntry.getDocPathm   r:   r   c                 ó$   • U R                  SSSS9$ )NÚKeywordsT)rZ   r>   r,   r   s    r   ÚgetKeywordsÚDesktopEntry.getKeywordso   s   € Ø�x‰x˜
¨°dˆxÐ;Ð;r   c                 ó$   • U R                  S5      $ )NÚInitialPreferencer,   r   s    r   ÚgetInitialPreferenceÚ!DesktopEntry.getInitialPreferenceq   s   € Ø�x‰xÐ+Ó,Ð,r   c                 ó$   • U R                  S5      $ )NÚDevr,   r   s    r   ÚgetDevÚDesktopEntry.getDevs   r‹   r   c                 ó$   • U R                  S5      $ )NÚFSTyper,   r   s    r   Ú	getFSTypeÚDesktopEntry.getFSTypeu   s   € Ø�x‰x˜Ó!Ð!r   c                 ó$   • U R                  S5      $ )NÚ
MountPointr,   r   s    r   ÚgetMountPointÚDesktopEntry.getMountPointw   ó   € Ø�x‰x˜Ó%Ð%r   c                 ó"   • U R                  SSS9$ )NÚReadOnlyrH   r3   r,   r   s    r   ÚgetReadonlyÚDesktopEntry.getReadonlyy   rr   r   c                 ó"   • U R                  SSS9$ )NÚUnmountIconTr=   r,   r   s    r   ÚgetUnmountIconÚDesktopEntry.getUnmountIcon{   rE   r   c                 ó"   • U R                  SSS9$ )NÚMiniIconTr=   r,   r   s    r   ÚgetMiniIconÚDesktopEntry.getMiniIcon€   s   € Ø�x‰x˜
¨4ˆxÐ0Ð0r   c                 ó$   • U R                  S5      $ )NÚTerminalOptionsr,   r   s    r   ÚgetTerminalOptionsÚDesktopEntry.getTerminalOptions‚   s   € Ø�x‰xÐ)Ó*Ð*r   c                 ó$   • U R                  S5      $ )NÚ
DefaultAppr,   r   s    r   ÚgetDefaultAppÚDesktopEntry.getDefaultApp„   r¨   r   c                 ó"   • U R                  SSS9$ )NÚ	ProtocolsTrY   r,   r   s    r   ÚgetProtocolsÚDesktopEntry.getProtocols†   rb   r   c                 ó"   • U R                  SSS9$ )NÚ
ExtensionsTrY   r,   r   s    r   ÚgetExtensionsÚDesktopEntry.getExtensionsˆ   r]   r   c                 ó$   • U R                  S5      $ )NÚBinaryPatternr,   r   s    r   ÚgetBinaryPatternÚDesktopEntry.getBinaryPatternŠ   s   € Ø�x‰x˜Ó(Ð(r   c                 ó$   • U R                  S5      $ )NÚ	MapNotifyr,   r   s    r   ÚgetMapNotifyÚDesktopEntry.getMapNotifyŒ   s   € Ø�x‰x˜Ó$Ð$r   c                 ó$   • U R                  S5      $ )NÚEncodingr,   r   s    r   ÚgetEncodingÚDesktopEntry.getEncodingŽ   s   € Ø�x‰x˜
Ó#Ð#r   c                 ó"   • U R                  SSS9$ )NÚSwallowTitleTr=   r,   r   s    r   ÚgetSwallowTitleÚDesktopEntry.getSwallowTitle�   s   € Ø�x‰x˜¨tˆxÐ4Ð4r   c                 ó$   • U R                  S5      $ )NÚSwallowExecr,   r   s    r   ÚgetSwallowExecÚDesktopEntry.getSwallowExec’   s   € Ø�x‰x˜Ó&Ð&r   c                 ó"   • U R                  SSS9$ )NÚ	SortOrderTrY   r,   r   s    r   ÚgetSortOrderÚDesktopEntry.getSortOrder”   rb   r   c                 ó"   • U R                  SSS9$ )NÚFilePatternru   r3   r,   r   s    r   ÚgetFilePatternÚDesktopEntry.getFilePattern–   s   € Ø�x‰x˜¨GˆxÐ4Ð4r   c                 ó"   • U R                  SSS9$ )NÚActionsTrY   r,   r   s    r   Ú
getActionsÚDesktopEntry.getActions˜   s   € Ø�x‰x˜	¨ˆxÐ-Ð-r   c                 óD  • [         R                  R                  U5      S   S:X  a  SnO5[         R                  R                  U5      S   S:X  a  SnO[        SU5      e[	        5       U l        U R                  U R                  5        U R                  SU5        Xl	        g)	züMake this instance into a new, blank desktop entry.

If filename has a .desktop extension, Type is set to Application. If it
has a .directory extension, Type is Directory. Other extensions will
cause :class:`~xdg.Exceptions.ParsingError` to be raised.
é   ú.desktopÚApplicationú
.directoryÚ	DirectoryzUnknown extensionr+   N)
r   r   Úsplitextr   r   r   ÚaddGroupÚdefaultGroupÚsetr   )r   r   r4   s      r   r   ÚDesktopEntry.new�   s‚   € ô �7‰7×Ñ˜HÓ% aÑ(¨JÓ6Ø ‰DÜ�W‰W×Ñ˜hÓ'¨Ñ*¨lÓ:Ø‰DäÐ2°HÓ=Ð=ä“vˆŒØ�‰�d×'Ñ'Ô(Ø�‰�˜ÔØ �r   c                 ó\  • U R                   S:X  a  U R                  R                  S5        U R                  S:X  a  U R                  R                  S5        O;U R                  S:w  a+  U R                  S:w  a  U R                  R                  S5         U R                  U R                      S   U l         U R                  U R                      S
   U l        g ! [         a    U R                  R                  S	5         NJf = f! [         a    U R                  R                  S5         g f = f)Nr    z([KDE Desktop Entry]-Header is deprecatedz.kdelnkz$File extension .kdelnk is deprecatedrç   ré   zUnknown File extensionr+   zKey 'Type' is missingr<   zKey 'Name' is missing)	rí   ÚwarningsÚappendÚfileExtensionr   r4   ÚKeyErrorÚerrorsÚnamer   s    r   ÚcheckExtrasÚDesktopEntry.checkExtras²   sü   € à×ÑÐ 3Ó3Ø�M‰M× Ñ Ð!KÔLð ×Ñ Ó*Ø�M‰M× Ñ Ð!GÕHØ×Ñ :Ó-°$×2DÑ2DÈÓ2TØ�M‰M× Ñ Ð!9Ô:ð	8ØŸ™ T×%6Ñ%6Ñ7¸Ñ?ˆDŒIð
	8ØŸ™ T×%6Ñ%6Ñ7¸Ñ?ˆD�Iøô ó 	8Ø�K‰K×ÑÐ6Ö7ð	8ûô ó 	8Ø�K‰K×ÑÐ6Ö7ð	8ús$   Â!C Â6!D Ã%D Ã?D Ä%D+Ä*D+c                 óv  • XR                   :X  dg  [        R                  " SU5      (       dK  [        R                  " SU5      (       a  [        U5      (       d  U R                  R                  SU-  5        g SU R                  U   ;   a0  SU R                  U   ;   a  U R                  R                  S5        g g g )Nz^Desktop Action [a-zA-Z0-9-]+$z^X-zInvalid Group name: %srX   r_   z;Group may either have OnlyShowIn or NotShowIn, but not both)rí   ÚreÚmatchr   rõ   rò   r   )r   Úgroups     r   Ú
checkGroupÚDesktopEntry.checkGroupÉ   s‘   € à×*Ñ*Ó*Ü�8Š8Ð4°e×<Ñ<Ü�HŠH�U˜E×"Ñ"¤x°§¡Ø�K‰K×ÑÐ7¸%Ñ?Õ@ð  §¡¨UÑ 3Ó3¸+ÈÏÉÐV[ÑI\Ó:\Ø—‘×"Ñ"Ð#`Õað ;]Ð3r   c                 ó€  • US:X  GaT  US:X  d  US:X  d  US:X  a  U R                   R                  SU-  5        ORUS:X  a  U R                   R                  S5        O0US:X  d*  US	:X  d$  US
:X  d  U R                  R                  SU-  5        U R                  S:X  a%  US
:X  d  U R                   R                  SU-  5        O1U R                  S:X  a!  US
:X  a  U R                   R                  S5        US:X  a.  SU R                  U   ;  a  U R                   R                  S5        US	:X  a0  SU R                  U   ;  a  U R                   R                  S5        g g g US:X  a  U R                  X5        g [        R                  " S[        R                  R                  -   S-   U5      (       a  g [        R                  " S[        R                  R                  -   S-   U5      (       a  g US:X  a  U R                  XSS9  g [        R                  " S[        R                  R                  -   S-   U5      (       a  g [        R                  " S[        R                  R                  -   S-   U5      (       a  U R                  X5        g US:X  a  U R                  XSS9  g US:X  a"  U R                  XSS 9  U R                  U5        g US!:X  a"  U R                  XSS 9  U R                  U5        g US":X  a$  U R                  X5        U R                  US5        g US:X  a$  U R                  X5        U R                  US5        g US#:X  a$  U R                  X5        U R                  US5        g US$:X  a#  U R                  XSS9  U R                  US5        g US%:X  a#  U R                  XSS 9  U R                  US5        g US:X  a#  U R                  XSS 9  U R                  US5        g US&:X  a5  U R                  X5        U R                  US5        U R                  U5        g [        R                  " S'[        R                  R                  -   S-   U5      (       a$  U R                  XS(SS)9  U R                  US5        g US*:X  a#  U R                  XSS9  U R                  US5        g US+:X  a  U R                  US5        g US:X  a$  U R                  X5        U R                  US5        g US,:X  a/  U R                  XSS 9  U R                   R                  S-U-  5        g US.:X  a0  U R                  X5        U R                   R                  S-U-  5        g US/:X  a/  U R                  XS0S9  U R                   R                  S-U-  5        g US1:X  aB  U R                  X5        U R                  US5        U R                   R                  S-U-  5        g US2:X  aB  U R                  X5        U R                  US5        U R                   R                  S-U-  5        g US3:X  aB  U R                  X5        U R                  US5        U R                   R                  S-U-  5        g US4:X  aA  U R                  XSS9  U R                  US5        U R                   R                  S-U-  5        g [        R                  " S5[        R                  R                  -   S-   U5      (       aB  U R                  X5        U R                  US5        U R                   R                  S-U-  5        g US6:X  a0  U R                  X5        U R                   R                  S7U-  5        g [        R                  " S8[        R                  R                  -   S-   U5      (       a0  U R                  X5        U R                   R                  S7U-  5        g US9:X  a0  U R                  X5        U R                   R                  S7U-  5        g US::X  a0  U R                  X5        U R                   R                  S7U-  5        g US;:X  a/  U R                  XSS 9  U R                   R                  S7U-  5        g US<:X  a/  U R                  XSS 9  U R                   R                  S7U-  5        g US=:X  a0  U R                  X5        U R                   R                  S7U-  5        g US>:X  a0  U R                  X5        U R                   R                  S7U-  5        g [        R                  " S?[        R                  R                  -   S-   U5      (       a  U R                   R                  S7U-  5        g US@:X  a0  U R                  X5        U R                   R                  S7U-  5        g USA:X  a0  U R                  XSBSS)9  U R                   R                  S7U-  5        g USC:X  a/  U R                  XSS 9  U R                   R                  S7U-  5        g [        R                  " SDU5      (       a  g U R                  R                  SEU-  5        g )FNr+   ÚServiceTypeÚServiceÚFSDevicezType=%s is a KDE extensionrt   zType=MimeType is deprecatedrè   ÚLinkrê   zGValue of key 'Type' must be Application, Link or Directory, but is '%s'ré   z.File extension is .directory, but Type is '%s'rç   z>Files with Type=Directory should have the extension .directoryrg   z!Type=Application needs 'Exec' keyrˆ   zType=Link needs 'URL' keyr1   z^NameÚ$z^GenericNamerG   rH   r3   z^Commentz^IconrT   rX   TrY   r_   r$   rk   ro   râ   r|   z	^KeywordsÚlocalestring)r4   rZ   r€   r„   r�   zKey '%s' is a KDE extensionr‘   r™   r2   r�   r¡   r¥   rª   z^UnmountIconrÎ   zKey '%s' is deprecatedz	^MiniIconr¶   rº   r¾   rÂ   rÆ   rÊ   z^SwallowTitlerÖ   rÞ   ru   rÚ   z^X-[a-zA-Z0-9-]+zInvalid key: %s)rñ   rò   rõ   ró   r   Ú
checkValuerú   rû   ÚxdgÚLocaleru   ÚcheckOnlyShowInÚ	checkTypeÚcheckCategories)r   ÚkeyÚvaluerü   s       r   ÚcheckKeyÚDesktopEntry.checkKeyÔ   sn  € à�&Œ=Ø˜Ó%¨°)Ó);¸uÈ
Ó?RØ—‘×$Ñ$Ð%AÀCÑ%GÕHØ˜*Ó$Ø—‘×$Ñ$Ð%BÕCØ˜}Ó,°¸³À5ÈKÓCWØ—‘×"Ñ"Ð#lÐotÑ#tÔuà×!Ñ! \Ó1¸%À;Ó:NØ—‘×$Ñ$Ð%UÐX]Ñ%]Õ^Ø×#Ñ# zÓ1°e¸{Ó6JØ—‘×$Ñ$Ð%eÔfà˜Ó%Ø §¡¨eÑ!4Ó4Ø—M‘M×(Ñ(Ð)LÔMØ˜‹Ø §¡¨UÑ 3Ó3Ø—M‘M×(Ñ(Ð)DÕEð 4ð ð �IÓØ�O‰O˜CÕ'ä�XŠX�gœcŸj™j×.Ñ.Ñ.¨sÑ2°C×8Ñ8Øä�XŠX�n¤S§Z¡Z×%5Ñ%5Ñ5°cÑ9¸3×?Ñ?Øà�KÓØ�O‰O˜C¨YˆOÒ7ä�XŠX�j¤§¡×!1Ñ!1Ñ1°#Ñ5°s×;Ñ;Øä�XŠX�gœcŸj™j×.Ñ.Ñ.¨sÑ2°C×8Ñ8Ø�O‰O˜CÕ'à�H‹_Ø�O‰O˜C¨YˆOÒ7à�LÓ Ø�O‰O˜C¨TˆOÑ2Ø× Ñ  Õ'à�KÓØ�O‰O˜C¨TˆOÑ2Ø× Ñ  Õ'à�IÓØ�O‰O˜CÔ'Ø�N‰N˜3 Õ.à�F‹]Ø�O‰O˜CÔ'Ø�N‰N˜3 Õ.à�F‹]Ø�O‰O˜CÔ'Ø�N‰N˜3 Õ.à�JÓØ�O‰O˜C¨YˆOÑ7Ø�N‰N˜3 Õ.à�IÓØ�O‰O˜C¨TˆOÑ2Ø�N‰N˜3 Õ.à�JÓØ�O‰O˜C¨TˆOÑ2Ø�N‰N˜3 Õ.à�LÓ Ø�O‰O˜CÔ'Ø�N‰N˜3 Ô.Ø× Ñ  Õ'ä�XŠX�k¤#§*¡*×"2Ñ"2Ñ2°3Ñ6¸×<Ñ<Ø�O‰O˜C¨^À$ˆOÑGØ�N‰N˜3 Õ.à�OÓ#Ø�O‰O˜C¨YˆOÑ7Ø�N‰N˜3 Õ.àÐ$Ó$Ø�N‰N˜3 Õ.à�E‹\Ø�O‰O˜CÔ'Ø�N‰N˜3 Õ&ð �NÓ"Ø�O‰O˜C¨TˆOÑ2Ø�M‰M× Ñ Ð!>ÀÑ!DÕEà�IÓØ�O‰O˜CÔ'Ø�M‰M× Ñ Ð!>ÀÑ!DÕEàÐ'Ó'Ø�O‰O˜C¨YˆOÑ7Ø�M‰M× Ñ Ð!>ÀÑ!DÕEà�E‹\Ø�O‰O˜CÔ'Ø�N‰N˜3 
Ô+Ø�M‰M× Ñ Ð!>ÀÑ!DÕEà�H‹_Ø�O‰O˜CÔ'Ø�N‰N˜3 
Ô+Ø�M‰M× Ñ Ð!>ÀÑ!DÕEà�LÓ Ø�O‰O˜CÔ'Ø�N‰N˜3 
Ô+Ø�M‰M× Ñ Ð!>ÀÑ!DÕEà�JÓØ�O‰O˜C¨YˆOÑ7Ø�N‰N˜3 
Ô+Ø�M‰M× Ñ Ð!>ÀÑ!DÕEä�XŠX�n¤S§Z¡Z×%5Ñ%5Ñ5°cÑ9¸3×?Ñ?Ø�O‰O˜CÔ'Ø�N‰N˜3 
Ô+Ø�M‰M× Ñ Ð!>ÀÑ!DÕEð �JÓØ�O‰O˜CÔ'Ø�M‰M× Ñ Ð!9¸CÑ!?Õ@ä�XŠX�k¤#§*¡*×"2Ñ"2Ñ2°3Ñ6¸×<Ñ<Ø�O‰O˜CÔ'Ø�M‰M× Ñ Ð!9¸CÑ!?Õ@àÐ%Ó%Ø�O‰O˜CÔ'Ø�M‰M× Ñ Ð!9¸CÑ!?Õ@à�LÓ Ø�O‰O˜CÔ'Ø�M‰M× Ñ Ð!9¸CÑ!?Õ@à�KÓØ�O‰O˜C¨TˆOÑ2Ø�M‰M× Ñ Ð!9¸CÑ!?Õ@à�LÓ Ø�O‰O˜C¨TˆOÑ2Ø�M‰M× Ñ Ð!9¸CÑ!?Õ@à�OÓ#Ø�O‰O˜CÔ'Ø�M‰M× Ñ Ð!9¸CÑ!?Õ@à�KÓØ�O‰O˜CÔ'Ø�M‰M× Ñ Ð!9¸CÑ!?Õ@ä�XŠX�o¤c§j¡j×&6Ñ&6Ñ6°sÑ:¸C×@Ñ@Ø�M‰M× Ñ Ð!9¸CÑ!?Õ@à�MÓ!Ø�O‰O˜CÔ'Ø�M‰M× Ñ Ð!9¸CÑ!?Õ@à�MÓ!Ø�O‰O˜C¨W¸4ˆOÑ@Ø�M‰M× Ñ Ð!9¸CÑ!?Õ@à�KÓØ�O‰O˜C¨TˆOÑ2Ø�M‰M× Ñ Ð!9¸CÑ!?Õ@ô �XŠXÐ(¨#×.Ñ.Øð �K‰K×ÑÐ0°3Ñ6Õ7r   c                 ót   • U R                  5       U:X  d$  U R                  R                  SU< SU< 35        g g )NzKey 'z' only allowed in Type=)r-   rõ   rò   )r   r  r4   s      r   r
  ÚDesktopEntry.checkType�  s,   € Ø�|‰|‹~ Ó%Ø�K‰K×ÒÃSÊ$ÐOÕPð &r   c                 ó    • U R                  U5      n/ SQnU H3  nXC;  d  M
  USS S:w  d  M  U R                  R                  SU-  5        M5     g )N)
ÚGNOMEÚKDEÚLXDEÚMATEÚRazorÚROXÚTDEÚUnityÚXFCEÚOldr   é   úX-z)'%s' is not a registered OnlyShowIn value)ÚgetListrõ   rò   )r   r  ÚvaluesÚvalidÚitems        r   r	  ÚDesktopEntry.checkOnlyShowIn”  sM   € Ø—‘˜eÓ$ˆò ˆãˆDØÕ  T¨!¨A Y°$Õ%6Ø—‘×"Ñ"Ð#NÐQUÑ#UÖVò r   c                 ó8  ^• U R                  U5      n/ SQm[        U4S jU 5       5      (       d  U R                  R                  S5        / SQnUT-   nU H@  nXT;  d  M
  UR	                  S5      (       a  M"  U R                  R                  SU-  5        MB     g )N)Ú
AudioVideoÚAudioÚVideoÚDevelopmentÚ	EducationÚGameÚGraphicsÚNetworkÚOfficeÚScienceÚSettingsÚSystemÚUtilityc              3   ó,   >#   • U  H	  oT;   v •  M     g 7fr   © )Ú.0r"  Úmains     €r   Ú	<genexpr>Ú/DesktopEntry.checkCategories.<locals>.<genexpr>   s   øé € Ð3ªF D˜4–<ªFùs   ƒzMissing main category)~ÚBuildingÚDebuggerÚIDEÚGUIDesignerÚ	ProfilingÚRevisionControlÚTranslationÚCalendarÚContactManagementÚDatabaseÚ
DictionaryÚChartÚEmailÚFinanceÚ	FlowChartÚPDAÚProjectManagementÚPresentationÚSpreadsheetÚWordProcessorÚ
2DGraphicsÚVectorGraphicsÚRasterGraphicsÚ
3DGraphicsÚScanningÚOCRÚPhotographyÚ
PublishingÚViewerÚ	TextToolsÚDesktopSettingsÚHardwareSettingsÚPrintingÚPackageManagerÚDialupÚInstantMessagingÚChatÚ	IRCClientÚFeedÚFileTransferÚHamRadioÚNewsÚP2PÚRemoteAccessÚ	TelephonyÚTelephonyToolsÚVideoConferenceÚ
WebBrowserÚWebDevelopmentÚMidiÚMixerÚ	SequencerÚTunerÚTVÚAudioVideoEditingÚPlayerÚRecorderÚDiscBurningÚ
ActionGameÚAdventureGameÚ
ArcadeGameÚ	BoardGameÚ
BlocksGameÚCardGameÚKidsGameÚ	LogicGameÚRolePlayingÚShooterÚ
SimulationÚ
SportsGameÚStrategyGameÚArtÚConstructionÚMusicÚ	LanguagesÚArtificialIntelligenceÚ	AstronomyÚBiologyÚ	ChemistryÚComputerScienceÚDataVisualizationÚEconomyÚElectricityÚ	GeographyÚGeologyÚ
GeoscienceÚHistoryÚ
HumanitiesÚImageProcessingÚ
LiteratureÚMapsÚMathÚNumericalAnalysisÚMedicalSoftwareÚPhysicsÚRoboticsÚSpiritualityÚSportsÚParallelComputingÚ	AmusementÚ	ArchivingÚCompressionÚElectronicsÚEmulatorÚEngineeringÚ	FileToolsÚFileManagerÚTerminalEmulatorÚ
FilesystemÚMonitorÚSecurityÚAccessibilityÚ
CalculatorÚClockÚ
TextEditorÚDocumentationÚAdultÚCorer  r  r  ÚGTKÚQtÚMotifÚJavaÚConsoleOnlyr  z!'%s' is not a registered Category)r  Úanyrõ   rò   Ú
startswith)r   r  r   Ú
additionalÚallcategoriesr"  r5  s         @r   r  ÚDesktopEntry.checkCategoriesœ  s…   ø€ Ø—‘˜eÓ$ˆò aˆÜÔ3©FÓ3×3Ñ3Ø�K‰K×ÑÐ6Ô7ò cˆ
Ø" TÑ)ˆãˆDØÕ(°·±À×1FÓ1FØ—‘×"Ñ"Ð#FÈÑ#MÖNò r   c                 óZ   • [         R                  " S[        5        U R                  U5      $ )zPDeprecated alias for checkCategories - only exists for backwards
compatibility.
z1checkCategorie is deprecated, use checkCategories)rñ   ÚwarnÚDeprecationWarningr  )r   r  s     r   ÚcheckCategorieÚDesktopEntry.checkCategorieª  s(   € ô 	�ŠÐIÜ<Nô	Pà×#Ñ# EÓ*Ð*r   )r   r   rö   r4   r   )>Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rí   r   r   r   r(   r-   r5   r8   r   rC   rI   rM   rQ   rU   r[   r`   rd   rh   rl   rp   rv   ry   r}   r�   r…   r‰   rŽ   r’   r–   rš   rž   r¢   r¦   r«   r¯   r³   r·   r»   r¿   rÃ   rÇ   rË   rÏ   rÓ   r×   rÛ   rß   rã   r   r÷   rý   r  r
  r	  r  r»  Ú__static_attributes__r3  r   r   r   r      s$  † Ù1à"€Lô
òòJòò ò3ò#ò-ò4ò5ò0ò-ò2ò1ò0ò#ò ò ò4ò=ò/ò1ò9ò*òò
3ò#ò<ò-òò"ò&ò4ò4ò
1ò+ò&ò0ò1ò)ò%ò$ò5ò'ò0ò5ò.ò
!ò*8ò.	bòz8òxQòXòPõ+r   r   )rÁ  Úxdg.IniFiler   r   Ú
xdg.Localer  Úxdg.Exceptionsr   Úxdg.utilr   Úos.pathr   rú   rñ   r   r3  r   r   Ú<module>rÈ     s/   ðñ
÷ *Û Ý 'Ý Û Û 	Û ô[+�7õ [+r   