|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
%
|
|
|
|
% Panel installation modes selector.
|
|
|
|
%
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
|
|
|
|
|
|
|
|
/modes.selected.append .undef def
|
|
|
|
/modes.selected.replace .undef def
|
|
|
|
|
|
|
|
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
% Initialise installation modes menu.
|
|
|
|
%
|
|
|
|
% ( ) ==> ( )
|
|
|
|
%
|
|
|
|
/modes.init {
|
|
|
|
/xmenu.modes .xm_size array def
|
|
|
|
/xmenu xmenu.modes def
|
|
|
|
|
|
|
|
xmenu .xm_current 0 put
|
|
|
|
|
|
|
|
/modes.gfxconfig listgfxconfig def
|
|
|
|
|
|
|
|
/modes.rawlabels [
|
|
|
|
modes.gfxconfig {
|
|
|
|
dup 0 get 6 strndup dup "label " eq exch free { 1 get } { pop } ifelse
|
|
|
|
} forall
|
|
|
|
] def
|
|
|
|
/modes.append [
|
|
|
|
modes.gfxconfig {
|
|
|
|
0 get /modes.tmp.key exch def
|
|
|
|
modes.tmp.key 6 strndup dup "label " eq exch free {
|
|
|
|
modes.tmp.key 6 add dup length 8 add string /modes.tmp.str exch def
|
|
|
|
"append %s" modes.tmp.str sprintf
|
|
|
|
modes.tmp.str getgfxconfig
|
|
|
|
modes.tmp.str free
|
|
|
|
} if
|
|
|
|
} forall
|
|
|
|
] def
|
|
|
|
/modes.replace [
|
|
|
|
modes.gfxconfig {
|
|
|
|
0 get /modes.tmp.key exch def
|
|
|
|
modes.tmp.key 6 strndup dup "label " eq exch free {
|
|
|
|
modes.tmp.key 6 add dup length 9 add string /modes.tmp.str exch def
|
|
|
|
"replace %s" modes.tmp.str sprintf
|
|
|
|
modes.tmp.str getgfxconfig
|
|
|
|
modes.tmp.str free
|
|
|
|
} if
|
|
|
|
} forall
|
|
|
|
] def
|
|
|
|
/modes.applies [
|
|
|
|
modes.gfxconfig {
|
|
|
|
0 get /modes.tmp.key exch def
|
|
|
|
modes.tmp.key 6 strndup dup "label " eq exch free {
|
|
|
|
modes.tmp.key 6 add dup length 9 add string /modes.tmp.str exch def
|
|
|
|
"applies %s" modes.tmp.str sprintf
|
|
|
|
modes.tmp.str getgfxconfig
|
|
|
|
modes.tmp.str free
|
|
|
|
} if
|
|
|
|
} forall
|
|
|
|
] def
|
|
|
|
modes.rawlabels length 0 eq {
|
|
|
|
/modes.rawlabels [ txt_mode_normal ] def
|
|
|
|
/modes.append [ .undef ] def
|
|
|
|
/modes.replace [ .undef ] def
|
|
|
|
/modes.applies [ .undef ] def
|
|
|
|
} if
|
|
|
|
/modes.map .undef def
|
|
|
|
|
|
|
|
menu.entry modes.filter
|
|
|
|
|
|
|
|
xmenu .xm_title /txt_modes put
|
|
|
|
} def
|
|
|
|
|
|
|
|
|
|
|
|
/mydebug {
|
|
|
|
380 400 moveto -300 0 rmoveto
|
|
|
|
currentpoint 300 fontheight image
|
|
|
|
380 400 moveto menu.humans menu.entry get showright
|
|
|
|
|
|
|
|
380 420 moveto -300 0 rmoveto
|
|
|
|
currentpoint 300 fontheight image
|
|
|
|
menu.texts menu.entry get "#%s#" timeout.buf sprintf
|
|
|
|
380 420 moveto timeout.buf showright
|
|
|
|
|
|
|
|
/my.buf 128 string def
|
|
|
|
0 440 moveto
|
|
|
|
currentpoint 640 fontheight image
|
|
|
|
menu.args menu.entry get "#%s#" my.buf sprintf
|
|
|
|
0 440 moveto my.buf show
|
|
|
|
|
|
|
|
380 380 moveto -300 0 rmoveto
|
|
|
|
currentpoint 300 fontheight image
|
|
|
|
380 380 moveto menu.labels menu.entry get showright
|
|
|
|
|
|
|
|
} def
|
|
|
|
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
% Update installation modes status.
|
|
|
|
%
|
|
|
|
% ( ) ==> ( )
|
|
|
|
%
|
|
|
|
/modes.update {
|
|
|
|
/xmenu xmenu.modes def
|
|
|
|
|
|
|
|
modes.map xmenu .xm_current get get
|
|
|
|
modes.append over get /modes.selected.append exch def
|
|
|
|
modes.replace over get /modes.selected.replace exch def
|
|
|
|
|
|
|
|
/window.action actRedrawPanel def
|
|
|
|
|
|
|
|
pmenu.update
|
|
|
|
} def
|
|
|
|
|
|
|
|
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
% Filter displayed modes when a menu item changes.
|
|
|
|
%
|
|
|
|
% ( index ) ==> ( )
|
|
|
|
%
|
|
|
|
/modes.filter {
|
|
|
|
%mydebug
|
|
|
|
|
|
|
|
modes.rawlabels .undef eq { pop return } if
|
|
|
|
|
|
|
|
menu.labels exch get
|
|
|
|
dup length 3 add string /modes.tmp.label exch def
|
|
|
|
" %s " modes.tmp.label sprintf
|
|
|
|
|
|
|
|
xmenu % save
|
|
|
|
/xmenu xmenu.modes def
|
|
|
|
|
|
|
|
modes.map {
|
|
|
|
/modes.tmp.oldidx modes.map xmenu .xm_current get get def
|
|
|
|
} {
|
|
|
|
/modes.tmp.oldidx .undef def
|
|
|
|
} ifelse
|
|
|
|
|
|
|
|
modes.map free
|
|
|
|
% mapping of current menu index to underlying option index
|
|
|
|
/modes.map [
|
|
|
|
0 1 modes.rawlabels length 1 sub {
|
|
|
|
modes.applies over get dup .undef ne {
|
|
|
|
dup length 3 add string /modes.tmp.applies exch def
|
|
|
|
" %s " modes.tmp.applies sprintf
|
|
|
|
modes.tmp.applies modes.tmp.label strstr 0 eq { pop } if
|
|
|
|
modes.tmp.applies free
|
|
|
|
} {
|
|
|
|
pop
|
|
|
|
} ifelse
|
|
|
|
} for
|
|
|
|
] def
|
|
|
|
|
|
|
|
modes.tmp.label free
|
|
|
|
|
|
|
|
xmenu .xm_list get free
|
|
|
|
xmenu .xm_list [
|
|
|
|
modes.map { modes.rawlabels exch get translate } forall
|
|
|
|
] put
|
|
|
|
|
|
|
|
xmenu .xm_current 0 put
|
|
|
|
0 1 modes.map length 1 sub {
|
|
|
|
modes.map over get modes.tmp.oldidx eq {
|
|
|
|
xmenu .xm_current rot put exit
|
|
|
|
} {
|
|
|
|
pop
|
|
|
|
} ifelse
|
|
|
|
} for
|
|
|
|
|
|
|
|
pmenu.init
|
|
|
|
|
|
|
|
/xmenu exch def % restore
|
|
|
|
} def
|
|
|
|
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
% Show window.
|
|
|
|
%
|
|
|
|
% ( ) ==> ( )
|
|
|
|
%
|
|
|
|
/panel.modes {
|
|
|
|
"modes" help.setcontext
|
|
|
|
|
|
|
|
window.xmenu
|
|
|
|
dup .xmenu xmenu.modes put
|
|
|
|
dup .xmenu.update /modes.update put
|
|
|
|
dup window.init
|
|
|
|
window.show
|
|
|
|
} def
|
|
|
|
|
|
|
|
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
% Return width of panel entry.
|
|
|
|
%
|
|
|
|
% ( ) => ( width )
|
|
|
|
%
|
|
|
|
/panel.modes.width {
|
|
|
|
/xmenu xmenu.modes def
|
|
|
|
|
|
|
|
pmenu.width
|
|
|
|
} def
|
|
|
|
|
|
|
|
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
% Redraw panel entry.
|
|
|
|
%
|
|
|
|
% ( panel ) => ( )
|
|
|
|
%
|
|
|
|
/panel.modes.update {
|
|
|
|
/xmenu xmenu.modes def
|
|
|
|
|
|
|
|
pmenu.panel.update
|
|
|
|
} def
|