manpagez: man pages & more
man WML(5)
Home | html | info | man
WML(file formats)                                            WML(file formats)




NAME

       WML -- The widget meta-language file format for creating uil compilers


DESCRIPTION

       The  widget meta-language facility (WML) is used to generate the compo-
       nents of the user interface language (UIL)  compiler  that  can  change
       depending  on  the widget set. Using WML you can add support in UIL for
       new widgets to the Motif widget set or for a totally new widget set.

   File
       WML files are ASCII files that you can modify with  any  standard  text
       editor.  They  are accessed in the tools/wml directory by WML.  By con-
       vention WML files have the  suffix  .wml.   The  Motif  widget  set  is
       described  in  the  motif.wml  file.  This is also the default WML file
       when using the WML facility.

       When adding new widgets or changing widget characteristics, you  should
       start  with  a  copy  of the motif.wml file.  If you are creating a new
       widget set for use with UIL, you should start from scratch.  In  either
       case the motif.wml file is a good example of WML syntax, and you should
       familiarize yourself with it before writing your own WML file.

       WML files have a simple syntax, similar in structure  to  UIL.   It  is
       made up of the following elements:

          o  Comments

          o  Data Type Definitions

          o  Character Set Definitions

          o  Enumeration Set Definitions

          o  Control List Definitions

          o  Class Definitions

          o  Child Definitions

          o  Resource Definitions

       You can use space, tabs, or newlines anywhere in the syntax, as long as
       you do not split up keywords or strings, except that comments end at  a
       newline.  The order of elements is not important to the syntax.

       This  description uses the following additional conventions to describe
       the syntax of the widget meta-language:

       [  ]      Indicates optional elements.

       ...       Indicates where an element of syntax can be repeated.

       |         Indicates a choice among multiple items.

   Comments
       You can include comments in the WML file.  Comments have the  following
       syntax:

       [any.element]!any.comment

       Comments  begin  with an exclamation point and extend to the end of the
       line. A comment can begin on a line by itself or  follow  any  part  of
       another  element.  A  comment  does not change the meaning of any other
       element.  For example:

       !This is a comment
       !  that spans two lines.
       DataType    !This is a comment following code.


   Data Type Definitions
       Data type definitions register all the resource data types used in  the
       file. You must register all the data types used in your WML file.  Data
       type definitions have the following syntax:

       DataType
            any.datatype [{ InternalLiteral = internal.name |
                 DocName = "string"; [...]}];
            [...]

       A data type definition begins with the keyword DataType. Following  the
       DataType  keyword  is a list of data types that can be further modified
       with

       InternalLiteral
                 This forces the value of the internal  symbol  table  literal
                 definition  of the data type name. This modifier is only used
                 to get around symbol table definitions hard  coded  into  the
                 UIL compiler.  It should rarely be used.

       DocName   This  gives an arbitrary string for use in the documentation.
                 This string is meant to supply a different name for the  data
                 type  for  use in the documentation, or a single name for the
                 data type if the data type has aliases.

       For example:

       DataType OddNumber {DocName="OddNumber";};
                NewString;


   Character Set Definitions
       Character set definitions register the Motif  Toolkit  name  and  other
       information  for  the  character  set names used in UIL.  Character set
       definitions have the following syntax:

       CharacterSet
            any.character.set
                 { [ FontListElementTag | XmStringCharsetName ] = "string";
                      [ Alias = "string" ...; |
                      Direction = [ LeftToRight | RightToLeft ]; |
                      ParseDirection = [ LeftToRight | RightToLeft ]; |
                      CharacterSize = [ OneByte | TwoByte ]; ]
                      [ ... ] };
            [ ... ]

       A character set definition begins with the keyword CharacterSet.   Fol-
       lowing the CharacterSet keyword is a list of character sets that can be
       further modified with

       FontListElementTag | XmStringCharsetName
                 Specifies the name of the character set,  which  will  become
                 the character set component of a compound string segment cre-
                 ated using this character set.  This modifier is required.

       Alias     Specifies one or more aliases for  the  character  set  name.
                 Each  alias can be used within UIL to refer to the same char-
                 acter set.

       Direction Specifies the direction of a compound string segment  created
                 using this character set.  The default is LeftToRight.

       ParseDirection
                 Specifies  the  direction  in which an input string is parsed
                 when a compound string segment is created using this  charac-
                 ter set.  The default is whatever Direction is specified.

       CharacterSize
                 Specifies the number of bytes in each character of a compound
                 string segment created using this character set.  The default
                 is OneByte.

       For example:

       CharacterSet
         iso_latin1
           { XmStringCharsetName = "ISO8859-1";
             Alias = "ISOLatin1"; };
         iso_hebrew_lr
           { XmStringCharsetName = "ISO8859-8";
             Alias = "iso_latin8_lr";
             Direction = RightToLeft;
             ParseDirection = LeftToRight; };
         ksc_korean
           { XmStringCharsetName = "KSC5601.1987-0";
             CharacterSize = TwoByte; };


   Enumeration Set Definitions
       Enumeration  set  definitions  register the named constants used in the
       Motif Toolkit to specify some resource values.  Enumeration set defini-
       tions have the following syntax:

       EnumerationSet
            resource.name: resource.type
                 { enum.value.name; [ ... ] };

       An  enumeration  set definition begins with the keyword EnumerationSet.
       For each enumeration set defined, the name and type of the resource are
       listed.  The resource name is the Motif Toolkit resource name, with the
       beginning XmN removed and with the  initial  letter  capitalized.   For
       example,  the  name  of  the Motif Toolkit resource XmNrowColumnType is
       RowColumnType.  The resource type is the data type  for  the  resource;
       for  most  resources, this is integer.  Following the resource name and
       type is a list of names of enumeration values that can be used as  set-
       tings for the resource.  These names are the same as those in the Motif
       Toolkit.

       For example:

       EnumerationSet
         RowColumnType: integer
           { XmWORK_AREA; XmMENU_BAR; XmMENU_POPUP;
             XmMENU_PULLDOWN; XmMENU_OPTION; };


       Enumeration sets also support Boolean values.

   Control List Definitions
       Control list definitions assign a name to groups of controls.  You  can
       use  these  control  lists  later  in class definitions to simplify the
       structure of your WML file.  Control list definitions have the  follow-
       ing syntax:

       ControlList
            any.control.list [{ any.control; [...]}];

       A control list definition starts with the ControlList keyword.  Follow-
       ing the ControlList keyword are any number of control list definitions.
       Control list definitions are made up of a control list name followed by
       the set of controls it represents. For example:

       ControlList
               Buttons {PushButton;
                        RadioButton;
                        CascadeButton;
                        NewCascadebutton;};


       Each control specified in the control list must be defined as  a  class
       in the file.

   Class Definitions
       Class  definitions  describe  a  particular  widget class including its
       position  in  the  class  hierarchy,  toolkit   convenience   function,
       resources,  and controls. There should be one class definition for each
       widget or gadget in the widget set you want to support in  UIL.   Class
       definitions have the following syntax:

       Class class.name: MetaClass | Widget | Gadget
            [{[
            SuperClass = class.name; |
            ParentClass = parent.class.name; |
            InternalLiteral = internal.name; |
            Alias = alias; |
            ConvenienceFunction = convenience.function; |
            WidgetClass = widget.class; |
            DocName = "string"; |
            DialogClass = True | False; |
            Resources { any.resource.name [{
                      Default = new.default.value; |
                      Exclude = True |
                      False;
                      [...]} ];
                 [...]}; |
            Controls { any.control.name; [...]};
            Children { any.child.name; [...] };
            [...]
            ]}];

       Class  definitions  start  with  the  Class  keyword.   For  each class
       defined, the name of the class and whether the class  is  a  metaclass,
       widget, or gadget is listed.  Each class definition can be further mod-
       ified with the keywords described in the following list.

       SuperClass
                 This indicates the name of the parent class.  Only  the  root
                 of the hierarchy does not specify a SuperClass.

       ParentClass
                 This indicates the name of the widget's automatically created
                 parent class if one exists. This allows  resources  for  that
                 automatically  created  class to be used in instances of this
                 class.  For example, XmBulletinBoardDialog  creates  both  an
                 XmBulletinBoard and an XmDialogShell. To access the resources
                 of the XmDialogShell parent class it must be specified  here.

       InternalLiteral
                 This  forces  the  value of the internal symbol table literal
                 definition of the class name. This modifier is only  used  to
                 get  around  symbol table definitions hard coded into the UIL
                 compiler.  It should rarely be used.

       Alias     This indicates alternate names for the class for use in a UIL
                 specification.

       ConvenienceFunction
                 This  indicates the name of the creation convenience function
                 for this class. All widget and gadget  classes  must  have  a
                 ConvenienceFunction.

       WidgetClass
                 This  indicates  the  associated  widget class of gadget type
                 classes.  Presently, nothing is done with this value.

       DocName   This defines an arbitrary string for use  in  the  documenta-
                 tion.  Presently, nothing is done with this value.

       DialogClass
                 This   indicates   whether  the  class  is  a  dialog  class.
                 Presently, nothing is done with this value.

       Resources This lists the resources of the widget  class.  This  keyword
                 can be further modified with

                 Default   This   specifies  a  new  default  value  for  this
                           resource. Resource default values are  usually  set
                           in   the   resource  definition.  If  an  inherited
                           resource's default value is changed by  the  class,
                           the new default value should be noted here.

                 Exclude   This specifies whether an inherited resource should
                           be excluded from the resource list  of  the  class.
                           Exclude is False by default.

       Children  This lists the names of the automatically created children of
                 this class, so that those children can be accessed in the UIL
                 file.

       Controls  This  lists  the  controls  that the widget class allows. The
                 controls can be other classes or a control list from the con-
                 trol list definition.

       The  following example uses the examples from the data type definitions
       and control list definitions above.

       Class
            TopLevelWidget: MetaClass
                 {
                 Resources
                      {
                      XtbNfirstResource;
                      XtbNsecondResource;
                      };
                 };
            NewWidget: Widget
                 {
                 SuperClass = TopLevelWidget;
                 ConvenienceFunction =
                     XtbCreateNewWidget;
                 Resources
                      {
                      XtbNnewResource;
                      XtbNfirstResource
                         {Default="XtbNEW_VALUE";};
                      XtbNsecondResource
                         {Exclude=True;};
                      };
                 Controls
                      {
                      NewWidget;
                      Buttons;
                      };
                 };


   Child Definitions
       Child definitions register the classes of automatically  created  chil-
       dren.  Automatically created children are referenced elsewhere in a uil
       file using the Children keyword within a class definition.  Child defi-
       nitions have the following syntax:

       Child child.name : class.name; [...]

       Where  child.name  is  the  name of the automatically created child and
       class.name is the name of the class of that child.

   Resource Definitions
       Resource definitions describe a particular resource including its type,
       and  default value.  There should be a resource definition for each new
       resource referenced in the  class  definitions.   Resource  definitions
       have the following syntax:

       Resource
            resource.name: Argument | Reason | Constraint | SubResource
                 [{[
                 Type = type;
                 [ResourceLiteral = resource.literal; ]
                 [InternalLiteral = internal.name; ]
                 [Alias = alias; ]
                 [Related = related; ]
                 [Default = default; ]
                 [DocName = doc.name; ]
                 [...]}]
            [...]

       Resource  definitions  start  with  the  Resource  keyword.   For  each
       resource definition, the name of the resource and whether the  resource
       is an argument, reason, constraint or subresource is listed.

       Argument  Indicates a standard resource

       Reason    Indicates a callback resource

       Constraint
                 Indicates a constraint resource

       SubResource
                 Presently, nothing is done with this value

       The resource definition can be further modified with the following key-
       words:

       Type      This indicates the data type of  the  resource.  It  must  be
                 listed in the data type definition.

       ResourceLiteral
                 This  indicates the keyword used in the UIL file to reference
                 the resource. In Motif, the resource name is the same as  the
                 ResourceLiteral.

       InternalLiteral
                 This  forces  the  value of the internal symbol table literal
                 definition of the resource name. This modifier is  only  used
                 to  get  around  symbol table definitions hard coded into the
                 UIL compiler.  It should rarely be used.

       Alias     This indicates alternate names for the resource for use in  a
                 UIL specification.

       Related   This  is  a  special purpose field that allows resources that
                 act as a counter for the current resources to be  related  to
                 the  resource.   UIL  automatically  sets  the  value of this
                 related resource to the  number  of  items  in  the  compiled
                 instance of type resource.name.

       Default   This indicates the default value of the resource.

       DocName   This  defines  an  arbitrary string for use in the documenta-
                 tion.  Presently, nothing is done with this value.

       The following example uses the examples from the data type definitions,
       control list definitions and class definitions above.

       Resource
            XtbNfirstResource: Argument
                 { Type = OddNumber;
                   Default = "XtbOLD_VALUE";};
            XtbNsecondResource: Argument
                 { Type = NewString;
                   Default = "XtbNEW_STRING"; };
            XtbNnewResource: Argument
                 { Type = OddNumber;
                   Default = "XtbODD_NUMBER"; };




                                                             WML(file formats)

openMotif 2.3.1 - Generated Fri Dec 5 18:50:57 CST 2008
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.