Beispiel #1
0
 def initialize(self):
     self.repos = self.settings['repos']
     self.ArchPkgs = ArchPkgs(self.repos, self.settings['aur'])
     self.pkgs_old = []
     return self.ArchPkgs.pacman
Beispiel #2
0
class ArchPkgsApplet(gnaf.Gnaf):
    settings = {
        'interval':15,
        'icon':{
            'idle':'idle.png',
            'new':'new.png',
            'updating':'updating.png',
            'error':'error.png'
        },
        'repos':[
            'core',
            'extra',
            'community',
            'multilib',
            'aur'
        ],
        'aur':None
    }
    
    def initialize(self):
        self.repos = self.settings['repos']
        self.ArchPkgs = ArchPkgs(self.repos, self.settings['aur'])
        self.pkgs_old = []
        return self.ArchPkgs.pacman

    def update(self):
        self.pkgs = self.ArchPkgs.search()
        if self.pkgs == None:
            return None
        count = len(self.pkgs)
        if count == 0:
            self.tooltip = 'No updates, your system is up-to-date!'
            self.data = 'Your system is up-to-date!'
            return False
        else:
            self.tooltip = '%i update(s)!' % count
            data = []
            for repo in self.repos:
                repo_pkgs = [p for p in self.pkgs if p.repo == repo]
                repo_count = len(repo_pkgs)
                if repo_count > 0:
                    p = repo_pkgs[0]
                    data.append((
                        '%s (%i)' % (repo, repo_count),
                        [('%s (%s -> %s)' % (p.name, p.version_old, p.version),
                          formatTooltip([(p.info[key][0],p.info[key][1]) for key in p.info if isint(key)])) for p in repo_pkgs]
                    ))
            self.data = data
            return True
    
    def notify(self):
        pkgs_new = list(self.pkgs)
        for p_old in self.pkgs_old:
            for p_new in pkgs_new:
                if p_new.name == p_old.name and p_new.version == p_old.version:
                    pkgs_new.remove(p_new)
                    break
        self.pkgs_old = list(self.pkgs)
        if len(pkgs_new) > 0:
            title = '%s new package(s)' % len(pkgs_new)
            body = ''
            for repo in self.repos:
                repo_pkgs = [p for p in pkgs_new if p.repo == repo]
                if len(repo_pkgs) == 0:
                    continue
                body += '<b>%s (%i)</b>:\n' % (repo, len(repo_pkgs))
                body += ''.join(['  %s (%s -> %s)\n' % (p.name, p.version_old, p.version) for p in repo_pkgs])
            self.notifications = (title, body)
            return True
        else:
            return False