2026/03/04
|
Wednesday, March 4, 2026 (#63)
|
|
At some point, I must have entirely lost the plot of how screen-updates are supposed to be done -- because there's a lot of newer (I think) code which isn't being invoked, and I'm not currently sure where the actual updates are happening. Did I actually document the new process, or did I just think really hard about documenting it? This page is supposed to be the documentation, but somehow I think it may be out-of-date...
Code forensics: It looks like where the updating is actually being invoked is in [WFe]IO\Aspect\Connx\cConveyer::ConveyNow(), which fetches the Updater object from [WFe]IO\Aspect\Connx\Stream\Finite\Buffer\aux\cUpdater::FromStreams($oSrce,$oDest), where $oSrce and $oDest are the arguments passed to ConveyNow().
...and I've moved cUpdater to IO/Aspect/Connx/Stream/aux/Updater, since it can handle any Stream (not just Buffers).
How it works:
Stream\cUpdater:- ...is passed two streams (a Lecturer and a Listener) at setup-time.
- ...looks at them (mainly the Listener) to build the text to be displayed.
- When its
OnChange()is called, it rebuilds the display-string and passes it on to the Panel. - It also passes along all event-calls to the
Panelobject.
- The
Panelobject (e.g.IO\O\Panel\Line, currently used by DBA) handles how the message is displayed on screen, in response toOnBefore(),OnChange(), andOnAfter()events.