本マニュアルの学習セクションは、以下の章から構成されています。
学習セクションを読み進めながら、ワークステーション上で操作手順を段階的に実行していくと簡単なインタフェースを構築することができるようになっています。また、インタフェース構築の過程では、Sun WorkShop Visual の主要な機能をすべて紹介します。
手順をすべて実行すると、図 2-1 に示すような学習インタフェースができあがります。
クロスプラットフォームに関連する情報を含む一般的な技術を説明する個所を除き、この学習例の大部分は Motif 専用の形式での開発を説明しています。構造化コード生成とクロスプラットフォーム開発の学習例については、それぞれ 第 9 章「C++ コードの学習」と 第 12 章「Microsoft Windows と Motif のアプリケーション作成」を参照してください。
インタフェース構築の第 1 段階は、構築に使用するウィジェットを決定し、Sun WorkShop Visual インタフェース上で適切なデザイン階層を開発することです。本章ではこの操作手順を説明していきます。その過程では、以下に示す動作方法を学習します。
学習を開始する前に、システムに Sun WorkShop Visual を正しくインストールします。Sun WorkShop Visual がインストールされていない場合、あるいは下記のコマンドを入力しても Sun WorkShop Visual のメインウィンドウが表示されない場合には、インストール手順を参照するか、システム管理者にお問い合わせください。
以下のコマンドのどちらかを使用して、X から Sun WorkShop Visual を起動します。どちらのコマンドを使用した場合にも、Sun WorkShop Visual メインウィンドウが表示されます。
VGAまたはその他の小画面ディスプレイの場合は、次のように入力します。
注 - small_visu を使用して Sun WorkShop Visual を起動した場合は、本マニュアルで示されているアイコンとは多少異なる、小さめのアイコンが表示されます。
Sun WorkShop Visual には、多数のコマンド行オプションがあります。これらのオプションは、第 24 章「コマンド行の操作」に記述されています。また、 -x オプションを使用して Sun WorkShop Visual を起動すると、コマンド行オプションの一覧を見ることができます。
以前に保存したデザインでの作業を再開する場合は、visu <ファイル名> のようにコマンド行でファイル名を指定することができます。現在のファイル名は、上部のウィンドウ枠に表示されます。変更が保存されていない場合は、ファイル名の後にアスタリスク (*) が表示されます。
クロスプラットフォーム開発機能を使用するために Sun WorkShop Visual を Microsoft Windows モードで起動する場合は、コマンド行オプション -windows を使用します。
Sun WorkShop Visual の「ファイル」メニューには、作業の保存、プログラムの終了、後でデザインに戻って作業を行うためのコマンドが用意されています。学習中のどの時点でもこれらのコマンドを使用することができるように、まず、これらのコマンドを紹介します。
「ファイル」メニューから「別名保存」( <Ctrl-A> ) を選択すると、デザインを保存することができます。「別名保存」は、本章で後ほど説明するファイルブラウザを表示します。ファイルブラウザを使用すると、デザインの名前を指定することができます。
すでにファイル名を指定してある場合は、「保存」( <Ctrl-S> ) を選択することができます。この場合は、ファイル名の指定を要求されないため、「別名保存」よりも短い時間で保存を行うことができます。規約により、Sun WorkShop Visual デザインファイルの名前には、接尾辞として .xd が付けられます。
Sun WorkShop Visual の上部のウィンドウ枠には、現在のファイル名が表示されています。変更が保存されていない場合は、ファイル名の後にアスタリスク (*) が表示されます。
「別名保存」 ダイアログで、Java 用ビジュアルアプリケーションエディタの VisajTM に取り込むのに適したファイルを選択するオプションを指定できます。詳細は、「Sun WorkShop Visual のデザインを Visaj に移行」 を参照してください。
保存されているデザインファイルを Sun WorkShop Visual に読み込むためには、「開く」( <Ctrl-O> ) コマンドを使用します。「開く」は、本章で後ほど説明するファイルブラウザを表示します。ファイルブラウザを使用すると、既存のデザインファイルを選択することができます。「新規」( <Ctrl-N> ) は、構成領域の内容を消去し、新たにデザインを開始します。「終了」( <Ctrl-E> ) はプログラムを終了します。 これらの 3 つのコマンドは、すべてデザインに行なった変更を破棄します。デザインへの変更が保存されていない場合、Sun WorkShop Visual は、これらのコマンドを実行する前に変更を保存するかどうかをユーザーに尋ねます。
Sun WorkShop Visual のメニューからは、次の 3 通りの方法でコマンドを選択することができます。
キーボードアクセラレータは、メニューコマンドを実行するキー入力です。たとえば、 <Ctrl-S> を押すと、「保存」コマンドを実行することができます。
アクセラレータは、Sun WorkShop Visual のメインウィンドウのいずれかの領域に入力フォーカスがある場合に動作します。学習セクションでコマンドの実行を指示する場合には、アクセラレータは括弧内に示されます。また、画面上のメニュー内ではコマンド名の右側に表示されます。
メニュー名およびオプションで下線の付いた文字がニーモニックです。ニーモニックは、マウスを使用せずにメニュー間を行き来するための手段です。ニーモニック文字を使用してメニューをプルダウンするためには、 Meta キーを押しながらニーモニック文字を押します。たとえば、 <Meta-F> を押すと、「ファイル」メニューをプルダウンすることができます。メニューをプルダウンした後は、 <Meta> を使用せずにニーモニックを押して、任意の項目を選択します。たとえば、ニーモニックを使用して「保存」を呼び出す場合は、 <Meta-F> <S> の順でキーを押します。
第 3 章「 リソース」では、Sun WorkShop Visual で作成するメニューバー上へのアクセラレータおよびニーモニックの設定方法を説明します。
Sun WorkShop Visual インタフェースには、ツールバーがあります。ツールバーには、ユーザーが独自に構成した、メニュー項目に対応するボタンを持たせることができます。図 2-2 にデフォルトのツールバー配置を示します。
ツールバーのボタンを選択すると、対応するメニューボタンとまったく同じ動作が実行されます。
Sun WorkShop Visual が Microsoft Windows モードである場合は、デフォルトのツールバー構成には、「様式」オプションメニューと、「Microsoft Windows 準拠」トグルボタンという 2 個の要素が余分に含まれています。これらは次のように表示されます。
「様式」オプションメニューは、Motif や Motif XP など、生成する対象コードを示すため、ツールバーのコード生成ボタンを使用する場合に便利です。「Microsoft Windows 準拠」トグルは、現在のデザインが Microsoft Windows 準拠であるかどうかを示します。つまり、Sun WorkShop Visual が、デザインに対して有効な Microsoft Windows コードを生成することができるかどうかを示します。また、トグルボタンを使用して、Microsoft Windows に準拠しているかどうかを検査するプロセスを呼び出すこともできます。これらの機能の詳細は、「Microsoft Windows 準拠」を参照してください。
ステータス行は、Sun WorkShop Visual ウィンドウの最下部に表示されます。マウスボタンがメニュー項目、ツールバーのボタン、ウィジェットパレットのボタンのうちいずれかの上に移動すると、各メニュー項目またはボタンの機能を説明する文 (プロンプトヘルプ) が表示されます。これは、ピックスマップ・エディタおよび配置エディタ内にあるツールバーなど、すべてのツールバーについても同様です。使用可能なボタンに対してのみ、情報が表示されます。
ダイアログのデザインには、まずシェルウィジェットを使用します。図 2-4 に示すシェルアイコンは、ウィジェットパレットの左上隅にあります。シェルウィジェットは 3 種類あります。リソースの 1 つを変更することによって、いずれかのシェルウィジェットにすることができます。
1. アプリケーションシェル
アプリケーションのメインウィンドウです。アプリケーションを実行したときに最初に表示されます。
2. 最上位シェル
アプリケーションシェルがアイコン化されている場合でも表示されるウィンドウです。このウィンドウだけをアイコン化することもできます。
3. ダイアログシェル
アプリケーションシェルと別々にアイコン化することはできません。一般的に、アプリケーションのサブダイアログとして使用します。
シェルの種類についての詳細は、「シェルの型」 を参照してください。
新しいデザインを作成する際、最初はシェル以外のアイコンを使用できません。
注 - 使用方法を習得するために、最初はこの方法でアプリケーションのデザインを開始してください。その他の手順として、Sun WorkShop Visual ユーティリティの AppGuru を使用することもできます。詳細は、第 13 章「デザインツール」を参照してください。
ウィジェットのインスタンスが階層に追加される場合、そのインスタンスには Sun WorkShop Visual によって 2 個の名前 (ウィジェット名と変数名) が割り当てられます。変数名は、コード内でウィジェットを参照する際の名前です。ウィジェット名は、ツールキットがリソースを割り当てるために使用する名前です。デフォルトでは、これらの 2 個の名前は同じで、識別しやすいように <ウィジェット>n の形式になっています。<ウィジェット> には、button、form、shell のようなウィジェットのクラス名が、n には整数が割り当てられます。この整数は、同じウィジェットクラスのインスタンスが追加されるたびに、button1、button2、または、 form1、form2 のように、1 ずつ増加します。ただし、Sun WorkShop Visual の機能のいくつかは明示的な変数名を要求するため、重要なウィジェットを追加する場合は、明示的な変数名を割り当てるようにしてください。
1. 画面の上部にある「変数名」のボックスをダブルクリックします。
ボックスをダブルクリックすると、その中のすべてのテキストが強調表示されます。新しいテキストを入力して Return キーを押すと、強調表示されているテキストと置き換えられます。
ユーザーが別のウィジェットを作成したり選択するときに、ウィジェットに自動的に名前が割り当てられます。また、 Return キーを押して、変数名ボックスに名前を付けることもできます。
注 - 変数名は、Sun WorkShop Visual がコードを生成する際に、ウィジェット構造 体でのウィジェットのインスタンスの参照に使用されるため、固有のものでなければなりません。Sun WorkShop Visual は、デザインの他の場所で使用されている変数名の入力を受け付けません。コンパイル時に問題が発生することを避けるため、ウィジェット変数名にはアプリケーション関数または変数の名前、Motif や X の定義あるいは関数名、C または C++ 予約語を使用しないでください。
変数名を変更すると、「ウィジェット名」ボックスにウィジェット名を明示的に指定した場合を除いて、ウィジェット名にも自動的に同じ名前が割り当てられます。ウィジェット名は固有の名前である必要はありません。同じウィジェット名を持つウィジェットは、リソース設定を共有するように構成することができます。共通のウィジェット名によってウィジェットをグループ化すると、1 回の操作でリソースのリセットを行うことができるため便利です。
複数のウィジェットを選択する方法については、「複数選択」を参照してください。共有リソースの詳細は、「共有リソース値」を参照してください。
シェルウィジェットは、どのような種類の子も持つことができます。ただし、その数は 1 つだけです。したがって、その他のウィジェットを含むことができるウィジェットを選択する必要があります。一般に、メインウィンドウ、ブリテンボード、フォーム、ダイアログテンプレートが子として使用されます。学習用インタフェースのデザインには、ダイアログテンプレートが適しています。
アイコンの種類がわからない場合は、Sun WorkShop Visual の「パレット」メニューで名前とアイコンの両方をオンにするか、ヘルプメニュー ( <Meta-H><P> ) からウィジェットパレット・ダイアログを表示します。また、ウィジェットパレット上のアイコンにマウスポインタをあわせると、そのウィジェットの名前が Sun WorkShop Visual メインウィンドウ下部のステータス行に表示されます。
「パレットメニュー」および 「ウィジェットメニュー」を参照してください。
ダイアログテンプレートは、メニューバー、任意の数のボタン、作業領域という 3 種類の子を任意で持つことができます。ダイアログテンプレートは、子メニューバーをウィンドウの上部に配置し、任意の型のボタンであるその他の子すべてをウィンドウの下部に、等間隔で 1 行に配置します。このボタンの行をボタンボックスと呼びます。
ダイアログテンプレートは、メニューバーとボタンボックスの間に作業領域を配置します。ボタンボックスとの間は、セパレータ (水平線) を使用して区切られます。セパレータはダイアログテンプレートの一部として作成され、ウィジェット階層に自動的に表示されます。
図 2-1 に示される学習用インタフェースの場合、メニューバー、カスケードボタンおよびボタンボックスを形成するプッシュボタンにはラベルが付けられています。作業領域にはラジオボックスという縦に配列されたトグルボタンが含まれています。
デザインにウィジェットを追加していく場合は、ウィジェットにも変数名を割り当てていくと良いでしょう。明示的な名前を使用すると、ウィジェットの識別が容易になります。また、特定の操作には変数名が必要です。ただし、なんらかの方法でウィジェットを参照しない限り、Sun WorkShop Visual は名前を厳密に要求することはありません。したがって、ここでは学習セクションで使用する名前に対する手順のみを紹介します。
ダイアログテンプレートウィジェットを追加すると、構成領域に、配置が小さな矩形として表示されます。これがダイナミックディスプレイ・ウィンドウです。Sun WorkShop Visual はこの中にインタフェースの実装例を構築していきます。
ダイナミックディスプレイには、ウィジェットインスタンスの集合が表示されます。
Sun WorkShop Visual はウィジェットの絵の描画は行いませんが、インタフェースが実行時に使用するものと同じ Motif 関数呼び出しを使用して、実際にウィジェットを作成します。この時点では、ダイナミックディスプレイ・ウィンドウにはシェルとダイアログテンプレートが含まれているだけであり、認識できるようなその他の機能はほとんどありません。
ウィジェットを追加して移動を行なっていくに従い、ウィジェットは、完成したインタフェースで表示される場合と同様に、このウィンドウ内に表示されます。階層の表示の妨げにならない場所へダイナミックディスプレイ・ウィンドウを移動するためには、通常のウィンドウマネージャ機能を使用してください。
ウィジェットを階層に追加する場合に、意図したとおりにウィジェットが表示されないことがあります。この場合は、後で配置エディタを使用して正しく表示させることができます。
ダイナミックディスプレイに表示される配置は、デザインを実装した場合に構築されるインタフェースのプロトタイプです。したがって、ボタンのクリック、メニューのプルダウン、テキストフィールドへのテキストの入力などを行うことができます。
Sun WorkShop Visual では、ウィジェットを 1 つだけ撰択、複数を撰択、またはまったく撰択しない状態にすることが可能です。1 つだけ撰択されている場合は、そのウィジェットを現在選択されているウィジェットと呼びます。リソースの設定、カット & ペースト、あるいは子の生成など、どのような操作を行う場合でも、その前にウィジェットを選択しなければいけません。選択されたウィジェットは、構成領域とダイナミックディスプレイにおいて強調表示されます。
選択されたウィジェットの子になることができないウィジェットは、ウィジェットパレット上でグレー表示され、選択することはできません。
通常、ウィジェットが階層に追加されると、そのウィジェットは選択された状態になっています。このため、 ダイアログテンプレートを追加すると、そのダイアログテンプレートが自動的に選択されます。この状態でウィジェットを追加すると、追加されたウィジェットはダイアログテンプレートの子になります。しかし、ウィジェットが子を持つことができない場合には、そのウィジェットは選択できません。別のウィジェットを選択する場合は、構成領域内でそのウィジェットのアイコンをクリックします。
別のダイアログ内のウィジェットを選択に加えるには、ウィンドウ保持領域で Shift キーを押したままシェルを選択します。このようにすると、現在の選択内容を保持したまま、別のダイアログ内のウィジェットを撰択することができます。
選択するウィジェットが複数の場合は、以下の作業を行うことができます。
構成領域の空白部分をクリックするか、 Shift キーを押したまま選択した各ウィジェットをクリックすると、どのウィジェットも選択していない状態にできます。この場合、デザイン全体に影響するような機能のみ実行することができます。
配置の下部にあるボタンは、図 2-7 に示すように、 ダイアログテンプレートの子として直接追加することができます。
クリックを行うごとに、プッシュボタンがダイアログテンプレートの子として追加されます。プッシュボタンは、ダイナミックディスプレイにも「 button<n> 」というデフォルトラベルで表示されます。第 3 章「リソース」では、これらのラベルに適切なテキスト文字列を割り当てることになります。
ダイナミックディスプレイは、図 2-8 のようになっています。
ウィンドウのタイトル「ダイアログ」は、Sun WorkShop Visual によって設定されるデフォルトのラベルです。ラベルを変更する方法については、「メインシェルのリソース設定」を参照してください。
画面上部にあるメニューバーは、多くのコンピュータ・インタフェースに共通する機能です。 Motif では、メニューバー・ウィジェットを提供しています。このウィジェットは、メニューを形成するための一連の他のウィジェットが追加されるまでは目に見えません。Sun WorkShop Visual は、関連するウィジェットを除くすべてのウィジェットをグレー表示することにより、メニューバー構築の過程が正しく行われるようにします。図 2-9 に追加する必要のある階層を示します。
1. ダイアログテンプレートウィジェットを選択し、ウィジェットパレット上のメニューバーアイコンをクリックします。
ダイアログテンプレートは、ダイナミックディスプレイ内で自動的に作業領域の上にメニューバーを配置します。
カスケードボタンを追加すると、図 2-10 に示すように、ダイナミックディスプレイにはデフォルトラベル「cascade」を持つカスケードボタンが表示されます。
これらのボタンは、マウスでクリックして、動作を確認することができます。ただし、この時点ではボタンはメニューを含んでいないため、何も行われません。
ダイナミックディスプレイ内の左のカスケードボタンには、この時点で、動作可能なメニューが含まれます。メニューは、カスケードボタン上にカーソルを置いてマウスボタン 1 を押し続けると、図 2-11 のように表示されます。
メニュー内のプッシュボタンには、デフォルトラベルが付いていますが、これらは後で変更することができます。メニューには、プッシュボタン、トグルボタン、カスケードボタン (サブメニュー作成に使用) という 3 種類の子を持たせることができます。これらの項目は、マウスによって選択することができます。また、これらの子には、ラベルやセパレータを持たせることが可能です。ここで使用するメニューは、セパレータを表示してボタンを 2 つの領域に分割しています。
デザイン階層のメニューバー部分を完成させるには次のようにします。
この時点で、2 番目のカスケードボタンには 1 個のオプションを持つ動作可能なメニューができました。このメニューは、ダイナミックディスプレイ内でマウスを使用してプルダウンすることができます。
現段階で、インタフェースには上部にメニューバーが、下部にいくつかのボタンがありますが、作業領域がないため、その追加を行う必要があります。ダイアログテンプレートは、子としての作業領域を 1 つしか持つことができません。ただし、子には複数の子を持つコンテナウィジェットを指定することができます。ここでは、アイスクリームの味とトッピングを選べるようにするため、作業領域に複数のウィジェットを取り入れます。したがって、作業領域にはフォームを使用することにします。
フォームは、子が与えられるまでインタフェース上には表示されません。インタフェースのオプションは、以下の 3 グループに分けて配置します。
ラジオボックスは、フォームと同様に目に見えないウィジェットであり、子の動作を制御するためだけに存在します。ラジオボックスは、ラジオボタンとして構成するトグルボタンのグループを収納します。1 回にユーザーが選択できるラジオボタンは 1 個だけです。図 2-12 に追加する必要のある階層を示します。
図 2-1 で「Double Scooper」および「Small」ラジオボタンを囲んでいる黒い線は、ラジオボックスそのものではなく、ラジオボックスを含んでいるフレームウィジェットです。フレームは、ラジオボックス構成要素の論理的グループを表示するために使用されます。
図 2-12 に、結果として生じるラジオボックスの階層を示します。
ダイナミックディスプレイは、図 2-13 のようになります。
「ローカラム」コンテナウィジェットは、図 2-1 でトッピングを指定するラベルおよびテキストフィールドの配列に使用されます。
3. 以下の順序でアイコンをクリックします: ラベル、テキストフィールド、ラベル、テキストフィールド、ラベル、テキストフィールド
ローカラムは、行または列を構成する際に、必ず順番通りに子を取り入れるため、ラベルおよびテキストフィールドウィジェットは、この順序通りに追加されなければなりません。この場合は、行を作成し、その後で各行にラベルとテキストフィールドを持たせます。
図 2-14 に階層のローカラム部分を示します。
図 2-15 に結果として表示されるダイナミックディスプレイを示します。
デフォルトにより、ローカラムウィジェットは単一の垂直列に配置されるため、
図 2-1 に示される配置とは異なっています。学習セクションの後半では、リソースを変更して意図したとおりの効果を実現します。
配置に必要な最後のオプショングループは、作業領域の下部に示すアイスクリームの味を表わすトグルボタンの集合です。
これで学習用インタフェースのデザイン階層は完成しました。完成した階層は、 図 2-16 のようになります。
図 2-17 に示されるインタフェースは、まだ完成したものではありませんが、適切な親子関係で必要とされるすべてのウィジェットが含まれています。後の章で、リソースパネルおよび配置エディタを使用して、インタフェースの外観を改良します。
追加したトグルボタンとラジオボックス内のボタンの外観には違いがあります。トグルボタンがラジオボックス内にある場合は、ラジオボタンになります。ラジオボタンは丸いインジケータにより区別されます。ラジオボックスの子ではないトグルボタンは、個々にオンとオフに切り換えることができ、正方形のインジケータを持ちます。
デザインへの最後のウィジェットの追加が終わりました。ここで「別名保存」コマンドを使用して作業を保存します。
以上で、インタフェースのメインウィンドウの設定が終了しました。ただし、大部分のインタフェースには複数のウィンドウがあります。本章では、インタフェースに 2 つめのウィンドウを追加する方法について説明します。2 つめのウィンドウは、
図 2-18 に示すような単純なヘルプ画面です。
このヘルプ画面は、ユーザーがインタフェースのヘルプメニューの「About This Layout」オプションを撰択すると表示され、ユーザーが「OK」ボタンをクリックすると消去されます。この動作は、Sun WorkShop Visual の著作権画面の動作と似ています。開始する前に、Sun WorkShop Visual のヘルプメニューをプルダウンし、「WorkShop Visual について」を選択して動作を確認してください。著作権画面は、「WorkShop Visual について」をクリックすると表示され、「了解」ボタンをクリックすると消去されます。
デザイン階層内で選択しているウィジェットには関係なく、いつでもウィンドウを新規に作成できます。
ダイアログをインタフェースに追加するには、以下のようにします。
1. ウィジェットパレットのダイアログシェルアイコンをクリックします。
シェルの種類の違いについては、「シェルの型」 を参照してください。
Sun WorkShop Visual は構成領域を消去し、新規ウィンドウ用の階層を表示します。この時点では、新規ウィンドウはシェルだけで構成されています。最初のウィンドウのダイナミックディスプレイは表示されたままなので、2 つめのウィンドウを構築する際に、両方のダイナミックディスプレイを同時に見ることができます。
図 2-19 に、サブウィンドウの階層およびデフォルトのダイナミックディスプレイを示します。この画面は非常に単純なので、作業領域には子を持つコンテナウィジェットの代わりにラベルを使用することができます。ダイアログテンプレートは、ボタンボックス内のプッシュボタンをその上にある作業領域とともに中央に配置します。メニューバーはありません。
This dialog can be used
to provide help for your
application
デザインにシェルを追加する際は、シェルの型に関係なく、 Sun WorkShop Visual のメインウィンドウの右上のウィンドウ保持領域に、対応するアイコンが表示されます (図 2-20 を参照)。あるウィンドウの階層から別のウィンドウの階層に移動するには、ウィンドウ保持領域内で、移動先のウィンドウに対応するシェルアイコンをクリックします。シェルアイコンの外観は通常よく似ています。また、必ずしも作成順にウィンドウ保持領域に表示されるわけではないため、他のシェルアイコンと区別がしにくい場合があります。そこで、ウィンドウ保持領域内のアイコンを区別することができるよう、すべてのシェルアイコンに明示的な変数名を割り当て、「表示」メニューの「ダイアログ変数名を表示」オプションをオンにすることをお勧めします。
ウィンドウ保持領域でのシェルの順序には意味があります。デザインをファイルに保存する際は、シェルはウィンドウ保持領域に表示された順序 (左から右) で保存されます。ファイルを読み込む際は、Sun WorkShop Visual はその順序を保持し、最初 (左端) のシェルの階層およびダイナミックディスプレイを最初に表示します。これが最初に表示したいシェルではない場合は、シェルアイコンをクリックし、マウスボタン 1 を押したままそのアイコンを新しい位置までドラッグすると、ウィンドウ保持領域内のシェルの順序を変更することができます。
デフォルトでは、シェルの名前はウィンドウ保持領域に表示されます。シェルの型を確認する場合は、次のようにしてデフォルト表示をオフにできます。
デフォルトでは、ウィンドウ保持領域にシェルの名前が表示されますが、名前を表示しないように設定することもできます。この場合にシェルの型を確認するには、次のようにします。
この時点で、次の章に直接進んで学習を続けるか、以降のページで解説されているさまざまな編集機能を読んで、実際に使用してみることもできます。
Sun WorkShop Visual は、階層を編集するためのドラッグと、カット & ペースト機能を備えています。これらの機能を使用すると、指定したリソース値を失うことなくデザインを変更することができます。
すべての編集機能は、選択されたウィジェットの子に対して等しく作用します。このため、 フォームまたはローカラムなどのコンテナウィジェット、およびその下のウィジェットすべてを 1 つの単位として移動することにより、コンテナウィジェット内部のウィジェットの相対位置を維持することができます。
ウィジェットおよびその子を新しい位置にドラッグするためには、ウィジェット上でマウスボタン 1 を押したまま新しい位置へドラッグします。ドラッグしているウィジェットが親として有効なウィジェットの下に正しく位置付けられると、そのウィジェットを新しい親と接続する垂直線が現れます。この線が表示されたら、マウスボタンを放します。線が現れる前にマウスボタンを放すと、ドラッグされたウィジェットは以前の位置に戻ってしまいます。
ウィジェットの場合は、同じ親の下での別の位置、または別の親にドラッグすることができます。ただし、Sun WorkShop Visual では、Motif で無効となっている位置へのウィジェットのドラッグはできません。
メインウィンドウの一部を構成するスクロールバーのように、コンポジットウィジェットの一部であるウィジェットの場合は、その親をドラッグします。自身をドラッグすることはできません。
ウィジェットの子は、そのウィジェットと一緒にドラッグされるため、ウィジェットをその子の下の位置にドラッグすることはできません。この操作を行う場合は、以下に説明するコピー機能を使用します。
ウィジェットのドラッグを開始した後で操作を止めるには、構成領域の空の場所にドラッグを行なって、ドラッグを取り消すことができます。
元のウィジェットをそのままにしておき、そのウィジェットおよびその子を新しい場所にコピーする場合は、マウスボタン 2 を使用してウィジェットをドラッグします。コピーしたウィジェットには、デフォルトの変数名が割り当てられます。
「編集」メニューには、階層の変更に使用することができる「カット」、「ペースト」、「コピー」、「消去」コマンドがあります。ウィジェットおよびその子を Sun WorkShop Visual クリップボードにコピーするには、ウィジェットを選択して「コピー」(< Copy >) コマンド を使用します。
「カット」(< Cut >) は、選択されたウィジェットとその子を削除して、クリップボードにコピーします。「消去」もまた選択されたウィジェットとその子を削除しますが、クリップボードには影響しません。消去された項目は、階層にペーストすることはできません。
「ペースト」(< Paste >) は、現在選択されているウィジェットのすぐ下に、クリップボードの内容を挿入します。クリップボードが空である場合、あるいはクリップボードにあるウィジェットが現在選択されているウィジェットの子として有効ではない場合は、「ペースト」は使用できなくなります。ペーストされたウィジェットは、常に選択されているウィジェットの最後の子になります。これを異なる場所に配置するには、選択されているウィジェットをマウスを使用してドラッグします。
「編集」メニューにある検索機能を使用して、プレリュード、コールバック、メソッド、トランスレーション、ウィジェットまたは変数名 (あるいはその両方)、および文字列リソースにある文字列を検索することができます。図 2-22 のような検索ダイアログが表示されます。
検索ダイアログには、検索対象文字列を入力するテキストボックス、検索する場所を指定するトグル、検索するウィジェットを定義するトグル、検索に影響を与えるオプションの 4 つの領域があります。
このテキストボックスには、任意の文字列または文字列の一部分を入力することができます。このテキストボックスを空白にすると、すべての文字列が検索されます。検索機能は「検索する文字列」領域で選択されたオプションに従って、ウィジェットの文字列を調べます。
この領域には、ウィジェット中で検索する文字列の種類を指定するための、トグルが含まれています。トグルには、プレリュード、コールバック、メソッド、トランスレーション、ウィジェット名、変数名、文字列リソースがあります。これらは、一度にいくつでも選択することができます。1 つも選択しないと、一致する文字列はなくなります。
一致するものを検索する際に、Sun WorkShop Visual に大文字と小文字の区別を無視させるかどうかを選択できます。また、以前の検索で見つかった既存のウィジェットのリストに追加するかどうかも選択することができます。文字列リソース、ウィジェット名、変数名のうちいずれかを検索している場合は、明示的に設定した値だけを検索するのか、デフォルトを含めたすべての値を検索するのかを選択することができます。
「検索」ボタンを押すと、検索基準に該当するウィジェットのリストが「検索リスト」ダイアログという別のダイアログに表示されます。「検索リスト」ボタンを押すと、検索されたウィジェットのリストを表示します。この動作で検索が繰り返されることはありません。「検索リスト」ダイアログを閉じてしまった後で同じリストを再度表示する場合に便利です。
「検索リスト」ダイアログは、1 つまたは複数の検索基準に一致するウィジェットのリストを表示します。このリストからウィジェットを選択し、以下のオプションを使用することができます。
ウィジェットを削除すると、リセットあるいはカット & ペーストのような一時的削除と同様に、リストからそのウィジェットが取り除かれます。
デザインが複雑になってくると、特定のウィジェットの検索が難しくなりますが、Sun WorkShop Visual では、ダイナミックディスプレイ (デザイン中のインタフェースの模擬実装。最終的にできるアプリケーションの外観と動作の確認に使用します) から直接ウィジェットに移動することができます。ポインタで、ダイナミックディスプレイに表示されたウィジェットを指定して <Ctrl-G> を押してください。すると、メインウィンドウのウィジェットが即座に強調表示されます。このとき、必要に応じてウィジェット階層を展開することもできます。
簡単な例を図 2-24 に示します。まず、シェルウィジェットのリソースパネルから「設定」ページを開いて、シェルの「キーボードフォーカス」を 「ポインタ移動のみ」 に設定して (「キーボードフォーカスとスピード検索機能」を参照)ください。このように設定してから、ダイナミックディスプレイでラベルにポインタを合わせて <Ctrl-G> を押すと、階層内の対応するラベルが強調表示されます。
キー操作 <Ctrl-G> はトランスレーションです。したがって、次のリソースで変更することができます。
visu.fastFindTranslation: Ctrl<Key>G
生成されたコードでスピード検索を実行してもトランスレーションに影響はありません。
スピード検索機能では、ダイナミックディスプレイでフォーカスしたウィジェットを検索することができます。ラベルなど、通常はフォーカスされないウィジェットをスピード検索する場合は、シェルウィジェットのリソースパネルで「設定」ページを開いて、シェルのキーボードフォーカスを「ポインタ移動のみ」に設定してください。
デフォルトのトランスレーションは <Ctrl-G> です。 <Ctrl-G> は、Motif ウィジェットセットのトランスレーションと衝突することはありません。スピード検索機能は、トランスレーションをサポートする他社製のウィジェットでも機能します。ただし、ウィジェットによっては、このデフォルトのトランスレーションが適当でない場合もあります。トランスレーションの変更は、以下のウィジェットを対象に適用されます。
visu.fastFindTranslation: Ctrl<Key>G
visu.XmText.fastFindTranslation: Ctrl<Key>F
visu.xrtTable.fastFindTranslation: Meta<Key>M
visu.my_text_widget.fastFindTranslation: Ctrl<Key>K
推奨されているデフォルトのトランスレーションが特定のウィジェットの動作と衝突する場合は、このウィジェットの型のトランスレーション操作を変更しなければならないことがあります。
スピード検索機能のトランスレーションは、ウィジェットクラスごとに必要な入力操作を指定して、そのクラスに合わせて構成することができます。次に例を示します。
visu.XmText.fastFindTranslation: Ctrl<Key>F
visu.xrtTable.fastFindTranslation: Meta<Key>M
スピード検索は、ウィジェットのインスタンスに対しても構成することができます。
visu.my_text_widget.fastFindTranslation: Ctrl<Key>K
予約値 <None> を使用して、指定したクラスまたはインスタンスのウィジェットをスピード検索するトランスレーションのアプリケーションを無効にすることができます。Sun WorkShop Visual のスピード検索メカニズムが正しく動作せず、指定したウィジェットやウィジェットクラスを検索できない場合、visu_config のウィジェットの値を変更する代わりに、スピード検索機能を無効にしなければならないことがあります。以下に 2 つの例を示します。1 番目の例はウィジェットのクラスを、2 番目の例は特定のウィジェットインスタンスを示しています。
visu.xintGraphObject.fastFindTranslation: <None>
visu.my_text_widget.fastFindTranslation: <None>
次のように簡単な入力を行うと、どのウィジェットを対象としたスピード検索も無効になります。
visu.fastFindTranslation: <None>
他社製のウィジェットを使用する場合は、visu_config でウィジェットページを開き、「ウィジェット検索を無効化」トグルを選択すると、スピード検索機能を無効にすることができます。
Sun WorkShop Visual には、デザイン階層の表示方法を変更する方法が数多く用意されています。そのうちの多くは「表示」メニューから撰択することができます。「表示」メニュー内のオプションは、Sun WorkShop Visual 上での表示方法を変更するだけで、デザインには影響しません。
このオプション ( <Ctrl-W> ) は、図 2-25 に示すように、構成領域にあるアイコンの下にそれぞれのウィジェット変数名を表示します。表示される名前はウィジェットのクラス名ではなく、ウィジェットに割り当てられる固有の変数名です。
デザイン内の各シェルウィジェットは、Sun WorkShop Visual 画面の右上隅の矩形領域にアイコンで表示されます。この矩形領域は、ウィンドウ保持領域と呼ばれます。「表示」メニューの「ダイアログ変数名を表示」( <Ctrl-D> ) は、図 2-26 に示すように、ウィンドウ保持領域にあるアイコンの下に各シェルウィジェット変数名を表示します。アイコンは、名前を収めるために縮小されます。この機能は、複数のウィンドウを使用して配置を行う場合に便利です。
「表示」メニューの「ツリーの左寄せ」オプション ( <Ctrl-L> ) は、構成領域にある階層の外観を、中央から左右に枝を伸ばすツリーから、図 2-27 に示すような右方向にだけ枝を伸ばす左寄せされたツリーに変更します。この機能は、大きなデザイン中で、親ウィジェットを素早く探し出す場合に便利です。
このオプションは、階層が大きな場合に、ウィンドウのサイズを変更せずに構造のより多くの部分を表示する際に便利です。ウィジェットは、図 2-28 に示すように、同じ形の小さな正方形に縮小されるため、構成領域にはそれだけ多くの範囲が収まります。しかし、ウィジェットクラス、およびフォールドされているウィジェットとフォールドされていないウィジェットとの区別はできなくなります。その他の表示オプションと同様、実際のデザインには影響しません。
Sun WorkShop Visual には、特定の属性を持つウィジェットを区別するためにデザイン階層に注釈を付ける機能があります。「表示」メニューには、図 2-27 に示すような「ウィジェット注釈 ティアオフ」というプルライト・ティアオフメニューがあります。図 2-29 に注釈の付いた階層を示します。
このメニューには、6 種類の注釈があり、それぞれがトグルボタンになっています。デザイン階層内でこれらの属性を持つウィジェットを確認するには、その属性トグルを選択します。その属性に対応した記号が、以下の基準に従って階層内で関連のあるウィジェットの横に表示されます。
図 2-30 に、一連の注釈をすべて使用した例題の階層の一部を示します。
注釈記号は、6 個の記号が明確に表示されるように、階層内のウィジェットアイコン周辺に表示されます。アイコンに相対して記号が表示される場所、記号が使用するスペース、ピックスマップの名前はすべて Sun WorkShop Visual リソースファイルに指定されています。この指定は変更することができます。Sun WorkShop Visual のアプリケーションリソースの詳細は、付録 D「アプリケーションのデフォルト」を参照してください。例として検索記号のリソースを以下に示します。
Visu*annotate_search.annotatePosition:NorthWest
Visu*annotate_search.annotateWidth:10
Visu*annotate_search.annotateHeight:3
Visu*annotateSearchPixmap:an_search.xpm
上記の最初の行は、地理的な位置 NorthWest (北西) を指定します。これは、ウィジェットアイコンを基準とした位置であり、羅針盤上の 8 個の方位の中から指定することができます。
「表示」メニューの「構造の色」オプションは、構造化コード生成機能を使用するデザインを構築する際に便利です。このオプションは、関数またはデータ構造、C++ クラス、あるいは子のみを生成するウィジェットの色を指定します。
「構造の色」は、プルライトサブメニューです。サブメニューから「色を表示」を選択して、適切な色で構造の表示を行います。サブメニューは、上辺の破線をクリックすると、カラーコードを参照するためにメニューを切り離すことができます。
「ウィジェット」メニューではフォールド/アンフォールドを使用できます。この機能は、構成領域のウィジェットの外観に影響します。階層が大きくなると、多数の子を持つウィジェットをフォールドして、その子が構成領域内で大量のスペースを占めないようにする必要があります。たとえば、学習用の配置で、子が大量のスペースを占めているメニューバーウィジェットをフォールドします。ウィジェットがフォールドされると、そのウィジェットの子は階層には表示されなくなります。ウィジェットのフォールドはディスプレイを見やすくするものであり、デザインからウィジェットを削除する機能ではありません。
ウィジェットのフォールドには、2 つの方法があります。1 つは「ウィジェット」メニューを使用した方法で、もう 1 つは階層内の特別なアイコンを選択する方法です。
フォールドするウィジェットを選択します。「ウィジェット」メニューをプルダウンして「フォールド/アンフォールド」 ( <Ctrl-F> ) を選択します。フォールドされているウィジェットを選択して同じコマンドを使用すると、そのウィジェットのフォールドが解除 (アンフォールド) されます。
階層内のフォールドアイコンを選択します。このアイコンは、子を持つ各アイコンの下に表示され、外観はマイナス記号 (-) が入った小さなボックスです。このアイコンをクリックすると、その下の階層がフォールドされます。この方法と「ウィジェット」メニューのどちらを使用するかにかかわらず、階層がフォールドされている場合はフォールドアイコンの表示はプラス記号 (+) に変わります。このアイコンを選択すると、その下の階層のフォールドが解除されます。
図 2-31 に、フォールドされたウィジェットを示します。
「印刷」ダイアログを使用すると、階層を作成している途中で階層を紙に印刷することができます。図 2-32 に「印刷」ダイアログを示します。
ファイルに印刷する場合は、「ファイル」トグルをクリックし、「ファイル」テキストボックスにファイル名を入力します。プリンタに送る場合は、「コマンド」トグルをクリックして、ファイルへの印刷と同じテキストボックス (「ファイル」は「コマンド」に切り替わる) に lp などのコマンドを入力します。出力は PostScript であるため、PostScript プリンタまたはビューアが必要です。
「印刷」ダイアログにあるオプションメニューを使用すると、用紙のサイズ、配置方向、印刷するページ、スケールを指定することができます。「スケール」オプションで縮小スケールを選択すると、実際のサイズの 3 分の 2 の大きさで印刷されます。「適合」オプションが選択されていない場合は、必要なだけのページを使用して階層全体の印刷が行われるため注意が必要です。「ページ」オプションメニューを使用すると、デザインに複数のウィンドウが含まれている際にはデザインのすべての階層を、あるいは構成領域に現在表示されている階層のみを印刷することができます。
「名前の表示」トグルを選択すると、変数名を印刷することができます。また、「印刷見出し」トグルを選択すると、階層の周囲にフレームが配置され、「タイトル」テキストフィールドで指定したタイトルを印刷することができます。
図 2-33 に示されているファイルブラウザを使用すると、開く、または保存するファイルの名前を指定することができます。ファイルブラウザは、「ファイル」メニューから「開く」または「別名保存」などの、ファイル名の指定を要求するコマンドが選択される場合に表示されます。「選択」フィールドへパス名を入力するか、マウスを使用して「ファイル」リストから既存ファイル名を選択することができます。
「フィルタ」テキストフィールドは、現作業ディレクトリおよびファイル名パターンを表示します。このパターンに合致したディレクトリまたはファイル名が「ファイル」リストに表示されます。現作業ディレクトリおよびファイル名パターンを変更する場合には、「フィルタ」テキストフィールドのテキストを編集し、画面の下部にある「フィルタ」ボタンを押してください。
「ディレクトリ」ボックスには、現作業ディレクトリのサブディレクトリが表示されます。ディレクトリ構造内を参照するには、リスト内のディレクトリをクリックして「フィルタ」ボタンを押すか、そのディレクトリをダブルクリックしてください。
ファイル名パターンは、「ファイル」のリストを制御します。現作業ディレクトリ内の、パターンに一致するすべてのファイル名が「ファイル」ボックスに表示されます。パターンを変更するには、テキストを編集して画面下部にある「フィルタ」ボタンを押します。パターンがアスタリスク ( * ) の場合は、現作業ディレクトリにあるすべてのファイルが表示されます。パターンが *.xd の場合は、接尾辞 .xd を持つファイルだけが表示されます。ファイルを選択するには、ファイル名をクリックして画面下部にある「了解」ボタンを押すか、ファイル名をダブルクリックしてください。ファイルを選択すると、Sun WorkShop Visual は「開く」、「読む」、「別名保存」などのユーザーが要求した操作を実行します。
ファイルまたは生成されたコードを保存する場合は、既存のファイル名を選択するか、「選択」フィールドに新しいファイル名を指定して「了解」ボタンを押してください。
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |