2026/03/04

From Woozle Writes Code
Jump to navigation Jump to search
Wednesday, March 4, 2026 (#63)
Tuesday Wednesday Thursday posts:prev <this> next

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.
      • The Panel object is fetched from Cable::OPanel(), where it has been set earlier.
        • This is currently done in Sys\Data\Engine\aux\ActionRq, which retrieves it from the root App class...
          • ...where it was set by the App-podling of the application actually being run.
    • It also passes along all event-calls to the Panel object.
  • The Panel object (e.g. IO\O\Panel\Line, currently used by DBA) handles how the message is displayed on screen, in response to OnBefore(), OnChange(), and OnAfter() events.