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

  1. /**
  2.  * File:    installation/general/inst_relase_notes.ycp
  3.  * Module:    Installation
  4.  * Summary:    Display release notes
  5.  * Authors:    Arvin Schnell <arvin@suse.de>
  6.  *
  7.  * Display release notes.
  8.  *
  9.  * $Id: release_notes_popup.ycp 34411 2006-11-15 13:45:11Z locilka $
  10.  */
  11.  
  12. {
  13.     textdomain "installation";
  14.  
  15.     import "Language";
  16.     import "Report";
  17.     import "Label";
  18.     import "Stage";
  19.     import "Packages";
  20.  
  21.     /* filename of release notes */
  22.     string file = "";
  23.  
  24.     /* release notes */
  25.     string text = "";
  26.  
  27.  
  28.     /* function to load release notes */
  29.     define boolean load_release_notes ()
  30.     {
  31.         string path_to_relnotes = "/docu";
  32.     integer source_id = 0;
  33.     if (Stage::initial ())
  34.     {
  35.         source_id = Packages::theSources[0]:0;
  36.     }
  37.     else
  38.     {
  39.         list<integer> sources = Pkg::SourceStartCache (true);
  40.         source_id = sources[0]:0;
  41.     }
  42.     string path_templ = path_to_relnotes + "/RELEASE-NOTES.%1.rtf";
  43.     y2debug ("Path template: %1", path_templ);
  44.     string tmp = sformat (path_templ, Language::language);
  45.     y2debug ("Trying to get %1", tmp);
  46.     tmp = Pkg::SourceProvideOptionalFile (source_id, 1, tmp);
  47.     if (tmp == nil)
  48.     {
  49.         tmp = sformat (path_templ, substring (Language::language, 0, 2));
  50.         y2debug ("Trying to get %1", tmp);
  51.         tmp = Pkg::SourceProvideOptionalFile (source_id, 1, tmp);
  52.     }
  53.     if (tmp == nil)
  54.     {
  55.         tmp = sformat (path_templ, "en");
  56.         y2debug ("Trying to get %1", tmp);
  57.         tmp = Pkg::SourceProvideFile (source_id, 1, tmp);
  58.     }
  59.     if (tmp == nil)
  60.         return false;
  61.  
  62.     text = (string)SCR::Read (.target.string, [tmp, ""]);
  63.     if (text != "" && text != nil)
  64.         return true;
  65.     return false;
  66.     };
  67.  
  68.     y2milestone ("Calling: Release Notes Popup");
  69.  
  70.     if (! load_release_notes ())
  71.     {
  72.     // error report
  73.     Report::Error (_("Cannot load release notes."));
  74.     return nil;
  75.     }
  76.  
  77.     text =
  78. // beginning of the rich text with the release notes
  79. _("<p><b>These are the release notes made for the first initial release. They are
  80. part of the installation media. During installation, if a connection
  81. to the Internet is available, you can download updated release notes
  82. from the SUSE Linux Web server.</b></p>") + text;
  83.  
  84.     // bugzilla #221222, #213239
  85.     map display_info = UI::GetDisplayInfo();
  86.     integer min_size_x = 76;
  87.     integer min_size_y = 22;
  88.     
  89.     // textmode
  90.     if (display_info["TextMode"]:true) {
  91.     min_size_x = tointeger(display_info["Width"]:80)  * 3 / 4;
  92.     min_size_y = tointeger(display_info["Height"]:25) * 2 / 3;
  93.     if (min_size_x < 76) min_size_x = 76;
  94.     if (min_size_y < 22) min_size_y = 22;
  95.     y2milestone("X/x Y/y %1/%2 %3/%4",
  96.         display_info["Width"]:80, min_size_x,
  97.         display_info["Height"]:25, min_size_y);
  98.     // GUI
  99.     } else {
  100.     min_size_x = 100;
  101.     min_size_y = 30;
  102.     }
  103.  
  104.     term contents = `MinSize (
  105.     min_size_x, min_size_y,
  106.     `VBox (
  107.         `VSpacing (0.5),
  108.         `Left (`Heading (_("Release Notes"))),
  109.         `RichText (`id (`text), text),
  110.         `VSpacing (0.5),
  111.         `PushButton (`id (`close), Label::CloseButton ()),
  112.         `VSpacing (0.5)
  113.     )
  114.     );
  115.  
  116.     UI::OpenDialog (contents);
  117.     contents = nil;
  118.     UI::SetFocus (`close);
  119.  
  120.     // FIXME: richtext eats return key, but only in NCurses and we want to
  121.     // make users read release notes (and make PgDn work). For Next, F10 is
  122.     // availbale
  123.     UI::SetFocus (`id (`text));
  124.  
  125.     any ret = nil;
  126.     repeat {
  127.     ret = UI::UserInput();
  128.     } until ( ret == `close || ret == `back );
  129.     UI::CloseDialog ();
  130.  
  131.     y2milestone ("Finishing: Release Notes Popup");
  132.  
  133.     return ret;
  134. }
  135.