言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

HyperCard メニューのアプリケーションみたいな性質

Tinlizzie の目標の一つに、文書にアプリケーションの性質を持たせるという事があります。もともと Squeak Etoys には好きな Smalltalk プログラム(チェンジセット)を埋め込む事が出来ますが、相当マニアックでお勧めできない仕様になっています。実用的な物では Excel が洗練されていると思いますが、仕組みが分かりやすい HyperCard の仕組みを参考にしようと思います。

公開されている HyperCard Light には、最初から予定表、住所録といったスタックが用意されおり、どちらもかなり面白いスクリプトが埋め込まれています。たとえばメニューに「補助」という項目が追加され、予定表独自の機能がメニューから実行出来るようになっています。この仕組みについて調べました。

  • スタックの createTheMenu でメニューを作成している。
    • メニュー作成: create menu "メニュー名"
    • メニュー項目作成: put "項目名のリスト" into menu "メニュー名" with menuMsg "ハンドラのリスト"
  • 次のハンドラでメニューを出したり消したりする。
    • on openStack : 開いた時
    • on closeStack : 閉じた時
    • on resumeStack : アクティブになった時
    • on suspendStack : 他のスタックに処理が移った時