Source code for betty.extension.gramps
"""Integrate Betty with `Gramps <https://gramps-project.org>`_."""
from __future__ import annotations
from typing import TYPE_CHECKING
from betty.app.extension import ConfigurableExtension, UserFacingExtension
from betty.gramps.loader import GrampsLoader
from betty.locale import Str
if TYPE_CHECKING:
from betty.extension.gramps.gui import _GrampsGuiWidget
from betty.extension.gramps.config import GrampsConfiguration
from betty.gui import GuiBuilder
from betty.load import Loader
[docs]
class Gramps(
ConfigurableExtension[GrampsConfiguration], UserFacingExtension, Loader, GuiBuilder
):
[docs]
@classmethod
def name(cls) -> str:
return "betty.extension.Gramps"
[docs]
@classmethod
def default_configuration(cls) -> GrampsConfiguration:
return GrampsConfiguration()
[docs]
async def load(self) -> None:
for family_tree in self.configuration.family_trees:
file_path = family_tree.file_path
if file_path:
await GrampsLoader(
self._app.project,
localizer=self._app.localizer,
).load_file(file_path)
[docs]
@classmethod
def label(cls) -> Str:
return Str.plain("Gramps")
[docs]
@classmethod
def description(cls) -> Str:
return Str._(
'Load <a href="https://gramps-project.org/">Gramps</a> family trees.'
)
[docs]
def gui_build(self) -> _GrampsGuiWidget:
from betty.extension.gramps.gui import _GrampsGuiWidget
return _GrampsGuiWidget(self._app)