wok diff sane-backends/stuff/tazpanel/sane.cgi @ rev 22920

gtk+3 with cups disabled
author Hans-G?nter Theisgen
date Mon Feb 24 16:38:08 2020 +0100 (2020-02-24)
parents 808a9e7827f1
children
line diff
     1.1 --- a/sane-backends/stuff/tazpanel/sane.cgi	Mon Jul 01 17:09:09 2019 +0200
     1.2 +++ b/sane-backends/stuff/tazpanel/sane.cgi	Mon Feb 24 16:38:08 2020 +0100
     1.3 @@ -287,15 +287,23 @@
     1.4  cat "$(echo $device | sed 's/,.*//').log" 2> /dev/null ||
     1.5  scanimage --help -d "$(echo $device | sed 's/,.*//')"
     1.6  } | dos2unix | sed 's|\[=| [|;s/||/|/g' | awk '
     1.7 +function unit(s)
     1.8 +{
     1.9 +	if (match(s,/[0-9]*mm$/) || match(s,/[0-9]*mm /)) u="mm"
    1.10 +	else if (match(s,/[0-9]*%$/) || match(s,/[0-9]*% /)) u="%"
    1.11 +	else if (match(s,/[0-9]*dpi$/) || match(s,/[0-9]*dpi /)) u="dpi"
    1.12 +	else u="none"
    1.13 +}
    1.14 +
    1.15  function minmax()
    1.16  {
    1.17  	inactive=1
    1.18  	if (match($2,"[0-9]")) {
    1.19  		i=$2; sub(/\.\..*/,"",i)
    1.20  		j=$2; sub(/.*\.\./,"",j)
    1.21 -		sub(/\..*/,"",j); sub(/[dm%].*/,"",j)
    1.22 +		unit(j); sub(/\..*/,"",j); sub(/[dm%].*/,"",j)
    1.23  		k=$0; sub(/.* \[/,"",k); sub(/\].*/,"",k)
    1.24 -		printf("\n%s",$1 " " int(k) " " int(i) " " int(j))
    1.25 +		printf("\n%s",$1 " " int(k) " " int(i) " " int(j) " " u)
    1.26  		inactive=0
    1.27  	}
    1.28  }
    1.29 @@ -306,12 +314,12 @@
    1.30  	inactive=1
    1.31  	if (index(i,"|")) {
    1.32  		sub(/^ *--*[a-z-]* */,"",i)
    1.33 -		sub(/\[\(/,"",i); sub(/\)\]/,"",i)
    1.34 +		sub(/\[\(/,"",i); sub(/\)\]/,"",i); unit(i)
    1.35  		sub(/dpi .*/,"",i); gsub(/ \[.*\].*/,"",i)
    1.36  		k=$0; sub(/.* \[/,"",k); sub(/\].*/,"",k)
    1.37  		gsub(/ /,"=",k)
    1.38  		gsub(/ /,"=",i)
    1.39 -		printf("\n%s",$1 " " k " enum " i)
    1.40 +		printf("\n%s",$1 " " k " enum " i " " u)
    1.41  		inactive=0
    1.42  	}
    1.43  	else minmax()
    1.44 @@ -321,23 +329,26 @@
    1.45  	if (/scanimage --help/) end=1
    1.46  	if (end != 0) next
    1.47  	if (/:$/) parse=0
    1.48 -	if (/Scan mode/ || /Mode/ || /Advanced/ || /Geometry/) parse=1
    1.49 +	if (/[Mm]ode/ || /[Aa]dvanced/ || /[Gg]eometry/) parse=1
    1.50 +	if (/brightness/ || /contrast/ || /orientation/) parse=1
    1.51  	if (parse != 1) next
    1.52  	if (/\[inactive\]/) { inactive=1; next }
    1.53 -	if (match("-l-t-x-y", $1)) minmax()
    1.54 +	if (/[0-9]\.\.[0-9]/) minmax()
    1.55  	else if (/^    --/) enum()
    1.56  	else if (!/:$/ && inactive == 0) printf(" %s",$0)
    1.57  } END { print "" }
    1.58  ' | sed 1d)"
    1.59  fi
    1.60  output="$(n=$(echo "$params" | wc -l); echo "$params" | \
    1.61 -while read name def min max help; do
    1.62 +while read name def min max unit help; do
    1.63  	name="${name#-}"
    1.64  	name="${name#-}"
    1.65  	name="${name//-/_}"
    1.66  	help="$(echo $help | sed 's|  | |g;s|"|\&#34|g')"
    1.67  	def="${def//=/ }"
    1.68  	max="${max//=/ }"
    1.69 +	[ "$unit" = "none" ] && unit=""
    1.70 +	[ "$name" ] || continue
    1.71  	if [ "$min" == "enum" ]; then
    1.72  		res_min=1000000
    1.73  		res_max=0
    1.74 @@ -357,13 +368,16 @@
    1.75  			fi
    1.76  			shift
    1.77  		done
    1.78 -		echo "</select>"
    1.79 +		echo "</select>&nbsp;$unit"
    1.80  	else
    1.81  		[ "$(xPOST $name)" ] && def=$(xPOST $name)
    1.82  		[ $def -lt $min ] && def=$min
    1.83  		[ $def -gt $max ] && def=$max
    1.84 -		f="<fieldset><legend>$(_ "$name")</legend><input type=\"range\" min=\"$min\" max=\"$max\" name=\"$name\" value=\"$def\""
    1.85 -		u=""
    1.86 +		[ "$idrange" ] || idrange=1
    1.87 +		f="<fieldset><legend>$(_ "$name")</legend>
    1.88 +<input type=\"range\" id=\"range$idrange\" min=\"$min\" max=\"$max\" 
    1.89 +name=\"$name\" value=\"$def\" onchange=\"updaterange(this)\""
    1.90 +		u="<div id=\"range$((idrange++))val\">$def${unit+&nbsp;$unit}</div>"
    1.91  		case "$name" in
    1.92  		x|y|l|t) cat <<EOT
    1.93  :${name}_max=$max
    1.94 @@ -374,7 +388,7 @@
    1.95  				[ "$name" == "$name2" ] || continue
    1.96  				[ "$(xPOST geometry_$name)" ] &&
    1.97  				val="$(xPOST geometry_$name)"
    1.98 -				f="<fieldset><legend>$(_ "$n2")</legend><input name=\"geometry_$name\" id=\"$id\" value=\"$val\""
    1.99 +				f="<fieldset><legend>$(_ "$n2")</legend><input type=\"text\" name=\"geometry_$name\" id=\"$id\" value=\"$val\""
   1.100  				u="&nbsp;mm"
   1.101  				break
   1.102  			done <<EOT
   1.103 @@ -385,7 +399,7 @@
   1.104  EOT
   1.105  		esac
   1.106  		[ "$name" == "resolution" ] && f="$f onchange=showGeometry()"
   1.107 -		echo "<td>$f type=\"text\" title=\"$min .. $max. $help\" size=5 maxlength=5>$u"
   1.108 +		echo "<td>$f title=\"$min .. $max. $help\" size=5 maxlength=5>$u"
   1.109  		res_min=$min
   1.110  		res_max=$max
   1.111  	fi
   1.112 @@ -393,10 +407,9 @@
   1.113  	resolution) cat <<EOT
   1.114  <input type="hidden" name="res_min" value="$res_min">
   1.115  <input type="hidden" name="res_max" value="$res_max">
   1.116 -&nbsp;dpi
   1.117  EOT
   1.118  	esac
   1.119 -	echo "</filedset></td>"
   1.120 +	echo "</fieldset></td>"
   1.121  	n=$(($n - 2))
   1.122  	case "$n" in
   1.123  	1|2) echo "</tr><tr>"
   1.124 @@ -430,6 +443,11 @@
   1.125      alert((Math.round(x * y / 100000)/10) + ' Mpixels\n' + x + 'x' + y);
   1.126    }
   1.127  }
   1.128 +
   1.129 +function updaterange(r) {
   1.130 +  var e=document.getElementById(r.id+"val")
   1.131 +  if (e) e.innerHTML=e.innerHTML.replace(/[0-9]*/,r.value)
   1.132 +}
   1.133  -->
   1.134  </script>
   1.135