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

[mhc:00312] Re: mhc-snap20000104



乃村です。

On Fri, 07 Jan 2000 13:27:26 +0900,
	Yoshinari NOMURA <nom@xxxxxxxxxxxxxxxxxxx> said:

> > また、alarm は minibuffer にでるだけだとつまらない、実用的で無
> > いので、elisp を改造中だったりします。
> 
> あっと、この部分、ちょこっと、コード書いてたりします。その中で、
> frame 開くようになってますが、make-frame するのと、
> x-popup-dialog するのとでは、どちらがいいでしょうか。Windows で 
> x-popup-dialog は使えますか?

お互いのコードが無駄になるといけないので、この部分の断片付けとき
ますね。

先のスナップ同様、バスの中での作なので、信用なりませんが。:-)
前に流れた mhc-alarm も一応付けときます。
--
nom

-------------------------------------------------------------
#!/usr/local/bin/ruby

require 'mhc-schedule'
require 'kconv'

$db    = MhcScheduleDB .new()
$alarm = MhcAlarm .new($db)

$alarm .signal_connect('time-arrived'){|date, sch|
  print "#{date .to_js} #{sch .time_b} #{Kconv::toeuc(sch .subject)}\n"
  STDOUT .flush
}
$alarm .check

sleep  ## wait forever.
exit 0 ## unreached.
-------------------------------------------------------------

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Alarm

(defvar mhc-alarm-program-name "mhc-alarm")
;; (setq mhc-alarm-program-name "mhc-alarm-test")
;; (setq mhc-alarm-program-name "mhc-alarm")

(defun mhc-alarm-startup ()
  (let ((process-connection-type nil)
	
	(mhc-alarm-process-name "mhc-alarm"))
    (if (and (get-process mhc-alarm-process-name)
	     (equal (process-status mhc-alarm-process-name) 'run))
	(message "not start")
      (setq mhc-alarm-process
	    (start-process mhc-alarm-process-name
			   nil
			   mhc-alarm-program-name))
      (set-process-filter mhc-alarm-process 'mhc-alarm-process-filter)
      (set-process-coding-system mhc-alarm-process
				 'iso-2022-jp-unix 'iso-2022-jp-unix)
      (process-kill-without-query mhc-alarm-process)
      (message "start process"))))

(defun mhc-alarm-process-filter (p str)
  (if window-system
      (mhc-dialog-open (substring str 0 -1) "mhc alarm" 40 4)
    (beep)
    (message (substring str 0 -1))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Dialog

(setq mhc-dialog-mode-map nil)

(if mhc-dialog-mode-map
    ()
  (setq mhc-dialog-mode-map (make-keymap))
  (define-key mhc-dialog-mode-map "q" 'mhc-dialog-close))

(defun mhc-dialog-open (message &optional title width height)
  (let ((frame
	 (make-frame `(
		       (name   . ,(or title "MHC Dialog"))
		       (height . ,(or height 10))
		       (width  . ,(or width  40))
		       (minibuffer             . nil)
		       (vertical-scroll-bars   . nil)
		       (horizontal-scroll-bars . nil)
		       (menu-bar-lines         . nil)
		       (visibility             . nil)
		       )))
	(buf (generate-new-buffer "*mhc-dialog*")))
    (modify-frame-parameters 
     frame
     `((left  . ,(/ (- (x-display-pixel-width)
		       (frame-pixel-width  frame)) 2))
       (top   . ,(/ (- (x-display-pixel-height)
		       (frame-pixel-height frame)) 2))))
    (modify-frame-parameters frame '((visibility . t)))
    (set-buffer buf)
    (insert message "\n")
    (mhc-dialog-mode)
    (set-window-buffer (frame-selected-window frame) buf)))

(defun mhc-dialog-close ()
  (interactive)
  (kill-buffer (current-buffer))
  (delete-frame))

(defun mhc-dialog-mode ()
  (interactive)
  (kill-all-local-variables)
  (setq major-mode 'mhc-dialog-mode)
  (setq mode-name "mhc-dialog")
  (use-local-map mhc-dialog-mode-map)
  (setq buffer-read-only t)
  (setq mode-line-format "Type `Q' to close.")
  (run-hooks 'mhc-dialog-mode-hook))