|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
%
|
|
|
|
% Panel handling.
|
|
|
|
%
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
|
|
|
|
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
% Some global vars.
|
|
|
|
%
|
|
|
|
/panel.size { clip.size pop 24 } def
|
|
|
|
/panel.y { clip.size exch pop panel.size exch pop sub 10 sub } def
|
|
|
|
/panel.text.y { panel.y 5 add } def
|
|
|
|
/panel.font font.normal def
|
|
|
|
/panel.normal lightblue def
|
|
|
|
/panel.high white def
|
|
|
|
/panel.bg lightgray def
|
|
|
|
/panel.border lightdotcolor def
|
|
|
|
|
|
|
|
/.panel.full 1 def
|
|
|
|
/.panel.short 2 def
|
|
|
|
/.panel.both .panel.full .panel.short or def
|
|
|
|
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
% Init panel.
|
|
|
|
%
|
|
|
|
% ( ) ==> ( )
|
|
|
|
%
|
|
|
|
/panel.init {
|
|
|
|
|
|
|
|
/panel.back 0 panel.y moveto panel.size savescreen def
|
|
|
|
|
|
|
|
% define panel layout
|
|
|
|
/panel.template [
|
|
|
|
|
|
|
|
% [ key x label show_func width_func update_func init_func ]
|
|
|
|
|
|
|
|
help.getmessages "" ne {
|
|
|
|
[ .panel.both [ keyF1 0 "F1" /panel.help /panel.help.width /panel.help.update .undef ] ]
|
|
|
|
} if
|
|
|
|
|
|
|
|
syslinux {
|
|
|
|
|
|
|
|
[ .panel.both [ keyF2 0 "F2" /panel.lang /panel.lang.width /panel.lang.update /lang.init ] ]
|
|
|
|
[ .panel.both [ keyF3 0 "F3" /panel.video /panel.video.width /panel.video.update /video.init ] ]
|
|
|
|
[ .panel.short [ keyF4 0 "F4" /panel.options /panel.options.width /panel.options.update .undef ] ]
|
|
|
|
|
|
|
|
[ .panel.full [ keyF4 0 "F4" /panel.keymap /panel.keymap.width /panel.keymap.update /keymap.init ] ]
|
|
|
|
|
|
|
|
is_live not {
|
|
|
|
[ .panel.full [ keyF5 0 "F5" /panel.dimode /panel.dimode.width /panel.dimode.update /dimode.init ] ]
|
|
|
|
} if
|
|
|
|
|
|
|
|
32+64bit_source {
|
|
|
|
64bit {
|
|
|
|
32bit_boot_dir .undef ne
|
|
|
|
64bit_boot_dir .undef ne
|
|
|
|
32bit_boot_dir 64bit_boot_dir ne
|
|
|
|
and and {
|
|
|
|
[ .panel.full [ keyF6 0 "F6" /panel.bits /panel.bits.width /panel.bits.update /bits.init ] ]
|
|
|
|
} if
|
|
|
|
} if
|
|
|
|
} if
|
|
|
|
|
|
|
|
xmenu.bits .undef eq { bits.init } if
|
|
|
|
|
|
|
|
} {
|
|
|
|
|
|
|
|
[ .panel.both [ keyF2 0 "F2" /panel.lang /panel.lang.width /panel.lang.update /lang.init ] ]
|
|
|
|
"profiles" findfile dup {
|
|
|
|
/profile.data exch def
|
|
|
|
[ .panel.both [ keyF3 0 "F3" /panel.profile /panel.profile.width /panel.profile.update /profile.init ] ]
|
|
|
|
} { pop } ifelse
|
|
|
|
|
|
|
|
} ifelse
|
|
|
|
|
|
|
|
] def
|
|
|
|
|
|
|
|
% initialize all
|
|
|
|
panel.template { 1 get 6 get dup .undef ne { exec } { pop } ifelse } forall
|
|
|
|
|
|
|
|
/panel.full [
|
|
|
|
panel.template {
|
|
|
|
dup 0 get .panel.full and 0 ne { 1 get } { pop } ifelse
|
|
|
|
} forall
|
|
|
|
] def
|
|
|
|
|
|
|
|
/panel.short [
|
|
|
|
panel.template {
|
|
|
|
dup 0 get .panel.short and 0 ne { 1 get } { pop } ifelse
|
|
|
|
} forall
|
|
|
|
] def
|
|
|
|
|
|
|
|
/panel panel.short def
|
|
|
|
|
|
|
|
panel.show
|
|
|
|
} def
|
|
|
|
|
|
|
|
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
% Show panel.
|
|
|
|
%
|
|
|
|
% ( ) ==> ( )
|
|
|
|
%
|
|
|
|
/panel.show {
|
|
|
|
panel.font setfont
|
|
|
|
|
|
|
|
% panel.bg setcolor
|
|
|
|
0 panel.y moveto
|
|
|
|
% currentpoint
|
|
|
|
panel.back restorescreen
|
|
|
|
% currenttransparency
|
|
|
|
% 50 settransparency
|
|
|
|
% panel.size fillrect
|
|
|
|
% settransparency
|
|
|
|
% moveto
|
|
|
|
|
|
|
|
% panel.border setcolor
|
|
|
|
% 0 -1 rmoveto
|
|
|
|
% 0 1 clip.size pop 3 div { pop putpixel 3 0 rmoveto } for
|
|
|
|
|
|
|
|
% don't change xmenu
|
|
|
|
/xmenu xmenu
|
|
|
|
|
|
|
|
/panel.x 0 def
|
|
|
|
panel { dup {
|
|
|
|
dup 1 panel.x put
|
|
|
|
dup 4 get exec over 2 get strsize pop add 20 add panel.x add /panel.x exch def
|
|
|
|
dup 5 get exec
|
|
|
|
} { pop } ifelse } forall
|
|
|
|
|
|
|
|
def
|
|
|
|
|
|
|
|
} def
|
|
|
|
|
|
|
|
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
% Handle keyboard input.
|
|
|
|
%
|
|
|
|
% ( key_in ) ==> ( key_out )
|
|
|
|
%
|
|
|
|
/panel.input {
|
|
|
|
panel { dup {
|
|
|
|
dup 0 get 2 index eq { 3 get exec pop 0 exit } { pop } ifelse
|
|
|
|
} { pop } ifelse } forall
|
|
|
|
} def
|
|
|
|
|
|
|
|
|
|
|
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
% Draw panel entry label and move to text field.
|
|
|
|
%
|
|
|
|
% ( panel ) => ( )
|
|
|
|
%
|
|
|
|
/panel.text.moveto {
|
|
|
|
/panel.tmp.x over 1 get 10 add def
|
|
|
|
/panel.tmp.F exch 2 get def
|
|
|
|
|
|
|
|
panel.tmp.x panel.text.y moveto
|
|
|
|
panel.high setcolor panel.tmp.F show
|
|
|
|
panel.normal setcolor
|
|
|
|
|
|
|
|
6 0 rmoveto
|
|
|
|
} def
|
|
|
|
|
|
|
|
|