[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12. Popup Menus

ポップアップメニューはユーザが Lisp コードを実行することで可能な主な二つ の方法の内の一つです(他の方法とはキーマップを通じる方法です、 see section 15. Keymaps)。popup-menu 関数はメニューの項目の定義と各項目に ついて呼ばれる関連づけられた Lisp 関数と共に実行されます。こうしてメニュー を表示するサブプロセスが起動し、後に選択されたメニュー項目が受け取られ、 評価されます。

各メニュー項目はリストで指定され、最初の要素は文字列でそのメニュー項目に 対するラベルを与え、二つ目の要素はその項目がユーザに選択されたときに呼ば れるべき関数です。もしこの関数が対話的な仕様となっていれば call-command 関数を使って実行され、そうでなければ funcall (関数)が使われます。それで例えば、1階層のメニューは次のように定義されま す:

 
(("Item 1" function-1)
 ("Item 2" function-2)
 ()
 ("Item 3" function-3))

null 項目で表示されるメニューにセパレータをつくることができます。

もし項目の括弧内の第一の要素がシンボルならば、項目の残りは変数の値で定義 されるものとなります。もしこの値が関数ならば定義は関数を呼んだ結果となり ます。

以下の定義について考えてみます:

 
(("Workspaces" . workspace-menu)
 ("Windows" . window-menu)
 ("Programs" . apps-menu)
 ("Customize" . custom-menu)
 ("About..." (customize 'about))
 ()
 ("Restart" restart)
 ("Quit" quit))

これは Sawfish のルートメニューの定義です。四つのサブメニューが参照変数 (実際、この変数の内の3つは関数を含んでいます) (workspace-menuwindow-menuapps-menu そしてcustom-menu によって動 的に生成されていることを見ることができます。

apps-menu 変数はアプリケーションメニューを再定義することができま す。デフォルト定義は次のようになっています:

 
(("xterm" (system "xterm &"))
 ("Emacs" (system "emacs &"))
 ("Netscape" (system "netscape &"))
 ("The GIMP" (system "gimp &"))
 ("XFIG" (system "xfig &"))
 ("GV" (system "gv &"))
 ("xcalc" (system "xcalc &")))

system 関数は単に一つの引数を `/bin/sh' を使って実行するだけ です。

Function: popup-menu spec
項目定義 spec のリストによって定義されるメニューを表示します。

Function: popup-window-menu
すべてのウィンドウ操作のメニューリストを表示します。

Function: popup-root-menu
メインメニューを表示します。

Function: popup-apps-menu
アプリケーションメニューを表示します。

Variable: root-menu
ルートメニューの定義を含んでいます。

Variable: apps-menu
ルートメニューのアプリケーションサブメニューの定義を含む変数です。

いくつかのシステム上ではメニューのサブプロセスの起動に著しくオーバヘッド があるかもしれないですが、メニュー要求の間にもそれを実行させ続けておくこ とは可能です。

Variable: menu-program-stays-running
この変数は最後にメニューが完全化されてから後もメニューサブプロセスを実行 させつづけておくかどうか、そしてそうするならどれくらい長くそうするかを定 義します。もし nil ならばプログラムはすぐに終了し、 t なら ば永久に走りつづけ、整数値ならばプログラムが走りつづける時間(他のメニュー が表示されないかぎり)を示します。



This document was generated by SATO Satoru on October, 28 2000 using texi2html