書式
editres [ -toolkitoption ... ]オプション
editres には X ツールキットの標準コマンド行オプション(X(7) 参照)を全 て指定できる。コマンド行オプションの順番は任意である。説明
editres は、Editres プロトコルを話す X ツールキットのアプリケーション のウィジェット階層全体を表示し、ユーザとアプリケーション開発者に見せる ツールである。加えて、editres はユーザのリソース指定の構築を支援し、ユー ザがリソースを動的にアプリケーションに適用してその結果を見ることを可能 にする。ユーザはリソース指定に満足すると、editres はユーザのリソースファ イルにリソース文字列を追加する。EDITRES の使用
editres は次の4つの領域を持つウィンドウを作る:- メニューバー
- ユーザが editres の機能にアクセスするためのポップアップメニューの集合 である。
- ペイン
- ペインを使うとアプリケーションツリー表示を直観的にスクロールさせること ができる。
- メッセージ領域
- editres が期待する操作に関するユーザへの情報を表示する。
- アプリケーションウィジェットツリー
- この領域は選択されたアプリケーションのウィジェットツリーを表示するため に使われる。
editres のセッションを開始するには、コマンドメニューから Get Widget Tree メニュー項目を選択する。するとポインタカーソルの 形が十字形に変わる。 ここで、ユーザは調べたいアプリケーションの任意のウィンドウをクリックし て、これを選択する。アプリケーションが editres プロトコルをサポートし ている場合は、editres はアプリケーションのウィジェットツリーをツリーウィ ンドウに表示する。アプリケーションが editres プロトコルをサポートして いない場合には、editres は数秒後にメッセージ領域にその旨を表示する。
ウィジェットツリーを取得すると、他のメニューオプションが選択できるよう になる。それぞれの機能については以下で説明する。
コマンド
- Get Widget Tree
- editres プロトコルをサポートしている任意のアプリケーション上でクリック することで、ウィジェットツリーを取得することができる。
- Refresh Current Widget Tree
- editres が認識するのは現時点で存在しているウィジェットだけである。 しかし、ほとんどのアプリケーションは動作中にウィジェットの生成と破棄を 行う。このメニュー項目を選択すると、editres はアプリケーションにウィジェッ トツリーを送り直すように要求する。これにより、情報をアプリケーションの 新しい状態へ更新することができる。
- 例えば、xman は起動時には topbox に対するウィジェットしか生成し ない。ユーザが Manual Page ボタンを実際にクリックするまでは、マ ニュアルページウィンドウは全く生成されない。 マニュアルページが生成される前に xman のウィジェットツリーを取得した場 合には、ユーザはマニュアルページが表示された後にウィジェットツリーを更 新しようと考えるだろう。これによって、マニュアルページのリソースも編集 することができる。
- Dump Widget Tree to a File
- アプリケーションに関する文書を作るために、アプリケーションのウィジェッ トツリー全体を ASCII ファイルにダンプできると便利なことが多い。このファ イルは後でマニュアルページに取り入れることができる。メニュー項目を選択 すると、ポップアップダイアログが現れる。このダイアログにファイル名を入 力してから、okay を選択するかリターンキーを押すこと。ファイルダ イアログをキャンセルするには cancel ボタンを押すこと。
- Show Resource Box
- このコマンドは、選択中のアプリケーションに対するリソースボックスをポッ プアップさせる。リソースボックス(詳しくは後述)を使って、ユーザはウィ ジェットツリー表示内で選択されているウィジェットに対してどのリソースを 設定できるのかを正確に知ることができる。この機能を使うときに選択できる ウィジェットは1つだけである。そうでない場合、editres はリソースボック スをポップアップさせず、エラーメッセージをメッセージ領域に表示す る。
- Set Resource
- このコマンドは、選択された全てのウィジェットの任意のリソースを設定する ための簡単なダイアログボックスをポップアップさせる。このダイアログには リソース名とその値を入力しなければならない。タブキーを押すことによって、 リソース名フィールドとリソース値フィールドを行き来することができる。
- Quit
- editres を終了する。
ツリー操作コマンド
Tree メニューには、ウィジェットツリーの操作を行うためのコマンド がある。- Select Widget in Client
- このメニュー項目を使って、アプリケーション内の任意のウィジェットを選択 することができる。editres はウィジェットツリー表示における対応する要素 をハイライト表示させる。 メニュー項目を選択するとポインタカーソルの形は再び十字形になるので、ユー ザは表示させたいウィジェット内でポインタのボタン(どれでもよい)を押す。 ウィジェットによっては完全に子孫ウィジェットの陰になることもあるので、 この方法を使って全てのウィジェットを選択できるわけではないが、この機構 は、ウィジェットツリーの要素と実際のアプリケーションの要素の対応を取る ために大変便利である。
- Select All
-
- Unselect All
-
- Invert All
- これらの関数を使って、ユーザはウィジェットツリーの全てのウィジェットに 対して選択、選択解除、選択状態反転を行うことができる。
- Select Children
-
- Select Parents
- これらの関数は、現在選択されているウィジェットの直接の親や子を選択する。
- Select Descendants
-
- Select Ancestors
- これらの関数は、現在選択されているウィジェットの全ての祖先や全ての子孫 を選択する。親子関係の検索は再帰的に行われる。
- Show Widget Names
-
- Show Class Names
-
- Show Widget Windows
- ツリーウィジェットが最初に表示されたとき、ツリー内の各ウィジェットのラ ベルはウィジェット名に対応する。これらの関数は、ツリー内の全ての ウィジェットのラベルを変更し、アプリケーションのクラス名、ID、各ウィ ジェットに関連づけられたウィンドウをを表示させる。
加えて、ツリー操作のそれぞれにはキーボードアクセラレータがある。入力 フォーカスがツリー内の個別のウィジェットにあれば、操作はそのウィジェッ トだけに影響を及ぼす。フォーカスがツリーの背景にあれば、影響は対応する メニュー項目と全く同じである。
示されているトランスレーションエントリはアプリケーションの任意のウィ ジェットに適用できる。そのウィジェットが Tree ウィジェットの子孫ならば、 これはそのウィジェットのみに影響し、そうでなければツリーメニューのコマ ンドと同じ効果を持つ。
- Flash Active Widgets
-
このコマンドは Select Widget in Client コマンドの反対の動作をす
る。つまり、アプリケーションの対応するウィジェットを numFlashes
回 flashColor 色にフラッシュさせることによって、ウィジェットツリー
内で現在選択されているウィジェットをユーザに示す。
キー オプション トランスレーションのエントリ space 選択解除 Select(nothing) w 選択 Select(widget) s 選択 Select(all) i 反転 Select(invert) c 子を選択 Select(children) d 子孫を選択 Select(descendants) p 親を選択 Select(parent) a 祖先を選択 Select(ancestors) N ウィジェット名表示Relabel(name) C クラス名表示 Relabel(class) I ウィジェットID表示Relabel(id) W ウィジェットウィンドウ表示Relabel(window)
ウィジェット上でボタン1をクリックすると、そのウィジェットが選択された ウィジェットのセットに追加される。 ウィジェット上でボタン2をクリックすると、他のウィジェットを全て選択解 除し、そのウィジェットだけを選択する。 ウィジェット上でボタン2をクリックすると、ラベル表示がウィジェットのイ ンスタンス名とクラス名の間で切り替わる。
リソースボックスの使い方
リソースボックスは5つの領域に分かれている。それぞれの領域について、ス クリーンに現れる順、つまり上から下の順番で説明する。- リソース行
- リソースボックスの一番上にあるこの領域は、現在のリソース名を表示する。 このリソース名はファイルにセーブしたり適用したりするときに使われる正確 なものである。
- ウィジェット名とクラス
- この領域を使って、ユーザはこのリソースが適用されるウィジェットを正確に 選択することができる。この領域には4つ行があり、最初の行には選択された ウィジェットとその祖先全てと制約の強いドット(.)セパレータが表示 される。2番目の行には、特定のものを指さない各ウィジェットのクラス名と 制約の緩いスター(*)セパレータが表示される。 3番目の行には、Any Widget と呼ばれる特殊ボタンのセットがある。こ のボタンは、任意のウィジェットにマッチするようにこのレベルを一般化する。 最後の行には、Any Widget Chain と呼ばれる特殊ボタンのセットがあ る。このボタンは1つのレベルをゼロ個以上のレベルにマッチするものに変化 させる。
- この領域の初期状態は、リソース名とドットセパレータを用いる最制限された 状態になっている。この領域で他のボタンを選択することにより、制限を緩め てより多くのウィジェットが指定にマッチするようにできる。極端な場合とし て全ての Any Widget Chain ボタンを選択することもでき、この場合に はアプリケーションの全てのウィジェットにマッチする。異なるボタンを選択 すると、ツリー表示は更新され、現在のリソース指定によってどのウィジェッ トが影響を受けたのかが正確に示される。
- 通常リソースと constraint 情報リソース
- 次の領域を使って、セットする通常のリソースと constraint 情報のリソース の名前を選択することができる。ウィジェットによっては constraint 情報の リソースを持たないものもあり、その場合には領域は現れない。
- リソース値
- この領域を使うと、リソース値を入力することができる。この値はリソースファ イルに記述するときのように正確に入力しなければならない。
-
\n - これは改行文字に置き換えられる。
\### - # は任意の8進値である。これは、このシーケンスを8進値として解釈 した1バイトの値に置換される。 例えば、\000 を指定すると NULL バイトの値を格納することができる。
\<new-line> - これは縮められてなくなる。
\\ - これはバックスラッシュ1つに縮められる。
- コマンド領域
- この領域にはいくつかのコマンドボタンがある。これらのボタンはこのセクショ ンで説明する。
- Set Save File
- このボタンを使って、ユーザはリソースがセーブされるファイルを変更するこ とができる。このボタンを押すとダイアログボックスが現れ、ユーザにファイ ル名を問い合わせる。ファイル名を入力したら、リターンキーを押すか okayボタンをクリックすること。セーブするファイルを変えないでダイ アログを消すには cancel ボタンを押すこと。
- Save
- このボタンは先に述べたリソース行を現在のセーブファイルの末尾に追 加する。セーブファイルが指定されていなければ、Set Save File ダイ アログがポップアップし、ユーザにファイル名を問い合わせる。
- Apply
- このボタンを押すと、前述の リソース行 にマッチする全てのウィジェッ トに対して XtSetValues の呼び出しが試みられる。指定された値はマッチす るウィジェット全てに直接適用される。この動作は、リソースエディタに動的 な操作感覚を与えようとするものである。この機能を使うとユーザはアプリケー ションを外から操作できるようになるので、これを扱いたくないかもしれない。 そこで、特定のアプリケーションが SetValues リクエストをブロックできる ようにするフックが提供されている(後述の editresリクエストのブロック を参照)。
- 残念ながら、X ツールキットとリソースマネージャによるウィジェットの設計 の制限により、本質的に静的なシステムに無理に動的な挙動をさせようとする と、おかしな結果が生じてしまう。適用の結果と、リソース値をセーブしてア プリケーョンを再起動して得られる結果が同じである保証はない。 この機能は変更で実現されるだいたいの感じをユーザにつかませようとするも のであり、得られる結果はかなり疑わしい。とは言うものの、これは editres の最も素晴らしい機能の一つであるので、筆者はユーザがこのツールで遊び、 このツールでできることを確認することをお勧めする。
- Save and Apply
- このボタンは、前述の Save と Apply アクションを1つのボタンにしたもので ある。
- Popdown Resource Box
- このボタンを押すと、リソースボックスがディスプレイから消える。
EDITRES リクエストのブロック
editres プロトコルは Athena ウィジェットセットに組み込まれている。これ により、Xaw とリンクされた全てのアプリケーションはリソースエディタと通 信することができる。これは非常に柔軟性が高くて便利なツールであるが、と ても簡単に悪用されてしまう。そこで、全ての Xaw アプリケーションは後述 の editresBlock リソースに値を指定して、editres に内部情報を漏ら させないようにすることやプロトコルの SetValues の部分を無効にす ることができる。- editresBlock (Class EditresBlock)
- このアプリケーションが editres プロトコルに課すブロッキングのタイプを 指定する。
指定できる値を以下に示す:
- all
- 全てのリクエストをブロックする。
- setValues
- SetValues リクエストを全てブロックする。これはアプリケーションを実際に 変更する唯一の editres リクエストなので、この指定は事実上アプリケーショ ンを読み込みしかできなくする。
- none
- 全ての editres リクエストを認める。
これらのリソースは editres ではなく Xaw アプリケーションに設定す るという点に注意すること。これにより、editres が生成した全部あるいは一 部のリクエストを個々のアプリケーションで止めることができる。当然ながら、 editres も Xaw アプリケーションなので、editres で表示や修正を行なうこ とも可能である(再帰的にもなる)が、これらのコマンドは editres 自身の editresBlock リソースの設定でブロックすることができる。
リソース
editres に対して指定可能なアプリケーションリソースを以下に示す:- numFlashes (Class NumFlashes)
- Show Active Widgets コマンドを実行したときに、アプリケーションの ウィジェットがフラッシュする回数を指定する。
- flashTime (Class FlashTime)
- 前述のフラッシュの間の時間の長さ。
- flashColor (Class flashColor)
- アプリケーションのウィジェットをフラッシュさせるために使う色を指定する。 フラッシュした領域がすぐにユーザの注意を引く明るい色(赤や黄色など)を使 うべきである。
- saveResourcesFile (Class SaveResourcesFile)
- これは、リソースボックス内の Save ボタンが押されたときに、リソー ス行を追加するファイルである。
ウィジェット
リソースを指定するためには、editres を構成するウィジェットの階層 を知っておくとよい。以下での記法としては、インデントで階層構造を示す。 また、最初にウィジェットのクラス名を示し、その後にウィジェットのインス タンス名を続ける。
Editres editres Paned paned Box box MenuButton commands SimpleMenu menu SmeBSB sendTree SmeBSB refreshTree SmeBSB dumpTreeToFile SmeLine line SmeBSB getResourceList SmeLine line SmeBSB quit MenuButton treeCommands SimpleMenu menu SmeBSB showClientWidget SmeBSB selectAll SmeBSB unselectAll SmeBSB invertAll SmeLine line SmeBSB selectChildren SmeBSB selectParent SmeBSB selectDescendants SmeBSB selectAncestors SmeLine line SmeBSB showWidgetNames SmeBSB showClassNames SmeBSB showWidgetIDs SmeBSB showWidgetWindows SmeLine line SmeBSB flashActiveWidgets Paned hPane Panner panner Label userMessage Grip grip Porthole porthole Tree tree Toggle <アプリケーション内でのウィジェット名 . . . TransientShell resourceBox Paned pane Label resourceLabel Form namesAndClasses Toggle dot Toggle star Toggle any Toggle name Toggle class . . . Label namesLabel List namesList Label constraintLabel List constraintList Form valueForm Label valueLabel Text valueText Box commandBox Command setFile Command save Command apply Command saveAndApply Command cancel Grip grip Grip grip
環境変数
- DISPLAY
- デフォルトのホストとディスプレイ番号を取得する。
- XENVIRONMENT
- RESOURCE_MANAGER プロパティに格納されているグローバルなリソースを上書 きする、リソースファイルの名前を取得する。
ファイル
<XRoot>/lib/X11/app-defaults/Editres - 必要なリソースの指定制限
このプログラムはプロトタイプであり、便利な機能をまだたくさん追加したい。 しかし、このプログラムはリソースエディタでできることをユーザに示すこと ができるものと期待している。著者
Chris D. Peterson, formerly MIT X Consortium