#Thunderbird 本体とは別のウィンドウを調査する方法
と題して、Lightningを改造した話も含めました(末尾に記載)。
私の願い
・LightningのTODOの内容をHTML(WYSIWYG)で書きたい。
太字、文字色、リンクが使えればそれでいい。いえ、 リンクだけ で良いんです。
・アドオン開発記事が少ないので、開発者増を願って。(だれかの参考になれば、という程度ですが)
言葉の定義
Thunderbird 本体 と私が表記したのは、メール一覧が見えているあのウィンドウのことです。
別のウィンドウ と私が表記したのは、例えば、この記事では、LightningのTODO編集画面のことです。
##ここを調査したい時のため の記事です と 末尾に改造した話も記載
TODO編集画面の赤点線枠で表示された部分です。(ここをテキストではなく、WYSIWYGで編集したい。リンクしたいだけ)
本当は、なんという名称なんでしょうね。
##■調べ方
###▼調べてる場所が違うから
普通に調べようとしても、そこに赤点線枠が表示されないんですね。(普通知って・・る?私は知らなかった)
下記③のように調べてる場所が違うからですね。
###▼調べる場所を変更しましょう
開発ツールで調べる場所は、下図のように変更しましょう。
今回はcalendar-event-dialog.xulが対象です。
###▼対象を調べてみましょう
対象を変更したら、いつも通りに要素を調べられます。
今回は、TODOの内容を入力するtextareaを選びました。
###▼変更してみます
背景色を赤にするための、cssを追加したところです。
こんな感じで、開発していきます
##■途中までやったこと
下図は、開発途中(開発諦めた)の画面で、文字列を選択して「Link」ボタンを押したところです。
Linkが貼られて、太字になります。(そこまでしか作らなかった)
- 通常のテキストエリアの横に、ボタンを2つ追加した
- その横に、WYSIWYGできるようにeditor要素を追加した
##■本当にやりたいこと
私が本当にやりたいことは、TODOの内容にメールへのリンクを貼って、
クリックしたら、該当のメールが開くことです。
もしくは、「関連リンク」などでメールへのリンクが設定でき、選ぶとメールが開くことです。
※下図には関連リンクというメニューがありますが、私の環境では動作せず。
後述しますが、「添付」ボタンで似たようなことができました(^^;
##■参考:個別メールへのリンクの方法
thunderlinkというアドオンで可能です。
68.8ですが、ギリギリ動きます(アドオンの設定画面がおかしいですが)
ここのサポートページにインストール方法が書いてあります。
アドオン入れてから、
- レジストリをいじって個別メールをを起動できるようにするか、
英語よくわからないけど64bit TBはできないとかサポートページに?
サポートページの1番のレジストリファイルでも起動できますね。(パスへ自分の環境に合わせてください) - 下記の私が用意したスクリプトのような、スクリプトを既定のプログラムで指定して、起動できるようにするか、
です。
私が用意したスクリプト
Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run "C:\Thunderbird\thunderbird.exe -thunderlink " & Wscript.Arguments(0)
Set objWshShell = Nothing
##仕様を変えて、開発を続ける気になった。ありがとうQiita
記事を書いていたら、仕様を変えればすぐに実装できそうなことに気づいた。
- 私は、編集画面の「場所」欄を使っていないので、「場所」にメールへのリンクを記入する。
- ボタンを追加して、そのボタンを押したら、「場所」に記載されているメールを開く(スクリプトを呼び出す)。
ただし、「場所」欄が空だったら入力ダイアログを表示して、メールリンクを入力する(「場所」欄に保存する)
###完成しました
「場所」欄にthunderlinkを記入して保存しておけば、右下の「Link」ボタンを押すと、該当メールが開きます。
下図では「プログラム起動」確認ダイアログが表示されていますが、下図のように下部のチェックを入れて
一度「リンクを開く」ボタンを押せば、この確認ダイアログは次回以降表示されません。
###変更したのはこのファイル
\lightning-68.5.0-tb\chrome\lightning\content\lightning\lightning-item-iframe.xulです。
下記のタグです(buttonタグ前後は追加する場所がわかるように記載しました)
<tabpanels id="event-grid-tabpanels"
flex="1">
<tabpanel id="event-grid-tabpanel-description">
<html:textarea id="item-description"
disable-on-readonly="true"/>
<button label="Link"
oncommand="if(document.getElementById('item-location').value == ''){
document.getElementById('item-location').value = window.prompt('thunderlinkを入力してください', '');
}else{
window.location.href = document.getElementById('item-location').value;
}" />
</tabpanel>
<tabpanel id="event-grid-tabpanel-attachments">
<vbox flex="1">
<richlistbox id="attachment-link"
seltype="single"
context="attachment-popup"
rows="3"
flex="1"
disable-on-readonly="true"
onkeypress="attachmentLinkKeyPress(event)"
ondblclick="attachmentDblClick(event);"/>
</vbox>
</tabpanel>
##ちなみに「添付」機能について
「添付」機能でも似たようなことができました。
以下解説です。
ここでthunderlinkを入力し、OKボタンを押すと下図のように、添付として保存される。
添付ファイル欄をダブルクリックすると、該当メールが開かれた。
でも面倒くさい
いちいち、添付タブを開いて、添付ファイル欄をダブルクリックして・・・
私の改造した方が手数が少なくらくちんです。
##追記:2020-05-21 関連リンクについて
わがままなので、
- わざわざメールを右クリック、メニューからthunderlinkを選んで、クリップボードを汚したくないなぁ
- 作ったボタンすら押したくないなぁ
ということで、引き続きLightningアドオンのソースを見ていました。
「関連リンク」は非表示になっているだけで、実は存在するようです。
開発ツールで無理やり表示して、「aaa」と設定したら、リンクっぽくなりました。
クリックできそうなマウスカーソルになりますが、クリックしても何も起きない・・・
追記2 href="http://google.com" value="ggl"としたら、クリックしたらブラウザが開いてgoogleが開きました。
A. 新規ToDoや予定の場合はリンクなし
B. メールから変換した場合は、予定/ToDo画面が表示されたとき選択されているメールのthunderlinkを自動取得して、
関連リンクに設定してくれたらいいなぁ
と思っていますが、まだできていません。
追記2 メニューから関連リンクをON/OFFできるようにしたり、
関連リンクを設定できるようにしたいな、と色々確認していますが、
難しい・・・諦め感満載