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

  1. /**
  2.  * Module:    rootpart_proposal.ycp
  3.  *
  4.  * Author:    Arvin Schnell <arvin@suse.de>
  5.  *
  6.  * Purpose:    Let user choose root partition during update.
  7.  *
  8.  * $Id: rootpart_proposal.ycp 33392 2006-10-13 11:39:53Z locilka $
  9.  */
  10. {
  11.     textdomain "update";
  12.  
  13.     import "Mode";
  14.     import "Linuxrc";
  15.     import "Update";
  16.     import "PackageCallbacks";
  17.     import "RootPart";
  18.  
  19.     include "update/rootpart.ycp";
  20.  
  21.     string func  = (string) WFM::Args(0);
  22.     map    param = (map) WFM::Args(1);
  23.     map    ret   = $[];
  24.  
  25.  
  26.     if ( func == "MakeProposal" )
  27.     {
  28.     boolean force_reset      = param["force_reset"     ]:false;
  29.     boolean language_changed = param["language_changed"]:false;
  30.  
  31.     PackageCallbacks::SetRebuildDBCallbacks ();
  32.  
  33.     // call some function that makes a proposal here:
  34.     //
  35.     // DummyMod::MakeProposal( force_reset );
  36.  
  37.     // Fill return map
  38.  
  39.     if (force_reset)
  40.     {
  41.         RootPart::selectedRootPartition = "";
  42.     }
  43.  
  44.     if (RootPart::numberOfValidRootPartitions == 0
  45.         && RootPart::selectedRootPartition == "")
  46.     {
  47.         RootPart::targetOk = false;
  48.  
  49.         ret = $[ "warning" :
  50.              // Proposal for system to update
  51.              _("No root partition found"),
  52.              "warning_level" : `fatal,
  53.              "raw_proposal" : []
  54.         ];
  55.     }
  56.     else
  57.     {
  58.         if (RootPart::selectedRootPartition == "")
  59.         {
  60.         if (RootPart::numberOfValidRootPartitions == 1 && !Linuxrc::manual ())
  61.         {
  62.             RootPart::SetSelectedToValid ();
  63.         }
  64.         else
  65.         {
  66.             symbol result = (symbol) WFM::CallFunction ("inst_rootpart", [true, true, `update_popup]);
  67.         }
  68.  
  69.         RootPart::targetOk = RootPart::mount_target ();
  70.         }
  71.         else if (! RootPart::Mounted ())
  72.         {
  73.         RootPart::targetOk = RootPart::mount_target ();
  74.         }
  75.  
  76.         if (RootPart::numberOfValidRootPartitions == 1)
  77.         {
  78.         ret = $[ "raw_proposal" :
  79.              [ RootPart::GetInfoOfSelected (`name) ]
  80.         ];
  81.         }
  82.         else
  83.         {
  84.         ret = $[ "raw_proposal" :
  85.              // Proposal for system to update
  86.              [ sformat (_("%1 on root partition %2"),
  87.                     RootPart::GetInfoOfSelected (`name),
  88.                     RootPart::selectedRootPartition) ]
  89.         ];
  90.         }
  91.  
  92.         if (!RootPart::targetOk)
  93.         {
  94.         // inform user in the proposal about the failed mount
  95.         ret = add (ret, "warning", _("Failed to mount target system"));
  96.         ret = add (ret, "warning_level", `fatal);
  97.         ret = add (ret, "raw_proposal", []);
  98.         }
  99.     }
  100.     }
  101.     else if ( func == "AskUser" )
  102.     {
  103.     boolean has_next = param["has_next"]:false;
  104.  
  105.     // call some function that displays a user dialog
  106.     // or a sequence of dialogs here:
  107.     //
  108.     // sequence = DummyMod::AskUser( has_next );
  109.  
  110.     string tmp = RootPart::selectedRootPartition;
  111.  
  112.     symbol result = RootPartitionDialog (`update_dialog_proposal);
  113.  
  114.     if (result == `next)
  115.     {
  116.         Update::Detach ();
  117.         RootPart::UnmountPartitions (false);
  118.  
  119. //        RootPart::targetOk = mount_target ();
  120.     }
  121.  
  122.     // Fill return map
  123.  
  124.     ret = $[ "workflow_sequence" : result,
  125.          "rootpart_changed" : RootPart::selectedRootPartition != tmp ];
  126.     }
  127.     else if ( func == "Description" )
  128.     {
  129.     // Fill return map.
  130.  
  131.     if (Mode::normal ())
  132.     {
  133.         ret = $[];
  134.     }
  135.     else
  136.     {
  137.         ret = $[
  138.             // this is a heading
  139.             "rich_text_title"    :    _("Selected for Update"),
  140.             // this is a menu entry
  141.             "menu_title"    :    _("&Selected for Update"),
  142.             "id"        :    "rootpart_stuff"
  143.         ];
  144.     }
  145.     }
  146.  
  147.     return ret;
  148. }
  149.