XmPushButton(3XM) — NEWS-OS Programmer’s Manual
名称
XmPushButton — PushButton widget クラス
形式
#include <Xm/PushB.h>
解説
PushButton はアプリケーションにコマンドを発します。 PushButton は、ボーダの影によって囲まれたピックスマップやテキストラベルから構成されます。 PushButton が選ばれると、影は PushButton が押されたことを示す外観に変わります。 PushButton が選ばれていない時は、影は PushButton が押されなかったことを示す外観に変わります。
PushButton の動作はアクティブなマウスボタンによって異なります。 アクティブなマウスボタンは親 widget によって定められます。 通常では、マウスボタン 1 は PushButton をアームしたりアクティブにするのに使用されます。 しかし、PushButton がメニューの中にあるなら、使用されるマウスボタンは XmNrowColumnType や XmNwhichButton といった RowColumn のリソースによって定められます。
2 番目の影の太さは XmNshowAsDefault リソースを使うことによって指定されます。 太さが 0 でなければ、Label のリソースである XmNmarginLeft、XmNmarginRight、XmNmarginTop、XmNmarginBottom は 2 番目の影を調整するよう変更されます。
クラス
PushButton は Core、XmPrimitive、XmLabel のクラスより動作とリソースを継承します。
クラスポインタは xmPushButtonWidgetClass です。
クラスの名称は XmPushButton です。
新しいリソース
次の表は、データを指定するのに用いる widget リソースの一覧です。 継承されたクラスのリソースの値もまた widget の属性として設定することができます。 .Xdefaults ファイルの中で名前やクラスでリソースを参照する場合は、語頭の XmN または XmC を取り除いた名称を用いてください。 .Xdefaults ファイルの中でリソースに定義された値を設定するには、語頭の Xm を取り除いた名称を用いてください。 (大文字と小文字は区別されませんが、語間のアンダースコアは必要です。 ) 「アクセス」欄の文字は、与えられたリソースを、widget 生成時に設定できるか (C)、XtSetValues で設定できるか (S)、XtGetValues で取り出すことができるか (G)、あるいは利用できないか (N/A) を示します。
| XmPushButton リソース一覧 | ||||
| 名称 | クラス | 型 | デフォルト | アクセス |
| XmNactivateCallback | XmCCallback | XtCallbackList | NULL | C |
| XmNarmCallback | XmCCallback | XtCallbackList | NULL | C |
| XmNarmColor | XmCArmColor | Pixel | dynamic | CSG |
| XmNarmPixmap | XmCArmPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
| XmNdisarmCallback | XmCCallback | XtCallbackList | NULL | C |
| XmNfillOnArm | XmCFillOnArm | Boolean | True | CSG |
| XmNshowAsDefault | XmCShowAsDefault | short | 0 | CSG |
XmNactivateCallback
PushButton がアクティブになった時に呼び出されるコールバックのリストを指定します。 マウスポインタが widget の中にある時にユーザがアクティブなマウスボタンを押して離すとプッシュボタンはアクティブになります。 PushButton をアクティブにすることは、またディスアームもします。 このコールバックのリーズンは XmCR_ACTIVATE です。
XmNarmCallback
PushButton がアームされた時に呼び出されるコールバックのリストを指定します。 マウスポインタが widget の中にある時にユーザがアクティブなマウスボタンを押すと PushButton はアームされます。 このコールバックのリーズンは XmCR_ARM です。
XmNarmColor
アームされたボタンの色を指定します。 このリソースが有効となるには XmNfillOnArm が True に設定されていなければなりません。 カラーディスプレイのデフォルトは、バックグラウンドの色と下側の影の色の中間の色です。 モノクロームディスプレイでは、デフォルトはフォアグラウンドの色に設定され、ボタンがアームされるとラベル中のテキストはどれもバックグラウンドの色となります。
XmNarmPixmap
XmNlabeltype が XmPIXMAP であり、PushButton がアームされた時に、ボタンフェースとして使用されるピックスマップを指定します。 PushButton がメニュー中にない時はこのリソースは使用できません。
XmNdisarmCallback
PushButton がディスアームされた時に 呼び出されるコールバックのリストを指定します。 マウスポインタがその widget の中にある時に、ユーザがアクティブなマウスボタンを押して離すとプッシュボタンはディスアームされます。 このコールバックのリーズンは XmCR_DISARM です。
XmNfillOnArm
ボタンがアームされ、このリソースが True に設定されている時に、PushButton に XmNarmColor で指定した色でボタンのバックグラウンドが塗られます。 False に設定されているなら、上側と下側の影の色だけが変更されます。 PushButton がメニュー中にある時にこのリソースは無視され、False であるとみなされます。
XmNshowAsDefault
PushButton がデフォルトボタンであることを視覚的に示すために、プッシュボタンの回りに描かれる 2 番目の影の太さを指定します。 影とデフォルトの影の間の長さは両方の影の和に等しくなります。 デフォルト値は 0 です。 この値が 0 でない時に、Label のリソースである XmNmarginLeft、XmNmarginRight、XmNmarginTop、XmNmarginBottom は 2 番目の影を調整するよう変更されます。 このリソースは PushButton がメニューの中にある時は使用できません。
継承されるリソース
PushButton は次のスーパークラスから動作とリソースを継承します。 これらのリソースの完全な解説は、そのスーパークラスのマニュアルページを参照してください。
| XmLabel リソース一覧 | ||||
| 名称 | クラス | 型 | デフォルト | アクセス |
| XmNaccelerators | XmCAccelerators | 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 | dynamic | CSG |
| XmNmarginRight | XmCMarginRight | short | dynamic | CSG |
| XmNmarginTop | XmCMarginTop | short | dynamic | CSG |
| XmNmarginWidth | XmCMarginWidth | short | 2 | 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 | XmNTraversalOn | 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 を示します。 Primitive リソースの XmNtraversalOn が True の時にコールバックが起こるか、コールバックが ArmAndActivate の動作ルーチンを通ってアクセスされたならば、 XmNactivateCallback に関してこのイベントは NULL です。
動作
PushButton は、メニューシステムの一部でない場合は、デフォルトの動作と関連しています。 メニューシステムでは RowColumn の親がどのマウスボタンが使用されるかを定めます。
デフォルトの動作
<Btn1Down>:
この動作によって PushButton がアームされます。 影はアームされた状態において描かれ、XmNfillOnArm が True に設定されていれば、ボタンは XmNarmColor によって指定された色で塗られます。 XmNarmCallback に対するコールバックも行われます。
<Btn1Up>:
( ボタン中で ) : アームされていない状態で影を再描画します。 XmNfillOnArm が True に設定されていれば、バックグラウンドの色はアームされていない色に戻ります。 XmNactivateCallback に対するコールバックが呼び出され、続いて XmNdiarmCallback に対するコールバックが呼び出されます。
(ボタンの外で) : この動作は、XmNdisarmCallback に対するコールバックを呼び出します。
<Leave Window>:
ボタンが押され、カーソルが widget のウィンドウから離れる時、影はアームされない状態で再描画されます。 XmNfillOnArm が True に設定されていれば、バックグラウンドの色はアームされていない色に戻ります。
<Enter Window>:
ボタンが押され、カーソルが一度離れてから widget のウィンドウに再び入った時、影はアームされた状態で再描画されます。 XmNfillOnArm が True に設定されていれば、ボタンは XmarmColor で指定された色で塗られます。
デフォルト PopupMenu システム
<Btn3Down>:
この動作はメニューでのキーボードトラバースを無効にし、ユーザをドラッグモードに戻します。 ドラッグモードはメニューをマウスを使用して操作するモードです。 影はアームされた状態で描かれます。 そして、XmNarmCallback に対するコールバックが呼び出されます。
<Btn3Up>:
PushButton をアクティブにし、メニューを表示しないようにします。 XmNactivateCallback に対するコールバックが呼び出されるのに続いて、XmNdisarmCallback に対するコールバックが呼び出されます。
<Leave Window>:
ボタン 3 が押され、カーソルが widget のウィンドウから離れる時、PushButton が影なしで再描画されます。 XmNdisarmCallback に対するコールバックが呼び出されます。 メニュー中でキーボードトラバースが可能ならばこのイベントは無視されます。
<Enter Window>:
ボタン 3 が押され、カーソルが widget のウィンドウに入った時、影がアームされた状態で描かれます。 XmNdisarmCallback に対するコールバックが呼び出されます。 メニュー中でキーボードトラバースが可能ならば、このイベントは無視されます。
<Key>Return:
メニュー中でキーボードトラバースが可能ならば、このイベントは PushButton をアクティブにし、メニューを表示しないようにします。 XmNactivateCallback に対するコールバックが呼び出されるのに続いて、 XmNdisarmCallback に対するコールバックが呼び出されます。
デフォルト PulldownMenu および OptionMenu システム
<Btn1Down>:
この動作はメニューでのキーボードトラバースを無効にし、ユーザをドラッグモードに戻します。 ドラッグモードはメニューをマウスを使用して操作するモードです。 影はアームされた状態で描かれます。 そして、XmNarmCallback に対するコールバックが呼び出されます。
<Btn1Up>:
PushButton をアクティブにし、メニューを表示しないようにします。 XmNactivateCallback に対するコールバックが呼び出され、続いて XmNdisarmCallback に対するコールバックが呼び出されます。
<Leave Window>:
ボタン 1 が押され、カーソルが widget のウィンドウから離れた場合に、PusshButton が影なしで再描画されます。 XmNdisarmCallback に対するコールバックが呼び出されます。 メニュー中でキーボードトラバースが可能ならばこのイベントは無視されます。
<Enter Window>:
ボタン 1 が押され、カーソルが widget のウィンドウに入ったら、影はアームされた状態で描かれます。 XmNdisarmCallback に対するコールバックが呼び出されます。 メニュー中でキーボードトラバースが可能ならばこのイベントは無視されます。
<Key>Return:
メニュー中でキーボードトラバースが可能ならば、PushButton をアクティブにし、メニューを表示しないようにします。 XmNactivateCallback に対するコールバックが呼び出されるのに続いて、 XmNdisarmCallback に対するコールバックが呼び出されます。
デフォルトのトランスレーション
メニューシステムの中以外では、次のものが PushButton のデフォルトのトランスレーションとなります。
<Btn1Down>:Arm()
<Btn1Up>:Activate()
Disarm()
<Key>Return:ArmAndActivate()
<Key>space:ArmAndActivate()
<EnterWindow>: Enter()
<LeaveWindow>: Leave()
メニューシステム中では PushButton のデフォルトのトランスレーションは次のようになります。
<BtnDown>:BtnDown()
<BtnUp>:BtnUp()
<EnterWindow>: Enter()
<LeaveWindow>: Leave()
<Key>Return:KeySelect()
<Key>Escape:MenuShellPopdownDone()
キーボードトラバース
メニューシステムの中以外でのキーボードトラバースは XmPrimitive(3XM) のマニュアルページと動作とデフォルトの トランスレーションの項を参照してください。 メニューシステム中ではキーボードトラバーストランスレーションは 以下のように定義されます。
<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), XmCreatePushButton(3XM), XmLabel(3XM), XmCreatePrimitive(3XM), XmRowColumn(3XM)
NEWS-OSRelease 4.2.1R