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 / modules / AutoinstX11.ycp < prev    next >
Text File  |  2006-11-29  |  7KB  |  200 lines

  1. /**
  2.  * File:    autoyast/modules/AutoinstX11.ycp
  3.  * Module:    Auto-Installation
  4.  * Summary:    X11
  5.  * Authors:    Marcus Sch├ñfer <ms@suse.de>
  6.  *
  7.  */
  8. { // begin
  9. module "AutoinstX11";
  10.  
  11. textdomain "x11";
  12. import "Summary";
  13. import "Directory";
  14. import "XLib";
  15.  
  16. //=======================================
  17. // Globals
  18. //---------------------------------------
  19. global map x11 = $[];
  20. global map monitor = $[];
  21. global map display = $[];
  22. global string current_vendor = "";
  23. global string current_model  = "";
  24. global boolean modified = false;
  25.  
  26. global list vendors = [];
  27. global list models  = [];
  28. global list<map> all_monitors = [];
  29.  
  30. //=======================================
  31. // SetModified
  32. //---------------------------------------
  33. global define void SetModified () {
  34.     modified = true;
  35. }
  36.  
  37. //=======================================
  38. // GetModified
  39. //---------------------------------------
  40. global define boolean GetModified () {
  41.     return modified;
  42. }
  43.  
  44. //=======================================
  45. // Import
  46. //---------------------------------------
  47. global define boolean Import (map settings) {
  48.     x11 = settings;
  49.     monitor = x11["monitor"]:$[];
  50.     display = monitor["display"]:$[];
  51.     current_vendor = monitor["monitor_vendor"]:"" ;
  52.     current_model  = monitor["monitor_device"]:"" ;
  53.     return true;
  54. }
  55.  
  56. //=======================================
  57. // Export
  58. //---------------------------------------
  59. global define map Export () {
  60.     monitor["display"] = display;
  61.     monitor["monitor_device"] = current_model;
  62.     monitor["monitor_vendor"] = current_vendor;
  63.     x11["monitor"] = monitor;
  64.     return x11;
  65. }
  66.  
  67. //=======================================
  68. // Summary
  69. //---------------------------------------
  70. global define string Summary() {
  71.     string summary = "";
  72.     map m = x11["monitor"]:$[];
  73.     map d = m["display"]:$[];
  74.     string my_current_vendor = m["monitor_vendor"]:"";
  75.     string my_current_model  = m["monitor_device"]:"";
  76.     string my_monitor =  Summary::NotConfigured();
  77.     if (size(my_current_vendor) > 0) {
  78.         my_monitor = sformat("%1   %2", my_current_vendor, my_current_model);
  79.     }
  80.     string horizontal = sformat("%1 - %2",d["min_hsync"]:0 , d["max_hsync"]:0);
  81.     string vertical = sformat("%1 - %2",  d["min_vsync"]:0 , d["max_vsync"]:0);
  82.     string nc = Summary::NotConfigured ();
  83.     string depth = sformat ("%1",
  84.         (x11["color_depth"]:-1 != -1) ? x11["color_depth"]:-1 : nc
  85.     );
  86.     summary = Summary::AddHeader (summary, _("Enable 3D Support If Possible"));
  87.     summary = Summary::AddLine   (summary,
  88.         (x11["enable_3d"]:false) ? _("Yes") : nc
  89.     );
  90.     summary = Summary::AddHeader (summary, _("Color Depth"));
  91.     summary = Summary::AddLine   (summary, depth );
  92.     summary = Summary::AddHeader (summary, _("Resolution"));
  93.     summary = Summary::AddLine   (summary,
  94.         (x11["resolution"]:"" != "") ? x11["resolution"]:"" : nc
  95.     );
  96.     summary = Summary::AddHeader (summary, _("Display Manager"));
  97.     summary = Summary::AddLine   (summary,
  98.         (x11["display_manager"]:"" != "") ? x11["display_manager"]:"" : nc
  99.     );
  100.     summary = Summary::AddHeader (summary, _("Window Manager"));
  101.     summary = Summary::AddLine   (summary,
  102.         (x11["window_manager"]:"" != "") ? x11["window_manager"]:"" : nc
  103.     );
  104.     summary = Summary::AddHeader (summary, _("Monitor"));
  105.     summary = Summary::AddLine   (summary, my_monitor);
  106.     summary = Summary::AddHeader (summary, _("Horizontal frequency"));
  107.     summary = Summary::AddLine   (summary, horizontal);
  108.     summary = Summary::AddHeader (summary, _("Vertical frequency"));
  109.     summary = Summary::AddLine   (summary, vertical);
  110.  
  111.     return summary;
  112. }
  113.  
  114. //=======================================
  115. // readMonitorDB
  116. //---------------------------------------
  117. global define void readMonitorDB() {
  118.     string static_monitors  = Directory::datadir + "/monitors.ycp";
  119.     all_monitors = (list<map>)SCR::Read( .target.ycp, [ static_monitors, [] ]);
  120.     vendors = toset(
  121.         maplist( map monitor, all_monitors,``( monitor["vendor"]:"" ))
  122.     );
  123. }
  124.  
  125. //=======================================
  126. // Read
  127. //---------------------------------------
  128. global define boolean Read() {
  129.     x11["display_manager"] = (string) eval (SCR::Read(
  130.         .sysconfig.displaymanager.DISPLAYMANAGER
  131.     ));
  132.     x11["window_manager"] = (string) eval (SCR::Read(
  133.         .sysconfig.windowmanager.DEFAULT_WM
  134.     ));
  135.     x11["enable_3d"] = false;
  136.     if (! (boolean)XLib::isInitialized()) {
  137.         y2milestone ("X11-Auto: Loading library cache...");
  138.         XLib::loadApplication();
  139.     }
  140.     current_vendor = (string) XLib::getMonitorVendor();
  141.     current_model  = (string) XLib::getMonitorModel();
  142.     x11["color_depth"] = (string) XLib::getActiveColorDepth();
  143.     x11["resolution"]  = (string) XLib::getActiveResolutionString();
  144.     display["min_hsync"] = tointeger(XLib::getHsyncMin());
  145.     display["max_hsync"] = tointeger(XLib::getHsyncMax());
  146.     display["min_vsync"] = tointeger(XLib::getVsyncMin());
  147.     display["max_vsync"] = tointeger(XLib::getVsyncMax());
  148.     return true;
  149. }
  150.  
  151. //=======================================
  152. // Write
  153. //---------------------------------------
  154. global define boolean Write() {
  155.     if (! (boolean)XLib::isInitialized()) {
  156.         y2milestone ("X11-Auto: Loading library cache...");
  157.         XLib::loadApplication();
  158.     }
  159.     string displayManager = x11["display_manager"]:"";
  160.     string windowManager  = x11["window_manager"]:"";
  161.     if (size(displayManager) > 0) {
  162.         y2milestone("X11-Auto: setup display manager <%1>",displayManager);
  163.         SCR::Write (.sysconfig.displaymanager.DISPLAYMANAGER, displayManager);
  164.         SCR::Write (.sysconfig.displaymanager, nil);
  165.     }
  166.     if (size(windowManager) > 0) {
  167.         y2milestone("X11-Auto: setup window manager <%1>",windowManager);
  168.         SCR::Write (.sysconfig.windowmanager.DEFAULT_WM, windowManager);
  169.         SCR::Write (.sysconfig.windowmanager, nil);
  170.     }
  171.     integer hstart = display["min_hsync"]:30;
  172.     integer hstop  = display["max_hsync"]:60;
  173.     integer vstart = display["min_vsync"]:60;
  174.     integer vstop  = display["max_vsync"]:75;
  175.     y2milestone("X11-Auto: setup monitor <%1:%2>",current_vendor,current_model);
  176.     XLib::setMonitorCDB ( [current_vendor,current_model] );
  177.     XLib::setHsyncRange (hstart,hstop);
  178.     XLib::setVsyncRange (vstart,vstop);
  179.  
  180.     string resolution = x11["resolution"]:"800x600 (SVGA)";
  181.     y2milestone("X11-Auto: setup resolution <%1>",resolution);
  182.     XLib::setResolution ( resolution );
  183.  
  184.     integer colors = x11["color_depth"]:16;
  185.     y2milestone("X11-Auto: setup color depth <%1>",colors);
  186.     XLib::setDefaultColorDepth ( tostring(colors) );
  187.  
  188.     boolean enable3D = x11["enable_3d"]:false;
  189.     y2milestone("X11-Auto: setup 3D <%1>",enable3D);
  190.     boolean has3D = XLib::hasOpenGLFeatures();
  191.     if ((enable3D) && (has3D)) {
  192.         XLib::activate3D();
  193.     } else {
  194.         XLib::deactivate3D();
  195.     }
  196.     boolean status = XLib::writeConfiguration();
  197.     return  status;
  198. }
  199. } // end
  200.