summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTill Kamppeter <tkamppeter@mandriva.com>2003-02-23 11:44:05 +0000
committerTill Kamppeter <tkamppeter@mandriva.com>2003-02-23 11:44:05 +0000
commit49048e3034b5eb9193ad5f3a3aaa56c99f6b9c39 (patch)
treef768036f9f473a3f1ec6f1e7acd4f5f6118a980e
parent6ef45c26924167a3609b4aa56234f0d4d7a687ed (diff)
downloaddrakx-49048e3034b5eb9193ad5f3a3aaa56c99f6b9c39.tar
drakx-49048e3034b5eb9193ad5f3a3aaa56c99f6b9c39.tar.gz
drakx-49048e3034b5eb9193ad5f3a3aaa56c99f6b9c39.tar.bz2
drakx-49048e3034b5eb9193ad5f3a3aaa56c99f6b9c39.tar.xz
drakx-49048e3034b5eb9193ad5f3a3aaa56c99f6b9c39.zip
Fixed bug of printerdrake loosing the printer queue info during the
preparation of the "Summary" window (only if there are local printers). No the printer queue entries should not be empty when clicking on "Configure" in the "Printer" part of the "Summary" window.
-rw-r--r--perl-install/install_steps_interactive.pm23
-rw-r--r--perl-install/printer/printerdrake.pm131
2 files changed, 99 insertions, 55 deletions
diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm
index 499d81062..80384370b 100644
--- a/perl-install/install_steps_interactive.pm
+++ b/perl-install/install_steps_interactive.pm
@@ -1045,6 +1045,7 @@ sub summary {
$o->summary_prompt(\@l, $check_complete);
+ $o->cleanupPrinter();
install_steps::configureTimezone($o) if !$timezone_manually_set; #- do not forget it.
}
@@ -1056,15 +1057,18 @@ sub configurePrinter {
require printer::printerdrake;
require printer::detect;
- #- try to determine if a question should be asked to the user or
- #- if he is autorized to configure multiple queues.
- my $ask_multiple_printer = $clicked ? 2 : $o && printer::detect::local_detect();
- $ask_multiple_printer-- or return;
+ #- $clicked = 0: Preparation of "Summary" step, check whether there are
+ #- are local printers. Continue for automatically setting up print
+ #- queues if so, return otherwise
+ #- $clicked = 1: User clicked "Configure" button in "Summary", enter
+ #- Printerdrake for manual configuration
+ my $go_on = $clicked ? 2 : $o && printer::detect::local_detect();
+ $go_on-- or return;
#- install packages needed for printer::getinfo()
$::testing or $o->do_pkgs->install('foomatic-db-engine');
- #- take default configuration, this include choosing the right system
+ #- take default configuration, this include choosing the right spooler
#- currently used by the system.
my $printer = $o->{printer} ||= {};
eval { add2hash($printer, printer::main::getinfo($o->{prefix})) };
@@ -1074,6 +1078,15 @@ sub configurePrinter {
}
+sub cleanupPrinter {
+ my ($o) = @_;
+ #- Clean up $o->{printer} so that the records for an auto-installation
+ #- contain only the important stuff
+ return if !defined($o->{printer});
+ require printer::printerdrake;
+ printer::printerdrake::final_cleanup($o->{printer});
+}
+
#------------------------------------------------------------------------------
sub setRootPassword {
my ($o, $clicked) = @_;
diff --git a/perl-install/printer/printerdrake.pm b/perl-install/printer/printerdrake.pm
index 061a14c4d..3a28c4716 100644
--- a/perl-install/printer/printerdrake.pm
+++ b/perl-install/printer/printerdrake.pm
@@ -3442,64 +3442,80 @@ sub wizard_close {
#- Program entry point for configuration of the printing system.
sub main {
- my ($printer, $in, $normal_run, $upNetwork) = @_;
+ my ($printer, $in, $install_step, $upNetwork) = @_;
+ # $install_step is only made use of during the installation. It is
+ # 0 when this function is called during the preparation of the "Summary"
+ # screen and 1 when the user clicks on "Configure" on the "Summary"
+ # screen
+
+ # Initialization of Printerdrake and queue auto-installation:
+ # During installation we do this step only once, when we prepare
+ # the "Summary" screen in case of detected local printers or when
+ # the "Configure" button in the "Printer" entry of the "Summary"
+ # screen is clicked. If the button is clicked after an automatic
+ # installation of local printers or if it is clicked for the
+ # second time, these steps are not repeated.
+ if (!$::isInstall || !$::printerdrake_initialized) {
+ # Save the user mode, so that the same one is used on the next start
+ # of Printerdrake
+ printer::main::set_usermode($::expert);
+
+ # printerdrake does not work without foomatic, and for more
+ # convenience we install some more stuff
+ {
+ my $_w = $in->wait_message(N("Printerdrake"),
+ N("Checking installed software..."));
+ if (!$::testing &&
+ !files_exist(qw(/usr/bin/foomatic-configure
+ /usr/lib/perl5/vendor_perl/5.8.0/Foomatic/DB.pm
+ /usr/bin/foomatic-rip
+ /usr/share/foomatic/db/source/driver/ljet4.xml
+ /usr/bin/escputil
+ /usr/share/printer-testpages/testprint.ps
+ /usr/bin/nmap
+ /usr/bin/scli
+ ),
+ if_(files_exist("/usr/bin/gimp"),
+ "/usr/lib/gimp/1.2/plug-ins/print")
+ )) {
+ $in->do_pkgs->install('foomatic-db-engine', 'foomatic-filters',
+ 'foomatic-db', 'printer-utils',
+ 'printer-testpages', 'nmap', 'scli',
+ if_($in->do_pkgs->is_installed('gimp'),
+ 'gimpprint'));
+ }
- # Save the user mode, so that the same one is used on the next start
- # of Printerdrake
- printer::main::set_usermode($::expert);
+ # only experts should be asked for the spooler
+ $printer->{SPOOLER} ||= 'cups' if !$::expert;
- # Default printer name, we do not use "lp" so that one can switch the
- # default printer under LPD without needing to rename another printer.
- # Under LPD the alias "lp" will be given to the default printer.
- my $defaultprname = N("Printer");
+ }
- # printerdrake does not work without foomatic, and for more convenience
- # we install some more stuff
- {
- my $_w = $in->wait_message(N("Printerdrake"),
- N("Checking installed software..."));
- if (!$::testing &&
- !files_exist(qw(/usr/bin/foomatic-configure
- /usr/lib/perl5/vendor_perl/5.8.0/Foomatic/DB.pm
- /usr/bin/foomatic-rip
- /usr/share/foomatic/db/source/driver/ljet4.xml
- /usr/bin/escputil
- /usr/share/printer-testpages/testprint.ps
- /usr/bin/nmap
- /usr/bin/scli
- ),
- if_(files_exist("/usr/bin/gimp"),
- "/usr/lib/gimp/1.2/plug-ins/print")
- )) {
- $in->do_pkgs->install('foomatic-db-engine', 'foomatic-filters',
- 'foomatic-db', 'printer-utils',
- 'printer-testpages', 'nmap', 'scli',
- if_($in->do_pkgs->is_installed('gimp'),
- 'gimpprint'));
+ # If we have chosen a spooler, install it and mark it as default
+ # spooler
+ if ($printer->{SPOOLER}) {
+ return unless install_spooler($printer, $in, $upNetwork);
+ printer::default::set_spooler($printer);
}
- # only experts should be asked for the spooler
- $printer->{SPOOLER} ||= 'cups' if !$::expert;
+ # Get the default printer (Done after non-interactive queue setup,
+ # so that these queues are taken into account)
+ assure_default_printer_is_set($printer, $in);
- }
+ # Non-interactive setup of newly detected printers (This is done
+ # only when not in expert mode, so we always have a spooler defined
+ # here)
+ configure_new_printers($printer, $in, $upNetwork);
- # If we have chosen a spooler, install it and mark it as default spooler
- if ($printer->{SPOOLER}) {
- return unless install_spooler($printer, $in, $upNetwork);
- printer::default::set_spooler($printer);
+ # Mark this part as done, it should not be done a second time.
+ if ($::isInstall) {
+ $::printerdrake_initialized = 1;
+ }
}
- # Get the default printer (Done after non-interactive queue setup, so
- # that these queues are taken into account)
- assure_default_printer_is_set($printer, $in);
-
- # Non-interactive setup of newly detected printers (This is done only
- # when not in expert mode, so we always have a spooler defined here)
- configure_new_printers($printer, $in, $upNetwork);
-
- # For preparation of the "Summary" step of the installation all is done
- # now. We do not go into the main loop
- if ($normal_run) {
+ # Main loop: During installation we only enter it when the user has
+ # clicked on the "Configure" button in the "Summary" step. We do not
+ # call it during the preparation of the "Summary" screen.
+ if (!$::isInstall || ($install_step == 1)) {
# Ask for a spooler when none is defined yet
$printer->{SPOOLER} ||=
@@ -3511,6 +3527,12 @@ sub main {
$printer->{AUTODETECTNETWORK} = 1;
$printer->{AUTODETECTSMB} = 1;
+ # Default printer name, we do not use "lp" so that one can
+ # switch the default printer under LPD without needing to
+ # rename another printer. Under LPD the alias "lp" will be
+ # given to the default printer.
+ my $defaultprname = N("Printer");
+
# Control variables for the main loop
my ($menuchoice, $cursorpos, $queue, $newqueue, $editqueue) =
('', '::', $defaultprname, 0, 0);
@@ -4020,6 +4042,15 @@ What do you want to modify on this printer?",
$printer->{complete} = 0;
}
}
+ # In the installation we call the clean-up manually when we leave
+ # the "Summary" step
+ if (!$::isInstall) {
+ final_cleanup($printer);
+ }
+}
+
+sub final_cleanup {
+ my ($printer) = @_;
# Clean up the $printer data structure for auto-install log
foreach my $queue (keys %{$printer->{configured}}) {
foreach my $item (keys %{$printer->{configured}{$queue}}) {
@@ -4027,7 +4058,7 @@ What do you want to modify on this printer?",
}
delete($printer->{configured}{$queue}{queuedata}{menuentry});
}
- foreach (qw(Old_queue QUEUE TYPE str_type currentqueue DBENTRY ARGS complete OLD_CHOICE NEW MORETHANONE MANUALMODEL AUTODETECT AUTODETECTLOCAL AUTODETECTNETWORK AUTODETECTSMB))
+ foreach (qw(Old_queue OLD_QUEUE QUEUE TYPE str_type currentqueue DBENTRY ARGS complete OLD_CHOICE NEW MORETHANONE MANUALMODEL AUTODETECT AUTODETECTLOCAL AUTODETECTNETWORK AUTODETECTSMB noninteractive))
{ delete $printer->{$_} };
}