ところで、WLWでは略語(<ABBR>や<ACRONYM>タグ)についてはプラグインがあって、勝手に略語の定義を探してきてくれたりするのだけど、
一応、ルビ(<RUBY>)と略語(<ABBR>と<ACRONYM>)を作ってクリップボードに送るように書いてある。これをWLWで「形式を選択して貼り付け → HTML」を選べば、そこそこうまいことやってくれる。ただルビはうまく処理できておらず、ルビの外側に書き続けたいのにルビの内側に書き加える形になってしまったり。
勢いで書いてしまいましたが、自分で使うかどうかはわかりません。あと「TAB」キーでフォーカスが移動しないのはなんでだろう…
#! /usr/bin/python # encoding: UTF-8 debug=True import os,sys import cgi import wx class rubyapp(wx.App): # TODO: SKK辞書やWebの辞書から読みや漢字、略語を持ってくる def __init__(self, flag=True): wx.App.__init__(self, flag) def create_txtbox(self, sizer, name, sz=(100,-1)): in_sizer=wx.BoxSizer(wx.HORIZONTAL) txt=wx.StaticText(self.frame, -1, name, size=sz) in_sizer.Add(txt, 0, wx.EXPAND) txtbox=wx.TextCtrl(self.frame, -1, "", size=sz) in_sizer.Add(txtbox, 1, wx.EXPAND) sizer.Add(in_sizer, 0, wx.EXPAND) return txtbox def OnInit(self): self.frame=wx.Frame(None, -1, u"HTMLルビ生成") self.frame.CreateStatusBar() sizer=wx.BoxSizer(wx.VERTICAL) self.kanji_value=self.create_txtbox(sizer, u"漢字/略語") self.kana_value=self.create_txtbox(sizer, u"ふりがな/正式名") in_sizer=wx.BoxSizer(wx.HORIZONTAL) for nm, fn in [(u"RUBY", self.copyruby), (u"ABBR", self.copyabbr), (u"ACRONYM", self.copyacronym)]: btn=wx.Button(self.frame, -1, nm) btn.Bind(wx.EVT_BUTTON, fn) in_sizer.Add(btn, 0, wx.EXPAND) sizer.Add(in_sizer, 0, wx.EXPAND) self.SetTopWindow(self.frame) self.clp=wx.Clipboard() self.frame.SetSizerAndFit(sizer) self.kanji_value.SetFocus() cld=wx.TextDataObject() self.clp.GetData(cld) self.kanji_value.SetValue(cld.GetText()) self.kanji_value.SelectAll() self.frame.SetStatusText(u"準備ができました") self.frame.Show() return True def output(self, format): arg={"kanji": cgi.escape(self.kanji_value.GetValue(), True), "kana": cgi.escape(self.kana_value.GetValue(), True), } if arg["kanji"]=="" or arg["kana"]=="": self.frame.SetStatusText(u"文字列を設定してください") if arg["kanji"]=="": self.kanji_value.SetFocus() else: self.kana_value.SetFocus() return outhtml=format % arg self.clp.SetData(wx.TextDataObject(outhtml)) self.clp.Flush() self.frame.SetStatusText(u"コピーしました: %(kanji)s(%(kana)s)" % arg) def copyruby(self, evt): self.output(u"<ruby><rb>%(kanji)s</rb><rp>(</rp><rt>%(kana)s</rt><rp>)</rp></ruby>") def copyacronym(self, evt): self.output(u"<acronym title=\"%(kana)s\">%(kanji)s</acronym>") def copyabbr(self, evt): self.output(u"<abbr title=\"%(kana)s\">%(kanji)s</abbr>") app=rubyapp(not debug) app.MainLoop()