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 / partitions_proposal.ycp < prev    next >
Text File  |  2006-11-29  |  5KB  |  197 lines

  1.  /**
  2.  * Module:        proposal_partitions.ycp
  3.  *
  4.  * $Id: partitions_proposal.ycp 29761 2006-04-05 16:36:41Z fehr $
  5.  *
  6.  * Author:        Klaus Kaempf <kkaempf@suse.de>
  7.  *
  8.  * Purpose:        Proposal function dispatcher - partitions.
  9.  *
  10.  *            See also file proposal-API.txt for details.
  11.  */
  12. {
  13.     textdomain "storage";
  14.  
  15.     import "Arch";
  16.  
  17.     include "wizard/sequencer.ycp";
  18.     include "partitioning/partition_defines.ycp";
  19.     include "partitioning/do_proposal_flexible.ycp";
  20.  
  21.     string func  = (string) WFM::Args(0);
  22.     map    param = (map) WFM::Args(1);
  23.     map    ret   = $[];
  24.  
  25.     define void HandlePackages()
  26.     ``{
  27.     Pkg::DoRemove( ["lvm2"] );
  28.     list<string> pack = Storage::AddPackageList();
  29.     if( size(pack)>0 )
  30.         {
  31.         Pkg::DoProvide( pack );
  32.         }
  33.     }
  34.  
  35.     y2milestone( "func:%1 param:%2", func, param );
  36.  
  37.     if( func == "MakeProposal" && Mode::autoinst() )
  38.     {
  39.     ret["preformatted_proposal"] = Storage::ChangeText();
  40.     }
  41.     else if( func == "MakeProposal" )
  42.     {
  43.     boolean force_reset      = param["force_reset"     ]:false;
  44.     boolean language_changed = param["language_changed"]:false;
  45.  
  46.     y2milestone( "force_reset:%1 lang_changed:%2",
  47.                  force_reset, language_changed );
  48.     if( force_reset || Storage::GetPartProposalFirst() )
  49.         {
  50.         if( !Storage::GetPartProposalFirst() )
  51.         {
  52.         Storage::ResetOndiskTarget();
  53.         Storage::AddMountPointsForWin(Storage::GetTargetMap());
  54.         }
  55.         map prop = $[];
  56.         prop = get_inst_prop( Storage::GetTargetMap());
  57.         y2milestone( "prop ok:%1", prop["ok"]:false );
  58.         if( prop["ok"]:false )
  59.         {
  60.         Storage::SetTargetMap( prop["target"]:$[] );
  61.         Storage::SetPartProposalMode( "accept" );
  62.         y2milestone( "PROPOSAL: %1", Storage::ChangeText());
  63.         }
  64.         else
  65.         {
  66.         Storage::SetPartProposalMode( "impossible" );
  67.         }
  68.         Storage::SetPartProposalFirst( false );
  69.         Storage::SetPartProposalActive( true );
  70.         y2milestone( "prop=%1", prop );
  71.         }
  72.  
  73.     if( Storage::GetPartProposalMode() != "impossible" ||
  74.         !Storage::GetPartProposalActive() )
  75.         {
  76.         ret["preformatted_proposal"] = Storage::ChangeText();
  77.         }
  78.     else
  79.         {
  80.         ret["raw_proposal"] = [];
  81.         // popup text
  82.         ret["warning"] = _("No automatic proposal possible.
  83. Specify mount points manually in the 'Partitioner' dialog.");
  84.         ret["warning_level"] = `blocker;
  85.         }
  86.     HandlePackages();
  87.     }
  88.     else if ( func == "AskUser" )
  89.     {
  90.     boolean has_next = param["has_next"]:false;
  91.  
  92.     // call some function that displays a user dialog
  93.     // or a sequence of dialogs here:
  94.     //
  95.     // sequence = DummyMod::AskUser( has_next );
  96.  
  97.     map aliases =
  98.         $[ "disk" :
  99.             ``(WFM::CallFunction("inst_disk", [true, true])),
  100.            "target_sel" :
  101.             ``(WFM::CallFunction("inst_target_selection", [true, true])),
  102.            "target_part" :
  103.             ``(WFM::CallFunction("inst_target_part", [true, true])),
  104.            "resize_ui" :
  105.             ``(WFM::CallFunction("inst_resize_ui", [true, true])),
  106.            "part_proposal" :
  107.             ``(WFM::CallFunction("inst_part_proposal", [true, true]))
  108.          ];
  109.  
  110.     map seq = $[];
  111.  
  112.     if( Storage::GetPartProposalMode() != "impossible" )
  113.         {
  114.         Storage::SetPartProposalMode( "accept" );
  115.         }
  116.     else
  117.         {
  118.         Storage::SetPartMode( "USE_DISK" );
  119.         }
  120.  
  121.     seq["disk"] = $[ `abort : `abort, `cancel: `cancel, `next: `next ];
  122.  
  123.     if( Arch::s390 ())
  124.         {
  125.         Storage::SetPartMode("PROP_MODIFY");
  126.         seq["ws_start"] = "disk";
  127.         }
  128.     else if (Mode::autoinst ())
  129.         {
  130.         Storage::SetPartMode("PROP_MODIFY");
  131.         seq["ws_start"] = "disk";
  132.         }
  133.     else
  134.         {
  135.         y2milestone( "ProposalActive %1 ProposalMode %2 PartMode %3", 
  136.                      Storage::GetPartProposalActive(),
  137.                      Storage::GetPartProposalMode(),
  138.              Storage::GetPartMode() );
  139.         seq["target_sel"] = $[ `abort : `abort, `cancel: `cancel,
  140.                                `next : "target_part" ];
  141.         seq["target_part"] = $[ `abort : `abort, `cancel: `cancel,
  142.                                `next : "disk" ];
  143.         if( Arch::i386 () )
  144.         {
  145.         seq["resize_ui"] = $[ `abort : `abort, `cancel: `cancel,
  146.                               `next : "disk" ];
  147.         seq["target_part",`next] = "resize_ui";
  148.         }
  149.         seq["disk"] = $[ `abort : `abort, `cancel: `cancel, `next : `next ];
  150.         if( Storage::GetPartProposalMode() != "impossible" &&
  151.             Storage::GetPartProposalActive() )
  152.         {
  153.         seq["part_proposal"] = $[ `abort : `abort, `cancel: `cancel,
  154.                                   `next : "target_sel" ];
  155.         seq["ws_start"] = "part_proposal";
  156.         }
  157.         else if( Storage::GetPartMode()=="USE_DISK" )
  158.         {
  159.         seq["ws_start"] = "target_sel";
  160.         }
  161.         else
  162.         {
  163.         seq["ws_start"] = "disk";
  164.         }
  165.         }
  166.     y2milestone( "propsal sequence %1", seq );
  167.  
  168.     Wizard::OpenNextBackDialog();
  169.     symbol result = WizardSequencer(aliases, seq);
  170.     Wizard::CloseDialog();
  171.  
  172.     y2milestone( "AskUser Mode:%1 ProActive:%2", Storage::GetPartMode(),
  173.                  Storage::GetPartProposalActive() );
  174.  
  175.     // Fill return map
  176.     HandlePackages();
  177.     ret = $[ "workflow_sequence" : result ];
  178.     }
  179.     else if ( func == "Description" )
  180.     {
  181.     // Fill return map.
  182.     //
  183.     // Static values do just nicely here, no need to call a function.
  184.  
  185.     ret =
  186.         $[
  187.           // label text
  188.           "rich_text_title"    :    _("Partitioning"),
  189.           // label text
  190.           "menu_title"    :    _("&Partitioning"),
  191.           "id"        :    "partitions_stuff"
  192.         ];
  193.     }
  194.  
  195.     return ret;
  196. }
  197.