aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/obm/ObmW/RadioGrp.man
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/x11iraf/obm/ObmW/RadioGrp.man')
-rw-r--r--vendor/x11iraf/obm/ObmW/RadioGrp.man384
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