diff options
Diffstat (limited to 'XOrg/xorgconf.pm')
-rwxr-xr-x | XOrg/xorgconf.pm | 50 |
1 files changed, 11 insertions, 39 deletions
diff --git a/XOrg/xorgconf.pm b/XOrg/xorgconf.pm index 8cf4c7b..987eecc 100755 --- a/XOrg/xorgconf.pm +++ b/XOrg/xorgconf.pm @@ -71,10 +71,14 @@ use warnings; use strict; use Carp; use Data::Dumper; +use XOrg::ConfigGenerator; + my $default_config_file = "/etc/X11/xorg.conf"; sub DEFAULT_CONFIG_FILE { return $default_config_file}; +our @ISA = qw(XOrg::ConfigGenerator); + my $conf_header = ' # This configuration was generated by XOrg::xorgconf.pm. '; @@ -126,7 +130,7 @@ sub add_serverlayout { $identifier = "<default server layout>"; } - $layout =~ s/→identifier←/$identifier/; + $layout = $self->replace($layout, {identifier => $identifier}); for (keys %options) { $layout = $self->_section_add_option($layout, $_, $options{$_}); @@ -156,8 +160,8 @@ sub add_input_device { } my $section = $input_device_template; - $section =~ s/→identifier←/$identifier/; - $section =~ s/→driver←/$driver/; + $section = $self->replace($section, {identifier => $identifier, + driver => $driver}); for (keys %options) { $section = $self->_section_add_option($section, $_, $options{$_}); } @@ -166,7 +170,7 @@ sub add_input_device { if (not defined $self->_sections->{serverlayout}) { $self->add_serverlayout; } - $self->_sections->{serverlayout} = $self->_add_to_placeholder($self->_sections->{serverlayout}, + $self->_sections->{serverlayout} = $self->add_to_placeholder($self->_sections->{serverlayout}, "input_device", "InputDevice \"$identifier\""); } @@ -179,8 +183,8 @@ sub print { my $str = $self->_sections->{header}; my @devices; - $str .= $self->_purify($self->_sections->{serverlayout}) if defined $self->_sections->{serverlayout}; - $str .= $self->_purify($self->_sections->{serverflags}) if defined $self->_sections->{serverflags}; + $str .= $self->purify($self->_sections->{serverlayout}) if defined $self->_sections->{serverlayout}; + $str .= $self->purify($self->_sections->{serverflags}) if defined $self->_sections->{serverflags}; if ($self->_sections->{inputdevices}) { @devices = @{$self->_sections->{inputdevices}}; @@ -192,45 +196,13 @@ sub print { return $str ."\n"; } -sub save { - my $self = shift; - my $filename = shift; - - $filename = $self->DEFAULT_CONFIG_FILE if not defined $filename; - - open XCONF, "> $filename"; - print XCONF $self->print; - close XCONF; -} - - -# Internal methods -sub _add_to_placeholder { - my $self = shift; - my $str = shift; - my $placeholder = shift; - my $replacement = shift; - - $str =~ s/(→$placeholder←)/$replacement\n $1/; - - return $str; -} - sub _section_add_option { my $self = shift; my $str = shift; my $optname = shift; my $optval = shift; - $str = $self->_add_to_placeholder($str, "option", "Option \"$optname\" \"$optval\""); - return $str; -} - -# Called before printing each section, removes any leftover placeholders. -sub _purify { - my $self = shift; - my $str = shift; - $str =~ s/→\w+←//g; + $str = $self->add_to_placeholder($str, "option", "Option \"$optname\" \"$optval\""); return $str; } |