Er is een mechanisme in GENEAAL ingebouwd om zelf functionaliteit aan GENEAAL toe te kunnen voegen. Dit mechanisme werkt als volgt.
De plugins zijn kleine programma's, geschreven in de taal PIPL (Plug-in Programming Language). De programma's kunnen gebruikmaken van de database van GENEAAL. Hiertoe zijn in de taal vele mogelijkheden ingebouwd.
Voor het ontwikkelen en compileren van de programma's, de plug-ins, is een speciale Plug-in Compiler beschikbaar. Deze vertaalt de plug-intekst, het PIPL-programma, naar een vorm die GENEAAL begrijpt. De gecompileerde plug-ins worden door Geneaal in gelezen en uitgevoerd.
N.B. Plug-ins voor versie 8 werken alleen wanneer zij ook met de Plug-in Compiler voor versie 8 zijn aangemaakt! Plug-ins van vorige versies moeten eerst opnieuw door de compiler worden vertaald voordat zij bruikbaar zijn.
Bij versie 9 is een aantal plugins reeds bijgevoegd, o.a.:
naam plugin |
functie |
Achternamen |
Maakt een lijst met achternamen in de geopende familie en het aantal malen dat de naam voorkomt. Uitvoer in html. |
Beeldengalerij |
Er wordt een beeldengalerij gemaakt. In de beeldengalerij worden gekoppelde beelden van alle personen uit de geopende familie of uit de personenlijst opgenomen. De uitvoer bestaat uit één of meer html-bestanden. |
Bloedverwanten |
Maakt een lijst van alle bloedverwanten van de huidige persoon tot en met de derde graad. Uitvoer in html. |
Diapresentatie |
Maakt diapresentatie van alle beelden van de geopende familie. |
InHetVerleden |
Er wordt nagegaan wat er op een bepaalde datum aan gebeurtenissen heeft plaatsgevonden. De uitvoer is een html-bestand. |
Kalender |
Maakt kalender met geboortedata van (waarschijnlijk) levende personen in de geopende familie met een bepaalde familienaam. De familienamen worden aan de gebruiker gevraagd |
Kwartierblad |
Maakt een kwartierblad van de huidige persoon. Uitvoer in html. |
LeeftijdOverledenen |
Er wordt staafdiagram gemaakt van leeftijdscategorieën van overleden waarvan de leeftijd exact bekend is. Er wordt gekeken naar alle personen uit de geopende familie of uit de personenlijst. De uitvoer is een html-bestand. |
PersonenTellen |
Deze plugin telt van alle families de personen en relaties en geeft de resultaten in het vak Meldingen weer. N.B. Dit tellen kan enige tijd duren !! |
ZoekBeroep |
Zoek in de huidige familie naar personen die een bepaald beroep uitoefenden.De gevonden personen worden in de personenlijst geplaatst. De beroepen worden aan de gebruiker gevraagd (max. 5). N.B. De personenlijst moet eerst worden leeggemaakt. |
ZoekWoonplaats |
Zoek in de huidige familie naar personen die in een bepaalde plaats woonden.De gevonden personen worden in de personenlijst geplaatst. De plaatsen worden aan de gebruiker gevraagd (max. 5). N.B. De personenlijst moet eerst worden leeggemaakt. |
ZoekInOpmerkingen |
Zoek in de huidige familie naar personen waarbij een bepaalde tekst in opmerkingen of referenties voorkomen. Bij het zoeken wordt alleen naar cijfers en letters gekeken. De gevonden personen worden in de personenlijst geplaatst. N.B. De personenlijst moet eerst worden leeggemaakt. |
ZoekTitels |
Zoek in de huidige familie naar personen die een titel hebben.De gevonden personen worden in de personenlijst geplaatst. N.B. De personenlijst moet eerst worden leeggemaakt. |
ZoekOntbrekendeAktes |
Zoek in de huidige familie naar personen die geen geboorte- of overlijdensaktegegevens hebben. De gevonden personen worden in de personenlijst geplaatst. N.B. De personenlijst moet eerst worden leeggemaakt. |
Voor het programmeren en testen van een plugin wordt verwezen naar de help-informatie van de Plug-incompiler: help
Een voorbeeld van een programmatekst van een eenvoudige plug-in:
plugin PersonenTellen
description 'Deze plugin telt van alle families de personen en relaties \
en geeft de resultaten in het vak Meldingen weer.\n\
N.B. Dit tellen kan enige tijd duren !!'
globalvars
Famnr, AtlFams, TotaalAtlPers, AtlPers, TotaalAtlRels, AtlRels, PersNr: number;
p, r: number;
h: string;
main
if (AantalFamilies(AtlFams) = 0) or (AtlFams = 0) then Stop;
SchrijfNR(0);
Famnr := 1;
TotaalAtlPers := 0;
TotaalAtlRels := 0;
loop {langs de families}
if (ConnectFamilie(FamNr, AtlPers) <> 0) and (AtlPers <> 0) then
begin
p := 0; {p telt werkelijke aantal personen in deze familie}
AtlRels := 0; {telt aantal relaties in deze familie}
loop {door de familie}
stopif VolgendeFamPersoon(PersNr) = 0;
p := p + 1;
if PersoonAantalRels(PersNr, r) > 0 and r > 0 then
AtlRels := AtlRels + r;
endloop; {per persoon}
NaamFamilie(FamNr, h);
h := SubStr(h ++ ' ', 1, 20);
SchrijfTekst(0, h ++ ': ' ++ GetalNaarTekst(p, 0) ++ ' personen; ' ++
GetalNaarTekst(AtlRels, 0) ++ ' relaties');
TotaalAtlPers := TotaalAtlPers + p;
TotaalAtlRels := TotaalAtlRels + AtlRels;
end;
FamNr := FamNr + 1;
stopif FamNr > AtlFams;
endloop; {per familie}
SchrijfNR(0);
SchrijfTekst(0, 'TOTAAL : ' ++ GetalNaarTekst(TotaalAtlPers, 0) ++ ' personen; ' ++
GetalNaarTekst(TotaalAtlRels, 0) ++ ' relaties');
SchrijfNR(0);
endmain
Voor het uitvoeren van een plug-in is er in het menu Extra de menustap Plug-ins of gebruik de knop: .
Hierna verschijnt het plug-inscherm:
Linksboven staan de bekende plug-ins, hieronder een scherm voor de beschrijving van de bovengekozen plug-in; en rechts een groot scherm voor de meldingen van de uitvoering van de gekozen plug-in
Er zijn de volgende knoppen:
dit is uitvoeringsknop: de plugin wordt gestart |
|
met deze knop wordt het plug-inscherm gesloten |
|
hiermee wordt de uitvoering afgebroken |
Na het gebruik van de uitvoeringsknop, wordt in het vak Meldingen de voortgang bijgehouden:
Bovenvermelde plug-in (PersonenTellen) levert b.v. de volgende uitvoer:
De meeste plug-ins geven hun resultaat in de vorm van een webpagina, b.v. Kwartierblad: