4D Agenda: van Carbon-code uit 2003 naar een moderne macOS-plug-in voor 2026
We hebben een ingrijpende modernisering afgerond van 4D Agenda: de klassieke 4D-plug-in uit het begin van deze eeuw heeft nu een heldere, stabiele en moderne macOS-codebase.
De oorspronkelijke code van 4D Agenda stamt uit ongeveer 2003. Ze had jarenlang trouw dienstgedaan, maar bevatte ook de gebruikelijke historische lagen: oude tekenroutines, verouderde platformvertakkingen, aannames uit het klassieke Mac-tijdperk en genoeg compatibiliteitscode om een museumconservator tevreden te stellen.
Het doel van de herbouw was eenvoudig te formuleren, maar lastiger uit te voeren: de macOS-versie volledig opschonen en stabiel, snel, onderhoudbaar en geschikt maken voor de volgende generatie 4D-applicaties.
Wat is veranderd
- Verouderde aannames rond Carbon, QuickDraw, ATSUI en tekenen in OS 9-stijl zijn verwijderd.
- De grafische laag is opnieuw opgebouwd rond moderne macOS-weergave met Core Graphics en Core Text.
- Lettertypeselectie, terugvallettertypen, tekstmeting en tekstweergave zijn gemoderniseerd.
- De dag-, week- en maandweergave zijn herzien voor vloeiender hertekenen en een voorspelbare lay-out.
- Slepen, formaat wijzigen, selecteren, meervoudige selectie, callbacks, scrollen en automatisch scrollen van afspraken zijn hersteld.
- Meerdaagse afspraken worden beter weergegeven in dag-, week- en maandweergaven.
- Afspraken hebben moderne vormgeving met accentkleuren, halftransparante vlakken, betere afstanden en helderdere typografie.
- Alle 4D-commando’s zijn gecontroleerd en afgestemd op de verwachtingen van de demonstratiedatabase.
- Native tests zijn toegevoegd voor datumberekeningen, lay-out, tekenreeksen, opmaak, themagedrag en consistente commando’s.
- Er is een ontwikkelaarshandleiding gemaakt met commando’s, parameters, callbacks en verwacht integratiegedrag.
Technische kenmerken
De codebase is nu in de eerste plaats op macOS gericht en aanzienlijk overzichtelijker. Oude vertakkingen voor andere platforms zijn uit de actieve macOS-code verwijderd. De Windows-versie wordt later afzonderlijk aangepakt, met een duidelijke scheiding van renderers in plaats van een nieuw doolhof aan platformvoorwaarden.
De weergave gebruikt nu een moderne grafische abstractielaag in plaats van historische teken-API’s. Moderne lettertypeselectie en Core Text verzorgen de tekst. Daarmee is een lange reeks crashes en lay-outproblemen opgelost die ontstonden door oude lettertype-identificatoren en onveilige tekstconversies.
Ook het interactiemodel is grondig herbouwd. Tijdens het slepen worden afspraken direct visueel bijgewerkt, databasewijzigingen wachten tot de muisknop wordt losgelaten en zwaar callbackwerk blokkeert de vloeiende terugkoppeling niet meer. De agenda voelt daardoor weer als een agenda, in plaats van als een tijdmachine met een muisaanwijzer eraan.
Stabiliteit
Een groot deel van de herbouw draaide om het wegnemen van crashes. We vonden oorzaken in lettertypeconversie, tekstweergave, 4D-callbacks, slepen en neerzetten, grafische contexten, cursorwijzigingen en de timing van hertekenen. Die verwerkingspaden zijn herschreven of beveiligd, zodat de plug-in zich voorspelbaar binnen 4D gedraagt.
Het resultaat is een veel veiligere architectuur: minder ongecontroleerde oude aannames, duidelijkere verantwoordelijkheden, overzichtelijke C++-modules en betere controles voordat wijzigingen worden geaccepteerd.
Gebouwd voor 2026, met respect voor 2003
4D Agenda bestaat lang genoeg om respect te verdienen. De herbouw gooit niet weg wat de plug-in bruikbaar maakte. Het vertrouwde commandomodel voor 4D blijft, terwijl de kwetsbare binnenkant wordt vervangen.
De plug-in voelt dus nog steeds als 4D Agenda. Hij gedraagt zich alleen niet meer alsof er ergens een beige Power Mac op hem wacht.
Huidige status: de modernisering voor macOS bevindt zich nu in de late bèta- en releasecandidatefase. De code bouwt probleemloos via de moderne CMake/CLion-werkwijze, de native tests slagen en de plug-in is klaar voor bredere praktijktests in 4D-applicaties.