summaryrefslogtreecommitdiffstats
path: root/perl-install/Xconfig/main.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/Xconfig/main.pm')
-rw-r--r--perl-install/Xconfig/main.pm108
1 files changed, 108 insertions, 0 deletions
diff --git a/perl-install/Xconfig/main.pm b/perl-install/Xconfig/main.pm
new file mode 100644
index 000000000..7a07b2b07
--- /dev/null
+++ b/perl-install/Xconfig/main.pm
@@ -0,0 +1,108 @@
+package Xconfig::main; # $Id$
+
+use diagnostics;
+use strict;
+
+use Xconfig::monitor;
+use Xconfig::card;
+use Xconfig::resolution_and_depth;
+use Xconfig::various;
+use Xconfig::screen;
+use Xconfig::test;
+use common;
+use any;
+
+
+sub configure_monitor {
+ my ($in, $raw_X) = @_;
+
+ Xconfig::monitor::configure($in, $raw_X) or return;
+ $raw_X->write;
+ 'config_changed';
+}
+
+sub configure_resolution {
+ my ($in, $raw_X) = @_;
+
+ my $card = Xconfig::card::from_raw_X($raw_X);
+ my $monitor = Xconfig::monitor::from_raw_X($raw_X);
+ Xconfig::resolution_and_depth::configure($in, $raw_X, $card, $monitor) or return;
+ $raw_X->write;
+ 'config_changed';
+}
+
+
+sub configure_everything_auto_install {
+ my ($raw_X, $do_pkgs, $old_X, $options) = @_;
+
+ my $card = Xconfig::card::configure_auto_install($raw_X, $do_pkgs, $old_X, $options) or return;
+ my $monitor = Xconfig::monitor::configure_auto_install($raw_X, $old_X) or return;
+ Xconfig::screen::configure($raw_X, $card) or return;
+ my $resolution = Xconfig::resolution_and_depth::configure_auto_install($raw_X, $card, $monitor, $old_X);
+
+ export_to_install_X($card, $monitor, $resolution);
+ $raw_X->write;
+ symlinkf "../..$card->{prog}", "$::prefix/etc/X11/X" if $card->{server} !~ /Xpmac/;
+
+ any::runlevel($::prefix, $old_X->{xdm} ? 5 : 3);
+}
+
+sub configure_everything {
+ my ($in, $raw_X, $do_pkgs, $auto, $options) = @_;
+
+ my $ok = 1;
+ $ok &&= my $card = Xconfig::card::configure($in, $raw_X, $do_pkgs, $auto, $options);
+ $ok &&= my $monitor = Xconfig::monitor::configure($in, $raw_X, $auto);
+ $ok &&= Xconfig::screen::configure($raw_X, $card);
+ $ok &&= my $resolution = Xconfig::resolution_and_depth::configure($in, $raw_X, $card, $monitor, $auto);
+ $ok &&= Xconfig::test::test($in, $raw_X, $card, $auto);
+
+ $ok ||= $in->ask_yesorno('', _("Keep the changes?
+The current configuration is:
+
+%s", Xconfig::various::info($raw_X)));
+
+ if ($ok) {
+ export_to_install_X($card, $monitor, $resolution);
+ $raw_X->write;
+ symlinkf "../..$card->{prog}", "$::prefix/etc/X11/X" if $card->{server} !~ /Xpmac/;
+ }
+ Xconfig::various::choose_xdm($in, $auto);
+
+ $ok && 'config_changed';
+}
+
+
+sub export_to_install_X {
+ my ($card, $monitor, $resolution) = @_;
+
+ $::isInstall or return;
+
+ $::o->{X}{resolution_wanted} = $resolution->{X};
+ $::o->{X}{default_depth} = $resolution->{Depth};
+ $::o->{X}{bios_vga_mode} = $resolution->{bios};
+ $::o->{X}{monitor} = $monitor if $monitor->{manually_chosen};
+ $::o->{X}{card} = $monitor if $card->{manually_chosen};
+}
+
+
+#- most usefull XFree86-4.0.1 server options. Default values is the first ones.
+our @options_serverflags = (
+ 'DontZap' => [ "Off", "On" ],
+ 'DontZoom' => [ "Off", "On" ],
+ 'DisableVidModeExtension' => [ "Off", "On" ],
+ 'AllowNonLocalXvidtune' => [ "Off", "On" ],
+ 'DisableModInDev' => [ "Off", "On" ],
+ 'AllowNonLocalModInDev' => [ "Off", "On" ],
+ 'AllowMouseOpenFail' => [ "False", "True" ],
+ 'VTSysReq' => [ "Off", "On" ],
+ 'BlankTime' => [ "10", "5", "3", "15", "30" ],
+ 'StandByTime' => [ "20", "10", "6", "30", "60" ],
+ 'SuspendTime' => [ "30", "15", "9", "45", "90" ],
+ 'OffTime' => [ "40", "20", "12", "60", "120" ],
+ 'Pixmap' => [ "32", "24" ],
+ 'PC98' => [ "auto-detected", "False", "True" ],
+ 'NoPM' => [ "False", "True" ],
+);
+
+1;