def broadcast(cls, signal, *args):
        if signal == "config":
            # temporary, while restructuring
            from fsgs.context import fsgs
            key, value = args
            fsgs.signal.notify("fsgs:config:" + key, value)

        # if threading.current_thread().ident == main_thread_id:
        #     cls.do_broadcast(signal, *args)
        # else:
        #     def function():
        #         cls.do_broadcast(signal, *args)
        #     fsui.call_after(function)
        BaseSignal(signal).notify(*args)
 def remove_listener(cls, signal, listener):
     # cls.listeners[signal].remove(listener)
     BaseSignal(signal).disconnect(listener)
 def add_listener(cls, signal, listener):
     # cls.listeners.setdefault(signal, []).append(listener)
     BaseSignal(signal).connect(listener)