% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%
% keyboard map selection dialog.
%
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% Some global vars.
%

/keymap.setdefault {
  xmenu.keymap .xm_current

    0
    keymaps {
      .km.id get config.keymap.id eq { exit } if
      1 add
    } forall

    dup keymaps length ge { pop 0 } if

  put

} def

% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% Build menu list.
%
% ( ) ==> ( )
%
/keymap.init {
  /xmenu.keymap .xm_size array def

  /xmenu xmenu.keymap def

  xmenu .xm_list [
    keymaps { .km.name get } forall
  ] put

  xmenu .xm_title /txt_keyboard put

  keymap.setdefault

  % just once (see lang.init)
  /keymap.init { } def
} def


% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% Update keybaord selection menu.
%
% ( ) ==> ( )
%
/keymap.update {
  /xmenu xmenu.keymap def

  keymaps xmenu .xm_current get get .km.id get setkeymap

  /window.action actRedrawPanel def
} def


% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% Show keymap selection menu.
%
% ( ) => ( )
%
/panel.keymap {
  "keymap" help.setcontext

  keymap.setdefault

  window.xmenu
  dup .xmenu xmenu.keymap put
  dup .xmenu.update /keymap.update put
  dup window.init
      window.show
} def


% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% Return width of panel entry.
%
% ( ) => ( width )
%
/panel.keymap.width {
  /xmenu xmenu.keymap def

  pmenu.width
} def


% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% Redraw panel entry.
%
% ( panel ) => ( )
%
/panel.keymap.update {
  /xmenu xmenu.keymap def

  pmenu.panel.update
} def


