diff options
Diffstat (limited to 'perl-install/install_steps_interactive.pm')
-rw-r--r-- | perl-install/install_steps_interactive.pm | 196 |
1 files changed, 2 insertions, 194 deletions
diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm index 6e2555cf2..4b6d3dc74 100644 --- a/perl-install/install_steps_interactive.pm +++ b/perl-install/install_steps_interactive.pm @@ -32,7 +32,7 @@ use keyboard; use fs; use modparm; use log; -use printer; +use printerdrake; use lilo; #-###################################################################################### #- In/Out Steps Functions @@ -426,201 +426,9 @@ sub printerConfig($) { $o->{printer}{want}); return if !$o->{printer}{want}; - unless (($::testing)) { - printer::set_prefix($o->{prefix}); - install_any::pkg_install($o, 'rhs-printfilters'); - } - printer::read_printer_db(); - - $o->{printer}{complete} = 0; - if ($::expert) { - $o->ask_from_entries_ref(_("Local Printer Options"), - _("Every print queue (which print jobs are directed to) needs a -name (often lp) and a spool directory associated with it. What -name and directory should be used for this queue?"), - [_("Name of queue:"), _("Spool directory:")], - [\$o->{printer}{QUEUE}, \$o->{printer}{SPOOLDIR}], - changed => sub - { - $o->{printer}{SPOOLDIR} - = "$printer::spooldir/$o->{printer}{QUEUE}" unless $_[0]; - }, - ); - } - - $o->{printer}{str_type} = - $o->ask_from_list_(_("Select Printer Connection"), - _("How is the printer connected?"), - [ keys %printer::printer_type ], - ${$o->{printer}}{str_type}, - ); - $o->{printer}{TYPE} = $printer::printer_type{$o->{printer}{str_type}}; - - if ($o->{printer}{TYPE} eq "LOCAL") { - { - my $w = $o->wait_message(_("Test ports"), _("Detecting devices...")); - eval { modules::load("parport_pc"); modules::load("parport_probe"); modules::load("lp"); }; - } - - my @port = (); - my @parport = detect_devices::whatPrinter(); - eval { modules::unload("parport_probe") }; - my $str; - if ($parport[0]) { - my $port = $parport[0]{port}; - $o->{printer}{DEVICE} = $port; - my $descr = common::bestMatchSentence2($parport[0]{val}{DESCRIPTION}, @printer::entry_db_description); - $o->{printer}{DBENTRY} = $printer::descr_to_db{$descr}; - $str = _("A printer, model \"%s\", has been detected on ", $parport[0]{val}{DESCRIPTION}) . $port; - @port = map { $_->{port}} @parport; - } else { - @port = detect_devices::whatPrinterPort(); - } - $o->{printer}{DEVICE} = $port[0] if $port[0]; - - return if !$o->ask_from_entries_ref(_("Local Printer Device"), - _("What device is your printer connected to \n(note that /dev/lp0 is equivalent to LPT1:)?\n") . $str , - [_("Printer Device:")], - [{val => \$o->{printer}{DEVICE}, list => \@port }], - ); - } elsif ($o->{printer}{TYPE} eq "REMOTE") { - return if !$o->ask_from_entries_ref(_("Remote lpd Printer Options"), - _("To use a remote lpd print queue, you need to supply -the hostname of the printer server and the queue name -on that server which jobs should be placed in."), - [_("Remote hostname:"), _("Remote queue")], - [\$o->{printer}{REMOTEHOST}, \$o->{printer}{REMOTEQUEUE}], - ); - } elsif ($o->{printer}{TYPE} eq "SMB") { - return if !$o->ask_from_entries_ref( - _("SMB (Windows 9x/NT) Printer Options"), - _("To print to a SMB printer, you need to provide the -SMB host name (Note! It may be different from its -TCP/IP hostname!) and possibly the IP address of the print server, as -well as the share name for the printer you wish to access and any -applicable user name, password, and workgroup information."), - [_("SMB server host:"), _("SMB server IP:"), - _("Share name:"), _("User name:"), _("Password:"), - _("Workgroup:")], - [\$o->{printer}{SMBHOST}, \$o->{printer}{SMBHOSTIP}, - \$o->{printer}{SMBSHARE}, \$o->{printer}{SMBUSER}, - {val => \$o->{printer}{SMBPASSWD}, hidden => 1}, \$o->{printer}{SMBWORKGROUP} - ], - complete => sub { - unless (network::is_ip($o->{printer}{SMBHOSTIP})) { - $o->ask_warn('', _("IP address should be in format 1.2.3.4")); - return (1,1); - } - return 0; - }, - ); - install_any::pkg_install($o, 'samba'); - } elsif ($o->{printer}{TYPE} eq "NCP") { - return if !$o->ask_from_entries_ref(_("NetWare Printer Options"), - _("To print to a NetWare printer, you need to provide the -NetWare print server name (Note! it may be different from its -TCP/IP hostname!) as well as the print queue name for the printer you -wish to access and any applicable user name and password."), - [_("Printer Server:"), _("Print Queue Name:"), - _("User name:"), _("Password:")], - [\$o->{printer}{NCPHOST}, \$o->{printer}{NCPQUEUE}, - \$o->{printer}{NCPUSER}, {val => \$o->{printer}{NCPPASSWD}, hidden => 1}], - ); - install_any::pkg_install($o, 'ncpfs'); - } - - my $action; - my @action = qw(ascii ps both done); - my %action = ( - ascii => _("Yes, print ASCII test page"), - ps => _("Yes, print PostScript test page"), - both => _("Yes, print both test pages"), - done => _("No"), - ); - - do { - $o->{printer}{DBENTRY} = - $printer::descr_to_db{ - $o->ask_from_list_(_("Configure Printer"), - _("What type of printer do you have?"), - [@printer::entry_db_description], - $printer::db_to_descr{$o->{printer}{DBENTRY}}, - ) - }; - - my %db_entry = %{$printer::thedb{$o->{printer}{DBENTRY}}}; - - my @list_res = @{$db_entry{RESOLUTION} || []}; - my @res = map { "$_->{XDPI}x$_->{YDPI}" } @list_res; - my @list_col = @{$db_entry{BITSPERPIXEL} || []}; - my @col = map { "$_->{DEPTH} $_->{DESCR}" } @list_col; - my %col_to_depth = map { ("$_->{DEPTH} $_->{DESCR}", $_->{DEPTH}) } @list_col; - my %depth_to_col = reverse %col_to_depth; - my $is_uniprint = $db_entry{GSDRIVER} eq "uniprint"; - - $o->{printer}{RESOLUTION} = "Default" unless @list_res; - $o->{printer}{CRLF} = $db_entry{DESCR} =~ /HP/; - $o->{printer}{BITSPERPIXEL} = "Default" unless @list_col; - - $o->{printer}{BITSPERPIXEL} = $depth_to_col{$o->{printer}{BITSPERPIXEL}} || $o->{printer}{BITSPERPIXEL}; #- translate. - - $o->ask_from_entries_refH('', _("Printer options"), [ -_("Paper Size") => { val => \$o->{printer}{PAPERSIZE}, type => 'list', , not_edit => !$::expert, list => \@printer::papersize_type }, -_("Eject page after job?") => { val => \$o->{printer}{AUTOSENDEOF}, type => 'bool' }, -@list_res > 1 ? ( -_("Resolution") => { val => \$o->{printer}{RESOLUTION}, type => 'list', , not_edit => !$::expert, list => \@res } ) : (), -_("Fix stair-stepping text?") => { val => \$o->{printer}{CRLF}, type => "bool" }, -@list_col > 1 ? ( -$is_uniprint ? ( -_("Uniprint driver options") => { val => \$o->{printer}{BITSPERPIXEL}, type => 'list', , not_edit => !$::expert, list => \@col } ) : ( -_("Color depth options") => { val => \$o->{printer}{BITSPERPIXEL}, type => 'list', , not_edit => !$::expert, list => \@col } ), ) : () -]);; - - $o->{printer}{BITSPERPIXEL} = $col_to_depth{$o->{printer}{BITSPERPIXEL}} || $o->{printer}{BITSPERPIXEL}; #- translate. - - $o->{printer}{complete} = 1; - install_steps::printerConfig($o); - $o->{printer}{complete} = 0; - - $action = ${{reverse %action}}{$o->ask_from_list('', _("Do you want to test printing?"), - [ map { $action{$_} } @action ], $action{'done'})}; - - my $pidlpd; - my @testpages; - push @testpages, "/usr/lib/rhs/rhs-printfilters/testpage.asc" - if $action eq "ascii" || $action eq "both"; - push @testpages, "/usr/lib/rhs/rhs-printfilters/testpage". ($o->{printer}{PAPERSIZE} eq 'a4' && '-a4') .".ps" - if $action eq "ps" || $action eq "both"; - - if (@testpages) { - my $w = $o->wait_message('', _(@testpages > 1 ? "Printing tests pages..." : "Printing test page...")); - - #- restart lpd with blank spool queue. - foreach (("/var/spool/lpd/$o->{printer}{QUEUE}/lock", "/var/spool/lpd/lpd.lock")) { - $pidlpd = (cat_("$o->{prefix}$_"))[0]; kill 'TERM', $pidlpd if $pidlpd; - unlink "$o->{prefix}$_"; - } - run_program::rooted($o->{prefix}, "lprm", "-P$o->{printer}{QUEUE}", "-"); sleep 1; - run_program::rooted($o->{prefix}, "lpd"); sleep 1; - - run_program::rooted($o->{prefix}, "lpr", "-P$o->{printer}{QUEUE}", $_) foreach @testpages; - - sleep 3; #- allow lpr to send pages. - local *F; open F, "chroot $o->{prefix} /usr/bin/lpq |"; - my @lpq_output = grep { !/^no entries/ && !(/^Rank\s+Owner/ .. /^\s*$/) } <F>; - - undef $w; #- erase wait message window. - if (@lpq_output) { - $action = $o->ask_yesorno('', _("Is this correct? Printing status:\n%s", "@lpq_output"), 1) ? 'done' : 'change'; - } else { - $action = $o->ask_yesorno('', _("Is this correct?"), 1) ? 'done' : 'change'; - } - } - } while ($action ne 'done'); - $o->{printer}{complete} = 1; + printerdrake::main($o->{prefix}, $o->{printer}, $o, sub { install_any::pkg_install($o, $_[0]) }); } - #------------------------------------------------------------------------------ sub setRootPassword($) { my ($o, $clicked) = @_; |