XmBulletinBoard(3XM) — NEWS-OS Programmer’s Manual
名称
XmBulletinBoard — BulletinBoard widget クラス
形式
#include <Xm/BulletinB.h>
解説
BulletinBoard は、子 widget の簡単なジオメトリ管理を提供する composite widget です。 子にその場所を強制するのではなく、子がオーバーラップしてしまうようなジオメトリリクエストを拒否するように設定できます。 BulletinBoard はたいていのダイアログ widget のベース widget となり、また、一般のコンテナ widget としても用いられます。
モーダルダイアログおよびモードレスダイアログは、widget を集めて実現されます。 その widget には、DialogShell、シェルの子である BulletinBoard (またはそのサブクラス)、 および BulletinBoard の子であるいろいろなダイアログのコンポーネント (ボタン、ラベルなど) を含みます。 BulletinBoard はダイアログに便利なコールバック (フォーカス、マップ、アンマップ) を定義していて、アプリケーションがこれを利用できます。 親が DialogShell であると、BulletinBoard はタイトルと入力モード (ダイアログ方式に基づく) に関する情報を親に渡します。 親はウィンドウマネージャと適切な通信をする責任があるからです。
クラス
BulletinBoard は Core、Composite、Constraint、XmManager から動作とリソースを継承します。
クラスポインタは xmBulletinBoardWidgetClass です。
クラス名は XmBulletinBoard です。
新しいリソース
次の表は、データを指定するのに用いる widget リソースの一覧です。 継承されたクラスのリソースの値もまた widget の属性として設定することができます。 .Xdefaults ファイルの中で名前やクラスでリソースを参照する場合は、語頭の XmN または XmC を取り除いた名称を用いてください。 .Xdefaults ファイルの中でリソースに定義された値を設定するには、語頭の Xm を取り除いた名称を用いてください。 (大文字と小文字は区別されませんが、語間のアンダースコアは必要です。 ) 「アクセス」欄の文字は、与えられたリソースを、widget 生成時に設定できるか (C)、XtSetValues で設定できるか (S)、XtGetValues で取り出すことができるか (G)、あるいは利用できないか (N/A) を示します。
| XmBulletinBoard リソース一覧 | ||||
| 名称 | クラス | 型 | デフォルト | アクセス |
| XmNallowOverlap | XmCAllowOverlap | Boolean | True | CSG |
| XmNautoUnmanage | XmCAutoUnmanage | Boolean | True | CSG |
| XmNbuttonFontList | XmCButtonFontList | XmFontList | NULL | CSG |
| XmNcancelButton | XmCWidget | Widget | NULL | SG |
| XmNdefaultButton | XmCWidget | Widget | NULL | SG |
| XmNdefaultPosition | XmCDefaultPosition | Boolean | True | CSG |
| XmNdialogStyle | XmCDialogStyle | unsigned char | dynamic | CSG |
| XmNdialogTitle | XmCXmString | XmString | NULL | CSG |
| XmNfocusCallback | XmCCallback | XtCallbackList | NULL | C |
| XmNlabelFontList | XmCLabelFontList | XmFontList | NULL | CSG |
| XmNmapCallback | XmCCallback | XtCallbackList | NULL | C |
| XmNmarginHeight | XmCMarginHeight | short | 10 | CSG |
| XmNmarginWidth | XmCMarginWidth | short | 10 | CSG |
| XmNnoResize | XmCNoResize | Boolean | False | CSG |
| XmNresizePolicy | XmCResizePolicy | unsigned char | XmRESIZE_ANY | CSG |
| XmNshadowType | XmCShadowType | unsigned char | XmSHADOW_OUT | CSG |
| XmNstringDirection | XmCStringDirection | XmStringDirection | XmSTRING_DIRECTION_L_TO_R | CSG |
| XmNtextFontList | XmCTextFontList | XmFontList | NULL | CSG |
| XmNtextTranslations | XmCTranslations | XtTranslations | NULL | C |
| XmNunmapCallback | XmCCallback | XtCallbackList | NULL | C |
XmNallowOverlap
子 widget のオーバーラップに関するポリシーを決めます。 True の場合、BulletinBoard は子がオーバーラップしてしまうようなジオメトリリクエストを受け付けます。
XmNautoUnmanage
ボタンがアクティブになった後で BulletinBoard が自動的に管理を解除されるかどうかを決めます。 True の場合、ボタンがアクティブになった時 BulletinBoard の管理を解除するよう、BulletinBoard は子ボタン (PushButtons、PushButtonGadgets、DrawnButtons) にコールバックを付け加えます。 そして、BulletinBoard の親が DialogShell なら、アンマップコールバックが呼び出されます。 False の場合は、BulletinBoard が自動的に管理を解除されることはありません。
XmNbuttonFontList
BulletinBoard の子ボタン (PushButtons、PushButtonGadgets、ToggleButtons、ToggleButtonGadgets) が用いるフォントリストを指定します。 NULL の場合は、XmNtextFontList が用いられます。
XmNcancelButton
Cancel ボタンの widget ID を指定します。 Cancel ボタンを定義している BulletinBoard のサブクラスは、このリソースを設定します。 BulletinBoard はこのボタンに対して何らかの動作を直接に提供することはしません。
XmNdefaultButton
デフォルトボタンの widget ID を指定します。 デフォルトボタンを定義している BulletinBoard のサブクラスは、このリソースを設定します。 BulletinBoard はトランスレーションを定義し、リターンキーが押された時にボタンをアクティブにするアクセラレータをインストールします。
XmNdefaultPosition
親が BulletinBoard の位置を自動的に決めるかどうかを決めます。 値が True で BuletinBoard の親が DialogShell である場合、BulletinBoard がマップかつ管理された時、BulletinBoard は DialogShell の親の中央あるいは周りにおかれます。 False の場合は、BulletinBoard は自動的に位置を決められことはありません。
XmNdialogStyle
BulletinBoard についての対話スタイルを指定します。 BulletinBoard の親が DialogShell である場合、親はこのリソースにしたがって設定され、DialogShell はそれに応じて VendorShell の XmNinputMode を設定します。 このリソースがとることができる値には以下のものがあります。
•XmDIALOG_SYSTEM_MODAL — 他のどのアプリケーションの対話よりも前に返答しなければならないダイアログに用いられます。
•XmDIALOG_APPLICATION_MODAL — 同じアプリケーションの他の対話よりも前に返答しなければならないダイアログに用いられます。
•XmDIALOG_MODELESS — どのアプリケーションの対話にも割り込まないダイアログに用いられます。
•XmDIALOG_WORK_AREA — 対話しない BulletinBoard widget に用いられます。 (親が DialogShell のサブクラスでない場合)
XmNdialogTitle
ダイアログタイトルを指定します。 このリソースが NULL でなく、BulletinBoard の親が WMShell のサブクラスである時、BulletinBoard は親の XmNtitle をこのリソースの値に設定します。
XmNfocusCallback
BulletinBoard またはその子孫のうちの 1 つが入力フォーカスを受け付けた時に呼び出されるコールバックのリストを指定します。 コールバックのリーズンは XmCR_FOCUS です。
XmNlabelFontList
BulletinBoard の子 Label (Labels、LabelGadgets) が用いるフォントリストを指定します。 これが NULL の場合は XmNtextFontList が用いられます。
XmNmapCallback
BulletinBoard の親が DialogShell である時にのみ呼び出されるコールバックのリストを指定します。 その場合、BulletinBoard widget がマップされた時にこのコールバックリストが起動されます。 コールバックのリーズンは XmCR_MAP です。
XmNmarginHeight
BulletinBoard とその子 widget の上端と下端の間の最小の隙間をピクセル値で指定します。
XmNmarginWidth
BulletinBoard とその子 widget の左端と右端の間の最小の隙間をピクセル値で指定します。
XmNnoResize
リサイズコントロールがダイアログの周りのウィンドウマネージャフレームに含まれるかどうかを決めます。 Ture に設定されると、Motif ウィンドウマネージャは、BulletinBoard の親の DialogShell または TopLevelShell を入れているウィンドウマネージャフレームに、リサイズコントロールを含みません。 False に設定されると、ウィンドウマネージャフレームはリサイズコントロールを含みます。 Motif ウィンドウマネージャが提供するコントロールの組を操作するには、VendorShell が提供する mwm リソースの値を指定するのが望ましい方法です。
XmNresizePolicy
BulletinBoard widget のリサイズに関するポリシーを制御します。 このリソースがとることができる値には以下のものがあります。
•XmRESIZE_NONE — 固定サイズ
•XmRESIZE_ANY — 必要に応じて縮小拡大できる
•XmRESIZE_GROW — 拡大のみ
XmNshadowType
BulletinBoard の影の描き方を記述します。 このリソースは次のような値を持つことができます。
•XmSHADOW_IN — くぼんで見えるように BulletinBoard の影を描きます。 これは、下側の影の見え方と上側の影の見え方が逆になっているということです。
•XmSHADOW_OUT — 突き出て見えるように BulletinBoard の影を描きます。
•XmSHADOW_ETCHED_IN — 二重線を用いて、Separator widget と同様に線がウィンドウに刻み込まれているように BulletinBoard の影を描きます。
•XmSHADOW_ETCHED_OUT — 二重線を用いて、Separator widget と同様に線がウィンドウから突き出しているように BulletinBoard の影を描きます。
XmNshadowThickness がゼロより大きいと、BulletinBoard widget はボーダのちょうど内側に影を描きます。 BulletinBoard の親が DialogShell であるとき、BulletinBoard は XmNshadowThickness のデフォルト値を 0 から 1 にダイナミックに変更します。
XmNstringDirection
ダイアログの中のテキストが置かれる方向の初期値を指定します。 MessageBox や SelectionBox のような BulletinBoard のサブクラスは LabelGadgets、PushButtonGadgets、Lists のような XmString のコンポーネントを作り出しますが、これらのコンポーネントの XmNstringDirection をこのリソースの値に基づいて設定します。 BulletinBoard はこのリソースに対して、直接には、何の動作も提供しません。
XmNtextFontList
BulletinBoard の子 Text が用いるフォントリストを指定します。 XmNbuttonFontList がないときはボタンもこのリソースを用います。 また、XmNlabelFontList がないときはラベルもこのリソースを用います。
XmNtextTranslations
BulletinBoard の子として加えられた Text widget または Text widget のサブクラスにトランスレーションを加えます。
XmNunmapCallback
BUlletinBoard の親が DialogShell である時だけに呼び出されるコールバックのリストを指定します。 その場合、このコールバックのリストは BulletinBoard widget がアンマップされた時に起動されます。 コールバックのリーズンは XmCR_UNMAP です。
継承されるリソース
BulletinBoard は、以下のスーパークラスから動作とリソースを継承しています。 これらのリソースに関する詳細は、そのスーパークラスのマニュアルページを参照してください。
| XmManager リソース一覧 | ||||
| 名称 | クラス | 型 | デフォルト | アクセス |
| XmNbottomShadowColor | XmCForeground | Pixel | dynamic | CSG |
| XmNbottomShadowPixmap | XmCBottomShadowPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
| XmNforeground | XmCForeground | Pixel | dynamic | CSG |
| XmNhelpCallback | XmCCallback | XtCallbackList | NULL | C |
| XmNhighlightColor | XmCForeground | Pixel | Black | CSG |
| XmNhighlightPixmap | XmCHighlightPixmap | Pixmap | dynamic | CSG |
| XmNshadowThickness | XmCShadowThickness | short | dynamic | CSG |
| XmNtopShadowColor | XmCBackground | Pixel | dynamic | CSG |
| XmNtopShadowPixmap | XmCTopShadowPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
| XmNunitType | XmCUnitType | unsigned char | XmPIXELS | CSG |
| XmNuserData | XmCUserData | caddr_t | NULL | CSG |
| Composite リソース一覧 | ||||
| 名称 | クラス | 型 | デフォルト | アクセス |
| XmNinsertPosition | XmCInsertPosition | XmRFunction | NULL | CSG |
| Core リソース一覧 | ||||
| 名称 | クラス | 型 | デフォルト | アクセス |
| XmNaccelerators | XmCAccelerators | XtTranslations | NULL | CSG |
| XmNancestorSensitive | XmCSensitive | Boolean | True | G |
| XmNbackground | XmCBackground | Pixel | dynamic | CSG |
| XmNbackgroundPixmap | XmCPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
| XmNborderColor | XmCBorderColor | Pixel | Black | CSG |
| XmNborderPixmap | XmCPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
| XmNborderWidth | XmCBorderWidth | Dimension | 0 | CSG |
| XmNcolormap | XmCColormap | Colormap | XtCopyFromParent | CG |
| XmNdepth | XmCDepth | int | XtCopyFromParent | CG |
| XmNdestroyCallback | XmCCallback | XtCallbackList | NULL | C |
| XmNheight | XmCHeight | Dimension | 0 | CSG |
| XmNmappedWhenManaged | XmCMappedWhenManaged | Boolean | True | CSG |
| XmNscreen | XmCScreen | Pointer | XtCopyScreen | CG |
| XmNsensitive | XmCSensitive | Boolean | True | CSG |
| XmNtranslations | XmCTranslations | XtTranslations | NULL | CSG |
| XmNwidth | XmCWidth | Dimension | 0 | CSG |
| XmNx | XmCPosition | Position | 0 | CSG |
| XmNy | XmCPosition | Position | 0 | CSG |
コールバックされる情報
各コールバックでは以下の構造体が返されます。
typedef struct
{
intreason;
XEvent∗ event;
} XmAnyCallbackStruct;
reasonなぜコールバックが起きたのかを示します。
eventコールバックをトリガする XEvent を指します。
動作
BulletinBoard の動作についてまとめると以下のようになります。
<Cancel Button Activated>:
Cancel ボタンが押された時、Cancel ボタンのアクティベートコールバックが呼び出されます。
<Default Button Activated> または <Key>Return:
デフォルトボタンまたは Return キーが押された時、デフォルトボタンのアクティベートコールバックが呼び出されます。
<Help Button Activated> または <Key>F1:
Help ボタンまたは ファンクションキー 1 が押された時、XmNhelpCallback で指定されるコールバックが呼び出されます。
<FocusIn>:
widget のウィンドウ上に FocusIn event が発生した時、XmNfocusCallback で指定されたコールバックが呼び出されます。
<MapWindow>:
DialogShell の子である BulletinBoard がマップされた時、XmNmapCallback で指定されるコールバックが呼び出されます。 DialogShell の子でない BulletinBoard がマップされた時にはコールバックは呼び出されません。
<UnmapWindow>:
DialogShell の子である BulletinBoard がアンマップされた時、XmNunmapCallback で指定されるコールバックが呼び出されます。 DialogShell の子でない BulletinBoard がアンマップされた時にはコールバックは呼び出されません。
デフォルトのトランスレーション
次に挙げるのは、BulletinBoard widget について定義されたデフォルトのトランスレーションです。
<EnterWindow>: Enter()
<FocusIn>:FocusIn()
<Btn1Down>:Arm()
<Btn1Up>:Activate()
<Key>F1:Help()
<Key>Return:Return()
<Key>KP_Enter: Return()
デフォルトのアクセラレータ
BulletinBoard の親が DialogShell の時、BulletinBoard の子孫に付け加えられるデフォルトのアクセラレータトランスレーションは次の通りです。
#override
<Key>F1:Help()
<Key>Return:Return()
<Key>KP_Enter: Return()
キーボードトラバース
デフォルトでは、 BulletinBoard widget の親が DialogShell である場合、BulletinBoard は Return キーでデフォルトボタンをアクティブにし、すべての子孫 widget に対してこうできるようアクセラレータをインストールします。 これらのアクセラレータは、Return キーの通常のキーボードトラバース動作を不可能にします。 Return アクションを指定していないような別のトランスレーションの組を BulletinBoard のデフォルトのアクセラレータの代りに用いれば、このトラバース動作は回復します。 ( デフォルトボタンの動作は不可能になります。 ) キーボードトラバースに関する情報は、XmManager(3XM) とその動作とデフォルトのトランスレーションに関するマニュアルページを参照してください。
関連事項
Composite(3XM), Constraint(3XM), Core(3XM), XmCreateBulletinBoard(3XM), XmCreateBulletinBoardDialog(3XM), XmDialogShell(3XM), XmManager(3XM)
NEWS-OSRelease 4.2.1R