You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
2.5 KiB
140 lines
2.5 KiB
19 years ago
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
%
|
||
|
% Profile selection dialog.
|
||
|
%
|
||
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
|
||
|
|
||
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
% Some global vars.
|
||
|
%
|
||
|
|
||
|
% fallback if we can't parse "profiles"
|
||
|
/profile.options [ "" ] def
|
||
|
/profile.items [ "Broken Profiles" ] def
|
||
|
|
||
|
|
||
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
% Parse "profiles" file.
|
||
|
%
|
||
|
% ( ) ==> ( )
|
||
|
%
|
||
|
/profile.parsedata {
|
||
|
/pf.tmp.datalen profile.data length def
|
||
|
/pf.tmp.str profile.data cvs def
|
||
|
|
||
|
/profile.default 0 def
|
||
|
|
||
|
pf.tmp.datalen 0 eq { return } if
|
||
|
pf.tmp.str pf.tmp.datalen 1 sub get '\n' ne { return } if
|
||
|
|
||
|
'\n' seteotchar
|
||
|
|
||
|
/profile.items [
|
||
|
|
||
|
/pf.tmp.len 0 def
|
||
|
/pf.tmp.cnt 0 def
|
||
|
{
|
||
|
pf.tmp.str pf.tmp.len add strdup
|
||
|
dup dup length 0 put
|
||
|
/pf.tmp.len over length 1 add pf.tmp.len add def
|
||
|
|
||
|
dup 0 get '*' eq { 1 add /profile.default pf.tmp.cnt def } if
|
||
|
|
||
|
pf.tmp.len pf.tmp.datalen ge { exit } if
|
||
|
|
||
|
/pf.tmp.cnt inc
|
||
|
} loop
|
||
|
|
||
|
] def
|
||
|
|
||
|
' ' seteotchar
|
||
|
|
||
|
/profile.options [
|
||
|
|
||
|
profile.items {
|
||
|
dup length add
|
||
|
dup 0 0 put
|
||
|
1 add
|
||
|
} forall
|
||
|
|
||
|
] def
|
||
|
|
||
|
0 seteotchar
|
||
|
|
||
|
} def
|
||
|
|
||
|
|
||
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
% Build profile list.
|
||
|
%
|
||
|
% ( ) ==> ( )
|
||
|
%
|
||
|
/profile.init {
|
||
|
/xmenu.profile .xm_size array def
|
||
|
/xmenu xmenu.profile def
|
||
|
|
||
|
profile.parsedata
|
||
|
|
||
|
xmenu .xm_current profile.default put
|
||
|
xmenu .xm_list profile.items put
|
||
|
|
||
|
pmenu.init
|
||
|
} def
|
||
|
|
||
|
|
||
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
% Update profile.
|
||
|
%
|
||
|
% ( ) ==> ( )
|
||
|
%
|
||
|
/profile.update {
|
||
|
/xmenu xmenu.profile def
|
||
|
|
||
|
/window.action actRedrawPanel def
|
||
|
|
||
|
pmenu.update
|
||
|
} def
|
||
|
|
||
|
|
||
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
% Show profile menu.
|
||
|
%
|
||
|
% ( ) => ( )
|
||
|
%
|
||
|
/panel.profile {
|
||
|
"profile" help.setcontext
|
||
|
|
||
|
window.xmenu
|
||
|
dup .xmenu xmenu.profile put
|
||
|
dup .xmenu.update /profile.update put
|
||
|
dup window.init
|
||
|
window.show
|
||
|
} def
|
||
|
|
||
|
|
||
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
% Return width of panel entry.
|
||
|
%
|
||
|
% ( ) => ( width )
|
||
|
%
|
||
|
/panel.profile.width {
|
||
|
/xmenu xmenu.profile def
|
||
|
|
||
|
pmenu.width
|
||
|
} def
|
||
|
|
||
|
|
||
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
% Redraw panel entry.
|
||
|
%
|
||
|
% ( panel ) => ( )
|
||
|
%
|
||
|
/panel.profile.update {
|
||
|
/xmenu xmenu.profile def
|
||
|
|
||
|
pmenu.panel.update
|
||
|
} def
|
||
|
|
||
|
|