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 / clients / inst_doit.ycp < prev    next >
Text File  |  2006-11-29  |  3KB  |  138 lines

  1. /**
  2.  *
  3.  * Authors:    Klaus K├ñmpf <kkaempf@suse.de>
  4.  *        Stefan Hundhammer <sh@suse.de>
  5.  *        Arvin Schnell <arvin@suse.de>
  6.  *
  7.  * Purpose:    Asks user to really do the installation/update.
  8.  *
  9.  * $Id: inst_doit.ycp 34204 2006-11-09 12:32:32Z locilka $
  10.  */
  11. {
  12.     textdomain "installation";
  13.  
  14.     import "Wizard";
  15.     import "Mode";
  16.     import "AutoinstConfig";
  17.  
  18.     import "Label";
  19.  
  20.     include "installation/misc.ycp";
  21.  
  22.     if (Mode::autoinst () && !AutoinstConfig::Confirm)
  23.         return `next;
  24.  
  25.  
  26.     define void ConfirmLicenses () {
  27.     if (Mode::autoinst ())
  28.     {
  29.         return;
  30.     }
  31.     list<string> to_install = Pkg::GetPackages (`selected, true);
  32.     map<string,string> licenses = Pkg::PkgGetLicensesToConfirm (to_install);
  33.  
  34.     // FIXME: Remove deny_all (bug #163001)
  35.     boolean deny_all = false;
  36.     foreach (string package,  string license, licenses, {
  37.         if (deny_all)
  38.         {
  39.         Pkg::PkgTaboo (package);
  40.         }
  41.         else
  42.         {
  43.         term popup = `VBox (
  44.             `HSpacing (80),
  45.             // dialog heading, %1 is package name
  46.             `Heading (sformat (_("Confirm Package License: %1"),
  47.             package)),
  48.             `HBox (
  49.             `VSpacing (20),
  50.             `RichText (`id (`lic), license)
  51.             ),
  52.             `HBox (
  53.             `PushButton (`id (`help), Label::HelpButton ()),
  54.             `HStretch (),
  55.             // push button
  56.             `PushButton (`id (`accept), _("I &Agree")),
  57.             // push button
  58.             `PushButton (`id (`deny), _("I &Disagree"))
  59.             )
  60.         );
  61.         UI::OpenDialog (popup);
  62.         symbol ret = nil;
  63.         while (ret == nil)
  64.         {
  65.             ret = (symbol)UI::UserInput ();
  66.             if (ret == `help)
  67.             {
  68.             ret = nil;
  69.             // help text
  70.  
  71.             
  72. // FIXME
  73. // FIXME
  74. // Remove reference to "Disagree with all" button (bug #163001) in help text
  75. // --sh 2006-04-24            
  76. // FIXME
  77. // FIXME
  78.             
  79.             
  80.             string help = _("<p><b><big>License Confirmation</big></b><br>
  81. The package in the headline of the dialog requires an explicit confirmation
  82. of acceptance of its license.
  83. If you reject the license of the package, the package will not be installed.
  84. <br>
  85. To accept the license of the package, click <b>I Agree</b>.
  86. To reject the license of the package, click <b>I Disagree</b>.
  87. <br>
  88. To reject installation of all packages requiring confirmation of
  89. their licenses, click <b>I Disagree with All</b>.</p>");
  90.             UI::OpenDialog (`HBox (
  91.                 `VSpacing (18),
  92.                 `VBox (
  93.                 `HSpacing (70),
  94.                 `RichText (help),
  95.                 `HBox (
  96.                     `HStretch (),
  97.                     // push button
  98.                     `PushButton (`id (`close), Label::CloseButton ()),
  99.                     `HStretch ()
  100.                 )
  101.                 )
  102.             ));
  103.             UI::UserInput ();
  104.             UI::CloseDialog ();
  105.             }
  106.         }
  107.         UI::CloseDialog ();
  108.         if (ret != `accept)
  109.         {
  110.             if (ret == `deny_all)
  111.             {
  112.             deny_all = true;
  113.             }
  114.             Pkg::PkgTaboo (package);
  115.         }
  116.         else
  117.         {
  118.             Pkg::PkgMarkLicenseConfirmed (package);
  119.         }
  120.         }
  121.     });
  122.     }
  123.  
  124.     //
  125.     // main()
  126.     //
  127.  
  128.     ConfirmLicenses ();
  129.     // function in installation/misc.ycp
  130.     // bugzilla #219097
  131.     boolean confirmed = confirmInstallation();
  132.  
  133.     if ( confirmed )
  134.     y2milestone( "User confirmed %1", Mode::update () ? "update" : "installation" );
  135.  
  136.     return confirmed ? `next : `back;
  137. }
  138.