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 / mode_proposal.ycp < prev    next >
Text File  |  2006-11-29  |  2KB  |  102 lines

  1. /**
  2.  * Module:    mode_proposal.ycp
  3.  *
  4.  * Authors:    Klaus Kaempf <kkaempf@suse.de>
  5.  *        Arvin Schnell <arvin@suse.de>
  6.  *
  7.  * Purpose:    Proposal function dispatcher - mode.
  8.  *
  9.  *        See also file proposal-API.txt for details.
  10.  * $Id: mode_proposal.ycp 24836 2005-08-12 07:30:13Z jsrain $
  11.  */
  12. {
  13.     textdomain "installation";
  14.  
  15.     import "HTML";
  16.     import "Mode";
  17.     import "RootPart";
  18.     import "Update";
  19.  
  20.     string func  = (string) WFM::Args(0);
  21.     map    param = (map) WFM::Args(1);
  22.     map    ret   = $[];
  23.  
  24.     if ( func == "MakeProposal" )
  25.     {
  26.     boolean force_reset      = param["force_reset"     ]:false;
  27.     boolean language_changed = param["language_changed"]:false;
  28.  
  29.     // call some function that makes a proposal here:
  30.     //
  31.     // DummyMod::MakeProposal( force_reset );
  32.  
  33.     // Fill return map
  34.  
  35.     if (Mode::installation ())
  36.     {
  37.         ret = $[ "raw_proposal" :
  38.              // Proposal for installation mode
  39.              [ HTML::Bold( _("New installation") ) ]
  40.         ];
  41.     }
  42.     else if (Mode::update ())
  43.     {
  44.         ret = $[ "raw_proposal" :
  45.              // Proposal for installation mode
  46.              [ HTML::Bold( _("Update") ) ]
  47.         ];
  48.     }
  49.     else
  50.     {
  51.         ret = $[ "raw_proposal" :
  52.              [ HTML::Bold( "Error: Unknown Mode" ) ]
  53.         ];
  54.     }
  55.     }
  56.     else if ( func == "AskUser" )
  57.     {
  58.     boolean has_next = param["has_next"]:false;
  59.  
  60.     // call some function that displays a user dialog
  61.     // or a sequence of dialogs here:
  62.     //
  63.     // sequence = DummyMod::AskUser( has_next );
  64.  
  65.     boolean tmp1 = Mode::installation ();
  66.     boolean tmp2 = Mode::update ();
  67.  
  68.     symbol result = (symbol) WFM::CallFunction ("inst_mode", [`AskUser]);
  69.  
  70.     boolean mode_changed = tmp1 != Mode::installation () || tmp2 != Mode::update ();
  71.  
  72.     if (mode_changed)
  73.     {
  74.         Pkg::PkgReset ();
  75.         Update::Detach ();
  76.         RootPart::UnmountPartitions (false);
  77.     }
  78.  
  79.     // Fill return map
  80.  
  81.     ret = $[ "workflow_sequence" : result,
  82.          "mode_changed" : mode_changed];
  83.     }
  84.     else if ( func == "Description" )
  85.     {
  86.     // Fill return map.
  87.     //
  88.     // Static values do just nicely here, no need to call a function.
  89.  
  90.     ret =
  91.         $[
  92.           // this is a heading
  93.           "rich_text_title"    :    _( "Mode"  ),
  94.           // this is a menu entry
  95.           "menu_title"    :    _( "M&ode" ),
  96.           "id"        :    "mode_stuff"
  97.         ];
  98.     }
  99.  
  100.     return ret;
  101. }
  102.