リソースファイルあるいは visu_config を使用して Sun WorkShop Visual インタフェースをカスタマイズするには、いくつかの方法があります。本章では、以下に示すリソースファイルを使用してカスタマイズできる主要機能について説明します。
Sun WorkShop Visual リソースの詳細は、付録 D「アプリケーションのデフォルト」を参照してください。また、visu_config の使用については、第 23 章「ユーザー定義ウィジェット」を参照してください。
リソースを使用して構成できる領域には、ダイナミックディスプレイウィンドウがあります。このウィンドウのアプリケーションクラス名は独自の名前で、リソースファイルも独自のリソースファイルになります。詳細は、「ダイナミックディスプレイウィンドウ」を参照してください。
コールバックとプレリュードの編集には 2 通りの方法があります。1 つ目の方法ではSun Edit Services を使用し、2 つ目の方法では 「xterm」 ウィンドウで選択したエディタを呼び出すだけです。本節では、編集機能の構成に必要なアプリケーションリソース、アプリケーション、環境変数について説明します。Sun WorkShop Visual のアプリケーションリソースの使用については付録 D「アプリケーションのデフォルト」を参照してください。最初のリソースは、コールバック編集機能を有効にするかどうかを制御します。
このリソースは、コールバック編集機能を有効にするかどうかを制御します。false に設定すると、この機能に関連するボタンは表示されません。
Sun WorkShop 編集サーバーを使用しないでコールバックとプレリュード編集機能を使用する場合は、使用するエディタを指定してください。
このリソースは、エディタを起動するシェルラッパースクリプトの位置を指定します。デフォルトでは、次の場所に設定されています。
xd_edit はテキストファイルで、さまざまなエディタに適用する起動コマンドを提供するシェルスクリプトを含んでいます。使用したいエディタがこのファイルにリストされていない場合は、デフォルトでエディタ「vi」に指定されている機能を使用します。エディタを呼び出すと、「xterm」が起動され、Sun WorkShop Visual はスタブファイル (コールバックを編集している場合) または基本ソースファイル (プレリュードを編集している場合) の適切な行に移動しようとします。これはすべてのエディタに適用されるわけではありません。たとえば、Motif ベースのエディタの場合は「xterm」は必要がなく、また一部のエディタは起動時に指定された行に移動することができません。
ファイル xd_edit には、各種エディタの例が説明のコメントとともに含まれています。既存の行をコピーして、選択したエディタに対する特別な情報を追加することができます。シェルスクリプト言語の詳細については、UNIX シェルのマニュアルを参照してください。
xd_edit シェルスクリプトは、 EDITOR 環境変数で使用したいエディタの名前を調べます。この変数が設定されていないと、スクリプトは VISUAL 環境変数を調べます。この変数も設定されていない場合のデフォルトは「vi」です。これらの変数のいずれかを使用したい場合、そのエディタが PATH 環境変数にリストされているディレクトリにないときは絶対ディレクトリ名でエディタ名を指定します。エディタが決まると、スクリプトはそのエディタを環境変数 XD_TERM で定義される端末プログラムで実行します。この変数が設定されていない場合は、デフォルトで xterm プログラムを使用するよう設定されています。
編集機能を使用したコールバックの編集については 「コールバック関数の追加」を、またプレリュード編集については 「コードプレリュード」を参照してください。
Sun WorkShop Visual は、各ウィジェットクラスに対してアイコンを持っています。アイコンは、パレットボタンに描かれ、ツリー階層内に表示されます。アイコンは、フルカラー XPM フォーマットのピックスマップ、あるいはモノクロームビットマップにすることができます。起動時に、Sun WorkShop Visual はアプリケーションリソースを検索して各アイコンに対してのピックスマップまたはビットマップファイルを探し出します。ファイルが見つからない場合は、組み込まれているビットマップが使用されます。
各 Motif ウィジェットには、アイコンファイルを指定するアプリケーションリソースがあります。アプリケーションリソースの例を次に示します。
$VISUROOT/lib/locale/<ロケール>/app-defaults/ visu
$VISUROOT は Sun WorkShop Visual のインストールディレクトリです。 < ロケール > には、使用する言語のロケールを指定します。デフォルトのロケールは C です。 LANG 環境変数でロケール名を確認することができます。
アプリケーションリソースファイルには、Motif ウィジェットアイコンのリソース名をすべて示した完全なリストが含まれます。たとえば、矢印ボタンのリソースは次のようになります。
visu.arrowButtonPixmap: arrow.xpm
Sun WorkShop Visual は、 XmGetPixmap() と同じ検索方法で、ビットマップファイルを探します。この検索パスは複雑であるため、詳細は Motif の資料を参照してください。実際問題として、Sun WorkShop Visual はデフォルトピックスマップファイルを $VISUROOT/bitmaps に配置し、XBMLANGPATH 環境変数に $VISUROOT/bitmaps/%B を追加します。ユーザーは、 arrow.xpm 等の正しい名前のファイルを任意のディレクトリに作成し、以下のようにディレクトリとファイル一致文字列「 /%B 」を環境変数 SW_VISU_XBMLANGPATH に追加することにより、ユーザー独自のピックスマップを使用することができます。
Sun WorkShop Visual には、2 組のアイコンピックスマップが提供されています。デフォルトのピックスマップは、 $ VISUROOT /bitmaps にあります。デフォルトアイコンは、最小限の色を使用して描画され、カラーまたはモノクロ画面のどちらでも動作します。
カラーのピックスマップは、 $ VISUROOT /color_icons にあります。デフォルトをカラーピックスマップに変更するには、環境変数 SW_VISU_ICONS を color_icons に設定するか、 $ VISUROOT /color_icons/%B を環境変数 SW_VISU_XBMLANGPATH に追加します。デフォルトのアイコンに戻す場合は、SW_VISU_ICONS の設定を解除、あるいは bitmap に設定します。
また、以下のようにカスタマイズされた Sun WorkShop Visual リソースファイルのリソースを設定して、別のファイル名を指定することができます。
アイコンに対する独自のカラーピックスマップは、XPM3 フォーマットを使用して作成することができます。このフォーマットは、Sun WorkShop Visual ピックスマップエディタを使用して作成することができます (詳細は 「ピックスマップの編集」を参照してください)。アイコンピックスマップは任意のサイズにすることができます。パレットおよびツリーは、最も高さのあるアイコンを収めるため、垂直方向に間隔をとって表示されます。すべてのアイコンピックスマップを同じサイズにすると、Sun WorkShop Visual の表示が整って見えます。デフォルトのサイズは、大画面アイコンピックスマップの場合は 32 × 32、小画面バージョンの場合は 20 × 20 です。
アイコンには、透明の領域を持たせる必要があります。Sun WorkShop Visual はこの領域を使用して、強調の表示、ツリー内の色やパレットボタンの背景色を構成します。XPM は、カラー名 none (カラーオブジェクト none ではないことに注意) を使用して、透明色をサポートしています。透明色の設定方法については、「透明色」を参照してください。
visu_config のウィジェット編集ダイアログを使用すると、ユーザー定義ウィジェットのアイコンを指定することができます。詳細は、「ウィジェットの属性」を参照してください。
「定義を編集」ダイアログを使用すると、各パレット定義のアイコンと、リソースが設定されていない場合に使用されるファイル名を指定することができます。デフォルトピックスマップと同じ方法で、ピックスマップファイルも検索されます。Sun WorkShop Visual がピックスマップを探し出すことができない場合は、定義のルートにあるウィジェットのデフォルトピックスマップを使用します。詳細は第 23 章の「定義ファイルの編集」を参照してください。
stopList リソースを使用して、特定の Motif ウィジェットクラスをウィジェットパレットに表示しないようにすることができます。また、visu_config を使用してユーザー定義ウィジェットパレットに表示しないようにすることもできます。停止されたウィジェットは、対話的に作成することはできません。これらのウィジェットは Sun WorkShop Visual が生成した保存ファイルから読み出すことができますが、選択することはできません。
ウィジェットクラスを停止するためには、 stopList リソースでクラス名を指定します。たとえば、ウィジェットパレットから Motif 区画ウィンドウと矢印ボタンを削除するためには、以下のようにリソースを設定します。
visu.stopList: XmPanedWindow,XmArrowButton
ユーザー定義ウィジェットを停止するには、クラス名を指定します。
visu.stopList: boxWidgetClass,formWidgetClass
visu_config には、各 Motif ウィジェットに対するトグルのついた「停止された Motif ウィジェット」ダイアログがあります。詳細は、第 23 章「ユーザー定義ウィジェット」を参照してください。visu_config でパレットから取り除かれたウィジェットは、Sun WorkShop Visual リソースを使用して元に戻すことはできません。
デフォルト設定では、ウィジェットアイコンがメインウィンドウ上の垂直パレットに 3 列に表示されています。デフォルトの配置は、リソースファイルを使用して変更することができます。また、パレットメニューを使用して実行時にパレットの配置を変更することもできます。
パレットは、別のウィンドウに表示することができます。実行時に別々のパレットを利用するためには、パレットメニューの「別々のパレット」オプションを使用します。デフォルトで独立したパレットを使用するためには、以下のリソースを設定します。
リソースファイルで別々のパレットの設定をする場合は、Sun WorkShop Visual メインウィンドウのデフォルトの高さを明示的に設定する必要があります。
リソースファイルには、以下のような配置変更の例がいくつか含まれています。
! ユーザー定義ウィジェットを持っていない場合には、2 列がよいでしょう。
visu*widgetPalette.composite.buttonBox.numColumns: 2
visu*widgetPalette.basic.buttonBox.numColumns: 2
XDesigner*widgetPalette.composite.buttonBox.XmRowColumn.\
orientation: VERTICAL
XDesigner*widgetPalette.composite.buttonBox.numColumns: 4
XDesigner*widgetPalette.basic.buttonBox.XmRowColumn.\
orientation: VERTICAL
XDesigner*widgetPalette.basic.buttonBox.numColumns: 4
XDesigner*widgetPalette*xwidget_icons.*orientation: VERTICAL
XDesigner*widgetPalette*xwidget_icons.numColumns: 4
Sun WorkShop Visual インタフェースには、ツールバーがあります。ツールバーのボタンは、メニューに対応しています。一般に、ツールバーボタンを選択すると対応するメニューボタンとまったく同じ動作が実行されます。
ツールバーのボタンを構成するためには、 toolbarDescription リソースを使用します。このリソースには、ボタンのウィジェット名をコンマで区切って指定します。また、項目の間隔を広くするための単語 separator 、および Microsoft Windows 様式オプションメニューを挿入するための単語 flavor を指定することもできます。
ボタンの名前を確認するには、メニューバーのボタンの labelString リソースを設定するエントリを、 Sun WorkShop Visual のアプリケーションリソース内で検索します。アプリケーションリソースファイルの場所については。付録 D「アプリケーションのデフォルト」を参照してください。
たとえば、Sun WorkShop Visual のアプリケーションリソースには以下の行が含まれてます。
em_cut は、編集メニュー内の「カット」ボタンのウィジェット名です。
以下の行は、「カット」、「コピー」、「ペースト」、「コアリソース」、「配置」(配置エディタ) および「C」(コード生成) ボタンを持つツールバーを作成します。
visu.toolbarDescription:separator,em_cut,\
em_copy,em_paste,separator,wm_prim,\
wm_layout,separator,gm_c
本節では、メークファイル生成を制御するリソースを説明します。この機能に対する説明は、第 19 章「メークファイル生成」を参照してください。
新しいメークファイルの生成に使用するテンプレートは、ファイル名で、あるいは直接リソースファイルで定義されます。後者の方法は、ファイルが見つからない場合に、フォールバックとして使用されます。
テンプレートファイルは、以下のいずれかのリソースで指定されます。
visu.motifMakeTemplateFile:$VISUROOT/make_templates/motif1
visu.mmfcMakeTemplateFile:$VISUROOT/make_templates/mfc
2 個のリソースが存在するため、異なるテンプレートをカスタマイズして、適切なクラスライブラリを選択することができます。リソースの値には、/bin/sh によって拡張される環境変数を持たせることができます。
フォールバックテンプレートは、 makefileTemplate リソースによって指定されます。
# everything is in /usr/include or /usr/lib\n\
テンプレートの先頭部分でメークファイル変数を編集し、システム構成を反映させることができます。たとえば、変数 XINCLUDES を X インクルードファイルのパスに設定することができます。
ここでは、 メークファイルテンプレートで使用される記号を説明します。一般に、先頭の変数を除いて、デフォルトテンプレートを編集することはお勧めできません。実際のテンプレート行を編集する場合は、まず 第 19 章「メークファイル生成」を参照し、変数を設定して希望する結果を導き出すようにしてください。
#Sun WorkShop Visual: で始まるメークファイルテンプレート内の行を、テンプレート行と呼びます。Sun WorkShop Visual がメークファイルを生成または更新する場合、生成したファイルに基づいて各デザインファイルに適切なテンプレート行のインスタンスを作成し、 Sun WorkShop Visual が生成した接頭辞 XDG_ で始まる特殊記号をファイル名に変換します。 XDG_ 記号は、記号名が接尾辞 _LIST で終わる場合にはファイルのリストに、その他の場合は単一のファイルに変換されます。
リスト記号は、以下に示すように、行において単独で使用され、通常の記号と組み合わされることはありません。
#Sun WorkShop Visual:XD_C_PROGRAMS=XDG_C_PROGRAM_LIST
XDG_C_PROGRAM_LIST 記号は、メークファイルが構築することのできるすべての実行可能ファイルのリストに変換されます。以下はこのテンプレート行の代表的なインスタンスの例です。
XD_C_PROGRAMS=\
myapp1\
myapp2\
接尾辞 _LIST を持たない通常のテンプレート記号は、単一のファイルを表わします。通常のテンプレート記号は、以下に示すように行中で複数の記号と組み合せることができます。
#Sun WorkShop Visual:XDG_C_PROGRAM: XDG_C_PROGRAM_OBJECT $(XD_C_OBJECTS) $(XD_C_STUB_OBJECTS)
#Sun WorkShop Visual: $(CC) XDG_C_DEBUG_FLAGS $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o XDG_C_PROGRAM XDG_C_PROGRAM_OBJECT $(XD_C_OBJECTS) $(XD_C_STUB_OBJECTS) $(MOTIFLIBS) $(LDLIBS)
Sun WorkShop Visual がメークファイルを生成する場合、「メインプログラム」トグルを設定してコードを生成したデザインファイルに対して、これらの行の別のインスタンスを追加します。アプリケーション内のその他のファイルは、 XD_C_OBJECTS および XD_C_STUB_OBJECTS としてリンクされます。
myapp1: myapp1.o $(XD_C_OBJECTS) $(XD_C_STUB_OBJECTS) $(CC) $(CFLAGS) $(XDG_C_DEBUG_FLAGS) $(CPPFLAGS) $(LDFLAGS) -o\myapp1 myapp1.o
$(XD_C_OBJECTS) $(XD_C_STUB_OBJECTS) $(MOTIFLIBS) $(LDLIBS)
myapp2: myapp2.o $(XD_C_OBJECTS) $(XD_C_STUB_OBJECTS) $(CC) $(CFLAGS) $(XDG_C_DEBUG_FLAGS) $(CPPFLAGS) $(LDFLAGS) -o\myapp2 myapp2.o
$(XD_C_OBJECTS) $(XD_C_STUB_OBJECTS) $(MOTIFLIBS) $(LDLIBS)
以下の表に、一般的なテンプレート記号を示します。記号に接尾辞 _LIST を追加して、対応するリスト記号を生成することができます。 _LIST は 「FLAGS」 記号には追加できません。( ) 内は、ファイル名の形式を示します。
さらに、スマートコード生成に使用するメークファイルテンプレート記号を以下の表に示します。ただし、これらの記号は Sun WorkShop Visual だけで使用できるものであって、変更することはできません。
アプリケーションを独立して実行しているときと、Sun WorkShop Visual 内とでのアプリケーションの見た目と使い心地を同じにするために、ダイナミックディスプレイは個別の X リソースデータベースを実行して、独自のアプリケーションクラス名 Xdynamic を使用します。
つまり、ダイナミックディスプレイは Sun WorkShop Visual の特定のリソースを認識することはできません。Sun WorkShop Visual 内の表示内容は、コードをコンパイルして実行したときの表示内容と同じです。
ダイナミックディスプレイは独立して構成できます。これを行うには、 XDdynamic ファイルを作成して、アプリケーション固有のリソースと一般的なリソースの両方をファイルに配置します。たとえば、フォームの挿入行を白黒で印刷するには、次を実行します。
アプリケーション固有のリソースの場合、次のようにして、プロダクトの Sun WorkShop Visual に表示されるアプリケーションクラス名を使用します。
XApplication*XmPushButton.background: #dededededede
この型のアプリケーション固有のリソースは、現在のアプリケーションクラスがファイルのクラスと一致する場合に読み込むだけです。
XDdynamic ファイルは、Sun WorkShop Visual が通常のリソース検索機能を使用して認識できる場所に配置しなければなりません。詳細は、「はじめに」を参照してください。
XDdynamic リソースはダイナミックディスプレイだけに影響し、生成されたコードには影響しません。
アプリケーションの緩い結合が XDdynamic リソースファイルの後に読み込まれて、同様に、個別のアプリケーションリソースデータベースに読み込まれます。この緩い結合は XDdynamic リソースに優先します。