XmCascadeButton(3XM) — NEWS-OS Programmer’s Manual
名称
XmCascadeButton — CascadeButton widget クラス
形式
#include <Xm/CascadeB.h>
解説
CascadeButton は 2 つの MenuPane どうしまたはある MenuBar をある MenuPane にリンクします。
これはメニューシステムの中で用いられ、親として RowColumn をもち、その RowColumn の XmNrowColumnType が XmMENU_BAR、XmMENU_POPUP、XmMENU_PULLDOWN のいずれかに設定されていなければなりません。
サブメニューとして Pulldown MenuPane が取り付けられているのはこの widget だけです。 この widget が MenuBar、PopupMenu、PulldownMenu のいずれかの内部でアクティブになった時サブメニューが表示されます。 それが Popup または Pulldown MenuPane の中だった時は、その外観はラベルまたはピックスマップと、カスケードインジケータを含むことができます。 MenuBar の中だった時は、ラベルまたはピックスマップのみ含むことができます。
CascadeButton 関連のデフォルトの動作は、その widget が存在しているメニューシステムのタイプによります。 デフォルトでは、PulldownMenu または MenuBar ではマウスボタン 1 によって CascadeButton の動作を決め、PopupMenu ではマウスボタン 3 によって CascadeButton の動作を決めます。 実際に用いられるマウスボタンは親である RowColumn によって決められます。
CascadeButton の外観は大多数の他のボタン gadget とは異なります。 ボタンがアームされた時、その外観は 2 次元から 3 次元に変わり、取り付けられたサブメニューを表示します。 サブメニューがないときは、その外観が変わるだけです。
ユーザがマウスポインタを widget の中に移動したことにより、 Pulldown または Popup MenuPane の中の CascadeButton がアームされたときは、すぐにはサブメニューを表示しません。 少しの時間だけ表示するのを待ち、 そのアームが一時的なものかどうか (つまりユーザがただその widget を通り過ぎようとしているだけなのか)、 それとも本当にユーザがサブメニューを表示することを望んでいるのかを確かめます。 この遅延時間は XmNmappingDelay によって設定されます。
CascadeButton はキーボードから widget をアクティブにする仕組みをひとつだけ用意しています。 これはキーボードニーモニックといわれます。 widget に対してニーモニックが指定されていると、ユーザは CascadeButton が表示されている時にニーモニックのキーを入力するだけで CascadeButton をアクティブにすることができます。 CascadeButton が MenuBar の中にある時はニーモニックと同時に meta キーも押さなければなりません。 ニーモニックはキーボードインターフェースを用いてメニューを操作する時によく用いられます。
Pulldown または Popup MenuPane の中で、サブメニューが取り付けられている時、XmNmarginBottom、XmNmarginRight、XmNmarginTop は拡大されて XmNcascadePixmap の位置を調整します。 XmNmarginWidth は、このリソースが MenuBar の中にあればデフォルトは 6 で、それ以外は Label のデフォルト値である 2 となります。
クラス
CascadeButton は、Core、XmPrimitive、XmLabel クラスから動作とリソースを継承します。
クラスポインタは xmCascadeButtonWidgetClass です。
クラス名は XmCascadeButton です。
新しいリソース
次の表は、データを指定するのに用いる widget リソースの一覧です。 継承されたクラスのリソースの値もまたこの widget の属性として設定することができます。 .Xdefaults ファイルの中で名前やクラスでリソースを参照する場合は、語頭の XmN または XmC を取り除いた名称を用いてください。 .Xdefaults ファイルの中でリソースに定義された値を設定するには、語頭の Xm を取り除いた名称を用いてください。 (大文字と小文字は区別されませんが、語間のアンダースコアは必要です。 ) 「アクセス」欄の文字は、与えられたリソースを、widget 生成時に設定できるか (C)、XtSetValues で設定できるか (S)、XtGetValues で取り出すことができるか (G)、あるいは利用できないか (N/A) を示します。
| XmCascadeButton リソース一覧 | ||||
| 名称 | クラス | 型 | デフォルト | アクセス |
| XmNactivateCallback | XmCCallback | XtCallbackList | NULL | C |
| XmNcascadePixmap | XmCPixmap | Pixmap | "menu-cascade" | CSG |
| XmNcascadingCallback | XmCCallback | XtCallbackList | NULL | C |
| XmNmappingDelay | XmCMappingDelay | int | 100 | CSG |
| XmNsubMenuId | XmCMenuWidget | Widget | 0 | CSG |
XmNactivateCallback
ユーザが CascadeButton widget をアクティブにし、かつポップアップするサブメニューが取り付けられていないときに、呼び出されるコールバックのリストを指定します。 アクティブにするには、マウスのボタンを離すか widget についてのニーモニックを入力します。 これに用いられるマウスボタンは親である RowColumn の情報によって決まります。 このコールバックによって送られるリーズンは XmCR_ACTIVATE です。
XmNcascadePixmap
CascadeButton が Popup または Pulldown MenuPane の中で用いられ、しかもサブメニューが取り付けられているときに widget の右端に表示されるカスケードピックスマップを指定します。 Label クラスのリソースである XmNmarginRight 、 XmNmarginTop 、 XmNmarginBottom は、カスケードピックスマップのための場所を確保するために変更されることがあります。 デフォルトのカスケードピックスマップは右を指している矢印です。
XmNcascadingCallback
CascadeButton についてのサブメニューがマップされる直前に呼び出されるコールバックのリストを指定します。 このコールバックによって送られるリーズンは XmCR_CASCADING です。
XmNmappingDelay
CascadeButton がアームされてからそのサブメニューがマップされるまでの間の時間をミリ秒単位で指定します。 この遅延は widget が Popup または Pulldown MenuPane の中にある時だけ用いられます。
XmNsubMenuId
この CascadeButton に関連する Pulldown MenuPane の widget ID を指定します。 指定された MenuPane は、CascadeButton がアームされたときに表示されます。 この MenuPane は、用いられるメニューのタイプにあった血統 (parentage) で作られていなければなりません。 メニューシステムに関する詳細は、XmCreateMenuBar(3XM)、XmCreatePulldownMenu(3XM)、XmCreatePopupMenu(3XM) を参照してください。
継承されるリソース
CascadeButton は、次のスーパークラスから動作とリソースを継承しています。 これらのリソースに関する詳細は、そのスーパークラスのマニュアルページを参照してください。
| XmLabel リソース一覧 | ||||
| 名称 | クラス | 型 | デフォルト | アクセス |
| XmNaccelerator | XmCAccelerator | String | NULL | CSG |
| XmNacceleratorText | XmCAcceleratorText | XmString | NULL | CSG |
| XmNalignment | XmCAlignment | unsigned char | XmALIGNMENT_CENTER | CSG |
| XmNfontList | XmCFontList | XmFontList | "Fixed" | CSG |
| XmNlabelInsensitivePixmap | XmCLabelInsensitivePixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
| XmNlabelPixmap | XmCPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
| XmNlabelString | XmCXmString | XmString | NULL | CSG |
| XmNlabelType | XmCLabelType | unsigned char | XmSTRING | CSG |
| XmNmarginBottom | XmCMarginBottom | short | dynamic | CSG |
| XmNmarginHeight | XmCMarginHeight | short | 2 | CSG |
| XmNmarginLeft | XmCMarginLeft | short | 0 | CSG |
| XmNmarginRight | XmCMarginRight | short | dynamic | CSG |
| XmNmarginTop | XmCMarginTop | short | dynamic | CSG |
| XmNmarginWidth | XmCMarginWidth | short | dynamic | CSG |
| XmNmnemonic | XmCMnemonic | char | ‘\0’ | CSG |
| XmNrecomputeSize | XmCRecomputeSize | Boolean | True | CSG |
| XmNstringDirection | XmCStringDirection | XmStringDirection | XmSTRING_DIRECTION_L_TO_R | CSG |
| XmPrimitive リソース一覧 | ||||
| 名称 | クラス | 型 | デフォルト | アクセス |
| 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 |
| XmNhighlightOnEnter | XmCHighlightOnEnter | Boolean | False | CSG |
| XmNhighlightPixmap | XmCHighlightPixmap | Pixmap | dynamic | CSG |
| XmNhighlightThickness | XmCHighlightThickness | short | 0 | CSG |
| XmNshadowThickness | XmCShadowThickness | short | 2 | CSG |
| XmNtopShadowColor | XmCBackground | Pixel | dynamic | CSG |
| XmNtopShadowPixmap | XmCTopShadowPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
| XmNtraversalOn | XmCTraversalOn | Boolean | False | CSG |
| XmNunitType | XmCUnitType | unsigned char | XmPIXELS | CSG |
| XmNuserData | XmCUserData | caddr_t | 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 を指します。 また、XEvent によってコールバックが引き起こされない場合は、NULL が返ります。
動作
CascadeButton 関連のデフォルトの動作は、 ボタンが PopupMenu システムの中にあるのか PulldownMenu システムの中にあるのかによって異なります。 親である RowColumn は、XmNrowColumnType と XmNwhichButton というリソースによってどのマウスボタンを用いるかを決めます。
PopupMenu System でのデフォルト
Btn3Down<EnterWindow>:
CascadeButton をアームし、短い遅延時間の後、それに関連したサブメニューを表示します。
Btn3Down<LeaveWindow>:
マウスポインタがその CascadeButton に関連したサブメニューの中に入っていったかどうかで異なります。 マウスポインタがサブメニューの中に入っていった場合は、このイベントは無視されます。 でなければ、CascadeButton はディスアームされ、サブメニューは表示されなくなります。
<Btn3Up>:
CascadeButton に取り付けられたサブメニューが表示され、そのメニューの中でのキーボードトラバースが可能になります。 CascadeButton にサブメニューが取り付けられていない場合は、このイベントで CascadeButton がアクティブになり、メニューは表示されなくなります。
<Btn3Down>:
このメニューに対するトラバースが禁止され、ユーザがメニューをマウスで操作するドラッグモードに戻します。 この CascadeButton に関連したサブメニューが表示されます。
<Key>Return:
そのメニュー中でのキーボードトラバースが可能なら、このイベントによって、 CascadeButton に取り付けられているサブメニューが表示されます。 CascadeButton にサブメニューが取り付けられていない場合は、このイベントで CascadeButton がアクティブになり、メニューは表示されなくなります。
MenuBar でのデフォルト
<Btn1Down>:
このイベントは CascadeButton と MenuBar の両方をアームし、これに関連したサブメニューを表示します。 メニューがすでにアクティブな状態であったときは、このメニューに対するトラバースを禁止し、ユーザがメニューをマウスで操作するモードに戻します。
Btn1Down<EnterWindow>:
このイベントは、 表示されている MenuPane がほかの MenuBar エントリに関連しているものならすべて表示されなくし、 CascadeButton をアームしてそれに関連したサブメニューを表示します。
Btn1Down<LeaveWindow>:
このイベントは、 その CascadeButton に関連したサブメニューが現在表示されていないか、 サブメニューを持たない場合は CascadeButton をディスアームします。 それ以外の時は無視されます。
<Btn1Up>:
このイベントは、 CascadeButton に取り付けられたサブメニューを表示し、そのメニュー内でのキーボードトラバースが可能になります。 CascadeButton にサブメニューが取り付けられていない場合は、このイベントで CascadeButton がアクティブになり、メニューは表示されなくなります。
<Key>Return:
そのメニュー内でのキーボードトラバースが可能な場合、このイベントによって CascadeButton に取り付けられたサブメニューが表示されます。 CascadeButton にサブメニューが取り付けられていない場合は、このイベントによって CascadeButton がアクティブになり、メニューは表示されなくなります。
MenuBar からの PulldownMenu System のデフォルト
Btn1Down<EnterWindow>:
CasaceButton をアームし、短い遅延時間の後、それに関連したサブメニューを表示します。
Btn1Down<LeaveWindow>:
このイベントは、マウスポインタがサブメニューの中に入っていった場合は無視されます。 それ以外の時は CascadeButton はディスアームされ、サブメニューが表示されなくなります。
<Btn1Up>:
このイベントは、CascadeButton に取り付けられたサブメニューを表示し、そのメニュー内でのキーボードトラバースが可能になります。 CascadeButton にサブメニューが取り付けられていない場合は、このイベントで CascadeButton がアクティブになり、メニューは表示されなくなります。
<Btn1Down>:
このイベントは、このメニューに対するトラバースを禁止し、ユーザがメニューをマウスで操作するドラッグモードに戻します。 この CascadeButton に関連したサブメニューが表示されます。
<Key>Return:
そのメニュー内でのキーボードトラバースが可能な場合、このイベントによって、 CascadeButton に取り付けられたサブメニューが表示されます。 CascadeButton にサブメニューが取り付けられていない場合は、このイベントで CascadeButton がアクティブになり、メニューは表示されなくなります。
デフォルトのトランスレーション
MenuBar における CascadeButton のデフォルトのトランスレーションは次のようになります。
<BtnDown>:MenuBarSelect()
<EnterWindow>: MenuBarEnter()
<LeaveWindow>: MenuBarLeave()
<BtnUp>:DoSelect()
<Key>Return:KeySelect()
<Key>Escape:CleanupMenuBar()
Popup と Pulldown MenuPane における CascadeButton
のデフォルトのトランスレーションは次のようになります。
<BtnDown>:StartDrag()
<EnterWindow>: DelayedArm()
<LeaveWindow>: CheckDisarm()
<BtnUp>:DoSelect()
<Key>Return:KeySelect()
<Key>Escape:MenuShellPopdownDone()
キーボードトラバース
キーボードトラバーストランスレーションは次のようになります。
<Unmap>:Unmap()
<FocusOut>:FocusOut()
<FocusIn>:FocusIn()
<Key>space:Noop()
<Key>Left:MenuTraverseLeft()
<Key>Right:MenuTraverseRight()
<Key>Up:MenuTraverseUp()
<Key>Down:MenuTraverseDown()
<Key>Home:Noop()
関連事項
Core(3XM), XmCascadeButtonHighlight(3XM), XmCreateCascadeButton(3XM), XmCreateMenuBar(3XM), XmCreatePulldownMenu(3XM), XmCreatePopupMenu(3XM), XmLabel(3XM), XmPrimitive(3XM), XmRowColumn(3XM)
NEWS-OSRelease 4.2.1R