X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fgnus-offline.el;h=fa7da04882954aabf6a0aa4ef2a7d17dca2b9410;hb=41fb7027bd9100cf7a76b88761ed42317e11cfa8;hp=2334ab448e535166f3f9c91fabb1312d27da4cad;hpb=fad207e238a4afdca545e66529a63be33cf58975;p=elisp%2Fgnus.git- diff --git a/lisp/gnus-offline.el b/lisp/gnus-offline.el index 2334ab4..fa7da04 100644 --- a/lisp/gnus-offline.el +++ b/lisp/gnus-offline.el @@ -1,13 +1,14 @@ ;;; gnus-offline.el --- To process mail & news at offline environment. -;;; $Id: gnus-offline.el,v 1.1.2.5.2.8 1998-11-12 14:04:08 ichikawa Exp $ +;;; $Id: gnus-offline.el,v 1.1.2.5.2.25 1999-01-13 06:53:38 ichikawa Exp $ ;;; Copyright (C) 1998 Tatsuya Ichikawa ;;; Yukihiro Ito ;;; Author: Tatsuya Ichikawa ;;; Yukihiro Ito ;;; Hidekazu Nakamura +;;; Tsukamoto Tetsuo -;;; Version: 2.00b4 +;;; Version: 2.02 ;;; Keywords: news , mail , offline , gnus ;;; ;;; SPECIAL THANKS @@ -81,6 +82,7 @@ (require 'cl) (require 'custom) (require 'pop3-fma) +(require 'easymenu) (unless (and (condition-case () (require 'custom) @@ -98,12 +100,12 @@ :group 'mail :group 'news) -(defconst gnus-offline-version-number "2.00b4") +(defconst gnus-offline-version-number "2.02") (defconst gnus-offline-codename - "Beta4" ; Beta +;; "Beta5" ; Beta ;; "This is the time" ; 2.00 ;; "A matter of trust" -;; "Modern Woman" + "Modern Woman" ;; "Code of silence" ) @@ -270,11 +272,12 @@ If value is nil , dialup line is disconnected status.") ;; To transfer Mail/News function. (cond ((eq gnus-offline-mail-treat-environ 'offline) - ;; send mail under online environ. + ;; send mail under offline environ. (gnus-offline-set-offline-sendmail-function)) ((eq gnus-offline-mail-treat-environ 'online) ;; send mail under offline environ. (gnus-offline-set-online-sendmail-function)))) +;; (add-hook 'gnus-group-mode-hook 'gnus-offline-setup)) ;; ;; Setting Error check. @@ -306,8 +309,12 @@ If value is nil , dialup line is disconnected status.") (defun gnus-offline-set-offline-sendmail-function () "*Initialize sendmail-function when unplugged status." (if (eq gnus-offline-drafts-queue-type 'miee) - (setq message-send-mail-function 'sendmail-to-spool-in-gnspool-format) - (setq message-send-mail-function 'gnus-agent-send-mail))) + (progn + (if (eq gnus-offline-news-fetch-method 'nnagent) + (setq gnus-agent-send-mail-function 'sendmail-to-spool-in-gnspool-format)) + (setq message-send-mail-function 'sendmail-to-spool-in-gnspool-format)) + (setq gnus-agent-send-mail-function (gnus-offline-set-online-sendmail-function) + message-send-mail-function 'gnus-agent-send-mail))) ;; (defun gnus-offline-set-online-sendmail-function () "*Initialize sendmail-function when plugged status." @@ -327,7 +334,7 @@ If value is nil , dialup line is disconnected status.") ;; Get new news jobs. (gnus-agent and nnspool) ;; (defun gnus-offline-gnus-get-new-news (&optional arg) - "*Override function \"gnus-grou-get-new-news\"." + "*Override function \"gnus-group-get-new-news\"." (interactive "P") (run-hooks 'gnus-offline-before-online-hook) (if (functionp gnus-offline-dialup-function) @@ -582,9 +589,14 @@ If value is nil , dialup line is disconnected status.") (if (eq gnus-offline-articles-to-fetch 'mail) (gnus-offline-restore-mail-group-level)) (if (eq gnus-offline-news-fetch-method 'nnagent) - (gnus-offline-agent-expire)) - (ding) - (message "All online jobs have done.")) + (or gnus-agent-expire-all + (gnus-offline-agent-expire))) + (if (and (featurep 'xemacs) + (fboundp 'play-sound-file)) + (ding nil 'drum) + (ding)) + (gnus-group-save-newsrc) + (message "All online jobs has done.")) ;; @@ -708,7 +720,9 @@ If value is nil , dialup line is disconnected status.") (defun gnus-offline-define-menu-and-key () "*Set key and menu." (if (eq gnus-offline-drafts-queue-type 'miee) - (add-hook 'gnus-group-mode-hook 'gnus-offline-define-menu-on-miee) + (if (featurep 'xemacs) + (add-hook 'gnus-group-mode-hook 'gnus-offline-define-menu-on-miee) + (gnus-offline-define-menu-on-miee)) (add-hook 'gnus-group-mode-hook 'gnus-offline-define-menu-on-agent)) (add-hook 'gnus-group-mode-hook '(lambda () @@ -726,161 +740,123 @@ If value is nil , dialup line is disconnected status.") (substitute-key-definition 'gnus-agent-toggle-plugged 'gnus-offline-toggle-plugged gnus-agent-group-mode-map) - (local-set-key "\C-coe" 'gnus-offline-agent-expire))))) + (local-set-key "\C-coe" 'gnus-offline-agent-expire))) + (or (featurep 'xemacs) + (define-key gnus-group-mode-map + (if (eq system-type 'windows-nt) [S-mouse-2] [mouse-3]) + 'gnus-offline-popup-menu)))) (if (eq gnus-offline-news-fetch-method 'nnagent) (add-hook 'gnus-summary-mode-hook '(lambda () (substitute-key-definition 'gnus-agent-toggle-plugged 'gnus-offline-toggle-plugged - gnus-agent-summary-mode-map))))) - + gnus-agent-summary-mode-map)))) + (if (featurep 'xemacs) + ;; Overwrite the toolbar spec for gnus-group-mode. + (add-hook 'gnus-startup-hook + (lambda () + (let ((i 0) (stat t) but) + (while (and stat (setq but (nth i gnus-group-toolbar))) + (and (equal 'gnus-group-get-new-news (aref but 1)) + (aset but 1 'gnus-offline-gnus-get-new-news) + (setq stat nil)) + (setq i (1+ i)))))))) +;; +;; (defun gnus-offline-define-menu-on-miee () - "*Set menu bar on MIEE menu." - (global-set-key - [menu-bar - miee - gnus-offline-hup-separator] - '("--")) - - (global-set-key - [menu-bar - miee - gnus-offline] - (cons "Gnus Offline Utility" - (make-sparse-keymap "Gnus Offline Utiliry"))) - - (global-set-key - [menu-bar - miee - gnus-offline - gnus-offline-toggle-movemail-program] - '("Toggle movemail program" . - gnus-offline-toggle-movemail-program)) - - (global-set-key - [menu-bar - miee - gnus-offline - gnus-offline-toggle-articles-to-fetch] - '("Toggle articles to fetch" . - gnus-offline-toggle-articles-to-fetch)) - - (global-set-key - [menu-bar - miee - gnus-offline - gnus-offline-toggle-on/off-send-mail] - '("Toggle online/offline send mail" . - gnus-offline-toggle-on/off-send-mail)) - - (global-set-key - [menu-bar - miee - gnus-offline - gnus-offline-toggle-auto-hangup] - '("Toggle auto hang up" . gnus-offline-toggle-auto-hangup)) - - (global-set-key - [menu-bar - miee - gnus-offline - gnus-offline-expire-separator] - '("--")) - - (if (eq gnus-offline-news-fetch-method 'nnagent) - (global-set-key - [menu-bar - miee - gnus-offline - gnus-offline-agent-expire] - '("Expire articles" . gnus-offline-agent-expire))) - - (global-set-key - [menu-bar - miee - gnus-offline - gnus-offline-set-interval-time] - '("Set interval time." . gnus-offline-set-interval-time)) - - (global-set-key - [menu-bar - miee - gnus-offline - gnus-offline-hup-separator] - '("--")) - - (global-set-key - [menu-bar - miee - gnus-offline - gnus-offline-set-unplugged-state] - '("Hang Up Line." . gnus-offline-set-unplugged-state))) + "*Set and change menu bar on MIEE menu." + (let ((menu + (if (featurep 'meadow) + (easy-menu-change + nil + "Miee" + '( + ["Spool にある記事の送信" news-spool-post t] + ["Spool にある Mail の送信" mail-spool-send t] + "----" + ["Offline 状態へ" message-offline-state (not message-offline-state)] + ["Online 状態へ" message-online-state message-offline-state] + "----" + ("Gnus Offline" + ["movemail の切替え" gnus-offline-toggle-movemail-program t] + ["取得記事種類の変更" gnus-offline-toggle-articles-to-fetch t] + ["Mail 送信方法(On/Off)の切替え" gnus-offline-toggle-on/off-send-mail t] + ["自動切断の切替え" gnus-offline-toggle-auto-hangup t] + "----" + ["取得済記事を消す" gnus-offline-agent-expire (eq gnus-offline-news-fetch-method 'nnagent)] + ["記事取得間隔時間の設定" gnus-offline-set-interval-time t] + "----" + ["回線の切断" gnus-offline-set-unplugged-state gnus-offline-connected]) + )) + (easy-menu-change + nil + "Miee" + '( + ["Post news in spool" news-spool-post t] + ["Send mails in spool" mail-spool-send t] + "----" + ["Message Offline" message-offline-state (not message-offline-state)] + ["Message Online" message-online-state message-offline-state] + "----" + ("Gnus Offline" + ["Toggle movemail program" gnus-offline-toggle-movemail-program t] + ["Toggle articles to fetch" gnus-offline-toggle-articles-to-fetch t] + ["Toggle online/offline send mail" gnus-offline-toggle-on/off-send-mail t] + ["Toggle auto hangup" gnus-offline-toggle-auto-hangup t] + "----" + ["Expire articles" gnus-offline-agent-expire (eq gnus-offline-news-fetch-method 'nnagent)] + ["Set interval time" gnus-offline-set-interval-time t] + "----" + ["Hang up Line." gnus-offline-set-unplugged-state gnus-offline-connected] + )))))) + (and (featurep 'xemacs) + (easy-menu-add menu)))) ;; ;; define menu without miee. ;; (defun gnus-offline-define-menu-on-agent () "*Set menu bar on OFFLINE menu." - (define-key-after - (lookup-key global-map [menu-bar]) - [offline] - (cons "Offline" (make-sparse-keymap "Offline")) - 'help) ;; Actually this adds before "Help". - - (global-set-key - [menu-bar - offline - gnus-offline-toggle-movemail-program] - '("Toggle movemail program" . gnus-offline-toggle-movemail-program)) - - (global-set-key - [menu-bar - offline - gnus-offline-toggle-articles-to-fetch] - '("Toggle articles to fetch" . gnus-offline-toggle-articles-to-fetch)) - - (global-set-key - [menu-bar - offline - gnus-offline-toggle-on/off-send-mail] - '("Toggle online/offline send mail" . gnus-offline-toggle-on/off-send-mail)) - - (global-set-key - [menu-bar - offline - gnus-offline-toggle-auto-hangup] - '("Toggle auto hang up" . gnus-offline-toggle-auto-hangup)) - - (global-set-key - [menu-bar - offline - gnus-offline-separator] - '("--")) - - (if (eq gnus-offline-news-fetch-method 'nnagent) - (progn - (global-set-key - [menu-bar - offline - gnus-offline-agent-expire] - '("Expire articles" . gnus-offline-agent-expire)))) - - (global-set-key - [menu-bar - offline - gnus-offline-set-interval-time] - '("Set interval time." . gnus-offline-set-interval-time)) - - (global-set-key - [menu-bar - offline - gnus-offline-hup-separator] - '("--")) - - (global-set-key - [menu-bar - offline - gnus-offline-set-unplugged-state] - '("Hang Up Line." . gnus-offline-set-unplugged-state))) + (easy-menu-define + gnus-offline-menu-on-agent + gnus-group-mode-map + "Gnus offline Menu" + (if (featurep 'meadow) + '("Offline" + ["movemail の切替え" gnus-offline-toggle-movemail-program t] + ["取得記事種類の変更" gnus-offline-toggle-articles-to-fetch t] + ["Mail 送信方法(On/Off)の切替え" gnus-offline-toggle-on/off-send-mail t] + ["自動切断の切替え" gnus-offline-toggle-auto-hangup t] + "----" + ["取得済記事を消す" gnus-offline-agent-expire (eq gnus-offline-news-fetch-method 'nnagent)] + ["記事取得間隔時間の設定" gnus-offline-set-interval-time t] + "----" + ["回線の切断" gnus-offline-set-unplugged-state gnus-offline-connected]) + '("Offline" + ["Toggle movemail program" gnus-offline-toggle-movemail-program t] + ["Toggle articles to fetch" gnus-offline-toggle-articles-to-fetch t] + ["Toggle online/offline send mail" gnus-offline-toggle-on/off-send-mail t] + ["Toggle auto hangup" gnus-offline-toggle-auto-hangup t] + "----" + ["Expire articles" gnus-offline-agent-expire (eq gnus-offline-news-fetch-method 'nnagent)] + ["Set interval time" gnus-offline-set-interval-time t] + "----" + ["Hang up Line." gnus-offline-set-unplugged-state gnus-offline-connected]))) + (and (featurep 'xemacs) + (easy-menu-add gnus-offline-menu-on-agent))) +;; +;; Popup menu within the group buffer (under Emacs). +;; +(defun gnus-offline-popup-menu (event) + "Popup menu for Gnus offline." + (interactive "e") + (let* ((menu (if (boundp 'miee-popup-menu) + (or (assoc 'keymap + (assoc 'Miee (assoc 'menu-bar global-map))) + miee-popup-menu) + gnus-offline-menu-on-agent)) + (pop (x-popup-menu t menu)) + (func (and pop (lookup-key menu (apply 'vector pop))))) + (and pop func (funcall func)))) ;; ;; Timer Function