Tinlizzie の目標の一つに、文書にアプリケーションの性質を持たせるという事があります。もともと Squeak Etoys には好きな Smalltalk プログラム(チェンジセット)を埋め込む事が出来ますが、相当マニアックでお勧めできない仕様になっています。実用的な物では Excel が洗練されていると思いますが、仕組みが分かりやすい HyperCard の仕組みを参考にしようと思います。
公開されている HyperCard Light には、最初から予定表、住所録といったスタックが用意されおり、どちらもかなり面白いスクリプトが埋め込まれています。たとえばメニューに「補助」という項目が追加され、予定表独自の機能がメニューから実行出来るようになっています。この仕組みについて調べました。
- スタックの createTheMenu でメニューを作成している。
- メニュー作成: create menu "メニュー名"
- メニュー項目作成: put "項目名のリスト" into menu "メニュー名" with menuMsg "ハンドラのリスト"
- 次のハンドラでメニューを出したり消したりする。
- on openStack : 開いた時
- on closeStack : 閉じた時
- on resumeStack : アクティブになった時
- on suspendStack : 他のスタックに処理が移った時