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_packages.ycp < prev    next >
Text File  |  2006-11-29  |  4KB  |  160 lines

  1. /**
  2.  * Module:         inst_packages.ycp
  3.  * Authors:        Stefan Hundhammer <sh@suse.de>
  4.  * Purpose:             Show the package installation dialog
  5.  */
  6.  
  7. {
  8.     textdomain "packager";
  9.  
  10.     import "StorageDevices";
  11.     import "Mode";
  12.     import "Stage";
  13.     import "Wizard";
  14.  
  15.  
  16.     /**
  17.      * Start the detailed package selection. If 'mode' is non-nil, it will be
  18.      * passed as an option to the PackageSelector widget.
  19.      *
  20.      * Returns `accept or `cancel .
  21.      **/
  22.     symbol detailedSelection( symbol mode )
  23.     {
  24.     Pkg::SaveState();
  25.  
  26.     // Open empty dialog for instant feedback
  27.  
  28.     UI::OpenDialog(`opt(`defaultsize),
  29.                `ReplacePoint(`id( `rep),
  30.                      `Label( "Reading package database..." )
  31.                      )
  32.                );
  33.  
  34.     // This will take a while: Detailed package data are retrieved
  35.     // while the package manager is initialized
  36.     UI::ReplaceWidget(`rep,
  37.               mode == nil ?
  38.               `PackageSelector(`id(`packages ), StorageDevices::FloppyDevice ) :
  39.               `PackageSelector(`id(`packages ), `opt(mode), StorageDevices::FloppyDevice )
  40.               );
  41.  
  42.     symbol result = (symbol) UI::RunPkgSelection(`id(`packages ) );
  43.     UI::CloseDialog();
  44.     y2milestone( "Package selector returned  %1", result );
  45.  
  46.     if (result == `accept)
  47.         Pkg::ClearSaveState();
  48.     else
  49.         Pkg::RestoreState(false);
  50.  
  51.     return result;
  52.     }
  53.  
  54.  
  55.     /**
  56.      * Start the pattern selection dialog. If the UI does not support the
  57.      * PatternSelector, start the detailed selection with "selections" as the
  58.      * initial view.
  59.      **/
  60.     symbol patternSelection()
  61.     {
  62.     if ( ! UI::HasSpecialWidget(`PatternSelector ) ||
  63.          UI::WizardCommand(`Ping() ) != true     )
  64.     {
  65.         return detailedSelection( nil );    // Fallback: detailed selection
  66.     }
  67.  
  68.     // Help text for software patterns / selections dialog
  69.     string help_text
  70.         = _("<p>
  71.          This dialog allows you to define this system's tasks and what software to install.
  72.          Available tasks and software for this system are shown by category in the left
  73.          column.  To view a description for an item, select it in the list.
  74.          </p>")
  75.         + _("<p>
  76.          Change the status of an item by clicking its status icon
  77.          or right-click any icon for a context menu.
  78.          With the context menu, you can also change the status of all items.
  79.          </p>")
  80.         + _("<p>
  81.          <b>Details</b> opens the detailed software package selection
  82.          where you can view and select individual software packages.
  83.          </p>")
  84.         + _("<p>
  85.          The disk usage display in the lower right corner shows the remaining disk space
  86.          after all requested changes will have been performed.
  87.          Hard disk partitions that are full or nearly full can degrade
  88.          system performance and in some cases even cause serious problems.
  89.          The system needs some available disk space to run properly.
  90.          </p>");
  91.  
  92.     Wizard::OpenAcceptDialog();
  93.     Wizard::SetContents(
  94.                 // Dialog title
  95.                 // Hint for German translation: "Softwareauswahl und Einsatzzweck des Systems"
  96.                 _("Software Selection and System Tasks"),
  97.                 `PatternSelector(`id(`patterns ) ),
  98.                 help_text,
  99.                 true,    // has_back
  100.                 true );    // has_next
  101.  
  102.     Wizard::SetDesktopIcon( "sw_single" );
  103.  
  104.     symbol result = nil;
  105.  
  106.     repeat
  107.     {
  108.         result = (symbol) UI::RunPkgSelection(`id(`patterns ) );
  109.         y2milestone( "Pattern selector returned %1", result );
  110.  
  111.         if ( result == `details )
  112.         {
  113.         result = detailedSelection( nil );
  114.  
  115.         if ( result == `cancel )
  116.                     // don't get all the way out - the user might just have
  117.                     // been scared of the gory details.
  118.             result = nil;
  119.  
  120.         }
  121.  
  122.     } until ( result == `cancel || result == `accept );
  123.  
  124.     Wizard::CloseDialog();
  125.  
  126.     return result;
  127.     }
  128.  
  129.  
  130.  
  131.  
  132.     ///////////////////////////////////////////////////////////////////////////
  133.     // MAIN
  134.     ///////////////////////////////////////////////////////////////////////////
  135.  
  136.     symbol result = `cancel;
  137.  
  138.     // if ( Mode::normal() )    // DEBUG
  139.     if ( Stage::initial() )
  140.     {
  141.     result = patternSelection();
  142.     }
  143.     else
  144.     {
  145.         if ( size( WFM::Args() ) > 0 && is( WFM::Args(0), symbol ) )
  146.     {
  147.         symbol mode = (symbol) WFM::Args(0);
  148.         y2milestone( "inst_packages called with: %1" , mode );
  149.  
  150.         result = detailedSelection( mode );
  151.     }
  152.     else
  153.     {
  154.         result = detailedSelection( `searchMode );
  155.     }
  156.     }
  157.  
  158.     return result;
  159. }
  160.