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 / language.ycp < prev    next >
Text File  |  2006-11-29  |  6KB  |  257 lines

  1. /**
  2.  *
  3.  * Module:        yast2-country
  4.  *
  5.  * Authors:        Klaus Kaempf (kkaempf@suse.de)
  6.  *            Jiri Suchomel (jsuchome@suse.cz)
  7.  *
  8.  * Purpose:        client for language configuration in running system
  9.  *
  10.  * $Id: language.ycp 29621 2006-04-03 13:14:28Z jsuchome $
  11.  */
  12.  
  13. {
  14.  
  15. textdomain "country";
  16.  
  17. import "CommandLine";
  18. import "Console";
  19. import "GfxMenu";
  20. import "Language";
  21. import "Mode";
  22. import "Popup";
  23. import "Progress";
  24. import "Wizard";
  25.  
  26. /**
  27.  * read language settings
  28.  */
  29. define boolean LanguageRead () {
  30.  
  31.     return Language::Read (false);
  32. }
  33.  
  34. /**
  35.  * write language settings
  36.  */
  37. define boolean LanguageWrite () {
  38.  
  39.     y2milestone ("Language changed --> saving");
  40.  
  41.     integer steps    = 3;
  42.  
  43.     // progress title
  44.     Progress::New (_("Saving Language Configuration"), " ", steps, [
  45.     // progress stage
  46.     _("Save language and console settings"),
  47.     // progress stage
  48.     _("Install and uninstall affected packages"),
  49.     // progress stage
  50.     _("Update translations in boot loader menu"),
  51.     ], [
  52.     // progress step
  53.     _("Saving language and console settings..."),
  54.     // progress step
  55.     _("Installing and uninstalling affected packages..."),
  56.     // progress step
  57.     _("Updating translations in boot loader menu..."),
  58.     // last progress step
  59.     _("Starting SuSEconfig...")
  60.     ], ""
  61.     );
  62.  
  63.     Progress::NextStage ();
  64.  
  65.     Language::Save ();
  66.     Console::Save ();
  67.  
  68.     Progress::NextStage ();
  69.  
  70.     boolean enough_space    = true;
  71.     if (Mode::commandline ())
  72.     {
  73.     // if not commandline, packages were already initialized in inst_ client
  74.     enough_space = Language::PackagesInit (
  75.         splitstring (Language::languages, ","));
  76.     }
  77.     if (enough_space)
  78.     {
  79.     Language::PackagesCommit ();
  80.     }
  81.  
  82.     Progress::NextStage ();
  83.  
  84.     GfxMenu::Update();
  85.  
  86.     Progress::NextStage ();
  87.  
  88.     WFM::CallFunction ("inst_suseconfig", [ false, false ]);
  89.  
  90.     return true;
  91. }
  92.  
  93. /**
  94.  * the language configuration sequence
  95.  */
  96. define any LanguageSequence () {
  97.  
  98.     LanguageRead ();
  99.  
  100.     Console::Init ();
  101.  
  102.     Wizard::CreateDialog();
  103.  
  104.     // set the language accoring to Language.ycp initialization
  105.     Language::WfmSetLanguage ();
  106.     Wizard::OpenAcceptDialog();
  107.  
  108.     // Params are:                `back `next  set_default
  109.     map args = $[];
  110.     args["enable_back"] = true;
  111.     args["enable_next"] = true;
  112.  
  113.     any result = WFM::CallFunction ("select_language", [args]);
  114.  
  115.     Wizard::CloseDialog();
  116.  
  117.     y2debug ("result '%1'", result);
  118.  
  119.     if (result == `cancel || result == `back)
  120.     {
  121.     // Back to original values...
  122.     y2milestone ("canceled -> restoring: %1", Language::language_on_entry);
  123.     Language::Set (Language::language_on_entry);
  124.     }
  125.     else
  126.     {
  127.     if (Language::Modified ())
  128.     {
  129.         // help for write dialog
  130.         Wizard::RestoreHelp (_("<p><b>Saving Configuration</b><br>Please wait...</p>"));
  131.         Console::SelectFont (Language::language);
  132.         LanguageWrite ();
  133.     }
  134.     else
  135.     {
  136.         y2milestone( "Language not changed --> doing nothing" );
  137.     }
  138.     }
  139.     UI::CloseDialog();
  140.     return result;
  141. }
  142.  
  143. /**
  144.  * Handler for language summary
  145.  */
  146. define boolean LanguageSummaryHandler (map options) {
  147.  
  148.     map<string,list> selection    = Language::Selection();
  149.     // summary label
  150.     CommandLine::Print (sformat (_("Current Language: %1 (%2)"),
  151.     Language::language, selection[Language::language,1]:""));
  152.  
  153.     string languages    = Language::languages;
  154.     if (languages != "")
  155.     {
  156.     list<string> langs    = filter (string lang_code,
  157.         splitstring (languages, ","), ``(lang_code != Language::language));
  158.     if (size (langs) > 0)
  159.     {
  160.         CommandLine::Print (sformat (_("Additional Languages: %1"),
  161.         mergestring (langs,",")));
  162.     }
  163.     }
  164.     return false;
  165. }
  166.  
  167. /**
  168.  * Handler for listing available languages
  169.  */
  170. define boolean LanguageListHandler (map options) {
  171.  
  172.     foreach (string lang_code, list lang_info, Language::Selection(), {
  173.     CommandLine::Print (sformat ("%1 (%2)", lang_code, lang_info[1]:""));
  174.     });
  175.     return false;
  176. }
  177.  
  178.  
  179. /**
  180.  * Handler for changing language settings
  181.  */
  182. define boolean LanguageSetHandler (map options) {
  183.  
  184.     string language    = options["lang"]:Language::language;
  185.     string languages    = options["languages"]:"";
  186.  
  187.     if (!haskey(Language::Selection(), language))
  188.     {
  189.     // error message (%1 is given layout); do not translate 'list'
  190.     CommandLine::Print (sformat (_("%1 is not a valid language. Use the list command to see possible values."), language));
  191.     return false;
  192.     }
  193.     list<string> llanguages       = splitstring (languages, ",");
  194.     if (!contains (llanguages, language))
  195.     llanguages       = add (llanguages, language);
  196.  
  197.     Language::languages    = mergestring (llanguages, ",");
  198.  
  199.     if (language != Language::language)
  200.     {
  201.     Language::Set (language);
  202.     Console::SelectFont (language);
  203.     }
  204.  
  205.     return (Language::Modified ());
  206. }
  207.  
  208.  
  209. /* -- the command line description map -------------------------------------- */
  210. map cmdline = $[
  211.     "id"        : "language",
  212.     // translators: command line help text for language module
  213.     "help"        : _("Language configuration"),
  214.     "guihandler"    : LanguageSequence,
  215.     "initialize"    : LanguageRead,
  216.     "finish"        : LanguageWrite,
  217.     "actions"        : $[
  218.     "summary" :$[
  219.         "handler"    : LanguageSummaryHandler,
  220.         // command line help text for 'summary' action
  221.         "help"    : _("Language configuration summary"),
  222.     ],
  223.     "set" :$[
  224.         "handler"    : LanguageSetHandler,
  225.         // command line help text for 'set' action
  226.         "help"    : _("Set new values for language"),
  227.     ],
  228.     "list": $[
  229.         "handler"    : LanguageListHandler,
  230.         // command line help text for 'list' action
  231.         "help"    : _("List all available languages.")
  232.     ],
  233.     ],
  234.     "options"        : $[
  235.     "lang"        : $[
  236.         // command line help text for 'set lang' option
  237.         "help"    : _("New language value"),
  238.         "type"    : "string"
  239.     ],
  240.     "languages"    : $[
  241.         // command line help text for 'set languages' option
  242.         "help"    : _("List of secondary languages (separated by commas)"),
  243.         "type"    : "string"
  244.     ],
  245.     ],
  246.     "mappings"        : $[
  247.     "summary"    : [],
  248.     "set"        : [ "lang", "languages" ],
  249.     "list"        : [],
  250.     ]
  251. ];
  252.  
  253. CommandLine::Run (cmdline);
  254. return true;
  255.  
  256. }
  257.