!!
!! $RCSfile: Control.uil,v $
!!
!! Copyright (C) 1992 by Adobe Systems Incorporated.
!! All rights reserved.
!!
!! Permission to use, copy, modify, and distribute this software and its
!! documentation for any purpose and without fee is hereby granted,
!! provided that the above copyright notices appear in all copies and that
!! both those copyright notices and this permission notice appear in
!! supporting documentation and that the name of Adobe Systems
!! Incorporated not be used in advertising or publicity pertaining to
!! distribution of the software without specific, written prior
!! permission.  If any portion of this software is changed, it cannot be
!! marketed under Adobe's trademarks and/or copyrights unless Adobe, in
!! its sole discretion, approves by a prior writing the quality of the
!! resulting implementation.
!!
!! ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR
!! ANY PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
!! ADOBE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
!! IMPLIED WARRANTIES OF MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE AND
!! NON-INFRINGEMENT OF THIRD PARTY RIGHTS.  IN NO EVENT SHALL ADOBE BE LIABLE
!! TO YOU OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL
!! DAMAGES OR ANY DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT,
!! NEGLIGENCE, STRICT LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN
!! CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  ADOBE WILL NOT
!! PROVIDE ANY TRAINING OR OTHER SUPPORT FOR THE SOFTWARE.
!!
!! PostScript, Display PostScript, and Adobe are trademarks of Adobe Systems
!! Incorporated registered in the U.S.A. and other countries.
!!
!! Author: Adobe Systems Incorporated
!!

!!***************************************************************
!! MODULE DECLARATIONS
!!***************************************************************

!!
!! module ControlPointsApp
!!
module ControlPointsApp
        version = 'v1.0'
        names = case_sensitive
        objects =
        {
                XmCascadeButton = gadget ;
                XmPushButton    = gadget ;
                XmSeparator     = gadget ;
                XmToggleButton  = gadget ;
        }


!!***************************************************************
!! PROCEDURE DECLARATIONS
!!***************************************************************

procedure
        refreshWindow       ();
        createProc          (integer);
        quitApp             ();
        traceProc           ();
        drawProc            (integer);
        numPointsSel        (integer);
        pointTypeSel        (integer);
        devIndepSel         ();
        
!!***************************************************************
!! VALUE DECLARATIONS
!!***************************************************************

!!
!! the following list is duplicated in Control.h for identification
!! of widgets as they are created
!!
value
        cMainDrawArea       : 1;
        cTraceToggle        : 2;
        cTimingText0        : 3;
        cTimingText1        : 4;
        cTimingText2        : 5;
        cTimingText3        : 6;
        cTimingText4        : 7;
        cTimingText5        : 8;
        cTimingText6        : 9;
	cButton3	    : 10;

!!
!! ADOBE FONTS
!!
value
    hel_bold_font12 :
      font('-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1');
    hel_bold_font14 :
      font('-adobe-helvetica-bold-r-normal--14-140-75-75-p-82-iso8859-1');
    hel_bold_font18 :
      font('-adobe-helvetica-bold-r-normal--18-180-75-75-p-103-iso8859-1');
    newcenturyschlbk_bold24 :
      font('-adobe-new century schoolbook-bold-r-normal--24-240-75-75-p-149-iso8859-1');

    dialogFont      : hel_bold_font12;
    textFont        : hel_bold_font12;
    labelFont       : hel_bold_font14;
    buttonFont      : hel_bold_font14;
    bigFont         : hel_bold_font18;
    jumboFont       : newcenturyschlbk_bold24;


!!
!! general constant values
!!
value
        vLabelOffset    : 7;    ! pixels
        vFrameShadow    : XmSHADOW_ETCHED_IN;

!!
!! main window constant values
!!
value
        vMainWidth      : 815;  ! pixels
        vMainHeight     : 583;  ! pixels

        vMainDrawHeight : 500;  ! pixels
        vMainDrawWidth  : 500;  ! pixels

        vMainMargin     : 20;   ! pixels
        vMainSpacing    : 10;   ! pixels

value
        vLeftCenter     : 57;   ! percent
        vRightCenter    : 63;   ! percent
        vDrawAllLeft    : 35;   ! percent
        vDrawAllRight   : 65;   ! percent
        vMethodsMargin  : 10;   ! pixels
        vButtonSpacing  : 20;   ! pixels
        vButtonMargin   : 10;   ! pixels

        vNumPtsSpacing  : 10;   ! pixels

        vDevIndepMargin : 10;   ! pixels
        vDevIndepPos    : 45;   !percent

value
        vBlockIconOff   : exported xbitmapfile('ControlBlockOff.xbm');
        vBlockIconOn    : exported xbitmapfile('ControlBlockOn.xbm');
        vBoxIconOff     : exported xbitmapfile('ControlBoxOff.xbm');
        vBoxIconOn      : exported xbitmapfile('ControlBoxOn.xbm');
        vTimesIconOff   : exported xbitmapfile('ControlTimesOff.xbm');
        vTimesIconOn    : exported xbitmapfile('ControlTimesOn.xbm');
        vPlusIconOff    : exported xbitmapfile('ControlPlusOff.xbm');
        vPlusIconOn     : exported xbitmapfile('ControlPlusOn.xbm');

list toggle_arguments : arguments
{
    XmNheight           =   32;
    XmNindicatorOn      =   false;
    XmNlabelType        =   XmPIXMAP;
    XmNmarginHeight     =   0;
    XmNmarginWidth      =   0;
    XmNmarginLeft       =   0;
    XmNmarginRight      =   0;
    XmNmarginTop        =   0;
    XmNmarginBottom     =   0;
    XmNshadowThickness  =   3;
    XmNwidth            =   32;
};

!!***************************************************************
!! TOP LEVEL WIDGETS
!!***************************************************************

!!
!! The main window widget.  This displays the pattern drawing.
!!
object MainWindow : XmMainWindow
{
    arguments
    {
        !!XmNbackground = color('yellow');

        XmNheight   = vMainHeight;
        XmNwidth    = vMainWidth ;
    };
    controls
    {
        XmMenuBar           mMenuBar;
        XmBulletinBoard     mBulletin;
    };
};

!!***************************************************************
!! Main window menu bar
!!***************************************************************

object mMenuBar : XmMenuBar           
{
    controls
    {
        XmCascadeButton mCommandButton;
    };
};

object mCommandButton : XmCascadeButton
{
    arguments
    {
        XmNfontList    = buttonFont;
    };
    controls
    {
        XmPulldownMenu mCommandMenu;
    };
};

object mCommandMenu : XmPulldownMenu
{
    controls
    {
        XmToggleButton  mTraceButton;
        XmSeparator     {};
        XmPushButton    mQuitButton;
    };
};

object mTraceButton : XmToggleButton
{
    arguments
    {
        XmNfontList    = buttonFont;
    };
    callbacks
    {
        MrmNcreateCallback = procedure createProc (cTraceToggle);
        XmNvalueChangedCallback = procedure traceProc ();
    };
};

object mQuitButton : XmPushButton
{
    arguments
    {
        XmNfontList    = buttonFont;
    };
    callbacks
    {
        XmNactivateCallback = procedure quitApp ();
    };
};
 
!!***************************************************************
!! Main window form
!!***************************************************************
object mBulletin : XmBulletinBoard
{
    arguments
    {
        !!XmNbackground = color('red');

        !!XmNmarginWidth    = vMainMargin;
        XmNmarginWidth  = 0;
        XmNmarginHeight = 0;
    };
    controls
    {
        XmForm          mMainForm;
    };
};

object mMainForm : XmForm
{
    arguments
    {
        !!XmNbackground = color('green');
        XmNhorizontalSpacing    = vMainSpacing;
        XmNverticalSpacing      = vMainSpacing;
    };
    controls
    {
        XmFrame     mDrawFrame;
        XmFrame     mNumPtsFrame;
        XmFrame     mMethodsFrame;
        XmFrame     mTypeFrame;
        XmFrame     mDevIndepFrame;
    };
};

!!***************************************************************
!! Main window drawing area
!!***************************************************************
object mDrawFrame : XmFrame
{
    arguments
    {
        XmNshadowType       = vFrameShadow ;

        XmNleftAttachment   = XmATTACH_FORM ;

        XmNtopAttachment    = XmATTACH_FORM ;
        XmNbottomAttachment = XmATTACH_FORM ;
    };
    controls
    {
        XmDrawingArea   mDrawArea;
    };
};

object mDrawArea : XmDrawingArea
{
    arguments
    {
        !!XmNbackground = color('blue');

        XmNheight       = vMainDrawHeight;
        XmNwidth        = vMainDrawWidth ;
    };
    callbacks
    {
        MrmNcreateCallback = procedure createProc (cMainDrawArea);
        XmNexposeCallback = procedure refreshWindow ();
    };
};

!!***************************************************************
!! Number of control points selection box
!!***************************************************************
object mNumPtsFrame : XmFrame
{
    arguments
    {
        XmNshadowType       = vFrameShadow ;

        XmNleftAttachment   = XmATTACH_WIDGET ;
        XmNleftWidget       = XmFrame mDrawFrame;
        XmNrightAttachment  = XmATTACH_FORM ;

        XmNtopAttachment    = XmATTACH_FORM ;
    };
    controls
    {
        XmForm      mNumPtsForm;
    };
};

object mNumPtsForm : XmForm
{
    arguments
    {
        !!XmNbackground = color('yellow');

        XmNhorizontalSpacing    = vNumPtsSpacing;
    };
    controls
    {
        XmLabel         mNumPtsTitle;
        XmRadioBox      mNumPtsRadioBox;
    };
};

object mNumPtsTitle : XmLabel
{
    arguments
    {
        XmNalignment        = XmALIGNMENT_CENTER;
        XmNfontList         = labelFont ;

        XmNleftAttachment   = XmATTACH_FORM ;
        XmNrightAttachment  = XmATTACH_FORM ;

        XmNtopAttachment    = XmATTACH_FORM ;
    };
};

object mNumPtsRadioBox : XmRadioBox
{
    arguments
    {
        XmNorientation      = XmVERTICAL;
        XmNisHomogeneous    = true;
        XmNpacking          = XmPACK_COLUMN;
        XmNnumColumns       = 2;
        XmNmarginWidth      = 70;

        XmNleftAttachment   = XmATTACH_FORM;
        XmNrightAttachment  = XmATTACH_FORM;

        XmNtopAttachment    = XmATTACH_WIDGET ;
        XmNtopWidget        = XmLabel mNumPtsTitle;
        XmNbottomAttachment = XmATTACH_FORM;
    };
    controls
    {
        XmToggleButton  mNumPtsButton0;
        XmToggleButton  mNumPtsButton1;
        XmToggleButton  mNumPtsButton2;
        XmToggleButton  mNumPtsButton3;
        XmToggleButton  mNumPtsButton4;
        XmToggleButton  mNumPtsButton5;
        XmToggleButton  mNumPtsButton6;
        XmToggleButton  mNumPtsButton7;
    };
};

object mNumPtsButton0 : XmToggleButton
{
    arguments
    {
	XmNfontList = buttonFont;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure numPointsSel (5);
    };
};

object mNumPtsButton1 : XmToggleButton
{
    arguments
    {
	XmNfontList = buttonFont;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure numPointsSel (25);
    };
};

object mNumPtsButton2 : XmToggleButton
{
    arguments
    {
	XmNfontList = buttonFont;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure numPointsSel (50);
    };
};

object mNumPtsButton3 : XmToggleButton
{
    arguments
    {
	XmNfontList = buttonFont;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure numPointsSel (100);
    };
};

object mNumPtsButton4 : XmToggleButton
{
    arguments
    {
	XmNfontList = buttonFont;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure numPointsSel (300);
    };
};

object mNumPtsButton5 : XmToggleButton
{
    arguments
    {
	XmNfontList = buttonFont;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure numPointsSel (500);
    };
};

object mNumPtsButton6 : XmToggleButton
{
    arguments
    {
	XmNfontList = buttonFont;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure numPointsSel (750);
    };
};

object mNumPtsButton7 : XmToggleButton
{
    arguments
    {
	XmNfontList = buttonFont;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure numPointsSel (1000);
    };
};

!!***************************************************************
!! Drawing methods form
!!***************************************************************
object mMethodsFrame : XmFrame
{
    arguments
    {
        XmNshadowType       = vFrameShadow ;

        XmNtopAttachment    = XmATTACH_WIDGET ;
        XmNtopWidget        = XmFrame mNumPtsFrame;

        XmNleftAttachment   = XmATTACH_WIDGET ;
        XmNleftWidget       = XmFrame mDrawFrame;
        XmNrightAttachment  = XmATTACH_FORM ;
    };
    controls
    {
        XmForm      mMethodsForm;
    };
};

object mMethodsForm : XmForm
{
    arguments
    {
        XmNhorizontalSpacing    = vMethodsMargin;
        XmNverticalSpacing      = vMethodsMargin;
    };
    controls
    {
        XmPushButton    mButton0;
        XmLabel          mTimingText0;
        XmPushButton    mButton1;
        XmLabel          mTimingText1;
        XmPushButton    mButton2;
        XmLabel          mTimingText2;
        XmPushButton    mButton3;
        XmLabel          mTimingText3;
        XmPushButton    mButton4;
        XmLabel          mTimingText4;
        XmPushButton    mButton5;
        XmLabel          mTimingText5;
        XmPushButton    mButton6;
        XmLabel          mTimingText6;
        XmPushButton    mDrawAllButton;
    };
};

object mButton0 : XmPushButton
{
    arguments
    {
        XmNfontList    = buttonFont;

        XmNleftAttachment   = XmATTACH_FORM ;
        XmNrightAttachment  = XmATTACH_POSITION ;
        XmNrightPosition    = vLeftCenter;

        XmNtopAttachment    = XmATTACH_FORM;
    };
    callbacks
    {
        XmNactivateCallback = procedure drawProc (0);
    };
};

object mTimingText0 : XmLabel
{
    arguments
    {
        XmNlabelString      = "      "; ! space for 6 digits
        XmNfontList         = textFont ;
	XmNbackground	    = color('white');

        XmNleftAttachment   = XmATTACH_POSITION;
        XmNleftPosition     = vRightCenter;
        XmNrightAttachment  = XmATTACH_FORM ;

        XmNtopAttachment    = XmATTACH_FORM ;
    };
    callbacks
    {
        MrmNcreateCallback = procedure createProc (cTimingText0);
    };
};

object mButton1 : XmPushButton
{
    arguments
    {
        XmNfontList    = buttonFont;

        XmNleftAttachment   = XmATTACH_FORM ;
        XmNrightAttachment  = XmATTACH_POSITION ;
        XmNrightPosition    = vLeftCenter;

        XmNtopAttachment    = XmATTACH_WIDGET;
        XmNtopWidget        = XmLabel mTimingText0;
    };
    callbacks
    {
        XmNactivateCallback = procedure drawProc (1);
    };
};

object mTimingText1 : XmLabel
{
    arguments
    {
        XmNlabelString      = "      "; ! space for 6 digits
        XmNfontList         = textFont ;

        XmNleftAttachment   = XmATTACH_POSITION;
        XmNleftPosition     = vRightCenter;
        XmNrightAttachment  = XmATTACH_FORM ;

        XmNtopAttachment    = XmATTACH_WIDGET ;
        XmNtopWidget        = XmLabel mTimingText0;
    };
    callbacks
    {
        MrmNcreateCallback = procedure createProc (cTimingText1);
    };
};

object mButton2 : XmPushButton
{
    arguments
    {
        XmNfontList    = buttonFont;

        XmNleftAttachment   = XmATTACH_FORM ;
        XmNrightAttachment  = XmATTACH_POSITION ;
        XmNrightPosition    = vLeftCenter;

        XmNtopAttachment    = XmATTACH_WIDGET;
        XmNtopWidget        = XmLabel mTimingText1;
    };
    callbacks
    {
        XmNactivateCallback = procedure drawProc (2);
    };
};

object mTimingText2 : XmLabel
{
    arguments
    {
        XmNlabelString      = "      "; ! space for 6 digits
        XmNfontList         = textFont ;

        XmNleftAttachment   = XmATTACH_POSITION;
        XmNleftPosition     = vRightCenter;
        XmNrightAttachment  = XmATTACH_FORM ;

        XmNtopAttachment    = XmATTACH_WIDGET ;
        XmNtopWidget        = XmLabel mTimingText1;
    };
    callbacks
    {
        MrmNcreateCallback = procedure createProc (cTimingText2);
    };
};

object mButton3 : XmPushButton
{
    arguments
    {
        XmNfontList    = buttonFont;

        XmNleftAttachment   = XmATTACH_FORM ;
        XmNrightAttachment  = XmATTACH_POSITION ;
        XmNrightPosition    = vLeftCenter;

        XmNtopAttachment    = XmATTACH_WIDGET;
        XmNtopWidget        = XmLabel mTimingText2;
    };
    callbacks
    {
        XmNactivateCallback = procedure drawProc (3);
        MrmNcreateCallback = procedure createProc (cButton3);
    };
};

object mTimingText3 : XmLabel
{
    arguments
    {
        XmNlabelString      = "      "; ! space for 6 digits
        XmNfontList         = textFont ;

        XmNleftAttachment   = XmATTACH_POSITION;
        XmNleftPosition     = vRightCenter;
        XmNrightAttachment  = XmATTACH_FORM ;

        XmNtopAttachment    = XmATTACH_WIDGET ;
        XmNtopWidget        = XmLabel mTimingText2;
    };
    callbacks
    {
        MrmNcreateCallback = procedure createProc (cTimingText3);
    };
};

object mButton4 : XmPushButton
{
    arguments
    {
        XmNfontList    = buttonFont;

        XmNleftAttachment   = XmATTACH_FORM ;
        XmNrightAttachment  = XmATTACH_POSITION ;
        XmNrightPosition    = vLeftCenter;

        XmNtopAttachment    = XmATTACH_WIDGET;
        XmNtopWidget        = XmLabel mTimingText3;
    };
    callbacks
    {
        XmNactivateCallback = procedure drawProc (4);
    };
};

object mTimingText4 : XmLabel
{
    arguments
    {
        XmNlabelString      = "      "; ! space for 6 digits
        XmNfontList         = textFont ;

        XmNleftAttachment   = XmATTACH_POSITION;
        XmNleftPosition     = vRightCenter;
        XmNrightAttachment  = XmATTACH_FORM ;

        XmNtopAttachment    = XmATTACH_WIDGET ;
        XmNtopWidget        = XmLabel mTimingText3;
    };
    callbacks
    {
        MrmNcreateCallback = procedure createProc (cTimingText4);
    };
};

object mButton5 : XmPushButton
{
    arguments
    {
        XmNfontList    = buttonFont;

        XmNleftAttachment   = XmATTACH_FORM ;
        XmNrightAttachment  = XmATTACH_POSITION ;
        XmNrightPosition    = vLeftCenter;

        XmNtopAttachment    = XmATTACH_WIDGET;
        XmNtopWidget        = XmLabel mTimingText4;
    };
    callbacks
    {
        XmNactivateCallback = procedure drawProc (5);
    };
};

object mTimingText5 : XmLabel
{
    arguments
    {
        XmNlabelString      = "      "; ! space for 6 digits
        XmNfontList         = textFont ;

        XmNleftAttachment   = XmATTACH_POSITION;
        XmNleftPosition     = vRightCenter;
        XmNrightAttachment  = XmATTACH_FORM ;

        XmNtopAttachment    = XmATTACH_WIDGET ;
        XmNtopWidget        = XmLabel mTimingText4;
    };
    callbacks
    {
        MrmNcreateCallback = procedure createProc (cTimingText5);
    };
};

object mButton6 : XmPushButton
{
    arguments
    {
        XmNfontList    = buttonFont;

        XmNleftAttachment   = XmATTACH_FORM ;
        XmNrightAttachment  = XmATTACH_POSITION ;
        XmNrightPosition    = vLeftCenter;

        XmNtopAttachment    = XmATTACH_WIDGET;
        XmNtopWidget        = XmLabel mTimingText5;
    };
    callbacks
    {
        XmNactivateCallback = procedure drawProc (6);
    };
};

object mTimingText6 : XmLabel
{
    arguments
    {
        XmNlabelString      = "      "; ! space for 6 digits
        XmNfontList         = textFont ;

        XmNleftAttachment   = XmATTACH_POSITION;
        XmNleftPosition     = vRightCenter;
        XmNrightAttachment  = XmATTACH_FORM ;

        XmNtopAttachment    = XmATTACH_WIDGET ;
        XmNtopWidget        = XmLabel mTimingText5;
    };
    callbacks
    {
        MrmNcreateCallback = procedure createProc (cTimingText6);
    };
};

object mDrawAllButton : XmPushButton
{
    arguments
    {
        XmNfontList    = buttonFont;
        XmNrightAttachment  = XmATTACH_POSITION ;
        XmNrightPosition    = vLeftCenter;

        XmNtopAttachment    = XmATTACH_WIDGET;
        XmNtopWidget        = XmLabel mTimingText6;
        XmNbottomAttachment = XmATTACH_FORM;
    };
    callbacks
    {
        XmNactivateCallback = procedure drawProc (7);
    };
};

!!***************************************************************
!! Type of control point selection box
!!***************************************************************
object mTypeFrame : XmFrame
{
    arguments
    {
        XmNshadowType       = vFrameShadow ;

        XmNleftAttachment   = XmATTACH_WIDGET ;
        XmNleftWidget       = XmFrame mDrawFrame;

        XmNtopAttachment    = XmATTACH_WIDGET ;
        XmNtopWidget        = XmFrame mMethodsFrame;
        XmNbottomAttachment = XmATTACH_FORM ;
    };
    controls
    {
        XmRadioBox      mTypeRowColumn;
    };
};

object mTypeRowColumn : XmRadioBox
{
    arguments
    {
        XmNorientation      = XmVERTICAL;
        XmNpacking          = XmPACK_COLUMN;
        XmNnumColumns       = 2;
        XmNspacing          = vButtonSpacing ;
	XmNmarginWidth	    = vButtonMargin ;
	XmNmarginHeight	    = vButtonMargin ;
    };
    controls
    {
        XmToggleButton  mTypeButton0;
        XmToggleButton  mTypeButton1;
        XmToggleButton  mTypeButton2;
        XmToggleButton  mTypeButton3;
    };
};

object mTypeButton0 : XmToggleButton
{
    arguments
    {
        XmNlabelPixmap      = vBlockIconOff;
        XmNselectPixmap     = vBlockIconOn;
        arguments toggle_arguments;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure pointTypeSel (0);
    };
};

object mTypeButton1 : XmToggleButton
{
    arguments
    {
        XmNlabelPixmap      = vTimesIconOff;
        XmNselectPixmap     = vTimesIconOn;
        arguments toggle_arguments;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure pointTypeSel (1);
    };
};

object mTypeButton2 : XmToggleButton
{
    arguments
    {
        XmNlabelPixmap      = vBoxIconOff;
        XmNselectPixmap     = vBoxIconOn;
        arguments toggle_arguments;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure pointTypeSel (2);
    };
};

object mTypeButton3 : XmToggleButton
{
    arguments
    {
        XmNlabelPixmap      = vPlusIconOff;
        XmNselectPixmap     = vPlusIconOn;
        arguments toggle_arguments;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure pointTypeSel (3);
    };
};

!!***************************************************************
!! Device independent selection box
!!***************************************************************
object mDevIndepFrame : XmFrame
{
    arguments
    {
        XmNshadowType       = vFrameShadow ;
        XmNmarginHeight     = vDevIndepMargin;

        XmNleftAttachment   = XmATTACH_WIDGET ;
        XmNleftWidget       = XmFrame mTypeFrame;
        XmNrightAttachment  = XmATTACH_FORM ;

        XmNtopAttachment    = XmATTACH_WIDGET ;
        XmNtopWidget        = XmFrame mMethodsFrame;
        XmNbottomAttachment = XmATTACH_FORM ;
    };
    controls
    {
        XmForm      mDevIndepForm;
    };
};

object mDevIndepForm : XmForm
{
    controls
    {
        XmToggleButton  mDevIndepButton;
        XmLabel         mDevIndepText0;
    };
};

object mDevIndepButton : XmToggleButton
{
    arguments
    {
        XmNlabelString  = "";

        XmNleftAttachment   = XmATTACH_POSITION ;
        XmNleftPosition     = vDevIndepPos;

        XmNtopAttachment    = XmATTACH_FORM ;
    };
    callbacks
    {
        XmNvalueChangedCallback = procedure devIndepSel ();
    };
};

object mDevIndepText0 : XmLabel
{
    arguments
    {
        XmNalignment        = XmALIGNMENT_CENTER;
        XmNfontList         = labelFont ;

        XmNleftAttachment   = XmATTACH_FORM ;
        XmNrightAttachment  = XmATTACH_FORM ;

        XmNtopAttachment    = XmATTACH_WIDGET ;
        XmNtopWidget        = XmToggleButton mDevIndepButton;
    };
};


!!***************************************************************
end module;

