emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/scanner 9665335 10/56: add a menu and configuration fun


From: Stefan Monnier
Subject: [elpa] externals/scanner 9665335 10/56: add a menu and configuration functions
Date: Fri, 10 Apr 2020 13:55:59 -0400 (EDT)

branch: externals/scanner
commit 96653355288b20cf5f8eceb21ad10a453a5b5889
Author: Raffael Stocker <address@hidden>
Commit: Raffael Stocker <address@hidden>

    add a menu and configuration functions
---
 scanner.el | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

diff --git a/scanner.el b/scanner.el
index 5fa1d96..f570155 100644
--- a/scanner.el
+++ b/scanner.el
@@ -136,6 +136,38 @@ If nil, auto-detection will be attempted."
   :type '(restricted-sexp :match-alternatives
                          (stringp 'nil)))
 
+(defvar scanner-menu
+  (let ((map (make-sparse-keymap)))
+    (define-key map [languages]
+      '(menu-item "Select languages" scanner-select-languages
+                 :key-sequence nil
+                 :help "Select languages for OCR."))
+    (define-key map [papersize]
+      '(menu-item "Select paper size" scanner-select-papersize
+                 :key-sequence nil
+                 :help "Select a paper size for document scanning."))
+    (define-key map [img-res]
+      '(menu-item "Set image resolution" scanner-set-image-resolution
+                 :key-sequence nil
+                 :help "Set the resolution for image scanning."))
+    (define-key map [doc-res]
+      '(menu-item "Set document resolution" scanner-set-document-resolution
+                 :key-sequence nil
+                 :help "Set the resolution for document scanning."))
+    (define-key map [seperator]
+      '(menu-item "--"))
+    (define-key map [image]
+      '(menu-item "Scan an image" scanner-scan-image
+                 :key-sequence nil))
+    (define-key map [document]
+      '(menu-item "Scan a document" scanner-scan-document
+                 :key-sequence nil))
+    map)
+  "The scanner menu map.")
+
+(define-key-after menu-bar-tools-menu [scanner]
+  (list 'menu-item "Scanner" scanner-menu))
+
 (defvar scanner--detected-devices
   nil
   "List of devices detected by SANE.
@@ -200,6 +232,37 @@ name, the device type, and the vendor and model names."
          (--filter (eql 3 (length it))
                    (mapcar (lambda (x) (split-string x "|")) scanners)))))
 
+(defun scanner-select-papersize ()
+  "Select the papersize for document scanning."
+  (interactive)
+  (let ((choices (delq nil (mapcar (lambda (x) (and (keywordp x)
+                                              (substring (symbol-name x) 1)))
+                                  scanner-paper-sizes))))
+    (setq scanner-doc-papersize
+         (intern (concat ":" (completing-read "Papersize: " choices nil t))))))
+
+(defun scanner-select-languages ()
+  "Select languages for optical character recognition."
+  (interactive)
+  (let ((langs (cdr (process-lines scanner-tesseract-program
+                                  "--list-langs"))))
+    (setq scanner-tesseract-languages
+         (completing-read-multiple "Languages: " langs nil t))))
+
+(defun scanner--set-resolution (type res)
+  "Set the resolution for scanning TYPE :image or :doc to RES."
+  (plist-put scanner-resolution type res))
+
+(defun scanner-set-image-resolution ()
+  "Set the resolution for scanning images."
+  (interactive)
+  (scanner--set-resolution :image (read-number "Image scan resolution: " 600)))
+
+(defun scanner-set-document-resolution ()
+  "Set the resolution for scanning documents."
+  (interactive)
+  (scanner--set-resolution :doc (read-number "Document scan resolution: " 
300)))
+
 (defun scanner-select-device (&optional detect)
   "Select a scanning device, maybe running auto-detection.
 If DETECT is non-nil or a prefix argument is supplied, force



reply via email to

[Prev in Thread] Current Thread [Next in Thread]