home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / include / bootloader / routines / widgets_i386.ycp < prev    next >
Text File  |  2006-11-29  |  7KB  |  252 lines

  1. /**
  2.  * File:
  3.  *      include/bootloader/routines/widgets_i386.ycp
  4.  *
  5.  * Module:
  6.  *      Bootloader installation and configuration
  7.  *
  8.  * Summary:
  9.  *      Widgets for being used by bootloader for i368
  10.  *
  11.  * Authors:
  12.  *      Jiri Srain <jsrain@suse.cz>
  13.  *
  14.  * $Id: widgets_i386.ycp 27748 2006-02-08 15:15:11Z jplack $
  15.  *
  16.  */
  17.  
  18.  
  19. {
  20.  
  21. textdomain "bootloader";
  22.  
  23. include "bootloader/routines/popups.ycp";
  24.  
  25. /**
  26.  * Init function of widget
  27.  * @param widget string id of the widget
  28.  */
  29. void InitBootMenu (string widget) {
  30.     boolean timeout_active = haskey (BootCommon::globals, "timeout");
  31.     UI::ChangeWidget (`id (`timeout_act), `Value, timeout_active);
  32.     UI::ChangeWidget (`id (`timeout), `Enabled, timeout_active);
  33.     integer timeout = tointeger (BootCommon::globals["timeout"]:"0");
  34.     UI::ChangeWidget (`id (`timeout), `Value, timeout);
  35.     boolean show_menu = BootCommon::globals["prompt"]:"0" != "0";
  36.     UI::ChangeWidget (`id (`show_menu), `Value, show_menu);
  37. }
  38.  
  39. /**
  40.  * Store function of a widget
  41.  * @param widget string widget key
  42.  * @param event map event that caused the operation
  43.  */
  44. void StoreBootMenu (string widget, map event) {
  45.     integer timeout = (integer)UI::QueryWidget (`id (`timeout), `Value);
  46.     boolean timeout_act = (boolean)UI::QueryWidget (`id (`timeout_act), `Value);
  47.     if (timeout_act)
  48.     BootCommon::globals["timeout"] = sformat ("%1", timeout);
  49.     else if (haskey (BootCommon::globals, "timeout"))
  50.     BootCommon::globals = remove (BootCommon::globals, "timeout");
  51.     boolean show_menu = (boolean)UI::QueryWidget (`id (`show_menu), `Value);
  52.     BootCommon::globals["prompt"] = show_menu ? "1" : "0";
  53. }
  54.  
  55. /**
  56.  * Handle function of a widget
  57.  * @param key any widget key
  58.  * @param event map event description of event that occured
  59.  * @return symbol always nil
  60.  */
  61. symbol HandleBootMenu (string key, map event) {
  62.     boolean active = (boolean)UI::QueryWidget (`id (`timeout_act), `Value);
  63.     UI::ChangeWidget (`id (`timeout), `Enabled, active);
  64.     return nil;
  65. }
  66.  
  67. /**
  68.  * Build a map describing a widget
  69.  * @return a map describing a widget
  70.  */
  71. map<string,any> BootMenuWidget () {
  72.     return $[
  73.     "widget" : `custom,
  74.     // frame
  75.     "custom_widget" : `Frame (_("Boot Menu"), `HBox (
  76.         `HSpacing (2), `VBox (
  77.         `VSpacing (0.4),
  78.         // check box
  79.         `Left (`CheckBox (`id (`show_menu), _("&Show Boot Menu"))),
  80.         `VSpacing (0.4),
  81.         `Left (`CheckBox (`id (`timeout_act), `opt (`notify),
  82.             // check box
  83.             _("&Continue Booting after a Time-Out"))),
  84.         // integer field
  85.         `IntField (`id (`timeout), _("Boot &Menu Time-Out"), 0, 60, 0),
  86.         `VSpacing (0.4)
  87.         ), `HSpacing (2)
  88.     )),
  89.     "init" : InitBootMenu,
  90.     "store" : StoreBootMenu,
  91.     "handle" : HandleBootMenu,
  92.     "handle_events" : [ `timeout_act ],
  93.     "help" : i386BootMenuHelp (),
  94.     ];
  95. }
  96.  
  97. /**
  98.  * Init function of widget
  99.  * @param widget string id of the widget
  100.  */
  101. void InitPasswdWidget (string widget) {
  102.     string passwd = BootCommon::globals["password"]:"";
  103.     if (passwd == nil || passwd == "")
  104.     {
  105.     UI::ChangeWidget (`id (`use_pas), `Value, false);
  106.     UI::ChangeWidget (`id (`pw1), `Enabled, false);
  107.     UI::ChangeWidget (`id (`pw1), `Value, "");
  108.     UI::ChangeWidget (`id (`pw2), `Enabled, false);
  109.     UI::ChangeWidget (`id (`pw2), `Value, "");
  110.     }
  111.     else
  112.     {
  113.     UI::ChangeWidget (`id (`use_pas), `Value, true);
  114.     UI::ChangeWidget (`id (`pw1), `Enabled, true);
  115.     UI::ChangeWidget (`id (`pw1), `Value, "**********");
  116.     UI::ChangeWidget (`id (`pw2), `Enabled, true);
  117.     UI::ChangeWidget (`id (`pw2), `Value, "**********");
  118.     }
  119.     UI::SetFocus (`id (`use_pas));
  120. }
  121.  
  122. /**
  123.  * Handle function of a widget
  124.  * @param widget string id of the widget
  125.  * @param event map event description of event that occured
  126.  * @return symbol always nil
  127.  */
  128. symbol HandlePasswdWidget (string widget, map event) {
  129.     if (event["ID"]:nil == `use_pas)
  130.     {
  131.     boolean enabled = (boolean)UI::QueryWidget (`id (`use_pas), `Value);
  132.     UI::ChangeWidget (`id (`pw1), `Enabled, enabled);
  133.     UI::ChangeWidget (`id (`pw2), `Enabled, enabled);
  134.     }
  135.     return nil;
  136. }
  137.  
  138. /**
  139.  * Store function of a popup
  140.  * @param key any widget key
  141.  * @param event map event that caused the operation
  142.  */
  143. void StorePasswdWidget (string key, map event) {
  144.     string password = nil;
  145.     boolean usepass = (boolean)UI::QueryWidget (`id (`use_pas), `Value);
  146.     y2milestone ("Usepass: %1", usepass);
  147.     if (usepass)
  148.     {
  149.     if (UI::QueryWidget (`id (`pw1), `Value) != "**********")
  150.     {
  151.         password = (string)UI::QueryWidget (`id (`pw1), `Value);
  152.         if (haskey (BootCommon::current_bootloader_attribs,
  153.         "update_passwd"))
  154.         {
  155.         string(string) f = (string(string))
  156.             BootCommon::current_bootloader_attribs[
  157.             "update_passwd"]:nil;
  158.         password = f (password);
  159.         }
  160.         BootCommon::globals["password"] = password;
  161.     }
  162.     }
  163.     else if (haskey (BootCommon::globals, "password"))
  164.     {
  165.     BootCommon::globals = remove (BootCommon::globals, "password");
  166.     }
  167.     return nil;
  168. }
  169.  
  170.  
  171. /**
  172.  * Validate function of a popup
  173.  * @param key any widget key
  174.  * @param event map event that caused validation
  175.  * @return boolean true if widget settings ok
  176.  */
  177. boolean ValidatePasswdWidget (string key, map event) {
  178.     if (! (boolean)UI::QueryWidget (`id (`use_pas), `Value))
  179.     return true;
  180.     if (UI::QueryWidget (`id (`pw1), `Value) == "")
  181.     {
  182.     emptyPasswdErrorPopup ();
  183.     UI::SetFocus (`id (`pw1));
  184.     return false;
  185.     }
  186.     if (UI::QueryWidget (`id (`pw1), `Value)
  187.     == UI::QueryWidget (`id (`pw2), `Value)
  188.     )
  189.     return true;
  190.     passwdMissmatchPopup ();
  191.     UI::SetFocus (`id (`pw1));
  192.     return false;
  193. }
  194.  
  195.  
  196.  
  197. /**
  198.  * Build a map describing a widget
  199.  * @return a map describing a widget
  200.  */
  201. map<string,any> PasswordWidget () {
  202.     return $[
  203.     "widget" : `custom,
  204.     // frame
  205.     "custom_widget" : `Frame (_("Password Protection"), `VBox (
  206.         `VSpacing (0.4),
  207.         `HBox (
  208.         `HSpacing (2), `VBox (
  209.             `Left (`CheckBox (`id (`use_pas), `opt (`notify),
  210.             // check box
  211.             _("Prot&ect Boot Loader with Password"))),
  212.             `HBox (
  213.             // text entry
  214.             `Password (`id (`pw1), _("&Password")),
  215.             // text entry
  216.             `Password (`id (`pw2), _("Re&type Password"))
  217.             )
  218.         ), `HSpacing (2)
  219.         ),
  220.         `VSpacing (0.4)
  221.     )),
  222.     "init" : InitPasswdWidget,
  223.     "handle" : HandlePasswdWidget,
  224.     "store" : StorePasswdWidget,
  225.     "validate_type" : `function,
  226.     "validate_function" : ValidatePasswdWidget,
  227.     "help" : i386PasswdHelp (),
  228.     ];
  229. }
  230.  
  231. /**
  232.  * Cache for i386Widgets function
  233.  */
  234. map<string,map<string,any> > _i386_widgets = nil;
  235.  
  236. /**
  237.  * Get widgets specific for i386
  238.  * @return a map describing all i386-specific widgets
  239.  */
  240. map<string,map<string,any> > i386Widgets () {
  241.     if (_i386_widgets == nil)
  242.     {
  243.     _i386_widgets = $[
  244.         "boot_menu" : BootMenuWidget (),
  245.         "password" : PasswordWidget (),
  246.     ];
  247.     }
  248.     return _i386_widgets;
  249. }
  250.  
  251. } // include end
  252.