In a particular notebook, I've got a docked cell with a status readout that depends on a package I've written. It doesn't display properly before the package is loaded. The notebook has an initialization cell that loads the package, but of course that won't happen until the user explicitly evaluates initialization cells or evaluates something else and is prompted to evaluate such cells. To avoid a broken display, the package sets a global variable when loaded, and the docked cell has a Dynamic object that monitors this global variable, displaying "Please evaluate initialization cells!" when it's undefined and the normal status readout when its defined.
This works as intended when opening the notebook, but if the user quits the kernel with Quit[]
or the menu item, the Dynamic object does NOT seem to notice, and so continues showing the status readout as if everything were normal. I need a way to make the Dynamic content change when the kernel quits, so the user knows he/she needs to evaluate initialization cells again.
This is more of an issue than it might seem, because (a) I'm working with very novice users, and (b) the notebook has other interactive features (like a big important button) that fail silently and confusingly when the package has not been loaded.
I get that Dynamic objects probably can't react sensibly to a kernel quit because the kernel is what makes them be responsive... So can anyone suggest any clever hacks that will let me change a displayed text item when the kernel quits?
$Epilog
? You might be able to set that so it will set some flag and update your dynamic object before quitting. $\endgroup$Initialization
option toDynamic
and call the package in thatInitialization
within theDynamic
in your docked cell. $\endgroup$