diff options
Diffstat (limited to 'perl-install/printer')
-rw-r--r-- | perl-install/printer/cups.pm | 9 | ||||
-rw-r--r-- | perl-install/printer/main.pm | 13 | ||||
-rw-r--r-- | perl-install/printer/printerdrake.pm | 27 |
3 files changed, 45 insertions, 4 deletions
diff --git a/perl-install/printer/cups.pm b/perl-install/printer/cups.pm index 79ca291b3..64b0df045 100644 --- a/perl-install/printer/cups.pm +++ b/perl-install/printer/cups.pm @@ -133,4 +133,13 @@ sub get_remote_queues { } lpstat_v(); } +sub queue_enabled { + my ($queue) = @_; + 0 != grep { + /\b$queue\b.*\benabled\b/i + } run_program::rooted_get_stdout($::prefix, 'lpstat', '-p', $queue); +} + + + 1; diff --git a/perl-install/printer/main.pm b/perl-install/printer/main.pm index b7cebdc6c..185c17f8b 100644 --- a/perl-install/printer/main.pm +++ b/perl-install/printer/main.pm @@ -1854,7 +1854,7 @@ sub configure_queue($) { } # Make sure that queue is active - if ($printer->{SPOOLER} ne "pdq") { + if ($printer->{NEW} && ($printer->{SPOOLER} ne "pdq")) { run_program::rooted($::prefix, "foomatic-printjob", "-s", $printer->{currentqueue}{spooler}, "-C", "up", $printer->{currentqueue}{queue}); @@ -1912,6 +1912,17 @@ sub configure_queue($) { return 1; } +sub enable_disable_queue { + my ($printer, $queue, $state) = @_; + + if (($printer->{SPOOLER} ne "pdq") && + ($printer->{SPOOLER} ne "rcups")) { + run_program::rooted($::prefix, "foomatic-printjob", + "-s", $printer->{SPOOLER}, + "-C", ($state ? "start" : "stop"), $queue); + } +} + sub remove_queue($$) { my ($printer, $queue) = @_; run_program::rooted($::prefix, "foomatic-configure", "-R", "-q", diff --git a/perl-install/printer/printerdrake.pm b/perl-install/printer/printerdrake.pm index 3cdeb5dfe..da2904195 100644 --- a/perl-install/printer/printerdrake.pm +++ b/perl-install/printer/printerdrake.pm @@ -4674,14 +4674,17 @@ sub edit_printer { if ($in->ask_from_( { title => N("Modify printer configuration"), messages => - N("Printer %s + N("Printer %s%s What do you want to modify on this printer?", - $infoline), + $infoline, + if_(($printer->{SPOOLER} =~ /cups/) && + !printer::cups::queue_enabled($queue), + "\n" . N("This printer is disabled"))), cancel => N("Close"), ok => N("Do it!") }, [ { val => \$modify, format => \&translate, - type => 'list', + type => 'list', separator => '|', list => [ ($printer->{configured}{$queue} ? (N("Printer connection type"), N("Printer name, description, location"), @@ -4694,6 +4697,14 @@ What do you want to modify on this printer?", N("Printer options"))) : ()), if_($queue ne $printer->{DEFAULT}, N("Set this printer as the default")), + if_(($printer->{SPOOLER} ne "pdq") && + $printer->{configured}{$queue}, + if_(($printer->{SPOOLER} !~ /cups/) || + !printer::cups::queue_enabled($queue), + N("Enable Printer")), + if_(($printer->{SPOOLER} !~ /cups/) || + printer::cups::queue_enabled($queue), + N("Disable Printer"))), N("Print test pages"), N("Learn how to use this printer"), if_($printer->{configured}{$queue}, N("Remove printer")) ] } ])) { @@ -4779,6 +4790,16 @@ What do you want to modify on this printer?", # disappear if the printer is the default, so go back to the # default entry $modify = N("Printer options"); + } elsif ($modify eq N("Enable Printer")) { + printer::main::enable_disable_queue($printer, $queue, 1) && + $in->ask_warn(N("Enable Printer"), + N("Printer \"%s\" is now enabled.", + $queue)); + } elsif ($modify eq N("Disable Printer")) { + printer::main::enable_disable_queue($printer, $queue, 0) && + $in->ask_warn(N("Disable Printer"), + N("Printer \"%s\" is now disabled.", + $queue)); } elsif ($modify eq N("Print test pages")) { print_testpages($printer, $in, $upNetwork); } elsif ($modify eq N("Learn how to use this printer")) { |