[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))