# -*- coding: utf-8 -*- # # gPodder - A media aggregator and podcast client # Copyright (c) 2005-2018 The gPodder Team # # gPodder is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # gPodder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # services.py -- Core Services for gPodder # Thomas Perl 2007-08-24 # # import gpodder from gpodder import util _ = gpodder.gettext class ObservableService(object): def __init__(self, signal_names=[]): self.observers = {} for signal in signal_names: self.observers[signal] = [] def register(self, signal_name, observer): if signal_name in self.observers: if observer not in self.observers[signal_name]: self.observers[signal_name].append(observer) return True return False def unregister(self, signal_name, observer): if signal_name in self.observers: if observer in self.observers[signal_name]: self.observers[signal_name].remove(observer) return True return False def notify(self, signal_name, *args): if signal_name in self.observers: for observer in self.observers[signal_name]: util.idle_add(observer, *args) return True return False