def on_worldobject_deleted_message(self, message): assert isinstance(message, WorldObjectDeleted) # remove icon if message.worldobject in self.icons: self.renderer.removeAll(self.get_status_string(message.worldobject)) del self.icons[message.worldobject] # remove icon tooltip if message.worldobject is self.tooltip_instance: self.on_hover_instances_changed( HoverInstancesChanged(self, []) )
def on_add_icon_message(self, message): """This is called by the message bus with AddStatusIcon messages""" assert isinstance(message, AddStatusIcon) icon_instance = message.icon.instance if not icon_instance in self.icons: self.icons[icon_instance] = [] assert not message.icon in self.icons[icon_instance] self.icons[icon_instance].append(message.icon) # Sort, make sure highest icon is at top self.icons[icon_instance] = sorted(self.icons[icon_instance], key=StatusIcon.get_sorting_key(), reverse=True) # Now render the most important one self.__render_status(icon_instance, self.icons[icon_instance][0]) if self.tooltip_instance is not None and self.tooltip_instance is icon_instance: # possibly have to update tooltip self.on_hover_instances_changed( HoverInstancesChanged(self, [self.tooltip_instance]) )
def on_remove_icon_message(self, message): """Called by the MessageBus with RemoveStatusIcon messages.""" assert isinstance(message, RemoveStatusIcon) icon_instance = message.instance if icon_instance in self.icons: for registered_icon in self.icons[icon_instance][:]: if message.icon_class is registered_icon.__class__: self.icons[icon_instance].remove(registered_icon) if not self.icons[icon_instance]: # No icon left for this building, remove it self.renderer.removeAll(self.get_status_string(icon_instance)) del self.icons[icon_instance] else: # Render next icon self.__render_status(icon_instance, self.icons[icon_instance][0]) break if self.tooltip_instance is not None and self.tooltip_instance is icon_instance: # possibly have to update tooltip self.on_hover_instances_changed( HoverInstancesChanged(self, [self.tooltip_instance]) )