summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/printer/printerdrake.pm106
1 files changed, 66 insertions, 40 deletions
diff --git a/perl-install/printer/printerdrake.pm b/perl-install/printer/printerdrake.pm
index a03111d90..8930f0cf7 100644
--- a/perl-install/printer/printerdrake.pm
+++ b/perl-install/printer/printerdrake.pm
@@ -714,22 +714,24 @@ sub configure_new_printers {
Printerdrake could not determine which model your printer %s is. Please choose the correct model from the list.", $info) . " " .
N("If your printer is not listed, choose a compatible (see printer manual) or a similar one."), '|',
[ keys %printer::main::thedb ], $printer->{DBENTRY}) or next;
- # Rename the queue according to the chosen model
- $queue = $printer->{DBENTRY};
- $queue =~ s/\|/ /g;
- $printer->{currentqueue}{desc} = $queue;
- $queue =~ s/[\s\(\),]//g;
- # Append a number if the queue name already exists
- if ($printer->{configured}{$queue}) {
- $queue =~ s/(\d)$/$1_/;
- my $i = 1;
- while ($printer->{configured}{"$queue$i"}) {
- $i ++;
+ if ($unknown) {
+ # Rename the queue according to the chosen model
+ $queue = $printer->{DBENTRY};
+ $queue =~ s/\|/ /g;
+ $printer->{currentqueue}{desc} = $queue;
+ $queue =~ s/[\s\(\),]//g;
+ # Append a number if the queue name already exists
+ if ($printer->{configured}{$queue}) {
+ $queue =~ s/(\d)$/$1_/;
+ my $i = 1;
+ while ($printer->{configured}{"$queue$i"}) {
+ $i ++;
+ }
+ $queue .= $i;
}
- $queue .= $i;
+ $printer->{currentqueue}{queue} = $queue;
+ $printer->{QUEUE} = $printer->{currentqueue}{queue};
}
- $printer->{currentqueue}{queue} = $queue;
- $printer->{QUEUE} = $printer->{currentqueue}{queue};
# Restore wait message
$_w = $in->wait_message(N("Printerdrake"),
N("Configuring printer \"%s\"...",
@@ -753,6 +755,7 @@ Printerdrake could not determine which model your printer %s is. Please choose t
$printer->{complete} = 0;
}
# Configure the current printer queues in applications
+ undef $_w;
$_w =
$in->wait_message(N("Printerdrake"),
N("Configuring applications..."));
@@ -2012,40 +2015,63 @@ sub setup_common {
# If make and model match exactly, we have found the correct
# entry and we can stop searching human-readable makes and
# models
- if ($dbmakemodel eq $descr) {
+ if (lc($dbmakemodel) eq lc($descr)) {
$printer->{DBENTRY} = $entry;
$matchlength = 100;
next;
}
- my $searchterm = $descr;
- my $lsearchterm = length($searchterm);
- $searchterm =~ s/([\\\/\(\)\[\]\|\.\$\@\%\*\?])/\\$1/g;
- if ($lsearchterm > $matchlength &&
- $dbmakemodel =~ m!$searchterm!i) {
- $matchlength = $lsearchterm;
- $printer->{DBENTRY} = $entry;
+ # Matching a part of the human-readable makes and models
+ # should only be done id the search term is not the name of
+ # an old model, otherwise the newest, not yet listed models
+ # match with the oldest model of the manufavturer (as the
+ # Epson Stylus Photo 900 with the original Epson Stylus Photo)
+ my @badsearchterms =
+ ("HP|DeskJet",
+ "HP|LaserJet",
+ "HP|DesignJet",
+ "HP|OfficeJet",
+ "EPSON|Stylus",
+ "EPSON|Stylus Color",
+ "EPSON|Stylus Photo",
+ "EPSON|Stylus Pro",
+ "XEROX|WorkCentre",
+ "XEROX|DocuPrint");
+ if (!member($descr, @badsearchterms)) {
+ my $searchterm = $descr;
+ my $lsearchterm = length($searchterm);
+ $searchterm =~ s/([\\\/\(\)\[\]\|\.\$\@\%\*\?])/\\$1/g;
+ if ($lsearchterm > $matchlength &&
+ $dbmakemodel =~ m!$searchterm!i) {
+ $matchlength = $lsearchterm;
+ $printer->{DBENTRY} = $entry;
+ }
}
- $searchterm = $dbmakemodel;
- $lsearchterm = length($searchterm);
- $searchterm =~ s/([\\\/\(\)\[\]\|\.\$\@\%\*\?])/\\$1/g;
- if ($lsearchterm > $matchlength &&
- $descr =~ m!$searchterm!i) {
- $matchlength = $lsearchterm;
- $printer->{DBENTRY} = $entry;
+ if (!member($dbmakemodel, @badsearchterms)) {
+ my $searchterm = $dbmakemodel;
+ my $lsearchterm = length($searchterm);
+ $searchterm =~ s/([\\\/\(\)\[\]\|\.\$\@\%\*\?])/\\$1/g;
+ if ($lsearchterm > $matchlength &&
+ $descr =~ m!$searchterm!i) {
+ $matchlength = $lsearchterm;
+ $printer->{DBENTRY} = $entry;
+ }
}
}
- # No matching printer found, try a best match as last mean
- $printer->{DBENTRY} ||=
- bestMatchSentence($descr, keys %printer::main::thedb);
- # If the manufacturer was not guessed correctly, discard the
- # guess.
- $printer->{DBENTRY} =~ /^([^\|]+)\|/;
- my $guessedmake = lc($1);
- if ($guessedmake !~ /Generic/i &&
- $descr !~ /$guessedmake/i &&
- ($guessedmake ne "hp" ||
- $descr !~ /Hewlett[\s-]+Packard/i))
+ # No matching printer found, try a best match as last mean (not
+ # when generating queues non-interactively)
+ if (!$printer->{noninteractive}) {
+ $printer->{DBENTRY} ||=
+ bestMatchSentence($descr, keys %printer::main::thedb);
+ # If the manufacturer was not guessed correctly, discard the
+ # guess.
+ $printer->{DBENTRY} =~ /^([^\|]+)\|/;
+ my $guessedmake = lc($1);
+ if ($guessedmake !~ /Generic/i &&
+ $descr !~ /$guessedmake/i &&
+ ($guessedmake ne "hp" ||
+ $descr !~ /Hewlett[\s-]+Packard/i))
{ $printer->{DBENTRY} = "" };
+ }
}
#- Pre-fill the "Description" field with the printer's model name