Ë ÚÚ¡ö\uËãód—dZddlZddlZddlZddlZddlZddlmZGd„d«Z Gd„d«Z y)zo Implementation of the XDG Recent File Storage Specification http://standards.freedesktop.org/recent-file-spec éN)Ú ParsingErrorcóD—eZdZd„Zd d„Zd„Zd d„Zd d„Zd d„Zd„Z d „Z y) Ú RecentFilescó —g|_d|_y)NÚ)rÚfilename©Úselfs ú4/usr/lib/python3.12/site-packages/xdg/RecentFiles.pyÚ__init__zRecentFiles.__init__ s€ØˆÔ؈� óNcóô—|s3tjjtjd«d«} tj j j|«}||_ |jD]¨}|jtj j j"k(sŒ5|j$dk(sŒE|jD]U}|jtj j j"k(sŒ5|j$dk(sŒE|j'|«ŒWŒª|j)«y#t$r td|«‚tjjj$r td|«‚wxYw)ziParse a list of recently used files. filename defaults to ``~/.recently-used``. ÚHOMEz.recently-usedúFile not foundzNot a valid .menu filerÚ RecentItemN)ÚosÚpathÚjoinÚgetenvÚxmlÚdomÚminidomÚparseÚIOErrorrÚparsersÚexpatÚ ExpatErrorrÚ childNodesÚnodeTypeÚNodeÚ ELEMENT_NODEÚtagNameÚ_RecentFiles__parseRecentItemÚsort)r rÚdocÚchildÚrecents r rzRecentFiles.parses€ñ Ü—w‘w—|‘|¤B§I¡I¨fÓ$5Ð7GÓHˆHð CÜ—'‘'—/‘/×'Ñ'¨Ó1ˆCð !ˆŒ à—^”^ˆEØ�~‰~¤§¡§¡×!:Ñ!:Ó:Ø—=‘= MÓ1Ø"'×"2Ô"2˜Ø!Ÿ?™?¬c¯g©g¯l©l×.GÑ.GÓGØ%Ÿ~™~°Ó=Ø $× 6Ñ 6°vÕ >ñ#3ð$ð � ‰ � øôò ;ÜÐ/°Ó:Ð :Ü�{‰{× Ñ ×+Ñ+ò CÜÐ7¸ÓBÐ Bð Cús ·)D/Ä/AE7cóV—t«}|jj|«|jD�]t}|jt j jjk(sŒ6|jdk(r|jdj|_ Œd|jdk(r|jdj|_ Œ’|jdk(r(t|jdj«|_ŒÉ|jdk(rd|_Œà|jdk(sŒð|jD]v}|jt j jjk(sŒ5|jdk(sŒE|j j|jdj«Œx�Œwy) NÚURIrz Mime-TypeÚ TimestampÚPrivateTÚGroupsÚGroup)Ú RecentFilerÚappendrrrrr r!r"Ú nodeValuer)ÚMimeTypeÚintr*ÚPrviater,)r Úitemr'Ú attributeÚgroups r Ú__parseRecentItemzRecentFiles.__parseRecentItem*s;€Ü“ˆØ ×Ñ×Ñ Ô'àŸ�ˆIØ×!Ñ!¤S§W¡W§\¡\×%>Ñ%>Ó>Ø×$Ñ$¨Ò-Ø!*×!5Ñ!5°aÑ!8×!BÑ!B�F•JØ×&Ñ&¨+Ò5Ø&/×&:Ñ&:¸1Ñ&=×&GÑ&G�F•OØ×&Ñ&¨+Ò5Ü'*¨9×+?Ñ+?ÀÑ+B×+LÑ+LÓ'M�FÕ$Ø×&Ñ&¨)Ò3Ø%)�F•NØ×&Ñ&¨(Ó2à!*×!5Ô!5˜Ø Ÿ>™>¬S¯W©W¯\©\×-FÑ-FÓFØ$Ÿ}™}°Ó7Ø &§ ¡ × 4Ñ 4°U×5EÑ5EÀaÑ5H×5RÑ5RÕ Sò"6ñ)r cóö—|s|js td|«‚|s |j}t|d«5}tj|tj «|j d«|j d«|jD�]%}|j d«|j dtjjj|j«z«|j d|jz«|j d|jz«|jd k(r|j d «t!|j"«d kDrG|j d «|j"D]}|j d |z«Œ|j d«|j d«�Œ(|j d«tj|tj$«ddd«y#1swYyxYw)z³Write the list of recently used files to disk. If the instance is already associated with a file, filename can be omitted to save it there again. rÚwz z z z %s z %s z %s Tz rz z %s z z z N)rrÚopenÚfcntlÚlockfÚLOCK_EXÚwriterrÚsaxÚsaxutilsÚescaper)r1r*r+Úlenr,ÚLOCK_UN)r rÚfÚrr6s r r>zRecentFiles.write?sp€ñ  § ¢ ÜÐ/°Ó:Ð :ÙØ—}‘}ˆHä �(˜CÔ  AÜ �K‰K˜œ5Ÿ=™=Ô )Ø �G‰GÐ-Ô .Ø �G‰GÐ%Ô &à×%Õ%�Ø—‘Ð*Ô+Ø—‘Ð-´·±×0@Ñ0@×0GÑ0GÈÏÉÓ0NÑNÔOØ—‘Ð9¸A¿J¹JÑFÔGØ—‘Ð9¸A¿K¹KÑGÔHØ—9‘9 Ò$Ø—G‘GÐ.Ô/Ü�q—x‘x“= 1Ò$Ø—G‘GÐ,Ô-Ø!"§¤˜ØŸ™Ð ;¸eÑ CÕDð"*à—G‘GÐ-Ô.Ø—‘Ð+Ö,ð&ð �G‰GÐ&Ô 'Ü �K‰K˜œ5Ÿ=™=Ô )÷)!× Ñ ús µF1G/Ç/G8cóT—g}d}|jD]”}|r-|D]'}||jvsŒ|j|«|dz }Œ)nU|r.|D](}||jk(sŒ|j|«|dz }Œ*n%|jdk(r|j|«|dz }|dk7sŒ�||k(sŒ“|S|S)zþGet a list of recently used files. The parameters can be used to filter by mime types, by group, or to limit the number of items returned. By default, the entire list is returned, except for items marked private. réF)rr,r/r1r+) r Ú mimetypesÚgroupsÚlimitÚtmpÚir4r6Úmimetypes r ÚgetFileszRecentFiles.getFiles`s»€ðˆØ ˆØ×$Ô$ˆDÙÛ#�EØ § ¡ Ò+ØŸ ™  4Ô(ؘQ™™ñ$ñÛ )�HØ 4§=¡=Ó0ØŸ ™  4Ô(ؘQ™™ñ!*ð —<‘< 5Ò(Ø—J‘J˜tÔ$ؘ‘F�Aؘ‹z˜a 5›jØàˆ ð%%ð$ˆ r cóÄ—||jvr+|jj|«}|j|}nWt|j«dk(r|jj«t «}|jj |«||_||_ttj««|_ ||_ |r||_ |j«y)z}Add a recently used file. item should be the URI of the file, typically starting with ``file:///``. iôN)rÚindexrBÚpopr.r/r)r1r2Útimer*r+r,r$)r r4rMrIÚprivaterPr's r ÚaddFilezRecentFiles.addFile}sµ€ð �4×#Ñ#Ñ #Ø×$Ñ$×*Ñ*¨4Ó0ˆEØ×%Ñ% eÑ,‰Fô�4×#Ñ#Ó$¨Ò+Ø× Ñ ×$Ñ$Ô&ä“\ˆFØ × Ñ × #Ñ # FÔ +àˆŒ Ø"ˆŒÜœtŸy™y›{Ó+ˆÔØ ˆŒÙ Ø"ˆFŒMà � ‰ � r cóX—||jvr|jj|«yy)zrNrTrWr$©r r rr s,„òóò6Tó**óBó:ò4*ó #r rcó*—eZdZd„Zd„Zd„Zd„Zd„Zy)r.cóJ—d|_d|_d|_d|_g|_y)NrF)r)r1r*r+r,r s r r zRecentFile.__init__£s%€ØˆŒØˆŒ ؈ŒØˆŒ ؈� r cóB—t|j|j«SrY)Úcmpr*©r Úothers r Ú__cmp__zRecentFile.__cmp__ªs€Ü�4—>‘> 5§?¡?Ó3Ð3r có4—|j|jkSrY)r*rcs r Ú__lt__zRecentFile.__lt__­s€Ø�~‰~ §¡Ñ/Ð/r có2—|jt|«k(SrY)r)Ústrrcs r Ú__eq__zRecentFile.__eq__°s€Ø�x‰xœ3˜u›:Ñ%Ð%r có—|jSrY)r)r s r Ú__str__zRecentFile.__str__³s €Ø�x‰xˆr N)r[r\r]r rergrjrlr^r r r.r.¢s„òò4ò0ò&ór r.) Ú__doc__Úxml.dom.minidomrÚxml.sax.saxutilsrrRr;Úxdg.Exceptionsrrr.r^r r Úrqs/ðñ÷ )ßÓÝ'÷U#ñU#÷pòr