wok diff sane-backends/stuff/tazpanel/sane.cgi @ rev 18245
Add tazpanel-extra
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Fri Jul 31 23:33:17 2015 +0200 (2015-07-31) |
parents | 4ea96657834e |
children | a705d8e80b1c |
line diff
1.1 --- a/sane-backends/stuff/tazpanel/sane.cgi Sun Jul 26 17:30:32 2015 +0200 1.2 +++ b/sane-backends/stuff/tazpanel/sane.cgi Fri Jul 31 23:33:17 2015 +0200 1.3 @@ -37,11 +37,12 @@ 1.4 1.5 getgeometry() { 1.6 CMD="" 1.7 - for i in l t x y ; do 1.8 + ARGS="" 1.9 + for i in x y l t ; do 1.10 j=$(inrange $(xPOST geometry_$i) $(xPOST ${i}_min) $(xPOST ${i}_max)) 1.11 eval "geometry_$i=$j" 1.12 CMD="$CMD -$i $j" 1.13 -# convert -crop XxY+L+T -resize XxY 1.14 + ARGS="$ARGS $j" 1.15 done 1.16 for i in mode source contrast brightness ; do 1.17 [ "$(xPOST $i)" ] && CMD="$CMD --$i '$(xPOST $i)'" 1.18 @@ -55,10 +56,35 @@ 1.19 resolution=$(($resolution * 2)) 1.20 done 1.21 fi 1.22 + case "$(xPOST mode)" in 1.23 + *lack*|*ineart*) mode="-monochrome" ;; 1.24 + *ray*) mode="-colorspace gray" ;; 1.25 + *) mode="" ;; 1.26 + esac 1.27 [ -d tmp ] || ln -s /tmp tmp 1.28 case "$device" in 1.29 - fake*) echo "cat /usr/share/images/slitaz-background.jpg" ;; 1.30 - *) echo "scanimage -d '$(echo $device | sed 's/,.*//')' --resolution '$(inrange $resolution $(xPOST res_min) $(xPOST res_max))dpi'$CMD" 1.31 + fake*) f=/usr/share/images/slitaz-banner.png 1.32 + c="$(echo $ARGS $(identify $f | sed \ 1.33 + 's/.* \([0-9]*\)x.*/\1/') $(GET width) $(POST x_max) | awk ' 1.34 +function a(x) { return int(($x * $5)/ $7); } 1.35 +{ printf "%dx%d+%d+%d -resize %dx%d",a(1),a(2),a(3),a(4),$6,int(($2*$6)/$1)} 1.36 +')" 1.37 + cat <<EOT 1.38 +if convert -crop $c $mode $f /tmp/sane$$.png 2> /dev/null ; then 1.39 + cat /tmp/sane$$.png 1.40 + rm -f /tmp/sane$$.png 1.41 +else 1.42 + cat $f 1.43 +fi 1.44 +EOT 1.45 + ;; 1.46 + *) echo -n "scanimage -d '$(echo $device | sed 's/,.*//')' --resolution '$(inrange $resolution $(xPOST res_min) $(xPOST res_max))dpi'$CMD" 1.47 + if [ -z "$1" -a "$(which convert)" ]; then 1.48 + echo -n "> /tmp/sane$$.pnm ; convert -resize " 1.49 + echo $ARGS $(GET width) | awk '{ printf "%dx%d",$5,int(($2*$5)/$1)}' 1.50 + echo -n " /tmp/sane$$.pnm /tmp/sane$$.png ;" 1.51 + echo -n "cat /tmp/sane$$.png ; rm -f /tmp/sane$$.pn?" 1.52 + fi 1.53 esac 1.54 } 1.55 1.56 @@ -151,20 +177,31 @@ 1.57 xhtml_header 1.58 [ -n "$error" ] && msg warn "$error" 1.59 [ -n "$info" ] && msg tip "$info" 1.60 -[ "$(which convert 2> /dev/null)" ] || 1.61 -msg tip "$(_ "You should install %s to preview images." \ 1.62 - "<a href=\"/user/pkgs.cgi?info=imagemagick\">imagemagick</a>")" 1.63 if [ -z "$device" ]; then 1.64 - [ -s sane-fake.log ] && all="$(sed 's/|/\n/g' sane-fake.log)" || 1.65 - all="$(scanimage -f '%d,%v %m|' | sed 's/|/\n/g')" 1.66 + all="$(scanimage -f '%d,%v %m|'|cat - sane-fake.log|sed 's/|/\n/g')" 1.67 case "$(echo "$all" | wc -l)" in 1.68 1) if [ -z "$all" ]; then 1.69 - msg warn 'No scanner found' 1.70 + msg warn "$(_ "No scanner found")" 1.71 + msg tip "$(_ "You can test this GUI with ")\ 1.72 +<a href=\"/user/pkgs.cgi?info=fake-sane\">fake-sane</a>" 1.73 xhtml_footer 1.74 exit 0 1.75 fi 1.76 device="${all%|}" ;; 1.77 - *) cat <<EOT 1.78 + *) 1.79 + suggested="" 1.80 + while read exe pkg msg; do 1.81 + [ "$(which $exe 2> /dev/null)" ] && continue 1.82 + suggested="$suggested 1.83 +<li><a href=\"/user/pkgs.cgi?info=$pkg\">$pkg</a> $msg</li>" 1.84 + done <<EOT 1.85 +convert imagemagick $(_ "to preview images and support more image formats") 1.86 +gocr gocr $(_ "a basic optical character recognition") 1.87 +tesseract tesseract-ocr $(_ "a better optical character recognition") 1.88 +EOT 1.89 + [ "$suggested" ] && 1.90 + msg tip "$(_ "You may need to install:") <ol>$suggested</ol>" 1.91 + cat <<EOT 1.92 <section> 1.93 <header> 1.94 <form name="scanner" method="post"> 1.95 @@ -190,7 +227,7 @@ 1.96 <script language="JavaScript" type="text/javascript"> 1.97 <!-- 1.98 function new_width() { 1.99 - document.parameters.action = "?width="+document.width 1.100 + document.parameters.action = "?width="+(document.width-30) 1.101 } 1.102 1.103 window.onresize = new_width 1.104 @@ -202,7 +239,7 @@ 1.105 $(echo $device | sed 's/.*,//') 1.106 <div class="float-right"> 1.107 <button name="scan" data-icon="start">$(_ "Scan")</button> 1.108 - <button name="reset" data-icon="stop">$(_ "Reset")</button> 1.109 + <button name="reset" data-icon="refresh">$(_ "Reset")</button> 1.110 <button name="preview" data-icon="view">$(_ "Preview")</button> 1.111 </div> 1.112 </header> 1.113 @@ -256,7 +293,8 @@ 1.114 } 1.115 ')" 1.116 fi 1.117 -output="$(echo "$params" | while read name def min max ; do 1.118 +output="$(n=$(echo "$params" | wc -l); echo "$params" | \ 1.119 +while read name def min max ; do 1.120 name="${name##*-}" 1.121 def="${def//=/ }" 1.122 if [ "$min" == "enum" ]; then 1.123 @@ -283,7 +321,7 @@ 1.124 [ "$(xPOST $name)" ] && def=$(xPOST $name) 1.125 [ $def -lt $min ] && def=$min 1.126 [ $def -gt $max ] && def=$max 1.127 - f="$(_ "$name")<input name=\"$name\" value=\"$def\"" 1.128 + f="$(_ "$name") <input name=\"$name\" value=\"$def\"" 1.129 u="" 1.130 case "$name" in 1.131 x|y|l|t) cat <<EOT 1.132 @@ -304,8 +342,6 @@ 1.133 x Width width $max 1.134 y Height height $max 1.135 EOT 1.136 - [ "$newline" ] || echo "</tr><tr>" 1.137 - newline=$name 1.138 esac 1.139 [ "$name" == "resolution" ] && f="$f onchange=showGeometry()" 1.140 echo "<td>$f type=\"text\" title=\"$min .. $max\" size=4 maxlength=4>$u" 1.141 @@ -320,6 +356,10 @@ 1.142 EOT 1.143 esac 1.144 echo "</td>" 1.145 + n=$(($n - 2)) 1.146 + case "$n" in 1.147 + 1|2) echo "</tr><tr>" 1.148 + esac 1.149 done)" 1.150 echo "$output" | sed '/^:/d' 1.151