Q: During printing, the view that is printing can't also write to the screen using a modal panel. If I want to query the user for values to pass to the printing machinery while printing, such as adjusting the percentage of a view to be pushed to the next page, I can't use NXRunAlertPanel().

A: Yes, this is true.  During printing the active PostScript context is pointing at the printer--thus all PostScript to draw your panel goes to the printer and not the screen. The solution is to temporarily divert the PostScript to the Window Server context with something like:

{
DPSContext oldContext;
short oldStatus;

oldContext = DPSGetCurrentContext();
DPSSetContext([NXApp context]); // talk to the server
oldStatus = NXDrawingStatus;
NXDrawingStatus = NX_DRAWING;

// You can do drawing to the screen here; use
// NXRunAlertPanel(), etc...

NXDrawingStatus = oldStatus;
DPSSetContext(oldContext); // return to talking to printer
}

QA368

Valid for 1.0, 2.0, 3.0