4 changed files with 156 additions and 29 deletions
@ -0,0 +1,117 @@ |
|||
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|||
% |
|||
% Resolution mode selector. |
|||
% |
|||
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|||
|
|||
|
|||
/resolution.option .undef def |
|||
|
|||
% Custom kernel options. Feel free to extend as needed. Keep this in sync |
|||
% with MenuInitj |
|||
|
|||
/resolution.auto 0 def |
|||
|
|||
/resolution.alltexts [ |
|||
"Auto" "640x480" "800x480" "800x600" "1024x576" |
|||
"1024x600" "1024x768" "1200x800" "1280x720" |
|||
"1280x768" "1280x800" "1280x1024" "1360x768" |
|||
"1366x768" "1368x768" "1400x1050" "1440x900" |
|||
"1600x768" "1600x900" "1600x1200" "1680x945" |
|||
"1680x1050" "1920x1080" "1920x1200" "2048x1152" |
|||
"2560x1440" "2560x1600" |
|||
] def |
|||
|
|||
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|||
% Initialise resolutionibility menu. |
|||
% |
|||
% ( ) ==> ( ) |
|||
% |
|||
/resolution.init { |
|||
/xmenu.resolution .xm_size array def |
|||
/xmenu xmenu.resolution def |
|||
|
|||
xmenu .xm_current resolution.auto put |
|||
|
|||
xmenu .xm_list [ |
|||
resolution.alltexts { |
|||
exec |
|||
} forall |
|||
] put |
|||
|
|||
xmenu .xm_title /txt_resolution put |
|||
xmenu .xm_current resolution.auto put |
|||
|
|||
pmenu.init |
|||
} def |
|||
|
|||
|
|||
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|||
% Update accessibility status. |
|||
% |
|||
% ( ) ==> ( ) |
|||
% |
|||
/resolution.update { |
|||
/xmenu xmenu.resolution def |
|||
|
|||
/window.action actRedrawPanel def |
|||
|
|||
pmenu.update |
|||
} def |
|||
|
|||
|
|||
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|||
% Show window. |
|||
% |
|||
% ( ) => ( ) |
|||
% |
|||
/panel.resolution { |
|||
"resolution" help.setcontext |
|||
|
|||
window.xmenu |
|||
dup .xmenu xmenu.resolution put |
|||
dup .xmenu.update /resolution.update put |
|||
dup window.init |
|||
window.show |
|||
} def |
|||
|
|||
|
|||
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|||
% Return width of panel entry. |
|||
% |
|||
% ( ) => ( width ) |
|||
% |
|||
/panel.resolution.width { |
|||
/xmenu xmenu.resolution def |
|||
|
|||
pmenu.width |
|||
} def |
|||
|
|||
|
|||
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|||
% Redraw panel entry. |
|||
% |
|||
% ( panel ) => ( ) |
|||
% |
|||
/panel.resolution.update { |
|||
/xmenu xmenu.resolution def |
|||
|
|||
pmenu.panel.update |
|||
} def |
|||
|
|||
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
|||
% Recalculate panel entry. |
|||
% |
|||
% ( panel ) => ( ) |
|||
/panel.resolution.recalculate { |
|||
/xmenu xmenu.resolution def |
|||
|
|||
panel.text.moveto |
|||
xmenu.sizes |
|||
xmenu .xm_panel_x currentpoint pop xmenu.hspace sub put |
|||
% try to ensure that the menu doesn't overflow the screen |
|||
xmenu .xm_x |
|||
xmenu .xm_panel_x get |
|||
screen.size pop xmenu.columns xmenu.widthupto 10 add sub |
|||
min put |
|||
} def |
Write
Preview
Loading…
Cancel
Save
Reference in new issue