Tcl/Tk のウィジェットでオプションの設定をした後、Build というボタンを 押すと wish の中で configure && make が始まった。
こんなのは初めて見たな〜。
でも 2002.01.09 で最初に言ってたのと同じか。
どっちがいいのかな。
コピー元は status のところが '>' になって、後ろに (ccyy.mm.dd) がつく。 コピー先の日誌ファイルのほうは後ろに (元のplanファイル) がつく。 日誌の方で status は '_' ⇒ 'o' ⇒ 'X' と進捗を記録していくんだけど、 こっちを変更すると、元の planファイル側も連動して変わるんだこれが。
いやビクーリした。恐れ入りました。また使い方を改めなくちゃ。
で、gnusのサマリバッファから planner のタスクを作る関数もあって、 タスクに上記リンクを張ってくれる。
planner-browse-url をいじれば Wanderlust へも飛べるかな。 wl のいじり方をよく知らないんだけど。
多治見さんの「プログラミング・テクニック」だったと思うけど、何月号だったかな。
#!/usr/home/bin/ruby/bin/ruby require 'win32ole' module OUTLOOK_CONST end class OutlookCalendar def OutlookCalendar::run cal = self.new begin yield cal ensure cal.quit end end def initialize(display = false) @outlook = WIN32OLE.new("Outlook.Application") WIN32OLE.const_load(@outlook, OUTLOOK_CONST) mapi = @outlook.GetNameSpace("MAPI") @calFolder = mapi.GetDefaultFolder(OUTLOOK_CONST::OlFolderCalendar) if display then @calFolder.Display end end def find(title) return @calFolder.items(title) end def each count = @calFolder.items.count for i in (1..count) do yield @calFolder.items(i) end end def quit @outlook.quit end end def snap(s) date, time = s.split " " yy, mm, dd = date.split "/" return [yy,mm,dd,time] end # main OutlookCalendar.run { |cal| cal.each do |item| s = snap(item.start) e = snap(item.end) dy = s[1] + "/" + s[2] + "/" + s[0] st = s[3] et = e[3] if (st == "00:00" && et == "00:00") then print "#{dy} - #{item.subject}\n" elsif (st == et) print "#{dy} #{st} | #{item.subject}\n" else print "#{dy} #{st}-#{et} | #{item.subject}\n" end end } =begin OutlookCalendarの使い方 #タイトルで探す cal = OutlookCalendar.new item = cal.find("業務ミーティング") p item.start p item.duration # 所要時間を分で表す整数 p item.end p item.subject #全部見て回る cal.each { |item| print item.subject } #片付ける cal.quit =end
(→ RubyOnWindows へ)
双方向ではないけれど、記録として残すには便利かも。
(defadvice calendar (before remind-generate-diary activate) "Generate a diary file from Outlook data." (save-excursion (with-current-buffer (find-file-noselect diary-file) (erase-buffer) (shell-command "/usr/home/bin/olconv" (current-buffer)) (save-buffer))))
組み込みはこんな感じ。(→ MakingOfWikiTech へ)
元のコードのようにmark-diary-entriesのたびにoutlookが起動するのは、 挙動が重くていやだったのでcalendarを起動するタイミングにしてみた。
[1] その日その時がきたら教えてくれる、要はアラーム。