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] その日その時がきたら教えてくれる、要はアラーム。