Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

xtappinitialize(1) [hpux man page]

XtAppInitialize()														 XtAppInitialize()

Name
  XtAppInitialize  - initialize the X Toolkit internals, create an application context, open and initialize a display, and create the initial
  application shell instance.

Synopsis
  Widget XtAppInitialize(app_context_return, application_class, options, num_options,  argc_in_out,  argv_in_out,  fallback_resources,	args,
  num_args)
	   XtAppContext *app_context_return;
	   String application_class;
	   XrmOptionDescList options;
	   Cardinal num_options;
	   int *argc_in_out;	       /* was type Cardinal * in R4 */
	   String *argv_in_out;
	   String *fallback_resources;
	   ArgList args;
	   Cardinal num_args;

Inputs
  application_class
		 Specifies the class name of the application.

  options	 Specifies an array of XrmOptionDescRec which describe how to parse the command line.

  num_options	 Specifies the number of elements in options.

  argc_in_out	 Specifies the address of the number of command line arguments.  This argument is of type int * in Release 5 and of type Car-
		 dinal * in Release 4.

  argv_in_out	 Specifies the array of command line arguments.

  fallback_resources
		 Specifies a NULL-terminated array of resource specification strings to be used if the application class resource file cannot
		 be opened or read, or NULL if no fallback resources are desired.

  args		 Specifies an argument list to override any other resource specifications for the created shell widget.

  num_args	 Specifies the number of elements in args.

Outputs
  app_context_return
		 Returns the newly created application context, if non-NULL.

  argc_in_out	 Returns the number of command line arguments remaining after the command line is parsed by XtDisplayInitialize().

  argv_in_out	 Returns the command line as modified by XtDisplayInitialize().

Returns
  A toplevel shell widget of class applicationShellWidgetClass.

Availability
  Release 4 and later.

Description
  XtAppInitialize() is a convenience procedure that most applications will use to initialize themselves.  It does the following:

  o  Calls XtToolkitInitialize() to do Intrinsics internal initialization.

  o  Calls  XtCreateApplicationContext()  to create an application context for the application.  If app_context_return is non-NULL, the newly
     created application context is stored at the address it points to.

  o  Calls XtAppSetFallbackResources() passing the application context and fallback_resources, unless that argument is NULL.

  o  Calls  XtOpenDisplay()  passing  the  application	context,  application_class,  options,	num_options,  argc_in_out,  and  argv_in_out.
     XtOpenDisplay()  determines the display name and the application name from the command line or environment variables, opens a connection
     to the display, and calls XtDisplayInitialize() to parse the command line and build the resource database.  The command line as modified
     by  XtDisplayInitialize()	is  returned  in  argc_in_out and argv_in_out.	See the "Background" section below for more details on all of
     these steps.

  o  Calls XtAppCreateShell() to create an applicationShellWidgetClass shell, passing args and num_args to override any  resources  found  in
     the database.

  If the display cannot be opened, an error message is issued and XtAppInitialize() terminates the application.

Usage
  Most	applications can XtAppInitialize() to initialize themselves.  Most programmers will not need to understand the details of initializa-
  tion described in the "Background" section below.  Applications that open multiple displays or create multiple  application  contexts  will
  have to use the lower-level initialization functions explicitly.

  Most	applications  can  have all their command-line options automatically parsed by declaring an XrmOptionDescList and passing it to XtAp-
  pInitialize() which will convert values on the command line into values in the resource database which can then be retrieved into a  struc-
  ture	with  XtGetApplicationResources().   This  is  a  good	idea,  because if your application supports customization through application
  resources (which it should if there is anything to customize) then customization through the command line comes essentially for free.

  If all your command line options are parsed this way, then XtAppInitialize() should remove everything except argv[0] from the command  line
  and  should set argc to 1.  If this is not the case when XtAppInitialize() returns, then the user has requested an unrecognized option.  If
  you parse some command line options manually, you should parse them after calling XtAppInitialize().

  The "Background" section below explains how to declare an XrmOptionDescList and the example below shows the one used by viewres.

  The fallback_resources argument is an array of strings, each string equivalent to a line in a resource file.	If your application relies on
  an  app-defaults file, you can use fallback resources as a backup to be used in case the app-defaults file is installed incorrectly or oth-
  erwise cannot be found.  If the application needs many resources to function properly, your fallback resources might	simply	set  a	label
  widget  to display an error message which informs the user that the app-defaults file could not be found.  The example below shows a simple
  fallback resource list.

  In Release 4, the argc_in_out argument is of type Cardinal *, and in Release 5, this argument is of type int *.  This is a minor incompati-
  bility  that may result warnings from ANSI-C compilers when porting from one release to another.  The example below shows a way around this
  problem.

  XtVaAppInitialize() performs the same function as XtAppInitialize(),	but  accepts  a  NULL-terminated  variable-length  argument  list  of
  resource name/resource value pairs instead of an ArgList.

Example
  The following initialization code is adapted from the X11R5 viewres application.

     static XrmOptionDescRec Options[] = {
	 { "-top", "*topObject", XrmoptionSepArg, (XPointer) NULL },
	 { "-variable", "*showVariable", XrmoptionNoArg, (XPointer) "on" },
	 { "-vertical", "*Tree.Gravity", XrmoptionNoArg, (XPointer) "north" }
     };

     static char *fallback_resources[] = {
	 "*allowShellResize: true",
	 "*Porthole.top: ChainTop",
	 "*Porthole.left: ChainLeft",
	 "*Porthole.bottom: ChainBottom",
	 "*Porthole.right:  ChainRight",
	 "*Porthole.resizable: on",
	 (char *) NULL
     };

     main (argc, argv)
	 int argc;
	 char **argv;
     {
	 Widget toplevel;
	 XtAppContext app_con;

	 toplevel = XtAppInitialize(&app_con, "Viewres",
				    Options, XtNumber (Options),
     #if XtSpecificationRelease > 4
				    &argc,
     #else
				    (Cardinal *)&argc,
     #endif
				    argv,
				    fallback_resources,
				    (ArgList) NULL, (Cardinal) 0);

	 if (argc != 1) display_usage_message();
	     .
	     .
	     .
     }

Background
  Initializing	an  application is a complex process.  It involves determining the display to be opened, determining the name of the applica-
  tion, setting the locale of the application, determining the screen on which to create the shell widget,  parsing  the  command  line,  and
  building  the resource database.  Each of these tasks is described in detail below.  Some of the details have changed between Release 4 and
  Release 5.  Release 5 is described below.

Determining Which Display to Open
  XtAppInitialize() calls XtOpenDisplay() with NULL for its display_name argument.  XtOpenDisplay() determines which display to open by first
  checking the command line (note that the command line has not been parsed at this point) for a -display command line option, and if that is
  not found, using the value of the DISPLAY environment variable (on POSIX systems).  The name is used in a call to XOpenDisplay().

Determining the Application Name
  XtOpenDisplay() also determines the name of the application.	It checks for the name in the following four locations and uses the first one
  it finds:

  o  the value of the -name command line option.

  o  the value of its application_name argument.  Note that XtAppInitialize() always passes NULL for this value.

  o  the value of the RESOURCE_NAME environment variable.

  o  the first word on the command line, argv[0], stripped of any leading directories.

  If  the name is not found in any of these sources, "main" is used.  This name is passed to XtDisplayInitialize() to be used in building the
  resource database, and will later be used by XtAppCreateShell() to name the application's toplevel shell widget.

Establishing the Application's Locale
  XtDisplayInitialize() determines an application's "language string" by searching for the -xnlLanguage command line option, an -xrm  command
  line	option	that sets the xnlLanguage resource, or a value for the xnlLanguage option in the user's personal resource database (i.e., the
  resources set on the display with xrdb, or the resources in the .Xdefaults file.)

  In Release 5, if a language procedure has been registered (see XtSetLanguageProc()) then the language string is  passed  to  this  language
  procedure.   The  language  procedure localizes the application, usually by calling setlocale(), and returns a string which becomes the new
  value of the application's language string.  If a language procedure has not been set, and in Release 4, the LANG environment  variable  is
  used for the language string if no command line argument or resource value is found.

  In  either  Release  4 and Release 5, the language string is associated with the display and used in future calls to XtResolvePathname() so
  that file customized for a particular language can be found.	See XtDisplayInitialize() and XtSetLanguageProc() for  more  detail  on  this
  process.

Parsing the Command Line
  XtDisplayInitialize()  parses  the  application command line by merging options into the standard Xt command line options table and calling
  XrmParseCommand().  Each element in options and the Xt options table is a XrmOptionDescRec structure (shown  in  the	"Structures"  section
  below) which describes how to parse a single command line argument.  The fields of this structure are as follows:

  option
       The  string  to	be  searched for on the command line.  As with standard command-line options, Xt will automatically accept any unique
       abbreviation of the option specified here.  For example, the option -pixmapWidthInPixels will be recognized if typed  on  the  command
       line  as -pixmapW.  However, if you wanted the option -pw to set the same resource, then you would need another entry, since pw is not
       the leading string of pixmapWidthInPixels.

  specifier
       The resource specification.  This string must identify a widget resource or an application resource, but not provide a  value.	Since
       it  has	the  same form as allowed in the resource databases, it may apply to a single widget or to many widgets.  If it applies to no
       widgets, no error message will be issued.

  argKind
       The argument style.  This field is of type XrmOptionKind which describes how the option is to be  interpreted.	These  constants  are
       described below.

  value
       If  argKind  is	XrmOptionNoArg,  this  field specifies the resource value (a string) to be inserted into the database.	If argKind is
       XrmOptionSkipNArgs, this field specifies the number of arguments to skip (you'll need to use a cast to set this field to an  integer).
       For other values of argKind, this field is not used.

  The possible values for XrmOptionKind and their meanings are as follows:

  XrmoptionNoArg
       Take  the  value  in  the  value  field of the options table.  For example, this is used for Boolean fields, where the option might be
       -debug and the default value False.

  XrmoptionIsArg
       The flag itself is the value without any additional information.  For example, if the option were -on, the value would be "on."	 This
       constant is infrequently used, because the desired value such as "on" is usually not descriptive enough when used as an option (-on).

  XrmoptionStickyArg
       The value is the characters immediately following the option with no white space intervening.  This is the style of arguments for some
       POSIX utilities such as uucico where -sventure means to call system venture.

  XrmoptionSepArg
       The next item after the white space after this flag is the value.  For example, -fg blue would indicate that blue is the value for the
       resource specified by -fg.

  XrmoptionResArg
       The resource name and its value are the next argument in argv after the white space after this flag.  For example, the flag might be
	    -res basecalc*background:white;
       then  the  resource name/value pair would be used as is.  This form is rarely used because it is equivalent to -xrm, and because the C
       shell requires that special characters such as * be quoted.

  XrmoptionSkipArg
       Ignore this option and the next argument in argv.

  XrmoptionSkipNArgs
       Ignore this option and the next XrmOptionDescRec.value options

  XrmoptionSkipLine
       Ignore this option and the rest of argv.

  The standard command line options parsed by XtDisplayInitialize() are shown in the table below.

Option		    Resource		Value		Sets
-background	    *background 	Next argument	Background color.
-bd		    *borderColor	Next argument	Border color.
-bg		    *background 	Next argument	Background color.
-bordercolor	    *borderColor	Next argument	Color of border.
-borderwidth	    .borderWidth	Next argument	Width of border in pixels.
-bw		    .borderWidth	Next argument	Width of border in pixels.
-display	    .display		Next argument	Server to use.
-fg		    *foreground 	Next argument	Foreground color.
-fn		    *font		Next argument	Font name.
-font		    *font		Next argument	Font name.
-foreground	    *foreground 	Next argument	Foreground color.

-geometry	    .geometry		Next argument	Size and position.
-iconic 	    .iconic		on		Start as an icon.
-name		    .name		Next argument	Name of application.
-reverse	    *reverseVideo	on		Reverse video.
-rv		    *reverseVideo	on		Reverse video.
+rv		    *reverseVideo	off		No reverse video.
-selectionTimeout   .selectionTimeout	Null		Selection timeout.
-synchronous	    .synchronous	on		Synchronous debug mode.
+synchronous	    .synchronous	off		Synchronous debug mode.
-title		    .title		Next argument	Title of application.
-xnlLanguage	    .xnlLanguage	Next argument	Language.
-xrm		    Value of argument	Next argument	Depends on argument.

Building the Resource Database
  XtDisplayInitialize() builds the application's resource database by merging in resources from a number of sources.  The merges are all done
  to  augment  rather  than  override,	so if a resource from one of these sources conflicts with a resource in the database, the conflicting
  value is ignored.  The sources are:

  o  The application command line, parsed as described above.

  o  The file named by the XENVIRONMENT environment variable, or, if that does not exist, the  file  .Xdefaults-<host>	in  the  user's  home
     directory, where <host> is the name of the machine on which the application is running. If length of ".Xdefaults-<host>" is greater than
     255, then ".Xdefaults-IP address" is looked for instead, where IP address is the internet address of the host.

  o  The per-screen resources, stored in the SCREEN_RESOURCES property on the root window  of  the  screen,  and  returned  by	the  function
     XScreenResourceString()

  o  The  per-display resources stored in the RESOURCE_MANAGER property on the root window of the default screen of the display, and obtained
     with XResourceManagerString().  These resources are set by the user with xrdb.  If no RESOURCE_MANAGER property exists, the contents  of
     the .Xdefaults file in the user's home directory is used instead.

  o  The user's application-specific resource file, which is found with XtResolvePathname() and the path specified in the XUSERFILESEARCHPATH
     environment variable.  If this environment variable is not defined, an implementation-defined default path is used.  This	default  path
     will  be  relative to the directory specified in the XAPPLRESDIR environment variable, if it exists, or the user's home directory other-
     wise.

  o  The application class-specific resource file (the "app-defaults" file), which is found with XtResolvePathname().

  For more details on the precise algorithm used by the Intrinsics to build the database, see XtDisplayInitialize().

Determining the Screen
  In Release 5, XtAppCreateShell() checks its args argument for the XtNscreen resource.  If that is not found, it looks for the  resource  in
  the  database  of the default screen of the display.	If no screen is found, the default screen of the display is used.  If a value for the
  screen resource is found, the shell widget is created on the specified screen, and the database for that screen of the display is  obtained
  with	XtScreenDatabase()  and  used for all the remaining resources of the widget.  Note that this database will have to be built using the
  steps described above.

  In Release 4, only the default screen of a display has a resource database, and widget resources come from that database regardless of  the
  which screen the shell widget is created on.

Structures
  An  XrmOptionDescList describes how to parse command line resources.	Prior to Release 5, the value field of the XrmOptionDescRec structure
  was of type caddr_t.	It was changed in Release 5 for portability reasons.

     typedef enum {
	 XrmoptionNoArg,     /* Value is specified in OptionDescRec.value	 */
	 XrmoptionIsArg,     /* Value is the option string itself		 */
	 XrmoptionStickyArg, /* Value is characters immediately following option */
	 XrmoptionSepArg,    /* Value is next argument in argv			 */
	 XrmoptionResArg,    /* Resource and value in next argument in argv	 */
	 XrmoptionSkipArg,   /* Ignore this option and the next argument in argv */
	 XrmoptionSkipLine,  /* Ignore this option and the rest of argv 	 */
	 XrmoptionSkipNArgs  /* Ignore this option and the next
				OptionDescRes.value arguments in argv */
     } XrmOptionKind;

     typedef struct {
	 char		 *option;	 /* Option abbreviation in argv 	 */
	 char		 *specifier;	 /* Resource specifier			 */
	 XrmOptionKind	 argKind;	 /* Which style of option it is 	 */
	 XPointer	 value; 	 /* Value to provide if XrmoptionNoArg	 */
     } XrmOptionDescRec, *XrmOptionDescList;

  An ArgList is an array of resource name/resource value pairs:

     typedef struct {
	 String      name;
	 XtArgVal    value;
     } Arg, *ArgList;

See Also
  XtAppCreateShell(1), XtAppSetFallbackResources(1), XtCreateApplicationContext(1), XtDisplayInitialize(1), XtOpenDisplay(1), XtResolvePath-
  name(1), XtScreenDatabase(1), XtSetLanguageProc(1), XtToolkitInitialize(1), XtVaAppInitialize(1).

Xt - Initialization														 XtAppInitialize()
Man Page