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

  1. /**
  2.  * Module:        software_proposal.ycp
  3.  *
  4.  * Author:        Klaus Kaempf <kkaempf@suse.de>
  5.  *
  6.  * Purpose:        Proposal function dispatcher - software.
  7.  *
  8.  *            See also file proposal-API.txt for details.
  9.  */
  10. {
  11.     textdomain "packager";
  12.  
  13.     import "Packages";
  14.     import "Storage";
  15.     import "Language";
  16.  
  17.     string func  = (string) WFM::Args(0);
  18.     map    param = (map) WFM::Args(1);
  19.     map    ret   = $[];
  20.  
  21.     if ( func == "MakeProposal" )
  22.     {
  23.     boolean force_reset      = param["force_reset"     ]:false;
  24.     boolean language_changed = param["language_changed"]:false;
  25.  
  26.     boolean reinit = false;
  27.     boolean partition_changed = false;
  28.  
  29.     if ( Packages::timestamp != Storage::GetTargetChangeTime() )
  30.     {
  31.         // don't set flag partition_changed if it's the first "change"
  32.         if ( Packages::timestamp != 0 )
  33.         {
  34.         partition_changed = true;
  35.         }
  36.     }
  37.     // save information about target change time in module Packages
  38.     Packages::timestamp = Storage::GetTargetChangeTime();
  39.  
  40.     if (Pkg::GetLocale () != Language::language)
  41.     {
  42.         language_changed = true;
  43.         Pkg::SetLocale (Language::language);
  44.     }
  45.     if (! contains (Pkg::GetAdditionalLocales (), Language::language))
  46.     {
  47. // FIXME this is temporary fix
  48. //        language_changed = true;
  49.         Pkg::SetAdditionalLocales (
  50.         add (Pkg::GetAdditionalLocales (), Language::language));
  51.     }
  52.  
  53.     if ( language_changed || partition_changed )
  54.     {
  55.         reinit = true;
  56.     }
  57.     y2milestone("package proposal: force reset: %1, reinit: %2, language changed: %3",  force_reset, reinit, language_changed );
  58.     ret = Packages::Proposal( force_reset,        // user decision: reset to default
  59.                   reinit,        // reinitialize due to language or partition change
  60.                   false );        // simple version
  61.  
  62.     if ( language_changed && !force_reset)
  63.     {
  64.         // if the  language has changed the software proposal is reset to the default settings
  65.         if (! haskey (ret, "warning"))
  66.         {
  67.         // the language_changed flag has NOT been set by the NLD frame
  68.         ret = add( ret, "warning", _("The software proposal is reset to default values.") );
  69.         }
  70.     }
  71.         if (Packages::solve_errors > 0)
  72.         {
  73.              // the proposal for the packages requires manual intervention
  74.             ret = union (ret, $[
  75.                         /* warning text */
  76.                      "warning" : _("Cannot solve dependencies automatically. Manual intervention is required."),
  77.                      "warning_level" : `blocker ]);
  78.         }
  79.     }
  80.     else if ( func == "AskUser" )
  81.     {
  82.     boolean has_next = param["has_next"]:false;
  83.  
  84.     // call some function that displays a user dialog
  85.     // or a sequence of dialogs here:
  86.     //
  87.     // sequence = DummyMod::AskUser( has_next );
  88.  
  89.     any chosen_id = param["chosen_id"]:nil;
  90.     if (chosen_id == "mediacheck")
  91.     {
  92.         symbol result = (symbol)WFM::CallFunction("checkmedia", WFM::Args());
  93.         ret = $[ "workflow_sequence" : result ];
  94.     }
  95.     else
  96.     {
  97.         symbol result = `again;
  98.         string client_to_call = "inst_sw_select";
  99.  
  100.         while ( result == `again )
  101.         {
  102.         result = (symbol) WFM::CallFunction (client_to_call, [true, true]);
  103.         }
  104.  
  105.         // Fill return map
  106.  
  107.         ret = $[ "workflow_sequence" : result ];
  108.     }
  109.     }
  110.     else if ( func == "Description" )
  111.     {
  112.     // Fill return map.
  113.     //
  114.     // Static values do just nicely here, no need to call a function.
  115.  
  116.     ret =
  117.         $[
  118.           // this is a heading
  119.           "rich_text_title"    :    _("Software"),
  120.           // this is a menu entry
  121.           "menu_title"    :    _("&Software"),
  122.           "id"        :    "software_stuff"
  123.         ];
  124.     }
  125.  
  126.     return ret;
  127. }
  128.