home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / python2.4 / site-packages / LanguageSelector / LangCache.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  5.2 KB  |  161 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. import apt
  5. import apt_pkg
  6. from gettext import gettext as _
  7.  
  8. class LanguageInformation(object):
  9.     
  10.     def __init__(self):
  11.         self.language = None
  12.         self.languageCode = None
  13.         self.hasLangPack = False
  14.         self.langPackInstalled = False
  15.         self.installLangPack = False
  16.         self.hasLangSupport = False
  17.         self.langSupportInstalled = False
  18.         self.installLangSupport = False
  19.  
  20.     
  21.     def __str__(self):
  22.         return '%s (%s)' % (self.language, self.languageCode)
  23.  
  24.  
  25.  
  26. class ExceptionPkgCacheBroken(Exception):
  27.     pass
  28.  
  29.  
  30. class LanguageSelectorPkgCache(apt.Cache):
  31.     pkg_translations = [
  32.         ('kdelibs-data', 'language-pack-kde-'),
  33.         ('libgnome2-common', 'language-pack-gnome-'),
  34.         ('firefox', 'mozilla-firefox-locale-'),
  35.         ('mozilla-thunderbird', 'mozilla-thunderbird-local-'),
  36.         ('openoffice.org', 'openoffice.org-l10n-'),
  37.         ('openoffice.org', 'openoffice.org-help-'),
  38.         ('libsword5c2a', 'sword-language-pack-')]
  39.     
  40.     def __init__(self, localeinfo, progress):
  41.         apt.Cache.__init__(self, progress)
  42.         if self._depcache.BrokenCount > 0:
  43.             raise ExceptionPkgCacheBroken()
  44.         
  45.         self._localeinfo = localeinfo
  46.         self.to_inst = []
  47.         self.to_rm = []
  48.  
  49.     
  50.     def clear(self):
  51.         ''' clear the selections '''
  52.         self._depcache.Init()
  53.  
  54.     
  55.     def getChangesList(self):
  56.         to_inst = []
  57.         to_rm = []
  58.         for pkg in self.getChanges():
  59.             if pkg.markedInstall or pkg.markedUpgrade:
  60.                 to_inst.append(pkg.name)
  61.             
  62.             if pkg.markedDelete:
  63.                 to_rm.append(pkg.name)
  64.                 continue
  65.         
  66.         return (to_inst, to_rm)
  67.  
  68.     
  69.     def _getPkgList(self, languageCode):
  70.         ''' helper that returns the list of needed pkgs for the language '''
  71.         pkg_list = [
  72.             'language-support-%s' % languageCode,
  73.             'language-pack-%s' % languageCode]
  74.         for pkg, translation in self.pkg_translations:
  75.             if self.has_key(pkg) and self[pkg].isInstalled:
  76.                 pkg_list.append(translation + languageCode)
  77.                 continue
  78.         
  79.         return pkg_list
  80.  
  81.     
  82.     def tryInstallLanguage(self, languageCode):
  83.         ''' mark the given language for install '''
  84.         to_inst = []
  85.         for name in self._getPkgList(languageCode):
  86.             if self.has_key(name):
  87.                 
  88.                 try:
  89.                     self[name].markInstall()
  90.                     to_inst.append(name)
  91.                 except SystemError:
  92.                     pass
  93.                 except:
  94.                     None<EXCEPTION MATCH>SystemError
  95.                 
  96.  
  97.             None<EXCEPTION MATCH>SystemError
  98.         
  99.  
  100.     
  101.     def tryRemoveLanguage(self, languageCode):
  102.         ''' mark the given language for remove '''
  103.         to_rm = []
  104.         for name in self._getPkgList(languageCode):
  105.             if self.has_key(name):
  106.                 
  107.                 try:
  108.                     self[name].markDelete(True)
  109.                     to_rm.append(name)
  110.                 except SystemError:
  111.                     pass
  112.                 except:
  113.                     None<EXCEPTION MATCH>SystemError
  114.                 
  115.  
  116.             None<EXCEPTION MATCH>SystemError
  117.         
  118.  
  119.     
  120.     def getLanguageInformation(self):
  121.         ''' returns a list with language packs/support packages '''
  122.         res = []
  123.         for line in open(self._localeinfo._langFile):
  124.             line = line.strip()
  125.             if line.startswith('#'):
  126.                 continue
  127.             
  128.             (code, lang) = line.split(':')
  129.             li = LanguageInformation()
  130.             li.languageCode = code
  131.             li.language = _(lang)
  132.             li.hasLangPack = self.has_key('language-pack-%s' % code)
  133.             li.hasLangSupport = self.has_key('language-support-%s' % code)
  134.             if li.hasLangPack:
  135.                 li.langPackInstalled = li.installLangPack = self['language-pack-%s' % code].isInstalled
  136.             
  137.             if li.hasLangSupport:
  138.                 li.langSupportInstalled = li.installLangSupport = self['language-support-%s' % code].isInstalled
  139.             
  140.             if li.hasLangPack or li.hasLangSupport:
  141.                 res.append(li)
  142.                 continue
  143.         
  144.         return res
  145.  
  146.  
  147. if __name__ == '__main__':
  148.     from LocaleInfo import LocaleInfo
  149.     datadir = '/usr/share/language-selector'
  150.     li = LocaleInfo('%s/data/languages' % datadir, '%s/data/countries' % datadir, '%s/data/languagelist' % datadir)
  151.     lc = LanguageSelectorPkgCache(li, apt.progress.OpProgress())
  152.     print 'available language information'
  153.     print []([ '%s' % x for x in lc.getLanguageInformation() ])
  154.     print "Trying to install 'zh'"
  155.     lc.tryInstallLanguage('zh')
  156.     print lc.getChangesList()
  157.     print 'Trying to remove it again'
  158.     lc.tryRemoveLanguage('zh')
  159.     print lc.getChangesList()
  160.  
  161.