---
name: "XmPrintSetup"
section: "3"
platform: "linux"
package: "openmotif"
version: "2.3.8-4"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/XmPrintSetup"
---

# XmPrintSetup(3)

setup and create a Print Shell widget

## NAME

**XmPrintSetup** — setup and create a Print Shell widget

## SYNOPSIS

```
#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 heirarchy 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 occured.

## 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

[**XmPrintShell**(3)](/XmPrintShell/3.md), [**XmRedisplayWidget**(3)](/XmRedisplayWidget/3.md), [**XmPrintToFile**(3)](/XmPrintToFile/3.md), [**XmPrintPopupPDM**(3)](/XmPrintPopupPDM/3.md)
