diff options
Diffstat (limited to 'vendor/x11iraf/obm/ObmW/MenuBar.man')
-rw-r--r-- | vendor/x11iraf/obm/ObmW/MenuBar.man | 365 |
1 files changed, 365 insertions, 0 deletions
diff --git a/vendor/x11iraf/obm/ObmW/MenuBar.man b/vendor/x11iraf/obm/ObmW/MenuBar.man new file mode 100644 index 00000000..3ee2018f --- /dev/null +++ b/vendor/x11iraf/obm/ObmW/MenuBar.man @@ -0,0 +1,365 @@ +.\"remove .ig hn for full docs +.de hi +.ig eh +.. +.de eh +.. +.TH "" 3 "" "Version 3.0" "Free Widget Foundation" +.SH NAME +XfwfMenuBar +.SH DESCRIPTION +The MenuBar widget is a special kind of RowCol widget. It assumes +that all its children are PullDown buttons or other widgets that pop +up a menu. (But nothing will break if they are not.) By default, the +children are arranged in a row, wrapping to the next row if the width +is not enough for all of them. But other arrangements are possible, +see the resources of the XfwfRowCol(3) widget. + +The MenuBar attaches itself to the \fIpopup\fP callback of the menu shell +that is popped up by the children, and inserts itself in the list of +pointer grabs that Xt maintains. This is necessary to be able to drag +the mouse from one menu into another, popping down the first one and +popping up the second. If you use a RowCol widget instead of a +MenuBar, you will find that switching from one menu to the next +involves releasing the mouse and then pressing it again. + +To find the menu shell, the children are asked for their \fIpopup\fP +resource. PullDown buttons have this resource, others may not. + +The MenuBar widget introduces no new resources. + +.SS "Public variables" + +.ps-2 +.TS +center box; +cBsss +lB|lB|lB|lB +l|l|l|l. +XfwfMenuBar +Name Class Type Default + +.TE +.ps + +.TP +.I "XtNframeType" + +.hi + +.nf + frameType = XfwfRaised +.fi + +.eh + +.TP +.I "XtNtraversalOn" + +.hi + +.nf + traversalOn = False +.fi + +.eh + +.ps-2 +.TS +center box; +cBsss +lB|lB|lB|lB +l|l|l|l. +XfwfRowCol +Name Class Type Default +XtNstoreByRow XtCStoreByRow Boolean True +XtNrows XtCRows Int 0 +XtNcolumns XtCColumns Int 0 +XtNalignment XtCAlignment Alignment XfwfTopLeft +XtNshrinkToFit XtCShrinkToFit Boolean False + +.TE +.ps + +.ps-2 +.TS +center box; +cBsss +lB|lB|lB|lB +l|l|l|l. +XfwfBoard +Name Class Type Default +XtNabs_x XtCAbs_x Position 0 +XtNrel_x XtCRel_x Float "0.0" +XtNabs_y XtCAbs_y Position 0 +XtNrel_y XtCRel_y Float "0.0" +XtNabs_width XtCAbs_width Position 0 +XtNrel_width XtCRel_width Float "1.0" +XtNabs_height XtCAbs_height Position 0 +XtNrel_height XtCRel_height Float "1.0" +XtNhunit XtCHunit Float "1.0" +XtNvunit XtCVunit Float "1.0" +XtNlocation XtCLocation String NULL + +.TE +.ps + +.ps-2 +.TS +center box; +cBsss +lB|lB|lB|lB +l|l|l|l. +XfwfFrame +Name Class Type Default +XtNcursor XtCCursor Cursor None +XtNframeType XtCFrameType FrameType XfwfRaised +XtNframeWidth XtCFrameWidth Dimension 0 +XtNouterOffset XtCOuterOffset Dimension 0 +XtNinnerOffset XtCInnerOffset Dimension 0 +XtNshadowScheme XtCShadowScheme ShadowScheme XfwfAuto +XtNtopShadowColor XtCTopShadowColor Pixel compute_topcolor +XtNbottomShadowColor XtCBottomShadowColor Pixel compute_bottomcolor +XtNtopShadowStipple XtCTopShadowStipple Bitmap NULL +XtNbottomShadowStipple XtCBottomShadowStipple Bitmap NULL + +.TE +.ps + +.ps-2 +.TS +center box; +cBsss +lB|lB|lB|lB +l|l|l|l. +XfwfCommon +Name Class Type Default +XtNtraversalOn XtCTraversalOn Boolean True +XtNhighlightThickness XtCHighlightThickness Dimension 2 +XtNhighlightColor XtCHighlightColor Pixel XtDefaultForeground +XtNhighlightPixmap XtCHighlightPixmap Pixmap None +XtNnextTop XtCNextTop Callback NULL +XtNuserData XtCUserData Pointer NULL + +.TE +.ps + +.ps-2 +.TS +center box; +cBsss +lB|lB|lB|lB +l|l|l|l. +Composite +Name Class Type Default +XtNchildren XtCChildren WidgetList NULL +insertPosition XtCInsertPosition XTOrderProc NULL +numChildren XtCNumChildren Cardinal 0 + +.TE +.ps + +.ps-2 +.TS +center box; +cBsss +lB|lB|lB|lB +l|l|l|l. +Core +Name Class Type Default +XtNx XtCX Position 0 +XtNy XtCY Position 0 +XtNwidth XtCWidth Dimension 0 +XtNheight XtCHeight Dimension 0 +borderWidth XtCBorderWidth Dimension 0 +XtNcolormap XtCColormap Colormap NULL +XtNdepth XtCDepth Int 0 +destroyCallback XtCDestroyCallback XTCallbackList NULL +XtNsensitive XtCSensitive Boolean True +XtNtm XtCTm XTTMRec NULL +ancestorSensitive XtCAncestorSensitive Boolean False +accelerators XtCAccelerators XTTranslations NULL +borderColor XtCBorderColor Pixel 0 +borderPixmap XtCBorderPixmap Pixmap NULL +background XtCBackground Pixel 0 +backgroundPixmap XtCBackgroundPixmap Pixmap NULL +mappedWhenManaged XtCMappedWhenManaged Boolean True +XtNscreen XtCScreen Screen * NULL + +.TE +.ps + +.SS "Exports" + +The MenuBar widget has a method \fIprocess_menu\fP that can be used by +children (usually PullDown buttons) to pop up a menu and to register +it with the menu bar. If they do so, the menu bar is able to process +events elsewhere in the menu bar and pop down the menu in favour of +another one, when the user moves the mouse to another button in the +menu bar. A menu or a button is unable to do this by itself, since +they do not know what other menus are present. + +To call the \fIprocess_menu\fP method, widgets should use the +\fIXfwfCallProcessMenu\fP function, which will check that the receiver of +the call is indeed a MenuBar widget. It returns \fITrue\fP if the +\fIprocess_menu\fP method could be called, otherwise \fIFalse\fP. + +The value for \fIcursor\fP can also be \fINone\fP, in which case the cursor +from the menu's parent (the root window, usually) will be used +instead. + +.nf +Boolean XfwfCallProcessMenu( $, Widget menu, Cursor cursor) +.fi + +.hi +{ + if (XtIsSubclass($, xfwfMenuBarWidgetClass) $process_menu) { + $process_menu($, menu, cursor); + return True; + } else + return False; +} +.eh + +.SS "Translations" + +Since the MenuBar widget adds itself to the list of cascaded popups +that is maintained by Xt, it will receive pointer events when a menu +is popped up. If the event is a button release, the current menu will +have to be popped down. + + + +.nf +<Btn1Up>: menu_popdown() +.fi + +.hi +.SS "Actions" + +.TP +.I "menu_popdown + +The \fImenu_popdown\fP action calls \fIXtPopdown\fP for the current menu, +if there is one. + +.hi + +.nf +void menu_popdown($, XEvent* event, String* params, Cardinal* num_params) +{ + if ($current_menu != NULL) { + XtPopdown($current_menu); + $current_menu = NULL; + } +} +.fi + +.eh + +.hi + +.hi +.SH "Importss" + +.nf + +.B incl + <Xfwf/PullDown.h> +.fi + +.nf + +.B incl + <X11/Shell.h> +.fi + +.nf + +.B incl + <stdio.h> +.fi + +.hi + +.hi +.SS "Private variables" + +A pointer to the currently popped up menu is kept in a private +variable \fIcurrent_menu\fP. The variable is set in the \fIprocess_menu\fP +method. + + + +.nf +Widget current_menu +.fi + +.hi + +.hi +.SS "Methods" + +.nf +initialize(Widget request, $, ArgList args, Cardinal * num_args) +{ + $current_menu = NULL; +} +.fi + +The \fIprocess_menu\fP method is provided for use by children (usually +PullDown buttons) to pop up their menus. If they call this method +instead of popping up the menu themselves, the menu bar has a chance +to intercept events for other buttons in the menu bar and pop down the +menu when the user clicks on another button in the menubar. + +The method adds the appropriate (passive) global grabs, establishes an +Xt local grab and adds a callback to the menu, so that the menu bar +will be informed when the menu is popped down again. + +.nf +process_menu($, Widget menu, Cursor cursor) +{ + if (menu == $current_menu) return; + if ($current_menu) XtPopdown($current_menu); + XtAddGrab($, True, False); +/* + XtGrabButton(menu, AnyButton, AnyModifier, True, ButtonPressMask | + ButtonReleaseMask | EnterWindowMask | LeaveWindowMask + | PointerMotionMask, GrabModeAsync, GrabModeAsync, + None, cursor); + XtGrabKey(menu, AnyKey, AnyModifier, True, GrabModeAsync, + GrabModeAsync); +*/ + XtAddCallback(menu, XtNpopdownCallback, popdown_cb, $); + $current_menu = menu; + XtPopup(menu, XtGrabNonexclusive); +} +.fi + +.hi + +.hi +.SH "Utilities" + +The \fIpopdown_cb\fP routine is a callback that is attached to the +currently popped up menu. When the menu pops down, the routine removes +the grabs and resets \fIcurrent_menu\fP to \fINULL\fP. + +.nf +popdown_cb(Widget menu, XtPointer client_data, XtPointer call_data) +{ + Widget $ = (Widget) client_data; + + XtRemoveCallback(menu, XtNpopdownCallback, popdown_cb, $); +/* + XtUngrabKey(menu, AnyKey, AnyModifier); + XtUngrabButton(menu, AnyButton, AnyModifier); + XtRemoveGrab($); +*/ + $current_menu = NULL; +} +.fi + +.hi |