editres(1) 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 コマンドの反対の動作をす る。つまり、アプリケーションの対応するウィジェットを numFlashesflashColor 色にフラッシュさせることによって、ウィジェットツリー 内で現在選択されているウィジェットをユーザに示す。


     キー    オプション          トランスレーションのエントリ
     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