#! ../mofe --f

scriptNeeds XbaeCaption {
  This program can only be used, when mofe was compiled 
  with support for the Xbae widgets (XBAE). 
}

fallbackResources topLevel \
    *XmPushButtonGadget*fontList  \
       -*-helvetica-medium-r-normal-*-12-*-iso8859-1 \
    *rc*XmDialogShell*fontList \
       -adobe-helvetica-bold-r-*-*-*-180-*-*-*-*-*-* \
    *rc*XmDialogShell*XmToggleButton.fontList \
       -adobe-helvetica-medium-r-*-*-*-180-*-*-*-*-*-* \
    *rc*XmDialogShell*XmPushButton.fontList \
       -adobe-helvetica-medium-r-*-*-*-180-*-*-*-*-*-* \
    \
    *rc*XmDialogShell.mappedWhenManaged      false \
    *rc*XmDialogShell*frame.shadowThickness  4     \
    *rc*XmDialogShell*frame.marginWidth	     15    \
    *rc*XmDialogShell*frame.marginHeight     15    \
    \
    *n1.labelString               "Text, caption right" \
    *n1.activateCallback          "captionExample %w text" \
    *caption1*cw.labelString        Caption  \
    *caption1*cw.labelPosition      right    \
    *caption1*cw.labelAlignment     center   \
    *caption1*cw.spacing            30       \
    \
    *n2.labelString               "ButtonBox, caption top center" \
    *n2.activateCallback          "captionExample %w buttons" \
    *caption2*cw.wcClassName	    XbaeCaption \
    *caption2*cw.labelString	    Caption \
    *caption2*cw.labelPosition	    top \
    *caption2*cw.labelAlignment	    center \
    *caption2*cw.labelOffset	    -15 \
    *caption2*cw.Offset		    10 \
    *caption2*cw.leftAttachment	    attach_form \
    *caption2*cw.rightAttachment    attach_form \
    *caption2*cw.bottomAttachment   attach_form \
    *caption2*cw.topAttachment	    attach_form \
    *caption2*rc.orientation	    vertical \
    *caption2*button.labelString    PushButton \
    \
    *n3.labelString               "ButtonBox, multiline caption left" \
    *n3.activateCallback          "captionExample %w buttons" \
    *caption3*cw.wcClassName XbaeCaption \
    *caption3*cw.labelString Multi\nLine\nCaption \
    *caption3*cw.labelPosition      left \
    *caption3*cw.labelAlignment     top  \
    *caption3*cw.labelOffset	    5 \
    *caption3*cw.labelTextAlignment alignment_end \
    *caption3*cw.Offset	            10 \
    *caption3*cw.leftAttachment     attach_form \
    *caption3*cw.rightAttachment    attach_form \
    *caption3*cw.bottomAttachment   attach_form \
    *caption3*cw.topAttachment	    attach_form \
    *caption3*rc.orientation	    vertical    \
    *caption3*button.labelString    PushButton  \
    \
    *n4.labelString               "Text, caption left" \
    *n4.activateCallback          "captionExample %w text" \
    *caption4*cw.labelString        Caption:    \
    *caption4*cw.labelOffset        5           \
    *caption4*columns               10          \
    \
    *n5.labelString               "Double toggle boxes" \
    *n5.activateCallback          "captionExample %w toggles" \
    *caption5*rc.spacing                   20   \
    *caption5*rc.marginWidth               10   \
    *caption5*rc.marginHeight              10   \
    *caption5*XbaeCaption.labelPosition    top  \
    *caption5*XbaeCaption.labelAlignment   left \
    *caption5*XbaeCaption.labelOffset      -15  \
    *caption5*Xbae.Offset		   10   \
    *caption5*cw1.labelString              "ToggleBox 1" \
    *caption5*cw2.labelString	           "ToggleBox 2" \
    \
    *menu_bar*background gray75 \
    *.background gray90 \
    *.foreground black 

XmMainWindow main topLevel
 XmMenuBar menu_bar main 
    XmPulldownMenu mpa menu_bar unmanaged
      XmPushButtonGadget Quit mpa activateCallback quit
    XmCascadeButton Actions menu_bar subMenuId mpa

    XmPulldownMenu mph menu_bar unmanaged
      XmPushButtonGadget Help mph activateCallback "manageChild helpbox"
    XmCascadeButton Help menu_bar subMenuId mph
    sV menu_bar menuHelpWidget Help

 XmMessageDialog helpbox Help unmanaged \
	dialogTitle "$argv0 Help" okLabelString "Close" messageString "
 This small example script  demonstrates XbaeCaption widget class 
 from the Xbae Widget set. This widget class provides easy to use 
 means to label other widgets.
 
 This script requires mofe compiled with Xbae support
 
 Gustaf Neumann                  Mohegan Lake, Sat, Nov  5 1994"
  unmanageChild \
	[XmMessageBoxGetChild helpbox DIALOG_CANCEL_BUTTON] \
	[XmMessageBoxGetChild helpbox DIALOG_HELP_BUTTON] 

#-------------------- here starts the real work -----------------

  XmRowColumn rc main
  foreach b {n1 n2 n3 n4 n5} { XmPushButton $b rc }
  sV main workWindow rc
realize

proc captionExample { name type } {
  set sh [XmDialogShell captio$name $name]

  switch $type {
    text {
      set co [XbaeCaption cw $sh unmanaged]
      XmTextField text $co
      callback $sh popupCallback positionCursor 0
    }
    buttons {
      set co [XmForm form $sh unmanaged]
      set rb [XmRowColumn buttons [XmFrame frame [XbaeCaption cw $co]]]
      foreach b {one two three} {
	XmPushButton $b $rb labelString "Button $b"
    } }
    toggles {
      set co [XmRowColumn rc $sh unmanaged]
      foreach box {1 2} {
	set rb [XmRadioBox radio [XmFrame frame [XbaeCaption cw$box $co]]]
	foreach b {one two three four} {
	  XmToggleButton $b $rb labelString "Toggle $b"
	} 
	callback $sh popupCallback positionCursor 0
    } }
  }
  manageChild $co
  popup $sh none
}
