|
|
Managers should preserve user preferences (such as toolbar, refresh options, short help, and so on) before exiting. SaScreenPolicy(3tlib) allows managers to save and retrieve information about user preference configuration in a per-user database ($HOME/.scoadmin.pref).
During shutdown, you may have to interrupt the procedural flow
from the caller to present error dialogs to the user. This requires
returning to the event-driven user interface loop.
The procedure shown in
``Template shutdown procedure: UiStop''
uses
``Template secondary shutdown procedure: UiStop2''
and a callback to return control to the caller,
Template shutdown procedure: UiStop
proc UiStop {cb} { global appvals# Suspend autorefreshes to reduce our error concerns if {$appvals(autorefresh)} { SaAutoRefreshPause }
set vtMain $appvals(vtMain) set client $appvals(client)
# Store modified preferences
# short help set cmd [list SaShortHelpStore $client] if {[ErrorCatch errorStack 0 $cmd dummy] != 0 } { lappend errorStacks $errorStack }
# auto refresh if {$appvals(autorefresh)} { set cmd [list SaAutoRefreshStore $client] if {[ErrorCatch errorStack 0 $cmd dummy] != 0 } { lappend errorStacks $errorStack } }
# toolbar if {$appvals(toolbarcust)} { set cmd {UiToolBarStore} if {[ErrorCatch errorStack 0 $cmd dummy] != 0 } { lappend errorStacks $errorStack } }
# any problems? if [info exists errorStacks] { # present error dialog and enter event-driven Ui loop. # Re-gain procedural control via UiStop2 (part 2) and # eventually, the caller's cb SaDisplayErrorStacks $vtMain.UIStop $errorStacks {} \ [list UiStop2 $cb] VtUnLock VtMainLoop } else { # stop vtcl VtUnLock VtClose # return control to the caller eval $cb } }
Template secondary shutdown procedure: UiStop2
proc UiStop2 {cb {cbs {}}} { VtUnLock VtClose # return control to the caller eval $cb
See also: