(self, instance: Contentview | type[Contentview])
| 20 | self.on_change = signals.SyncSignal(_on_change) |
| 21 | |
| 22 | def register(self, instance: Contentview | type[Contentview]) -> None: |
| 23 | if isinstance(instance, type): |
| 24 | instance = instance() |
| 25 | name = instance.name.lower() |
| 26 | if name in self._by_name: |
| 27 | logger.info(f"Replacing existing {name} contentview.") |
| 28 | self._by_name[name] = instance |
| 29 | self.on_change.send(instance) |
| 30 | |
| 31 | def available_views(self) -> list[str]: |
| 32 | return ["auto", *sorted(self._by_name.keys())] |