日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


≫ 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 1 章:一般ユーザ向けリリース・ノート
第 2 章:システム管理者向けリリース・ノート
第 3 章:プログラミングに関するリリース・ノート
第 4 章: 関連ドキュメントに関するリリース・ノート
第 5 章:日本語機能に関するリリース・ノート
付録 A :OSF/Motif リリース 1.2 リリース・ノート
付録 B :OSF/Motif サンプル・プログラム
索引
PDF
OpenVMS ホーム
日本語 HP DECwindows Motif for OpenVMS

日本語 HP DECwindows Motif
for OpenVMS
リリース・ノート


目次 索引

付録 B
OSF/Motif サンプル・プログラム

ここでは, DECwindows Motif ソフトウェアに含まれている OSF (Open Softoware Foundation) Motif のプログラム例について説明します。

B.1 Cutpaste のプログラム例

V1.2

この例では,Motif のクリップボードの使用法が示されています。アプリケーションによって定義されたデータ・フォーマットは, XmClipboard API を使用してカット・アンド・ペーストを行うことができます。

2つのcutpasteのクライアント・プログラムを実行して,グラフの値をプルダウン・メニューとポップアップ・メニューを使用して移動してください。

B.2 DNDDemo プログラム例

V1.2

この例では,ドラッグ・ドロップ機能の典型的な使用法が示されています。

このプログラム例の起動時には,有効なドロップ先はありません。色をドラッグして移動するためのドラッグ元を示す異なったカラーの四角形がまず表示されます。ドロップ先は,次のようにして決めます。

  • ポインターを(白の背景)を持つ描画領域に移動します。

  • MB1を押してドラッグすると,ラバーバンド効果が確認できます。

  • 希望するところまでドラッグしたら,MB1を離します。
    黒の四角な囲みケイが現れます。この囲みケイの数には制限はありません。

描画領域の内側に作成された四角が色の有効なドロップ先です。たとえば黄色の四角からドラッグを開始して,描画領域の内側にある四角な囲みケイの 1 つまでドラッグしていき,そこでMB2を放すことで,これを確認することができます。

ドラッグを開始するには,ポインタをドラッグ元の上に移動し, BTransferを押したままマウスを移動します (BTransferは省略時の設定では MB2 になります)。カーソルがドラッグ元の四角の色と同じ色のパレットの形に変わったことを確認してください。

ドラッグ中には,次の点に注目してください。

  • ルート・ウィンドウ上をドラッグしているときは,ドラッグ・アイコンはパレットだけになること。

  • 描画領域内の四角な囲みケイのないところでは,ドラッグ・アイコンはパレットの上に"DO NOT ENTER!"(侵入禁止)の表示が現れること。

  • 描画領域内の四角な囲みケイの内側をドラッグしているときは, "DO NOT ENTER!"(侵入禁止)の表示が絵筆の形に変わること。

ドロップを行うには MB2を放します。描画領域内の四角な囲みケイの外側やルート・ウィンドウ上でMB2を放すと,ドラッグ・アイコンは一瞬ドラッグ開始のためのポインタに変わってから,消えます。これによって実行しようとしたドロップが失敗したことが分かります。ポインタが描画領域内のいずれかの四角な囲みケイの内側にあるときに, MB2 を放すと,ドラッグ・アイコンは背景に吸い込まれるように消えます。これによってドロップが成功したことが分かります。ドロップが実行された四角な囲みケイの中は,ドラッグされた色で塗りつぶされます。

描画領域内の四角な囲みケイの中は,ドラッグ元として使用することができます。ポインタをいずれかの四角な囲みケイの中からドラッグを開始すると,カーソルが四角形に変わります (四角形の大きさは X カーソルのサイズ制限内で,囲みと同じ大きさか,より小さいものになります)。四角形のカーソルをドラッグして,描画領域内の別の場所にドロップしてください。このようにして元の四角形を新しい場所に移動することができます。

四角形を新しい場所に複写する場合は,ドラッグ中またはドロップを行うときに,適切な変更キーを使用します (現在のところは,Ctrlキーが複写への変更キーとして設定されています)。四角形を変更キーを押さないでドラッグした場合,またはShiftキーを押した場合には,ドラッグを開始した塗りつぶされた四角形は,点線の囲みケイに変わります。この状態は,ドラッグを行っている間中,またはCtrlキーを押して複写モードに変更するまで継続します。 Ctrlキーが押されると点線の囲みケイは,元の四角形に戻ります。

注意

ドラッグ中に取消キー(F11)を押すと,ドラッグを中止することができます。また,Helpキーを押せば,ドロップの成否や可能なドロップ操作についての情報が表示されます。



V1.1

このプログラム例では,Dog ウィジェットおよびSquare ウィジェットを使用します。これはユーザ定義機能を使用して新しいウィジェットをUIL ソースに組み込む方法を説明します。

Dogs プログラム例によって, DogNwagTimeおよびSquareNmakeSquareリソースを動的に変更できるようになります。

サウンド発生機能を持ったシステムをお持ちの場合は,吠えるコールバックをXBell()以外のものにすることもできます。

B.3.1 dog ウィジェット

V1.1

dog ウィジェット(DogWidget)は,将来のバージョンのMotifとのバイナリ互換性を保つ基本ウィジェットをサブクラスに分ける方法を示すデモです。これは, mResolvePartOffsets()および対応するマクロを使用して, XmResolvePartOffsets マニュアル・ページにある勧告をすべて実行します。

dog ウィジェットは,XmPrimitiveのサブクラスで,吠えたり尾を振ったりできます。もっと面白いしかけが欲しいときは,サブクラスに分けるか,またはup.bm,down.bm,bark.bm をより高度なビットマップに置き換えてください。

dog ウィジェットには,次のリソースがあります。

  • DogNwagTime: 尾を振る間隔(ミリ秒単位)

  • DogNbarkTime: 吠えるグラフィックスを表示する時間(ミリ秒単位)

  • DogNbarkCallback: 吠える動作によって呼び出されるコールバック

dog ウィジェットには次のような変換があります。

  • osfActivate/Return/Space/MB1 = Bark (吠える)

  • W/MB2 = Wag Tail (尾を振る)

  • S/Shift-MB2 = Stop wagging tail (尾を振るのをやめる)

  • osfHelp = Help (ヘルプ)



B.3.2 square ウィジェット

V1.1

square ウィジェット(SquareWidget)は,将来のバージョンのMotifとのバイナリ互換性を保つ制約ウィジェットをサブクラスに分ける方法を示すデモです。これは, XmResolveAllPartOffsets()および対応するマクロを使用して, XmResolveAllPartOffsets マニュアル・ページにある勧告をすべて実行します。

square ウィジェットはXmBulletinBoardのサブクラスで,制約リソースを使用して強制的に子をsquare (正方形)にします。

square ウィジェットには SquareNmajorDimension というリソースがあります。このリソースは,子の新しいサイズに使用する寸法を決定します。値は,SquareWIDTHまたはSquareHEIGHTです。

square ウィジェットには SquareNmakeSquare という制約リソースがあります。このリソースは,子を強制的に正方形にするか,好きな形に設定するか決定します。

B.4 Helloint プログラム例

V1.2

このプログラム例は, 1つのラベルと1つの押しボタンとからなる簡単な UIL/Xm プログラムです。

本バージョンでは,実行時に kanji (日本語),hebrew (ヘブライ語), french (フランス語),english (英語)のインタフェースを選択することができます。

このプログラムでは,言語特有のインタフェースについてはすべて LOCALSTRINGS.UID ファイルを使用します。言語を変更するには, DECW$USER_DEFAULTS:LOCALSTRINGS.UID に 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.5 Hellomotif プログラム例

V1.2

このプログラム例は, 1つのラベルと1つの押しボタンとからなる簡単な UIL/Xm プログラムです。

B.6 Motifanim プログラム例

V1.1

Motifanimプログラムは,OSF/Motifの次の機能を示すプログラム例です。

  • ビジュアル間の移植性のためのUILを使用したアイコン/ビットマップの宣言

  • Mrmを使ったUILとCの間の値の交換

  • Motif フォーム・ウィジェットの使用

  • クライアント・プロセスが入力待ちの間に実行する背景プロシージャ (Xt イントリンシック機能)

Motifanim では,X Window でピクスマップを動画表示できます。ピクスマップは,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.7 MOTIFGIFおよびPICT表示プログラム

V1.2

次の .gif ファイルが提供されています。

  • TOUCAN.GIF
    熱帯の鳥の写真です。

  • CHALLENGER.GIF
    スペース・シャトルのチャレンジャーの写真です。

V1.1

motifgifおよびpictはともに作動して, .gifフォーマットされた絵を表示するプログラムです。 motifgif プログラムは Motif 構造内で.gifファイルを表示します。 motifgif プログラムは現在のディレクトリで .gifファイルを探します。

motifgifには次の3つの重要な構成要素があります。

  • motifgif このディレクトリのソースおよび実行可能コードが .gifの絵をディスプレイに表示するMotif の駆動プログラムです。

  • pict .gifによる絵のファイルをビットマップで表示するために, motifgifによって呼び出されるプログラムです。このプログラムは以前は xgif でしたが,Motifに変換されました。

motifgifには次のような問題があります。

  • 絵のサイズは変更できません。

  • pictを呼び出すとき-d オプションが使用されないため,遠隔ディスプレイではDISPLAY 環境変数を設定しなければなりません。



B.8 Motifshell プログラム例

V1.2

motifshell プログラムは,Motif を使用して作成された環境を示す一例です。プログラム例の目的は,Motif をスタンドアロンの環境で使用する場合,どのように他のプログラムやユーティリティをタスク指名するかを示すことです。

motifshell プログラムは C コードで書かれています。 UIL は参照しません。

注意

ファイルの一覧や処理状態を表示するのは,多少時間がかかります。これらの操作は,SPAWNにより DCL コマンドを起動し,出力をファイルに保管してから,そのファイルを読むことで行われます。

省略時のフォントはプロポーショナル・スペースが使用されています。一覧表の中には,クーリエのような固定スペースを使ったほうが読みやすい場合もあります。別のフォントを選択するには,フォント・オプションを使用します。



V1.2

periodicプログラムには,Motifの表示可能なウィジェットの例が示されています。このプログラムにより Motifのウィジェットを周期チャート形式で表示します。

B.10 Textedit プログラム例

V1.2

textedit プログラムは, XmNsource リソース・ファイルを使用するMotif XmText ウィジェットに基づく,基本的なテキスト・エディタで,重なっている同一テキストを複数表示することができます。

表 B-1 の表で,使用可能な表示メニューのオプションを説明します。

表 B-1 表示メニューのオプション
オプション 説明
Split Pane テキストの独立したスクロールが可能な新しい表示画面を追加します。
Remove Pane 指定画面を消去します。
One Pane 指定画面以外の画面をすべて消去します。

指定画面は次のようにして決定します。

  • 明示(explicit)フォーカス方法を使用している場合には,最後にフォーカスされた画面。

  • ポインタによるフォーカス方法を使用している場合には,ユーザが最後に操作を行った画面。

編集メニューでペーストを選択した場合に,クリップボードの内容のペーストが行われるのも指定画面です。

texteditのソース・ファイルは独立した層として別れています。 texteditに含まれるソース・ファイルは 表 B-2 に一覧が掲載されています。

表 B-2 Textedit ソース・ファイル
ファイル名 説明
tfile.c ファイルの読み込み,書き込み,削除のためのコード。オペレーティング・システムまたはファイル・システムに対する依存を隠します。
app.c tfile.c を使用してファイル操作およびこれに関連するバッファのためのあらゆるコードを提供します。このファイルはツールキットに依存します。
tk.c Xm ツールキットへの依存を切り離します。

このファイルの前半では,ユーティリティのルーチンおよびツールキットから独立した (しかし特定のアプリケーションに限定された)インタフェースを提供します。このインタフェースは,アプリケーションのツールキットに依存しないダイアログ層を使用することができます。

ファイルの後半では,すべてのコールバック・ルーチンを定義しています。コールバック・ルーチンの多くは,この層内部の状態更新に使われ,残りが追加動作を行います。これらの動作は,ファイルの前半で定義された特定のツールキットの動作ルーチンとの間に明白に関連しています。明白ではない場合,行うべき動作を決定するために,ツールキットに依存しないダイアログ・層に対してアップコールが行われます。

dlg.c ユーザとの対話を管理するために tk.c を使用します。このコードはツールキットに依存しません。
textedit.c アプリケーションを初期化し,ウィジェットの階層の実例を示します。このコードによりUILおよびMrmの使用を他のアプリケーションから隠します。

注意

ファイルの移動と削除の手段は,現在のところ用意されていません。



V1.2

次のトランスレーションを DECW$XDEFAULTS.DAT ファイルに追加しておくと, emacs を使い慣れたユーザには便利です。

 
*XmText.translations:     Mod1<Btn3Down>: scroll-cursor-vertically()\n\
  Mod1<Btn3Motion>: scroll-cursor-vertically()\n\
 Ctrl<key>a: beginning-of-line()\n\
 Ctrl<key>b: backward-character()\n\
 Ctrl<key>d: delete-next-character()\n\
 Ctrl<key>e: end-of-line()\n\
 Ctrl<key>f: forward-character()\n\
 Ctrl<key>g: beep()\n\
 Ctrl<key>h: delete-previous-character()\n\
 Ctrl<key>i: cut-primary()\n\
 Ctrl<key>j: newline-and-indent()\n\
 Ctrl<key>k: set-anchor() end-of-line() key-select() cut-clipboard()\n\
 Ctrl<key>l: redraw-display()\n\
 Ctrl<key>m: newline()\n\
 Ctrl<key>n: next-line()\n\
 Ctrl<key>o: newline-and-backup()\n\
 Ctrl<key>p: previous-line()\n\
 Ctrl<key>v: next-page()\n\
 Ctrl<key>w: cut-clipboard()\n\
 Ctrl<key>y: paste-clipboard()\n\
 Ctrl<key>z: scroll-one-line-up()\n\
 Mod1<key>b: backward-word()\n\
 Mod1<key>d: delete-next-word()\n\
 Mod1<key>f: forward-word()\n\
 Mod1<key>h: delete-previous-word()\n\
 Mod1<key>i: copy-primary()\n\
 Mod1<key>k: delete-to-end-of-line()\n\
 Mod1<key>v: previous-page()\n\
 Mod1<key>w: copy-clipboard()\n\
 Mod1<key>z: scroll-one-line-down()\n\
 Mod1 Shift<key>greater: end-of-file()\n\
 Mod1<key>less: beginning-of-file()\n\
 Mod1<key>]: forward-paragraph()\n\
 Mod1<key>[: backward-paragraph() 
 


目次 索引

© 2010 Hewlett-Packard Development Company, L.P.