summaryrefslogtreecommitdiffstats
path: root/perl-install/Xconfig/main.pm
blob: 7a07b2b075e8f8a025f989d443b37d5e8140cabf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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;