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_release_notes.ycp < prev    next >
Text File  |  2006-11-29  |  4KB  |  134 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.  *          Jens Daniel Schmidt <jdsn@suse.de>
  7.  *
  8.  * Display release notes.
  9.  *
  10.  * $Id: inst_release_notes.ycp 33271 2006-10-09 11:28:31Z locilka $
  11.  */
  12.  
  13. {
  14.     textdomain "installation";
  15.  
  16.     import "Wizard";
  17.     import "Popup";
  18.     import "GetInstArgs";
  19.     import "CustomDialogs";
  20.     import "Directory";
  21.     import "Language";
  22.     import "Mode";
  23.  
  24.     map argmap = GetInstArgs::argmap();
  25.  
  26.     list<string> relnotesproducts = [];
  27.     list<string> readproducts = [];
  28.     map<string, string> relnotesmap = $[];
  29.     list<string> default_patterns = ["RELEASE-NOTES.%1.rtf"];
  30.     list<string> patterns = argmap["patterns"]:default_patterns;
  31.     string basedirectory = argmap["directory"]:"/usr/share/doc/release-notes";
  32.     string directory="";
  33.     integer prodnamelen=0;
  34.  
  35.     if (argmap["directory"]:"" != "")
  36.             basedirectory = Directory::custom_workflow_dir + basedirectory;
  37.  
  38.     readproducts = (list<string>) SCR::Read(.target.dir, basedirectory);
  39.  
  40.     foreach ( string product, readproducts ,
  41.     {
  42.         // beautify product string
  43.         string cleanproduct = mergestring(splitstring(product, "_"), " ");
  44.         relnotesproducts = add (relnotesproducts, cleanproduct );
  45.         prodnamelen=prodnamelen + size(cleanproduct);
  46.  
  47.         // read release notes
  48.         string directory = basedirectory + "/" + product;
  49.         map relnotes = CustomDialogs::load_file_locale(patterns, directory, Language::language);
  50.  
  51.         // add release notes to map
  52.         relnotesmap[cleanproduct] = (string) relnotes["text"]:"";
  53.  
  54.         /* filename of release notes */
  55.         //string file = relnotes["file"]:"";
  56.         /* release notes */
  57.         // string text = relnotes["text"]:"";
  58.     });
  59.  
  60.     /* caption for dialog "Release Notes" */
  61.     string caption = _("Release Notes");
  62.  
  63.     term relnoteslayout=nil;
  64.     term relnotesrichtext=`RichText(`id(`relnotescontent),
  65.                                      relnotesmap[relnotesproducts[0]:""]:"Select product"  );
  66.  
  67.     // use DumpTab or ComboBox layout
  68.     if (  UI::HasSpecialWidget(`DumbTab ) && (
  69.            ( size(relnotesproducts)<4  &&  prodnamelen<90 ) ||
  70.            ( size(relnotesproducts)>3  &&  prodnamelen<70 )    )
  71.        )
  72.     {
  73.         relnoteslayout= `DumbTab ( relnotesproducts , relnotesrichtext );
  74.     }
  75.     else
  76.     {
  77.         relnoteslayout=`VBox( `Left( `ComboBox(`id(`productsel), `opt(`notify), _("&Product"), relnotesproducts)),
  78.                                       relnotesrichtext );
  79.     }
  80.  
  81.     term contents = `VBox ( `VSpacing (0.5), relnoteslayout, `VSpacing (0.5));
  82.  
  83.     /* help text for dialog "Release Notes" */
  84.     string help = _("<p>Here are the <b>release notes</b> for the installed
  85. Linux system. They provide a brief summary of new features and changes.</p>");
  86.  
  87.     // in normal mode no BackAbortNext-button layout
  88.     if (Mode::normal()) Wizard::OpenAcceptDialog();
  89.  
  90.     Wizard::SetContents (caption, contents, help, GetInstArgs::enable_back(),
  91.            GetInstArgs::enable_next());
  92.     Wizard::SetTitleIcon("yast-release-notes");
  93.  
  94.     // FIXME: richtext eats return key, but only in NCurses and we want to
  95.     // make users read release notes (and make PgDn work). For Next, F10 is
  96.     // availbale
  97.     UI::SetFocus (`id (`relnotescontent));
  98.  
  99.     // for debugging
  100.     // UI::DumpWidgetTree();
  101.  
  102.     any ret = nil;
  103.  
  104.     repeat {
  105.  
  106.     ret = Wizard::UserInput();
  107.  
  108.     if (ret == `abort)
  109.     {
  110.         if (Mode::normal()) break;
  111.         if (Popup::ConfirmAbort (`incomplete))
  112.         break;
  113.     }
  114.     else if (ret == `help)
  115.     {
  116.         Wizard::ShowHelp (help);
  117.     }
  118.         else if ( ret == `productsel )
  119.         {
  120.                 UI::ChangeWidget(`relnotescontent, `Value, relnotesmap[ (string) UI::QueryWidget(`id(`productsel), `Value)   ]:"" );
  121.                 UI::SetFocus (`id (`relnotescontent));
  122.         }
  123.     else if ( is( ret, string ) )
  124.     {
  125.         UI::ChangeWidget(`relnotescontent, `Value, relnotesmap[(string) ret]:"");
  126.                 UI::SetFocus (`id (`relnotescontent));
  127.     }
  128.  
  129.     } until ( ret == `next || ret == `back );
  130.     if (Mode::normal()) Wizard::CloseDialog();
  131.  
  132.     return ret;
  133. }
  134.