;ò Ç¥ Gc@sDdZdkZdkZdkZdkZdkZdklZlZlZl Z dk l Z l Z dZ hZdZdZdZeZeaeaeaead„Zed „Zd fd „ƒYZd fd „ƒYZdfd„ƒYZdfd„ƒYZeddƒZeddƒZeddƒZ eddƒZ!eddƒZ"eddƒZ#eddƒZ$eddƒZ%eddƒZ&e'a(d„Z)d„Z*d d!d"„Z+d#d d$„Z,ed%„Z-d&d'„Z.d(„Z/e0d)joSdk1Z1e2e1i3ƒd*joe/d+ƒq@x#e1i3d#D]Z4e/e4ƒq(WndS(,sÿThis module provides access to the shared MIME database. types is a dictionary of all known MIME types, indexed by the type name, e.g. types['application/x-python'] Applications can install information about MIME types by storing an XML file as /packages/.xml and running the update-mime-database command, which is provided by the freedesktop.org shared mime database package. See http://www.freedesktop.org/standards/shared-mime-info-spec/ for information about the format of these files.N(si18ns_sbasedirsxattr(sminidoms XML_NAMESPACEs5http://www.freedesktop.org/standards/shared-mime-infoi`i4icCs>digi}|iD]}||iƒq~ƒiƒSdS(sGet text of XML nodesN(sjoinsappends_[1]snodes childNodessns nodeValuesstrip(snodes_[1]sn((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys_get_node_data'scCsx|tjo d|jo|iddƒ\}}n||ftjot||ƒt||fLoads comment for current language. Use get_comment() instead.smimes.xmlscommentslangseniiiN(sosspathsjoinsselfsmediassubtypesresourcesbasedirsload_data_pathssminidomsparsesdocsNonesdocumentElementsgetElementsByTagNameNSsFREE_NSscommentsgetAttributeNSs XML_NAMESPACEslangsi18nslangssgoodnesss_comments_get_node_data(sselfscommentsresourceslangsdocsgoodnessspath((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys_load?s"  cCsB|itjo#dt|ƒf|_|iƒn|idSdS(s;Returns comment for current language, loading it if needed.iiN(sselfs_commentsNonesstrs_load(sself((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys get_commentMs cCs|id|iSdS(Ns/(sselfsmediassubtype(sself((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys__str__UscCsd||ipdfSdS(Ns[%s: %s]s(comment not loaded)(sselfs_comment(sself((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys__repr__XscCs„dk}|i|id|iƒ}| p| o|Snt|iƒt |ƒ|i ƒƒ}|i ||t iiiƒSdS(s"Return a GdkPixbuf with the icon for this type. If size is None then the image is returned at its natural size, otherwise the image is scaled to that width with the height at the correct aspect ratio. The constants ICON_SIZE_{HUGE,LARGE,SMALL} match the sizes used by the filer.Ns/(ssavingsimage_for_typesselfsmediassubtypesbasessizesints get_heightsfloats get_widthshs scale_simplesroxsgsgdksINTERP_BILINEAR(sselfssizessavingshsbase((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysget_icon[s &( s__name__s __module__s__doc__s__init__s_loads get_comments__str__s__repr__sNonesget_icon(((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysMIMEtype3s     s MagicRulecBs>tZd„Zd„Zd„Zd„Zd„Zd„ZRS(Nc Csut|_t|_d}x7to/|idƒ}|djoPn||7}qW| o d|_ nt |ƒ|_ d}x7to/|idƒ}|djoPn||7}qWt |ƒ|_ |idƒ}|idƒ}t|ƒt|ƒd>|_|i|iƒ|_|idƒ}|djo(|i|iƒ|_|idƒ}n t|_|djosd}xW|d jo |d jo<|idƒ}|d jp |d joPn||7}qxWt |ƒ|_n d|_|d joYd}x=|d jo/|idƒ}|d joPn||7}qWt |ƒ|_n d|_|d jo d ‚ndS( Nsis>is=is&s~s+s sMalformed MIME magic line(sNonesselfsnextsprevsindsTruesfsreadscsnestsintsstartshbslbsordslenvaluesvaluesmaskswswordsrsrange( sselfsfscslbshbsstartsrswsind((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys__init__msf              cCs|i|i|iSdS(N(sselfsstartslenvaluesrange(sself((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys getLength­scCsK|i|ijo||_||_n|io|ii|ƒndS(N(sselfsnestsrulesnextsprevs appendRule(sselfsrule((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys appendRule°s    cCs:|i|ƒo&|io|ii|ƒSntSndS(N(sselfsmatch0sbuffersnextsmatchsTrue(sselfsbuffer((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysmatch¸s c Csát|ƒ}xÎt|iƒD]½}|i|}||i}||jot Sn|i oYd}x]t|iƒD];}t|||ƒt|i |ƒ@}|t|ƒ7}qqWn|||!}||ijotSqqWdS(Ns(slensbufferslsrangesselfsosstartssslenvaluesesFalsesmaskstestsisordscschrsvaluesTrue( sselfsbufferscsessslsosistest((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysmatch0¾s      % cCs8d|i|i|i|i |i |i|ifSdS(Ns!%d=[%d]%s&%s~%d+%d>(sselfsnestsstartslenvaluesvaluesmaskswordsrange(sself((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys__repr__Ðs(s__name__s __module__s__init__s getLengths appendRulesmatchsmatch0s__repr__(((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys MagicRulels  @    s MagicTypecBs,tZd„Zd„Zd„Zd„ZRS(NcCs||_g|_t|_dS(N(smtypesselfs top_rulessNones last_rule(sselfsmtype((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys__init__Ús  cCsUt|ƒ}|io|io|ii|ƒn|ii|ƒ||_|SdS(N( s MagicRulesfsnrulesnestsselfs last_rules appendRules top_rulessappend(sselfsfsnrule((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysgetLineßs   cCs3x,|iD]!}|i|ƒo |iSq q WdS(N(sselfs top_rulessrulesmatchsbuffersmtype(sselfsbuffersrule((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysmatchës cCsd|iSdS(Ns(sselfsmtype(sself((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys__repr__ðs(s__name__s __module__s__init__sgetLinesmatchs__repr__(((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys MagicTypeÙs  sMagicDBcBs2tZd„Zd„Zddd„Zd„ZRS(NcCsh|_d|_dS(Ni(sselfstypessmaxlen(sself((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys__init__ôs c Cs«t|dƒ}|iƒ} | djo d‚nxrtoj|iƒ}| oPn|ddjp|ddjo d‚n|d d!id ƒ\}} t |ƒ}t | ƒ}y|i|} Wng} | |i|(s(sfilespathsreadsselfsmaxlensbufstypesskeyssprisssortsprismax_prismin_pristypesmatchsmsNone( sselfspathsmax_prismin_pristypesprismsprissbuf((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysmatch$s$  cCsd|iSdS(Ns (sselfstypes(sself((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys__repr__8s(s__name__s __module__s__init__s mergeFilesmatchs__repr__(((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysMagicDBós  ,stextsplainsinodes blockdevices chardevices directorysfifossocketssymlinksdoors applications executablecCs§tahagahatƒad„}x0ti t i i ddƒƒD]}||ƒqIWx3ti t i i ddƒƒD]}ti |ƒq|Wtid„ƒdS(NcCsÿxøt|ƒD]ê}|idƒoq n|d }|iddƒ\}}t|ƒ}|idƒoG|d}d|jpd|jp d |j o|t |ls(sTrues_cache_uptodatesextssglobssliteralssMagicDBsmagics_import_glob_filesbasedirsload_data_pathssosspathsjoins mergeFilessort(s_import_glob_filespath((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys_cache_databaseIs  cCsrt o tƒntii|ƒ}|tjo t|Sn|iƒ}|tjo t|Sn|}xTnoL|i dƒ}|djoPn||d}|t jo t |SqlqsW|}xTnoL|i dƒ}|djoPn||d}|t jo t |SqÉqÐWxJt D]B\}}ti||ƒo|Snti||ƒo|Sq$q$WtSdS(s6Returns type of file by its name, or None if not knownis.iN(s_cache_uptodates_cache_databasesosspathsbasenamesleafsliteralsslowerslleafsextsfindspsextssglobssglobs mime_typesfnmatchsNone(spathslleafsglobspsextsleafs mime_type((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysget_type_by_namensD            idicCs*t o tƒnti|||ƒSdS(s:Returns type of file by its contents, or None if not knownN(s_cache_uptodates_cache_databasesmagicsmatchspathsmax_prismin_pri(spathsmax_prismin_pri((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysget_type_by_contentss icCst o tƒny-|oti|ƒ}nti|ƒ}Wnt|ƒ}|pt SnXygt i |ƒoSt i |t iƒ}|o d|jo&|idƒ\}}t||ƒSqÇnWnnXti|iƒo„t|d|ƒ}| ot|ƒ}n| ot|d|ƒ}n|tjo'ti|iƒd@otSqat Sn|Sn£ti|iƒotSnˆti|iƒotSnmti|iƒot SnRti!|iƒot"Sn7ti#|iƒot$Snti%|iƒot&Snt'SdS(sÅReturns type of file indicated by path. path - pathname to check (need not exist) follow - when reading file, follow symbolic links name_pri - Priority to do name matches. 100=override magics/smin_prismax_priiIN((s_cache_uptodates_cache_databasesfollowsossstatspathsstslstatsget_type_by_nameststextsxattrspresentsgetsUSER_MIME_TYPEsnamessplitsmediassubtypeslookupsS_ISREGsst_modesget_type_by_contentssname_prisNonesS_IMODEsapp_exesS_ISDIRs inode_dirsS_ISCHRs inode_charsS_ISBLKs inode_blocksS_ISFIFOs inode_fifosS_ISLNKs inode_symlinksS_ISSOCKs inode_sockets inode_door(spathsfollowsname_prismediasnamesstssubtypest((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysget_type—sT   c Cs|d7}| otiiti|ƒ}nt|ƒiƒ}tiiddƒ}tii||ƒ}xOt i |ƒD]>}yt|ƒiƒ}Wn qznX||jodSqzqzWtay§tiit i|ƒ|ƒ}t|dƒi|ƒtiidƒo d}nd}titi||t idƒƒo'ti|ƒttd ƒ|ƒ‚nWntiƒnXdS( sýCopy 'package_file' as ~/.local/share/mime/packages/.xml. If package_file is None, install /.xml. If already installed, does nothing. May overwrite an existing file with the same name (if the contents are different)s.xmlsmimespackagesNsws*/uri/0install/zero-install.sourceforge.netsC/uri/0install/zero-install.sourceforge.net/bin/update-mime-databasesupdate-mime-databasesŸThe '%s' command returned an error code! Make sure you have the freedesktop.org shared MIME package: http://www.freedesktop.org/standards/shared-mime-info.html(s applications package_filesosspathsjoinsroxsapp_dirsfilesreadsnew_datas package_dirsresourcesbasedirsload_data_pathssxsold_datasFalses_cache_uptodatessave_data_pathsnew_fileswritesisdirscommandsspawnlpsP_WAITsunlinks Exceptions_sreport_exception( s applications package_filesnew_datasold_datasresourcesnew_filescommandsxs package_dir((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysinstall_mime_infoÃs8    % s MIME-typescCsOtid||id|iƒ}| otid||iƒ}n|SdS(s£Lookup the ROX-defined run action for a given mime type. mime_type is an object returned by lookup(). handler_type is a config directory leaf (e.g.'MIME-types').srox.sourceforge.nets_N(sbasedirsload_first_configs handler_types mime_typesmediassubtypeshandler(s mime_types handler_typeshandler((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pysget_type_handleròs  cCs)t|ddƒ}|G|G|iƒGHdS(s%Print results for name. Test routinesname_priiPN(sget_typesnamests get_comment(snamest((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys_testþss__main__isfile.txt(5s__doc__sossstatsfnmatchsroxs rox.choicessi18ns_sbasedirsxattrsxml.domsminidoms XML_NAMESPACEsFREE_NSstypessICON_SIZE_HUGEsICON_SIZE_LARGEsICON_SIZE_SMALLsNonesICON_SIZE_UNSCALEDsextssglobssliteralssmagics_get_node_dataslookupsMIMEtypes MagicRules MagicTypesMagicDBstexts inode_blocks inode_chars inode_dirs inode_fifos inode_sockets inode_symlinks inode_doorsapp_exesFalses_cache_uptodates_cache_databasesget_type_by_namesget_type_by_contentssget_typesinstall_mime_infosget_type_handlers_tests__name__ssysslensargvsf((s_sICON_SIZE_UNSCALEDs inode_chars inode_sockets_cache_databasestexts_testsICON_SIZE_LARGEsroxs inode_dirsget_typesget_type_handlersxattrsMIMEtypesbasedirs inode_blocksapp_exes inode_symlinksFREE_NSslookupstypessICON_SIZE_SMALLsinstall_mime_infos MagicTypesstatsget_type_by_contentss_get_node_datasMagicDBsget_type_by_names MagicRulesICON_SIZE_HUGEsi18ns inode_fifos XML_NAMESPACEsminidomssyssfs inode_doorsfnmatchsos((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/mime.pys? s^       9mJ % ", /