XmPrintSetup

library call

XmPrintSetup

setup and create a Print Shell widget

    #include <Xm/Print.h>

    Widget XmPrintSetup
    Widget video_widget
    Screen *print_screen
    String print_shell_name
    ArgList args
    Cardinal num_args

## DESCRIPTION

A function that does the appropriate setting and creates a realized XmPrintShell that it returns to the caller. This function hides the details of the `Xt` to set up a valid print shell hierarchy for the application. It is also meant to encourage consistency in the way applications root their print widget hierarchy.

print_screen must belong to a Display connection that has already been initialized with `Xt`.

The video_widget is used to get at the application context, application name and class, and `argc/argv` stored on the `applicationShell` that roots this widget. If no `applicationShell` is found, `NULL argv/argc` are used.

`XmPrintSetup` then creates an unrealized `ApplicationShell` with the same name and class as the one given by the video display, on the print display and on the print screen specified.

An XmPrintShell is then created as a child of this toplevel shell, using `XtCreatePopupShell`, with the name print_shell_name, and using the args provided. It then realizes and maps the print shell, using XtPopup with XtGrabNone.

This way, application resource files and users can specify print specific attributes using the following syntax (if `print_shell_name` is "Print"):

    Dtpad.Print*textFontList: somefont
    *Print*background:white
    *Print*highlightThickness:0

video_widget

- A video widget to fetch app video data from.

print_screen

- A print screen on the print display - specifies the screen onto which the new shell is created.

print_shell_name

- Specifies the name of the XmPrintShell created on the X Print server.

args

- Specifies the argument list from which to get the resources for the XmPrintShell.

num_args

- Specifies the number of arguments in the argument list.

## RETURN VALUE

The id the XmPrintShell widget created on the X Print Server connection, or NULL if an error has occurred.

## ERRORS/WARNINGS

None.

## EXAMPLES

From the `OK` callback and the `SetUp` callback of the primary print dialog widget:

    static void
    printOKCB(Widget, XtPointer call_data, XtPointer client_data)
    {
      AppPrint *p = (AppPrint *) client_data;
      DtPrintSetupCallbackStruct *pbs =
                             (XmPrintCallbackStruct *) call_data;

      /* connect if not already done.
         the print dialog callback always provides valid
                 printer name, print display and screen
                 already initialized: XpInitContext called */
     */
      p->print_shell = XmPrintSetup (widget, pbs->print_screen,
                                                  "Print", NULL, 0);

      ...
    }

## SEE ALSO

&cdeman.XmPrintShell;, &cdeman.XmRedisplayWidget;, &cdeman.XmPrintToFile;, &cdeman.XmPrintPopupPDM;