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

  1. /**
  2.  * File:    clients/inst_desktop.ycp
  3.  * Package:    Installation
  4.  * Summary:    Desktop Selection
  5.  * Authors:    Jiri Srain <jsrain@suse.cz>
  6.  *
  7.  * $Id: inst_desktop.ycp 33383 2006-10-13 09:12:02Z lslezak $
  8.  *
  9.  */
  10.  
  11. {
  12.  
  13. textdomain "packager";
  14.  
  15. import "Directory";
  16. import "GetInstArgs";
  17. import "Label";
  18. import "Packages";
  19. import "Popup";
  20. import "ProductFeatures";
  21. import "Stage";
  22. import "Wizard";
  23. import "DefaultDesktop";
  24.  
  25. // do not offer the dialog if base selection is fixed
  26. if (ProductFeatures::GetFeature ("software", "selection_type") == `fixed)
  27.     return `auto;
  28.  
  29. string alt_desktop = DefaultDesktop::Desktop ();
  30. string other_desktop = nil;
  31.  
  32. if (alt_desktop == nil)
  33. {
  34.     DefaultDesktop::Init ();
  35.     alt_desktop = DefaultDesktop::Desktop ();
  36. }
  37. if (alt_desktop != nil)
  38. {
  39.     if (alt_desktop != "kde" && alt_desktop != "gnome")
  40.     {
  41.     other_desktop = alt_desktop;
  42.     alt_desktop = "other";
  43.     }
  44. }
  45.  
  46. map display = UI::GetDisplayInfo();
  47. integer space = display["TextMode"]:true ? 1 : 3;
  48.  
  49. // all the arguments
  50. map argmap = GetInstArgs::argmap();
  51.  
  52.  
  53.  
  54. string gnome_blurb =
  55. // explanation text for GNOME
  56. _("GNOME is a powerful and intuitive desktop
  57. environment that uses Evolution as its mailer,
  58. Firefox as its browser, and Nautilus as its
  59. file manager.");
  60.  
  61. string kde_blurb =
  62. // explanation text for KDE
  63. _("KDE is a powerful and intuitive desktop
  64. environment that uses Kontact as its mailer,
  65. Konqueror as its file manager, and offers
  66. both Firefox and Konqueror as its Web browser.");
  67.  
  68. // help text 1/3
  69. string help = _("<p>Both <b>KDE</b> and <b>GNOME</b> are powerful and intuitive
  70. desktop environments. They combine ease of use
  71. and attractive graphical interfaces with their
  72. own sets of perfectly integrated applications.</p>")
  73. +
  74. // help text 2/3
  75. _("<p>Choosing the default <b>GNOME</b> or <b>KDE</b> desktop
  76. environment installs a broad set of the
  77. most important desktop applications on your
  78. system.</p>")
  79. +
  80. // help text 3/3
  81. _("<p>Choose <b>Other</b> then press <b>Select</b> to select
  82. an alternative, such as a text-only system or a minimal graphical
  83. system with a basic window manager.</p>");
  84.  
  85. term kde = `VBox (
  86.         `Left (`RadioButton (`id ("kde"), `opt(`notify, `boldFont),
  87.         // radio button
  88.         _("&KDE"),
  89.         alt_desktop == "kde")),
  90.         `Left (`HBox (
  91.         `HSpacing (3),
  92.         `Top (`Label (kde_blurb)),
  93.         `HSpacing (1),
  94.         `Right (`Top (`Image (
  95.             Directory::themedir + "/current/icons/48x48/apps/kde.png",
  96.             "")))
  97.         ))
  98.     );
  99.  
  100. term gnome = `VBox (
  101.         `Left (`RadioButton (`id ("gnome"), `opt (`notify, `boldFont),
  102.         // radio button
  103.         _("&GNOME"),
  104.         alt_desktop == "gnome")),
  105.         `HBox (
  106.         `HSpacing (3),
  107.         `Top (`Label (gnome_blurb)),
  108.         `HSpacing (1),
  109.         `Right (`Top (`Image (
  110.             Directory::themedir + "/current/icons/48x48/apps/gnome.png",
  111.             "")))
  112.         )
  113.     );
  114.  
  115. term contents = `RadioButtonGroup (`id (`desktop), `HBox (
  116.     `HWeight(1, `Empty()),    // Distribute excess space 1:2 (left:right)
  117.     `VBox(
  118.     `VStretch (),
  119.     // label (in bold font)
  120. //    `Left (`Label (`opt (`boldFont), _("Graphical Desktop Environment"))),
  121. //    `VSpacing (1.4),
  122.     `VWeight (10, gnome),
  123.     `VSpacing (0.4),
  124.     `VWeight (10, kde),
  125.     `VSpacing (0.4),
  126.     `VWeight (10, `HBox (
  127.         `Left (`RadioButton (`id ("other"), `opt(`notify, `boldFont),
  128.         // radio button
  129.         _("&Other"),
  130.         alt_desktop != "gnome" && alt_desktop != "kde"
  131.             && alt_desktop != nil)),
  132.         `HBox (
  133.         `HSpacing (3),
  134.         // push button
  135.         `PushButton (`id (`select), _("&Select..."))
  136.         )
  137.     )),
  138.     `VStretch ()
  139. //    `VWeight (5, `Empty())
  140.     ),
  141.     `HWeight (2, `Empty ())
  142. ));
  143.  
  144. term expert_dialog = `VBox (
  145.     // frame
  146.     `MarginBox(2, 0.7, `Frame (_("Alternate Desktops"),
  147.     `MarginBox (1, 0.5, `RadioButtonGroup (`id (`desktop), `VBox (
  148.         `Left (`RadioButton (`id ("min_x11"),
  149.         // radio button
  150.         _("Minimal &Graphical System"))),
  151.         `Left (`RadioButton (`id ("text"),
  152.         // radio button
  153.         _("&Text Mode")))
  154.     ))
  155.     ))),
  156.    `Right (`HBox (
  157.     `PushButton ( `id (`ok), `opt (`default), Label::OKButton ()),
  158.     `PushButton ( `id (`cancel), Label::CancelButton ())
  159.     ))
  160. );
  161.  
  162. // dialog caption
  163. Wizard::SetContents (_("Desktop Selection"), contents, help,
  164.     GetInstArgs::enable_back(), GetInstArgs::enable_next());
  165. Wizard::SetTitleIcon ("yast-desktop-select");
  166. Wizard::SetFocusToNextButton();
  167. UI::ChangeWidget(`select, `Enabled, alt_desktop != "gnome"
  168.     && alt_desktop != "kde" && alt_desktop != nil);
  169.  
  170. any ret = nil;
  171.  
  172. repeat {
  173.     map event = UI::WaitForEvent();
  174.     ret = event["ID"]:nil;
  175.  
  176.     if (event["WidgetClass"]:nil == `RadioButton)
  177.     {
  178.     Wizard::EnableNextButton();
  179.     UI::ChangeWidget (`select, `Enabled,
  180.         UI::QueryWidget (`id ("other"), `Value));
  181.     }
  182.     else if (ret == `next)
  183.     {
  184.     alt_desktop = (string)UI::QueryWidget (`id (`desktop), `CurrentButton);
  185.     if (alt_desktop == "other")
  186.     {
  187.         if (other_desktop == nil)
  188.         ret = `select_next;
  189.         else
  190.         alt_desktop = other_desktop;
  191.     }
  192.     if (alt_desktop == nil)
  193.     {
  194.         // popup message
  195.         Popup::Message (_("No desktop was selected. Select the
  196. desktop to install."));
  197.         ret = nil;
  198.     }
  199.     }
  200.     if (ret == `select || ret == `select_next)
  201.     {
  202.     UI::OpenDialog (expert_dialog);
  203.     string selected = other_desktop;
  204.     if (selected != "text")
  205.         selected = "min_x11";
  206.     UI::ChangeWidget (`id (`desktop), `CurrentButton, selected);
  207.     any popup_ret = UI::UserInput ();
  208.     selected = (string)UI::QueryWidget (`id (`desktop), `CurrentButton);
  209.     UI::CloseDialog ();
  210.     if (popup_ret == `ok)
  211.     {
  212.         other_desktop = selected;
  213.         if (ret == `select_next)
  214.         {
  215.         alt_desktop = other_desktop;
  216.         ret = `next;
  217.         }
  218.     }
  219.     }
  220.     else if (ret == `abort)
  221.     {
  222.     if (Popup::ConfirmAbort (Stage::initial () ? `painless : `incomplete))
  223.         return `abort;
  224.     continue;
  225.     }
  226.  
  227. } until (ret == `back || ret == `next);
  228.  
  229. Wizard::EnableNextButton ();
  230.  
  231. if (ret == `accept)
  232.     ret = `next;
  233.  
  234. if (ret == `next)
  235. {
  236.     if (DefaultDesktop::Desktop () != alt_desktop)
  237.     {
  238.     y2milestone ("Setting defualt desktop to %1", alt_desktop);
  239.     DefaultDesktop::SetDesktop (alt_desktop);
  240.     Packages::ForceFullRepropose ();
  241.     Packages::Reset ([`product]);
  242.     }
  243. }
  244.  
  245. return (symbol)ret;
  246.  
  247.  
  248.  
  249. /* EOF */
  250. }
  251.