前へ | 次へ | 目次 | 索引 |
V1.2--3
OSF/Motifプログラミング・サポートで Motifヘッダ・ファイルからマクロ定義がいくつか削除されています。この変更は次のヘッダ・ファイルに影響します。
上記マクロに代えて,次のマクロが同じヘッダ・ファイルに挿入されています。
MAXINTの定義はオペレーティング・システムに依存します。次のいずれかの方法でアプリケーションにこの定義を組み込んでください。
この節では, DECwindows Motif Version 1.2 for OpenVMS ソフトウェアに含まれている OSF (Open Softoware Foundation) のプログラム例について説明します。
B.4.1 Cutpaste のプログラム例
この例では,Motif のクリップボードの使用法が示されています。アプリケーションによって定義されたデータ・フォーマットは, XmClipboard API を使用してカット・アンド・ペーストを行うことができます。
2つのcutpasteのクライアント・プログラムを実行して,グラフの値をプルダウン・メニューとポップアップ・メニューを使用して移動してください。
B.4.2 DNDDemo プログラム例
この例では,ドラッグ・ドロップ機能の典型的な使用法が示されています。
このプログラム例の起動時には,有効なドロップ先はありません。色をドラッグして移動するためのドラッグ元を示す異なったカラーの四角形がまず表示されます。ドロップ先は,次のようにして決めます。
描画領域の内側に作成された四角が色の有効なドロップ先です。たとえば黄色の四角からドラッグを開始して,描画領域の内側にある四角な囲みケイの一つまでドラッグしていき,そこでMB2を放すことで,これを確認することができます。
ドラッグを開始するには,ポインタをドラッグ元の上に移動し, BTransferを押したままマウスを移動します (BTransferは省略時の設定では MB2 になります)。カーソルがドラッグ元の四角の色と同じ色のパレットの形に変わったことを確認してください。
ドラッグ中には,次の点に注目してください。
ドロップを行うには MB2を放します。描画領域内の四角な囲みケイの外側やルート・ウィンドウ上でMB2を放すと,ドラッグ・アイコンは一瞬ドラッグ開始のためのポインタに変わってから,消えます。これによって実行しようとしたドロップが失敗したことが分かります。ポインタが描画領域内のいずれかの四角な囲みケイの内側にあるときに, MB2 を放すと,ドラッグ・アイコンは背景に吸い込まれるように消えます。これによってドロップが成功したことが分かります。ドロップが実行された四角な囲みケイの中は,ドラッグされた色で塗りつぶされます。
描画領域内の四角な囲みケイの中は,ドラッグ元として使用することができます。ポインタをいずれかの四角な囲みケイの中からドラッグを開始すると,カーソルが四角形に変わります (四角形の大きさは X カーソルのサイズ制限内で,囲みと同じ大きさか,より小さいものになります)。四角形のカーソルをドラッグして,描画領域内の別の場所にドロップしてください。このようにして元の四角形を新しい場所に移動することができます。
四角形を新しい場所に複写する場合は,ドラッグ中またはドロップを行うときに,適切な変更キーを使用します (現在のところは,Ctrlキーが複写への変更キーとして設定されています)。四角形を変更キーを押さないでドラッグした場合,またはShiftキーを押した場合には,ドラッグを開始した塗りつぶされた四角形は,点線の囲みケイに変わります。この状態は,ドラッグを行っている間中,またはCtrlキーを押して複写モードに変更するまで継続します。 Ctrlキーが押されると点線の囲みケイは,元の四角形に戻ります。
ドラッグ中に取消キー(F11)を押すと,ドラッグを中止することができます。また,Helpキーを押せば,ドロップの成否や可能なドロップ操作についての情報が表示されます。 |
このプログラム例では,Dog ウィジェットおよびSquare ウィジェットを使用します。これはユーザ定義機能を使用して新しいウィジェットをUIL ソースに組み込む方法を説明します。
Dogs プログラム例によって, DogNwagTimeおよびSquareNmakeSquareリソースを動的に変更できるようになります。
サウンド発生機能を持ったシステムをお持ちの場合は,吠えるコールバックをXBell()以外のものにすることもできます。
B.4.3.1 dog ウィジェット
dog ウィジェット(DogWidget)は,将来のバージョンのMotifとのバイナリ互換性を保つ基本ウィジェットをサブクラスに分ける方法を示すデモです。これは, mResolvePartOffsets()および対応するマクロを使用して, XmResolvePartOffsets マニュアル・ページにある勧告をすべて実行します。
dog ウィジェットは,XmPrimitiveのサブクラスで,吠えたり尾を振ったりできます。もっと面白いしかけが欲しいときは,サブクラスに分けるか,またはup.bm,down.bm,bark.bm をより高度なビットマップに置き換えてください。
dog ウィジェットには,次のリソースがあります。
dog ウィジェットには次のような変換があります。
square ウィジェット(SquareWidget)は,将来のバージョンのMotifとのバイナリ互換性を保つ制約ウィジェットをサブクラスに分ける方法を示すデモです。これは, XmResolveAllPartOffsets()および対応するマクロを使用して, XmResolveAllPartOffsets マニュアル・ページにある勧告をすべて実行します。
square ウィジェットはXmBulletinBoardのサブクラスで,制約リソースを使用して強制的に子をsquare (正方形)にします。
square ウィジェットには SquareNmajorDimension というリソースがあります。このリソースは,子の新しいサイズに使用する寸法を決定します。値は,SquareWIDTHまたはSquareHEIGHTです。
square ウィジェットには SquareNmakeSquare という制約リソースがあります。このリソースは,子を強制的に正方形にするか,好きな形に設定するか決定します。
B.4.4 Helloint プログラム例
このプログラム例は, 1つのラベルと1つの押しボタンとから成る簡単な UIL/Xm プログラムです。
本バージョンでは,実行時に kanji (日本語),hebrew (ヘブライ語), french (フランス語),english (英語)のインタフェースを選択することができます。
このプログラムでは,言語特有のインタフェースについてはすべて LOCALSTRINGS.UID ファイルを使用します。言語を変更するには, LOCALSTRINGS_*.UID の各ファイルを DECW$USER_DEFAULTS:LOCALSTRINGS.UID に複写します。続いて,DECW$USER_LANG あるいは xnlLanguage リソースを使用してロケールを設定します。 LOCALSTRINGS 接頭辞およびロケール名には次のもののいずれかを設定してください。
ロケール | インタフェース・タイプ |
---|---|
Japan | 漢字 |
Hebrew | ヘブライ語 |
French | フランス語 |
English | 標準英語 |
xnlLanguage リソースを定義するには, DECW$XDEFAULTS.DAT ファイルに次の行を追加してください。
*xnlLanguage:locale |
helloint プログラム例には次のフォントが必要です。
Locale | Font Name |
---|---|
French | -adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1 |
English | -adobe-times-medium-r-normal--14-100-100-100-p-74-iso8859-1 |
Hebrew | -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO8859-8 |
Japan | -*-JISX0208.1983-1 |
-*-JISX0201.1976-0 |
上記のフォントがシステムにインストールされていない場合は,他のフォントを参照するように UIL ファイルを変更するか, DECW$EXAMPLES ディレクトリに入っている *.DECW$BDF フォントをインストールしてください。新しいフォントをインストールする方法については,『日本語 DECwindows Motif for OpenVMS 環境設定の手引き』を参照してください。
B.4.5 Hellomotif プログラム例
このプログラム例は, 1つのラベルと1つの押しボタンとから成る簡単な UIL/Xm プログラムです。
B.4.6 Motifanim プログラム例
Motifanimプログラムは,OSF/Motifの次の機能を示すプログラム例です。
Motifanimでは, X ウィンドウでピクスマップを動画表示できます。ピクスマップは,motifanimによって固定されるのではなく,起動時に既存のUIDファイルから読み込まれます。
すべてのanimation.uid ファイルの構文は, motifanimを使用して動画表示するピクスマップを簡単に追加することができます。動画データ・ファイルのいくつかのツリーの例には次のようなものがあります。
dog.uil
plane.uil
省略時の動画はdogです。他の動画のデモを実行するには次のコマンドを使用してください。
$ SET DEFAULT DECW$EXAMPLES $ motifanim := "$DECW$EXAMPLES:motifanim" $ motifanim -anim plane |
motiflogo.uil,motifanim.uil,motifanim.cの各ファイルは,プログラムの中核となる構成要素です。
B.4.7 MOTIFGIFおよびPICT表示プログラム
V1.2
次の .gif ファイルが提供されています。
V1.1
motifgifおよびpictはともに作動して, .gifフォーマットされた絵を表示するプログラムです。 motifgif プログラムは Motif 構造内で.gifファイルを表示します。 motifgif プログラムは現在のディレクトリで .gifファイルを探します。
motifgifには次の3つの重要な構成要素があります。
motifgifには次のような問題があります。
motifshell プログラムは,Motif を使用して作成された環境を示す一例です。プログラム例の目的は,Motif をスタンドアロンの環境で使用する場合,どのように他のプログラムやユーティリティをタスク指名するかを示すことです。
motifshell プログラムは C コードで書かれています。 UIL は参照しません。
ファイルの一覧や処理状態を表示するのは,多少時間がかかります。これらの操作は,SPAWNにより DCL コマンドを起動し,出力をファイルに保管してから,そのファイルを読むことで行われます。 省略時のフォントはプロポーショナル・スペースが使用されています。一覧表の中には,クーリエのような固定スペースを使ったほうが読みやすい場合もあります。別のフォントを選択するには,フォント・オプションを使用します。 |
periodicプログラムには,Motifの表示可能なウィジェットの例が示されています。このプログラムにより Motifのウィジェットを周期チャート形式で表示します。
B.4.10 Textedit プログラム例
textedit プログラムは, XmNsource リソース・ファイルを使用するMotif XmText ウィジェットに基づく,基本的なテキスト・エディタで,重なっている同一テキストを複数表示することができます。
表 B-4 の表で,使用可能な表示メニューのオプションを説明します。
オプション | 説明 |
---|---|
Split Pane | テキストの独立したスクロールが可能な新しい表示画面を追加します。 |
Remove Pane | 指定画面を消去します。 |
One Pane | 指定画面以外の画面をすべて消去します。 |
指定画面は次のようにして決定します。
編集メニューでペーストを選択した場合に,クリップボードの内容のペーストが行われるのも指定画面です。
texteditのソース・ファイルは独立した層として別れています。 texteditに含まれるソース・ファイルは 表 B-5 に一覧が掲載されています。
ファイル名 | 説明 |
---|---|
tfile.c | ファイルの読み込み,書き込み,削除のためのコード。オペレーティング・システムまたはファイル・システムに対する依存を隠します。 |
app.c | tfile.c を使用してファイル操作およびこれに関連するバッファのためのあらゆるコードを提供します。このファイルはツールキットに依存します。 |
tk.c | Xm ツールキットへの依存を切り離します。
このファイルの前半では,ユーティリティのルーチンおよびツールキットから独立した (しかし特定のアプリケーションに限定された)インタフェースを提供します。このインタフェースは,アプリケーションのツールキットに依存しないダイアログ層を使用することができます。 ファイルの後半では,すべてのコールバック・ルーチンを定義しています。コールバック・ルーチンの多くは,この層内部の状態更新に使われ,残りが追加動作を行います。これらの動作は,ファイルの前半で定義された特定のツールキットの動作ルーチンとの間に明白に関連しています。明白ではない場合,行うべき動作を決定するために,ツールキットに依存しないダイアログ・層に対してアップコールが行われます。 |
dlg.c | ユーザとの対話を管理するために tk.c を使用します。このコードはツールキットに依存しません。 |
textedit.c | アプリケーションを初期化し,ウィジェットの階層の実例を示します。このコードによりUILおよびMrmの使用を他のアプリケーションから隠します。 |
ファイルの移動と削除の手段は,現在のところ用意されていません。 |
前へ | 次へ | 目次 | 索引 |