-(defun mime/Quoted-Printable-decode-region (beg end)
- (interactive "*r")
- (save-excursion
- (save-restriction
- (narrow-to-region beg end)
- (goto-char (point-min))
- (while (re-search-forward "=\n" nil t)
- (replace-match "")
- )
- (goto-char (point-min))
- (while (re-search-forward "_" nil t)
- (replace-match " ")
- )
- (goto-char (point-min))
- (while (re-search-forward mime/Quoted-Printable-octet-regexp nil t)
- (replace-match
- (mime/Quoted-Printable-decode-string
- (buffer-substring (match-beginning 0)(match-end 0))
- ))
- )
- )))
-
-(defun mime/Base64-decode-region (beg end)
- (interactive "*r")
- (save-excursion
- (save-restriction
- (narrow-to-region beg end)
- (goto-char (point-min))
- (while (search-forward "\n" nil t)
- (replace-match "")
- )
- (let ((str (buffer-substring (point-min)(point-max))))
- (delete-region (point-min)(point-max))
- (insert (mime/base64-decode-string str))
- ))))
-
-(defun mime/make-method-args (cal format)
- (mapcar (function
- (lambda (arg)
- (if (stringp arg)
- arg
- (let ((ret (cdr (assoc (eval arg) cal))))
- (if ret
- ret
- "")
- ))
- ))
- format))
-
-(defun mime/start-external-method-region (beg end cal)
- (let ((e end))
- (if (< end (point-max))
- (setq e (+ end 1))
- )
- (save-excursion
- (save-restriction
- (narrow-to-region beg e)
- (goto-char beg)
- (let ((method (cdr (assoc 'method cal)))
- (name (mime/get-name cal))
- )
- (if method
- (let ((file (make-temp-name
- (expand-file-name "TM" mime/tmp-dir)))
- b args)
- (if (nth 1 method)
- (setq b beg)
- (search-forward "\n\n" nil t)
- (setq b (match-end 0))
- )
- (goto-char b)
- (write-region b e file)
- (setq cal (put-alist
- 'name (replace-as-filename name) cal))
- (setq cal (put-alist 'file file cal))
- (setq args (nconc
- (list (car method)
- mime/output-buffer-name (car method)
- )
- (mime/make-method-args cal (cdr (cdr method)))
- ))
- (apply (function start-process) args)
- (mime/show-output-buffer)
- ))))))
- )
-
-(defun mime/decode-message/partial-region (beg end cal)
- (goto-char beg)
- (let* ((root-dir (expand-file-name
- (concat "m-prts-" (user-login-name)) mime/tmp-dir))
- (id (cdr (assoc "id" cal)))
- (number (cdr (assoc "number" cal)))
- (total (cdr (assoc "total" cal)))
- (the-buf (current-buffer))
- file
- (mother mime/preview-buffer))
- (if (not (file-exists-p root-dir))
- (shell-command (concat "mkdir " root-dir))
- )
- (setq id (replace-as-filename id))
- (setq root-dir (concat root-dir "/" id))
- (if (not (file-exists-p root-dir))
- (shell-command (concat "mkdir " root-dir))
+(defconst mime-viewer/menu-title "MIME-View")
+(defconst mime-viewer/menu-list
+ '((up "Move to upper content" mime-viewer/up-content)
+ (previous "Move to previous content" mime-viewer/previous-content)
+ (next "Move to next content" mime-viewer/next-content)
+ (scroll-down "Scroll to previous content" mime-viewer/scroll-down-content)
+ (scroll-up "Scroll to next content" mime-viewer/scroll-up-content)
+ (play "Play Content" mime-viewer/play-content)
+ (extract "Extract Content" mime-viewer/extract-content)
+ (print "Print" mime-viewer/print-content)
+ (x-face "Show X Face" mime-viewer/display-x-face)
+ )
+ "Menu for MIME Viewer")
+
+(if running-xemacs
+ (progn
+ (defvar mime-viewer/xemacs-popup-menu
+ (cons mime-viewer/menu-title
+ (mapcar (function
+ (lambda (item)
+ (vector (nth 1 item)(nth 2 item) t)
+ ))
+ mime-viewer/menu-list)))
+ (defun mime-viewer/xemacs-popup-menu (event)
+ "Popup the menu in the MIME Viewer buffer"
+ (interactive "e")
+ (select-window (event-window event))
+ (set-buffer (event-buffer event))
+ (popup-menu 'mime-viewer/xemacs-popup-menu))
+ ))
+
+(defun mime-viewer/define-keymap (&optional mother)
+ (let ((mime/viewer-mode-map (if mother
+ (copy-keymap mother)
+ (make-keymap))))
+ (suppress-keymap mime/viewer-mode-map)
+ (define-key mime/viewer-mode-map
+ "u" (function mime-viewer/up-content))
+ (define-key mime/viewer-mode-map
+ "p" (function mime-viewer/previous-content))
+ (define-key mime/viewer-mode-map
+ "n" (function mime-viewer/next-content))
+ (define-key mime/viewer-mode-map
+ " " (function mime-viewer/scroll-up-content))
+ (define-key mime/viewer-mode-map
+ "\M- " (function mime-viewer/scroll-down-content))
+ (define-key mime/viewer-mode-map
+ "\177" (function mime-viewer/scroll-down-content))
+ (define-key mime/viewer-mode-map
+ "\C-m" (function mime-viewer/next-line-content))
+ (define-key mime/viewer-mode-map
+ "\C-\M-m" (function mime-viewer/previous-line-content))
+ (define-key mime/viewer-mode-map
+ "v" (function mime-viewer/play-content))
+ (define-key mime/viewer-mode-map
+ "e" (function mime-viewer/extract-content))
+ (define-key mime/viewer-mode-map
+ "\C-c\C-p" (function mime-viewer/print-content))
+ (define-key mime/viewer-mode-map
+ "x" (function mime-viewer/display-x-face))
+ (define-key mime/viewer-mode-map
+ "a" (function mime-viewer/follow-content))
+ (define-key mime/viewer-mode-map
+ "q" (function mime-viewer/quit))
+ (define-key mime/viewer-mode-map
+ "h" (function mime-viewer/show-summary))
+ (define-key mime/viewer-mode-map
+ "\C-c\C-x" (function mime-viewer/kill-buffer))
+ (define-key mime/viewer-mode-map
+ "<" (function beginning-of-buffer))
+ (define-key mime/viewer-mode-map
+ ">" (function end-of-buffer))
+ (define-key mime/viewer-mode-map
+ "?" (function describe-mode))
+ (if mouse-button-2
+ (define-key mime/viewer-mode-map
+ mouse-button-2 (function tm:button-dispatcher))