Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

X(7)

xrdb(1)

EDITRES(1)  —  NEWS-OS Programmer’s Manual

名称

editres − X ツールキットアプリケーション用ダイナミックリソースエディタ

形式

editres [ −toolkitoption ...]

オプション

editres は標準的な X ツールキットコマンド行オプションを受け付けます。 (X(7) 参照) コマンド行オプションの順序は重要ではありません。

解説

editres を用いると、 ユーザやアプリケーション開発者は editres プロトコルを 話す X ツールキットクライアントの ウィジェット階層を覗き見ることができます。 加えて editres では、 リソースをアプリケーションに適用した結果を 動的に観察することができるため、 ユーザのリソース設定の手助になります。 ユーザがそのリソース設定で満足できる状態になると、 editres は そのリソース文字列をユーザの X リソースファイルに書き加えます。

使用法

editres は以下の 4 つの領域からなるウィンドウを開きます。

Menu Bareditres の全機能を利用できるようなポップアップメニューの集合です。

Pannerアプリケーションツリーを直観的にスクロールできます。

Message Areaeditres が行おうとする動作についての情報をユーザへ伝えます。

Application Widget Treeクライアントのウィジェットツリーを表示する領域です。 editres のセッションを開始するには、 コマンドメニューの項目 Get Widget Tree を選択します。 これにより、ポインタカーソルが十字形に変わります。 ここで、調べたいアプリケーションのウィンドウのいずれかをクリックします。 そのアプリケーションが editres プロトコルを理解できるなら、 editres はクライアントのウィジェットツリーを表示します。 そのアプリケーションが editres プロトコルを理解しないときには、 数秒後、そのようにメッセージ領域に表示されます。 一度ウィジェットツリーが得られれば、 他のメニューオプションを選択できるようになります。 各メニューオプションの機能を以下に述べます。

コマンド

Get Widget Tree
ウィジェットツリーを受けとるために クライアントをクリックできるモードになります。

Refresh Current Widget Tree
editres はその時点で存在しているウィジェットだけを知ることができます。 多くのアプリケーションは実行中にもウィジェットの生成/破壊を行います。 このメニューを選択すると、 editres はアプリケーションに対してウィジェットツリーを再転送するよう指示します。 これにより、 editres 内部の情報はアプリケーションの新たな状態に合わせて更新されます。

例xman は起動時にその topbox 用のウィジェットだけを生成します。 マニュアルページウィンドウ用のウィジェットは 実際にボタン Manual Page をクリックするまで作成されません。 マニュアルページがアクティブになる前に xman のウィジェットツリーの状態を取り込んでいれば、 マニュアルページが表示された後に ウィジェットツリーをリフレッシュしたくなるでしょう。 それによってマニュアルページのリソースも編集できるようになります。

Dump Widget Tree to a File
アプリケーションのウィジェットツリーの全てをアスキーファイルに 書き出すことができると、アプリケーションの文書化などで便利です。 このファイルはマニュアルに含めることができます。 このメニュー項目が選択されるとポップアップダイアログが出現します。 ファイル名を入力してボタン okay をクリックするか改行キーを入力すると、 そのファイルにウィジェットツリーが書き出されます。 ボタン cancel をクリックすると、このダイアログは取り消されます。

Show Resource Box
現在のクライアントに関するリソースボックスをポップアップします。 このリソースボックス(詳細は後述)によって、 ウィジェットツリー中で現在選択されているウィジェットの どのリソースが設定可能かということを、正確に知ることができます。 一つのウィジェットだけが選択されている必要があります。 選択されていないかあるいはふたつ以上選択されていると、 editres はリソースボックスのポップアップを拒否し、 Message Area にエラーメッセージを表示します。

Set Resource
選択した全てのウィジェットに対して、リソースを設定するダイアログボックスを ポップアップします。 リソース名とその値を入力しなければいけません。 タブキーを使用して、 リソース名フィールドとリソース値フィールドを スイッチすることができます。

Quiteditres を終了させます。

ツリーコマンド

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 IDs

Show Widget Windows
最初、ウィジェットのラベルには対応するウィジェット名が表示されます。 このコマンドでツリー中の全てのウィジェットのラベルを、 それぞれ、クラス名、ウィジェットID、対応するアプリケーション中のウィンドウ、 に変更できます。 ウィジェットID とウィンドウは 16 進数で表示されます。 以上に加えて、 ツリーコマンドのそれぞれに、キーボードアクセラレータが設定されています。 この場合、入力フォーカスがツリー中の個々のウィジェットにあると、 これらの操作はそのウィジェットにだけ行われます。 フォーカスがツリーの背景にあるとツリーメニューの場合と同じになります。 トランスレーションエントリは アプリケーション中のどのウィジェットに対しても適用できます。 それがウィジェット “Tree” の子ならば、 トランスレーションはそのウィジェットにだけ適用されます。 そうでない場合は、ツリーメニューのコマンドと同じになります。

Flash Active Widgets
Select Widget in Client コマンドと反対の動作をするコマンドです。 ウィジェットツリー内で、現在選択されている各ウィジェットに対して、 対応するアプリケーションのウィジェットを flashColor 色で、 numFlashes (デフォルトは、3) 回、 フラッシュします。

KeyOptionTranslation Entry
 spaceUnselectSelect(nothing)
wSelectSelect(widget)
sSelectSelect(all)
iInvertSelect(invert)
cSelect ChildrenSelect(children)
dSelect DescendantsSelect(descendants)
pSelect ParentSelect(parent)
aSelect AncestorsSelect(ancestors)
NShow Widget NamesRelabel(name)
CShow Class NamesRelabel(class)
IShow Widget IDsRelabel(id)
WShow Widget WindowsRelabel(window)
TToggle Widget/Class NameRelabel(toggle)

ウィジェット上でボタン 1 をクリックすると、 選択されているウィジェットのセットに、それを追加します。 ウィジェット上でボタン 2 をクリックすると、 それ以外のウィジェットを全て選択解除し、 そのウィジェットのみを選択します。 ウィジェット上でボタン 3 をクリックすると、 ウィジェットのインスタンス名とウィジェットのクラス名間のラベルを トグルします。

リソースボックスの使用法

リソースボックスは異なる 5 つの領域を持っています。 画面の上から順にそれぞれの領域について以下に述べます。

リソース行
リソースボックスの一番上の領域には 現在のリソース名が表示されます。 これはファイルにセーブするとき、あるいは適用するときに 実際に使われるものです。

ウィジェット名とウィジェットクラス
この領域で、どのウィジェットにこのリソースを適用するかを正確に選択できます。 これは 3 つの行から成り立ちます。 最初の行には、 選択されたウィジェットとその全ての子の名前、 と限定的なドット(.)セパレータが含まれます。 2 番目の行はより特定度の低い各ウィジェットのクラス名と、 より限定的でないアスタリスク(∗)セパレータから成ります。 3 番目の行には Any Widget と呼ばれる特別なボタンがあります。 これは、このレベルをどのウィジェットとも一致させます。 最後の行には Any Widget Chain と呼ばれる特別なボタンがあります。 あるレベルをゼロまたは複数のレベルに一致するようにできます。

この部分の初期状態は、 リソース名とドットセパレータを用いた最も限定的なものです。 この領域の他のボタンを選択することで、 簡単により多くのウィジェットが指定に一致するようにできます。 極端な例では、全ての Any Widget Chain ボタンを選択すると、 アプリケーション中の全てのウィジェットに一致することになります。 異なるボタンを選択すると、 現在のリソース指定によって実際に影響を受けるウィジェットを表すように ツリーの表示が更新されます。

通常リソースと拘束リソース
その次の領域で、 通常リソースあるいは拘束リソースの名前を選択することができます。 拘束リソースを持たないウィジェットもあるので、 その部分の表示がないこともあります。

リソース値
この領域でリソースの値を入力することができます。 これはリソースファイルに記述するのと全く同じものである必要があります。 このため、改行はエスケープしなければなりません。 リソースファイルで用いられる特別な文字として以下のようなものがあります。

\n − 改行文字に置き換えられます。
\### − これを 8 進数と見た 1 バイトで置き換えられます。 (ここで # は 8 進数 1 桁) 例えば NULL 文字を含んだ値は \000 によって指定することができます。
\<new-line> − 取り去られます。
\\ − 単一の “\” に圧縮されます。

コマンド領域
この領域には以下で説明される幾つかのコマンドボタンがあります。

Set Save File
このボタンでリソースをセーブするファイルの名前を変更できます。 これをクリックするとファイル名を尋ねるダイアログボックスが現れるので、 希望するファイル名を入力後、 改行キーを入力するか、ボタン okay をクリックします。 ダイアログボックスを取り消したいときは、 ボタン cancel をクリックします。

Saveこのボタンは前述の resource line を 現在のセーブファイルの最後に追加します。 Set Save File でセーブファイルが設定されていないと、 ダイアログボックスが現れてファイル名を要求します。

Applyこのボタンは 前記 resource line に一致する全てのウィジェットに対して、 XtSetValues の呼び出しを試みます。 指定された値は一致する全てのウィジェットに直接適用されます。 これはリソースエディタが動的に見えるようにするための試みです。 この機能によって、 アプリケーションを扱えないような状態にしてしまうことができるため、 特定のクライアントがこれらの SetValues リクエストをブロックできるよう、 フックが用意されています。 (後述の editres リクエストのブロック 参照). 

不幸にして、 ウィジェットに対する X ツールキットとリソースマネージャからの 設計上の制約のせいで、 本質的に静的なシステムに動的な振舞いを強制しようとすると おかしな結果をもたらすことがあり得ます。 指定値の適用の結果が、 値をセーブしたときとアプリケーションを再スタートしたときとで 同じになるという保証はありません。 この機能は、 変更がもたらす結果の大まかな感じが判るようにということで用意されており、 得られた結果は最適であるかどうか疑わしいと思わなければなりません。 いままで、 これが editres の最も特徴とするところのひとつであり、 これを使ってみることを強く勧め、 これのできることを確かめてみるよう いってきました。

Save and Apply
これは前述の Save と Apply の動作を ひとつのボタンにまとめたものです。

Popdown Resource Box
このボタンでリソースボックスの表示をなくすことができます。

editres リクエストのブロック

editres プロトコルは Athena ウィジェットセットに組み込まれています。 このため、 Xaw とリンクされた全てのアプリケーションは リソースエディタとやりとりすることができます。 これは、 大きな自由度と有用なツールを提供しますが、 誤用することも容易です。 このため、Xaw を利用するクライアントは、 editres によるその内部情報の漏洩を防ぐため、 あるいはプロトコルのうちの SetValues を禁止するために、 下記のリソース editresBlock に値を設定することが可能になっています。

editresBlock (Class EditresBlock)
このクライアントが望む editres プロトコルに対するブロックの種類を指定します。 有効な値は以下の通りです。

all全ての要求をブロックします。

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  <name of widget in client>
.
.
.
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 に保持されている グローバルリソースをオーバーライドします。

関連ファイル

/usr/lib/X11/app-defaults/Editres − 必要なリソース指定

関連事項

X(7), xrdb(1), Athena Widget Set

制限事項

これはプロトタイプで、 まだまだ追加したい機能はたくさんありますが、 これは、リソースエディタで何ができるかを紹介するものです。

著作権

Copyright 1990, Massachusetts Institute of Technology. 
権利と許可の声明文については、X(7) を参照のこと。

著者

Chris D. Peterson, formerly MIT X Consortium

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026