editres - X
ツールキットアプリケーションの動的リソースエディタ
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 -
必要なリソースの指定
関連項目¶
X(7),
xrdb(1), Athena
ウィジェットセット
このプログラムはプロトタイプであり、便利な機能をまだたくさん追加したい。
しかし、このプログラムはリソースエディタでできることをユーザに示すこと
ができるものと期待している。
Chris D. Peterson, formerly MIT X Consortium