def unregister(self): """Unregister all registered Event Handlers This will unregister all registered Event Handlers of this Component from it's registered Component or Manager. @note: It's possible to unregister a Component from itself! """ def _unregister(c, m, r): c._unregisterHandlers(m) c.root = self if m is not r: c._unregisterHandlers(r) if hasattr(c, "__tick__"): m._ticks.remove(getattr(c, "__tick__")) if m is not r: r._ticks.remove(getattr(c, "__tick__")) for x in c.components: _unregister(x, m, r) self.fire(Unregistered(self, self.manager), target=self) root = findroot(self.manager) _unregister(self, self.manager, root) self.manager.components.discard(self) if not root == self: self.fire(Unregistered(self, self.manager), target=self) self.manager = self return self
def start(self): args = (self._running,) if self._manager is not None: root = findroot(self._manager) parent, child = Pipe() self._bridge = Bridge(root, socket=parent) self._bridge.start() args = (self._running, child,) self._process = _Process(target=self.__main__, args=args) self._process.daemon = True if HAS_MULTIPROCESSING == 2: setattr(self._process, "isAlive", self._process.is_alive) self._running.acquire() self._running.value = True self._running.release() self._process.start()
def register(self, manager): """Register all Event Handlers with the given Manager This will register all Event Handlers of this Component to the given Manager. By default, every Component (Base Component) is registered with itself. Iif the Component or Manager being registered with is not the current Component, then any Hidden Components in registered to this Component will also be regsitered with the given Manager. A Registered Event will also be sent. """ def _register(c, m, r): c._registerHandlers(m) c.root = r if c._queue: m._queue.extend(list(c._queue)) c._queue.clear() if m is not r: c._registerHandlers(r) if m._queue: r._queue.extend(list(m._queue)) m._queue.clear() if hasattr(c, "__tick__"): m._ticks.add(getattr(c, "__tick__")) if m is not r: r._ticks.add(getattr(c, "__tick__")) [_register(x, m, r) for x in c.components] _register(self, manager, findroot(manager)) self.manager = manager if manager is not self: manager.components.add(self) self.fire(Registered(self, manager), target=self) return self
def start(self): args = (self._running, ) if self._manager is not None: root = findroot(self._manager) parent, child = Pipe() self._bridge = Bridge(root, socket=parent) self._bridge.start() args = ( self._running, child, ) self._process = _Process(target=self.__main__, args=args) self._process.daemon = True if HAS_MULTIPROCESSING == 2: setattr(self._process, "isAlive", self._process.is_alive) self._running.acquire() self._running.value = True self._running.release() self._process.start()