diff options
Diffstat (limited to 'vendor/x11iraf/obm/ObmW/RadioGrp.man')
-rw-r--r-- | vendor/x11iraf/obm/ObmW/RadioGrp.man | 384 |
1 files changed, 384 insertions, 0 deletions
diff --git a/vendor/x11iraf/obm/ObmW/RadioGrp.man b/vendor/x11iraf/obm/ObmW/RadioGrp.man new file mode 100644 index 00000000..769547ef --- /dev/null +++ b/vendor/x11iraf/obm/ObmW/RadioGrp.man @@ -0,0 +1,384 @@ +.\"remove .ig hn for full docs +.de hi +.ig eh +.. +.de eh +.. +.TH "" 3 "" "Version 3.0" "Free Widget Foundation" +.SH NAME +XfwfRadioGroup +.SH DESCRIPTION +The RadioGroup widget is a simple specialization of the Group +widget. It has an extra resource, \fIlabels\fP, which holds the labels of +the toggle buttons that are created automatically. For the common case +that a Group widget contains only radio buttons, the RadioGroup widget +is much more convenient. It is also much less flexible. E.g., it is +very difficult to change resources of the radio buttons, when the +defaults are not satisfactory. + +In particular, the Toggle widgets are created with the following +hardcoded resources: \fIshrinkToFit = True\fP, \fIborder_width = 0\fP, +\fIframeWidth = 0\fP. The names of the Toggle widgets are equal to their +labels. + +.SS "Public variables" + +.ps-2 +.TS +center box; +cBsss +lB|lB|lB|lB +l|l|l|l. +XfwfRadioGroup +Name Class Type Default +XtNlabels XtCLabels StringArray NULL + +.TE +.ps + +.TP +.I "XtNlabels" +The \fIlabels\fP resource is an array of strings. Each string will +become the label of a toggle button. The last member of the array must +be a \fINULL\fP pointer. + +There is a converter that allows the list of strings to be entered as +a single string, with any character as separator. + + + +.hi + +.nf +StringArray labels = NULL +.fi + +.eh + +.ps-2 +.TS +center box; +cBsss +lB|lB|lB|lB +l|l|l|l. +XfwfGroup +Name Class Type Default +XtNlabel XtCLabel String NULL +XtNfont XtCFont FontStruct XtDefaultFont +XtNforeground XtCForeground Pixel XtDefaultForeground +XtNselectionStyle XtCSelectionStyle SelectionType XfwfSingleSelection +XtNselection XtCSelection Long 0 +XtNactivate XtCActivate Callback NULL + +.TE +.ps + +.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 type \fIStringArray\fP represents an array of \fIString\fPs, with the +proviso that by convention the last member of a \fIStringArray\fP is +always a \fINULL\fP pointer. There is a converter that can construct a +\fIStringArray\fP from a single string. + + + +.nf + +.B type + StringArray = String * +.fi + +.hi +.SH "Importss" + +.nf + +.B incl + <Xfwf/Toggle.h> +.fi + +.hi + +.hi +.SS "Methods" + +\fIclass_initialize\fP registers the type converter. + +.nf +class_initialize() +{ + XtSetTypeConverter(XtRString, "StringArray", cvtStringToStringArray, + NULL, 0, XtCacheNone, NULL); +} +.fi + +In the \fIinitialize\fP method, the utility function \fIcreate_toggles\fP is +called, which creates toggle widgets for each label in the \fIlabels\fP +resource. + +.nf +initialize(Widget request, $, ArgList args, Cardinal * num_args) +{ + $labels = newStringArray($labels); + create_toggles($); +} +.fi + +The \fIset_values\fP method makes a private copy of the \fIlabels\fP +resource and calls \fIcreate_labels\fP. Since the RadioGroup doesn't draw +anything itself, the return value is always \fIFalse\fP. + +.nf +Boolean set_values(Widget old, Widget request, $, ArgList args, Cardinal * num_args) +{ + if ($old$labels != $labels) { + freeStringArray($old$labels); + $labels = newStringArray($labels); + create_toggles($); + } + return False; +} +.fi + +.hi + +.hi +.SH "Utilities" + +The function \fIcreate_toggles\fP first destroys all existing children +and then creates new ones. For each string in the \fIlabels\fP resource +there will be an XfwfToggle button. + +.nf +create_toggles($) +{ + Cardinal i; + StringArray s; + + for (i = 0; i < $num_children; i++) + XtDestroyWidget($children[i]); + + if ($labels == NULL) return; + + for (s = $labels, i = 0; s[i] != NULL; i++) { + (void) XtVaCreateManagedWidget + (s[i], xfwfToggleWidgetClass, $, XtNlabel, s[i], XtNshrinkToFit, + True, XtNborderWidth, 0, XtNframeWidth, 0, NULL); + } +} +.fi + +The converter from \fIString\fP to \fIStringArray\fP makes a copy of the +passed string and then replaces all occurences of the delimiter with +a nul byte. The \fIStringArray\fP a is filled with pointers to the parts +of the string. + +The delimiter character is the first character in the string. + +\fBdef\fP done(type, value) = +do { + if (to->addr != NULL) { + if (to->size < sizeof(type)) { + to->size = sizeof(type); + return False; + } + *(type*)(to->addr) = (value); + } else { + static type static_val; + static_val = (value); + to->addr = (XtPointer)static_val; + } + to->size = sizeof(type); + return True; + }while (0 ) + +.nf +Boolean cvtStringToStringArray(Display * display, XrmValuePtr args, Cardinal * num_args, XrmValuePtr from, XrmValuePtr to, XtPointer * converter_data) +{ + String t, s; + StringArray a = NULL; + Cardinal i; + char delim; + + if (*num_args != 0) + XtAppErrorMsg(XtDisplayToApplicationContext(display), + "cvtStringToStringArray", "wrongParameters", + "XtToolkitError", + "String to StringArray conversion needs no arguments", + (String*) NULL, (Cardinal*) NULL); + + delim = ((String) from->addr)[0]; + s = XtNewString((String) from->addr + 1); + i = 0; + while (s *s) { + t = strchr(s, delim); + if (t) *t = '\\0'; + a = (StringArray) XtRealloc((String) a, (i + 1) * sizeof(*a)); + a[i] = s; + i++; + s = t ? t + 1 : NULL; + } + a = (StringArray) XtRealloc((String) a, (i + 1) * sizeof(*a)); + a[i] = NULL; + done(StringArray, a); +} +.fi + +The function \fInewStringArray\fP makes a copy of a \fIStringArray\fP. It +allocates new space for the array itself and for the strings that it +contains. + +.nf +StringArray newStringArray(StringArray a) +{ + Cardinal n, i; + StringArray s; + + if (!a) return NULL; + for (s = a, n = 0; s[n]; n++) ; + s = (StringArray) XtMalloc((n + 1) * sizeof(*s)); + for (i = 0; i < n; i++) s[i] = XtNewString(a[i]); + s[n] = NULL; + return s; +} +.fi + +\fIfreeStringArray\fP deallocates the array and all strings it contains. + +.nf +freeStringArray(StringArray a) +{ + Cardinal i; + + if (!a) return; + for (i = 0; a[i]; i++) XtFree(a[i]); + XtFree((String) a); +} +.fi + +.hi |