[PATCH app-xedit 3/4] xprint: remove xprint related C code

Gaetan Nadon memsize at videotron.ca
Fri Mar 26 05:27:52 PDT 2010


Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
---
 print.c               |  435 ---------------
 print.h               |   56 --
 printdialog.c         | 1396 -------------------------------------------------
 printdialog.h         |   70 ---
 printdialogprivates.h |  182 -------
 5 files changed, 0 insertions(+), 2139 deletions(-)
 delete mode 100644 print.c
 delete mode 100644 print.h
 delete mode 100644 printdialog.c
 delete mode 100644 printdialog.h
 delete mode 100644 printdialogprivates.h

diff --git a/print.c b/print.c
deleted file mode 100644
index fbb260b..0000000
--- a/print.c
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- * $Xorg: print.c,v 1.1 2004/04/30 02:05:54 gisburn Exp $
- *
-Copyright 2004 Roland Mainz <roland.mainz at nrubsig.org>
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- */
-
-/* Turn a NULL pointer string into an empty string */
-#define NULLSTR(x) (((x)!=NULL)?(x):(""))
-
-#define Error(x) { printf x ; exit(EXIT_FAILURE); }
-#define Assertion(expr, msg) { if (!(expr)) { Error msg } }
-#define Log(x)   { if(True) printf x; }
-
-#ifdef XEDIT
-#include "xedit.h"
-#endif /* XEDIT */
-#include "print.h"
-#include <X11/Xaw/Form.h>
-#include <X11/Xaw/Label.h>
-#include <X11/Xaw/AsciiText.h> 
-#include <stdio.h>
-#include <stdlib.h>
-
-static Widget
-CreatePrintShell(Widget    videoshell,
-                 Screen   *pscreen,
-                 Visual   *pvisual,
-                 String    printshell_name,
-                 ArgList   args,
-                 Cardinal  numargs)
-{
-    String   videoname,
-             videoclass;
-    Widget   pappshell,
-             printshell;
-    Display *pdpy = XDisplayOfScreen(pscreen);
-    int      dummyc = 0;
-    String   dummys = "";
-    Cardinal shell_n;
-    Arg      shell_args[5];
-
-    XtGetApplicationNameAndClass(XtDisplay(videoshell), 
-                                 &videoname, &videoclass);
-
-    /* XXX: Why is the |dummyc|&&|dummys| stuff needed here ? */
-    XtDisplayInitialize(XtWidgetToApplicationContext(videoshell), pdpy,
-                        videoname, videoclass,
-                        NULL, 0,
-                        &dummyc, &dummys);
-
-    shell_n = 0;
-    XtSetArg(shell_args[shell_n], XtNscreen, pscreen); shell_n++;
-    if (pvisual) {
-        XtSetArg(shell_args[shell_n], XtNvisual, pvisual); shell_n++;
-    }
-    pappshell = XtAppCreateShell(videoname, videoclass,
-                                   applicationShellWidgetClass,
-                                   pdpy,
-                                   shell_args, shell_n);
-    printshell = XtCreatePopupShell(printshell_name,
-                                    xawPrintShellWidgetClass,
-                                    pappshell, args, numargs);
-                                
-
-    /* we're mapping/unmapping at start/end page time */
-    XtSetMappedWhenManaged(printshell, False);
-
-    /* We realise the widget when we're done with building the widget tree... */
-    
-    return printshell;
-}
-
-typedef struct
-{
-  const char       *programname;
-  Widget            toplevel;
-  Bool              isPrinting;
-  Widget            printshell;
-  struct
-  {
-      Widget  form;
-      Widget  pageheaderlabel;
-      Widget  text;
-  } content; /* content to print */
-  int               numpages;
-  Display          *pdpy;
-  Screen           *pscreen;
-  XPContext         pcontext;
-  XtCallbackProc    pdpyDestroyCallback;
-  void             *printtofile_handle;
-  const char       *jobtitle;
-} AppPrintData;
-
-static AppPrintData  apdx;
-static AppPrintData *apd = &apdx;
-
-/* Count pages in a text widget
- * WARNING: This will reset the current position of the text widget
- * back to the beginning */
-static
-long CountPages(Widget textWidget)
-{
-    long numpages = 0;
-
-    XawTextPosition prevpagepos = -1,
-                    currpos = 0;        
-
-    /* Move to the top of the file... */
-    XtCallActionProc(textWidget, "beginning-of-file", NULL, NULL, 0);
-    
-    /* ... count pages ...*/
-    do
-    {
-        prevpagepos = XawTextTopPosition(textWidget);
-        XtCallActionProc(textWidget, "next-page", NULL, NULL, 0);        
-        currpos     = XawTextTopPosition(textWidget);
-        numpages++;
-    } while(prevpagepos != currpos);            
-
-    /* ... and move to the top of the file... */
-    XtCallActionProc(textWidget, "beginning-of-file", NULL, NULL, 0);
-    
-    Log(("CountPages() found %ld pages.\n", numpages))
-
-    return numpages;
-}
-
-static void 
-PageSetupCB(Widget widget, XtPointer client_data, XtPointer call_data)
-{
-    Widget                       pshell = widget;
-    XawPrintShellCallbackStruct *psp    = (XawPrintShellCallbackStruct *)call_data;
-    AppPrintData                *p      = (AppPrintData *)client_data;
-   
-    Log(("--> PageSetupCB\n"));
-
-    if (!psp->last_page_in_job) {
-        int  currpage;
-        char buffer[256];
-
-        XtVaGetValues(pshell, XawNcurrPageNumInJob, &currpage, NULL);
-
-        sprintf(buffer, "Title: %s / Page: %d/%d", p->jobtitle, currpage, p->numpages);
-        XtVaSetValues(apd->content.pageheaderlabel, XtNlabel, buffer, NULL);
-
-        /* Note: XawPrintShell's pagecount starts with '1'
-         * (=first page is page no. '1') */
-        if (currpage > 1) {
-            Log(("pagedown %d\n", currpage));
-            XtCallActionProc(p->content.text, "next-page", NULL, NULL, 0);
-        }
-        else
-        {
-            Log(("first page\n"));
-        }              
-      
-        if (currpage >= p->numpages) {
-            psp->last_page_in_job = True;
-        }
-    }
-}
-
-static
-void FinishPrinting(AppPrintData *p)
-{
-    char *scr;
-
-    if (p->printtofile_handle) {
-        if (XpuWaitForPrintFileChild(p->printtofile_handle) != XPGetDocFinished) {
-            PrintMsg(("Error while printing to file.\n"));
-        }
-        p->printtofile_handle = NULL;
-    }
-    
-    /* Job completed, check if there are any messages from the spooler command */
-    scr = XpGetOneAttribute(p->pdpy, p->pcontext, XPJobAttr, "xp-spooler-command-results");
-    if( scr )
-    {
-      if( strlen(scr) > 0 )
-      {
-        const char *msg = XpuCompoundTextToXmb(p->pdpy, scr);
-        if( msg )
-        {
-          PrintMsg(("Spooler command returned:\n%s", msg));
-          XpuFreeXmbString(msg);
-        }
-        else
-        {
-          PrintMsg(("Spooler command returned (unconverted):\n%s", scr));
-        }
-      }
-
-      XFree((void *)scr);
-    }
-    
-    if (p->printshell) {
-        XtDestroyWidget(p->printshell);
-        p->printshell = NULL;
-    }
-  
-    /* Two issues here:
-     * 1. The print display connection is owned by the print dialog
-     *    To avoid any problems with that use a callback back to the main
-     *    application which calls
-     *    |XawPrintDialogClosePrinterConnection(w, False)| to ask the
-     *    print dialog widget to close all print display resources and
-     *    disown the object.
-     * 2. We have to use XpDestroyContext() and XtCloseDisplay()
-     *    instead of XpuClosePrinterDisplay() to make libXt happy...
-     *
-     * Call callback... */
-    (*apd->pdpyDestroyCallback)(NULL, NULL, NULL); /* HACK! */
-
-    /* ... and then get rid of the display */
-    if (p->pcontext != None) {
-        XpDestroyContext(p->pdpy, p->pcontext);
-    }
-    XtCloseDisplay(p->pdpy);
-
-    p->toplevel   = NULL;
-    p->isPrinting = False;
-    p->pdpy       = NULL;
-    p->pscreen    = NULL;
-    p->pcontext   = None;
-}
-
-static
-void PrintEndJobCB(Widget pshell, XtPointer client_data, XtPointer call_data)
-{
-    AppPrintData *p = (AppPrintData *)client_data;
-
-    Log(("--> PrintEndJobCB\n"));
-
-    /* Finish printing and destroy print shell (it's legal to destroy Xt
-     * widgets from within it's own callbacks) */
-    FinishPrinting(p);
-}
-
-static
-XFontSet GetPrintTextFontSet(const char *appname, Display *pdpy, long dpi_x, long dpi_y)
-{
-    XFontSet     fontset;
-    char         fontname[1024];
-    char       **missing_charset_list_return;
-    int          missing_charset_count_return;
-    char        *def_string_return;
-    int          i;
-    
-    sprintf(fontname, /* Default font for CDE */
-                      "-dt-interface user-medium-r-normal-s*-*-120-%ld-%ld-*-*,"
-                      /* Default font */
-                      "-adobe-courier-medium-r-normal--*-120-%ld-%ld-*-*,"
-                      /* Default font for Linux/Japanese locales (ja_JP.SJIS) */
-                      "-watanabe-mincho-medium-r-normal--*-120-%ld-%ld-*-*,"
-                      "-wadalab-gothic-medium-r-normal--*-120-%ld-%ld-*-*,"
-                      /* Fallback */
-                      "-*-*-*-*-*--*-120-%ld-%ld-*-*",
-                      dpi_x, dpi_y,
-                      dpi_x, dpi_y,
-                      dpi_x, dpi_y,
-                      dpi_x, dpi_y,
-                      dpi_x, dpi_y);
-    fontset = XCreateFontSet(pdpy, fontname,
-                             &missing_charset_list_return,
-                             &missing_charset_count_return,
-                             &def_string_return);
-
-    for( i=0 ; i < missing_charset_count_return ; i++ ) {
-        fprintf(stderr, "%s: warning: font for charset %s is lacking.\n",
-                appname, missing_charset_list_return[i]);
-    }
-
-    if (!fontset)
-        Error(("GetPrintTextFontSet: XCreateFontSet() failure.\n"));
-    return fontset;
-}
-
-void DoPrintTextSource(const char *programname,
-                       Widget textsource, Widget toplevel,
-                       Display *pdpy, XPContext pcontext,
-                       XpuColorspaceRec *colorspace,
-                       XtCallbackProc pdpyDestroyCB,
-                       const char *jobtitle, const char *toFile)
-{
-    long               dpi_x = 0L,
-                       dpi_y = 0L;
-    int                n;
-    Arg                args[20];
-    XFontSet           textfontset = NULL;
-    XFontSetExtents   *font_extents;
-    
-    apd->programname         = programname;
-    apd->pdpyDestroyCallback = pdpyDestroyCB;
-  
-    if (apd->isPrinting) {
-        PrintMsg(("Already busy with printing.\n"));
-        return;
-    } 
-        
-    /* Configure the print context (paper size, title etc.)
-     * We must do this before creating any Xt widgets - otherwise they will
-     * make wrong assuptions about fonts, resultions etc. ...
-     */
-    XpuSetJobTitle(pdpy, pcontext, jobtitle);
-    
-    /* Configuration done, set the context */
-    XpSetContext(pdpy, pcontext);   
-
-    /* Get default printer resolution */   
-    if (XpuGetResolution(pdpy, pcontext, &dpi_x, &dpi_y) != 1) {
-        PrintMsg(("No default resolution for printer.\n"));
-        XpuClosePrinterDisplay(pdpy, pcontext);
-        return;
-    }
-    
-    apd->toplevel = toplevel;
-    apd->pdpy     = pdpy;
-    apd->pcontext = pcontext;
-    apd->pscreen  = XpGetScreenOfContext(pdpy, pcontext);
-    apd->jobtitle = jobtitle;
-
-    n = 0;
-    /* Override any geometry resource settings as XawPrintShell adjusts it's size
-     * to the current page siue when |XawPrintLAYOUTMODE_DRAWABLEAREA| or
-     * |XawPrintLAYOUTMODE_PAGESIZE| are used. */
-    XtSetArg(args[n], XtNgeometry,    "+0+0");                          n++;
-    XtSetArg(args[n], XawNlayoutMode, XawPrintLAYOUTMODE_DRAWABLEAREA); n++;
-    if (colorspace) {
-        printf("Setting visual to id=0x%lx.\n", colorspace->visualinfo.visualid);
-    }
-    apd->printshell = CreatePrintShell(toplevel, apd->pscreen, 
-                                       (colorspace?(colorspace->visualinfo.visual):(NULL)),
-                                       "printshell", args, n);
-    n = 0;
-    XtSetArg(args[n], XtNresizable,            True);            n++;
-    XtSetArg(args[n], XtNright,                XtChainRight);    n++;
-    apd->content.form = XtCreateManagedWidget("form", formWidgetClass, apd->printshell, args, n);
-
-    textfontset = GetPrintTextFontSet(apd->programname, pdpy, dpi_x, dpi_y);
-
-    n = 0;
-    XtSetArg(args[n], XtNinternational,        True);            n++;
-    XtSetArg(args[n], XtNfromHoriz,            NULL);            n++;
-    XtSetArg(args[n], XtNfromVert,             NULL);            n++;
-    XtSetArg(args[n], XtNtop,                  XtChainTop);      n++;
-    XtSetArg(args[n], XtNright,                XtChainRight);    n++;
-    XtSetArg(args[n], XtNresizable,            True);            n++;
-    XtSetArg(args[n], XtNfontSet,              textfontset);     n++;
-    XtSetArg(args[n], XtNlabel,                "Page: n/n");     n++;
-    XtSetArg(args[n], XtNjustify,              XtJustifyRight);  n++;
-    apd->content.pageheaderlabel = XtCreateManagedWidget("pageinfo", labelWidgetClass, apd->content.form, args, n);
-
-    font_extents = XExtentsOfFontSet(textfontset);
-
-    n = 0;
-    XtSetArg(args[n], XtNinternational,    True);                         n++;
-    XtSetArg(args[n], XtNtextSource,       textsource);                   n++;
-    XtSetArg(args[n], XtNscrollHorizontal, XawtextScrollNever);           n++;
-    XtSetArg(args[n], XtNscrollVertical,   XawtextScrollNever);           n++;
-
-/* Usually I would expect that using |XtNfromVert, apd->content.pageheaderlabel|
- * would be the correct way to place the text widget with the main content below
- * the page header widget - but for an unknown reason this doesn not work: The
- * text widget squishes itself into the bottom half of the page and only occupies
- * 1/2 of the page's with... ;-(( */
-#define WORKAROUND_FOR_SOMETHING_IS_WRONG 1
-#ifdef WORKAROUND_FOR_SOMETHING_IS_WRONG
-    XtSetArg(args[n], XtNtop,              XtChainTop);                   n++;
-    XtSetArg(args[n], XtNright,            XtChainRight);                 n++;
-    XtSetArg(args[n], XtNvertDistance,     (font_extents->max_logical_extent.height+2)*2); n++;    
-#else
-    XtSetArg(args[n], XtNfromHoriz,        NULL);                         n++;
-    XtSetArg(args[n], XtNfromVert,         apd->content.pageheaderlabel); n++;
-#endif
-    XtSetArg(args[n], XtNfontSet,          textfontset);                  n++;
-    apd->content.text = XtCreateManagedWidget("text", asciiTextWidgetClass, apd->content.form, args, n);
-
-    /* Disable the caret - that is not needed for printing */
-    XawTextDisplayCaret(apd->content.text, False);
-    
-    XtAddCallback(apd->printshell, XawNpageSetupCallback, PageSetupCB,   (XtPointer)apd);
-    XtAddCallback(apd->printshell, XawNendJobCallback,    PrintEndJobCB, (XtPointer)apd);
-
-    /* Realise print shell (which will set position+size of the child
-     * widgets based on the current page size) */
-    XtRealizeWidget(apd->printshell);
-    
-    /* Count number of pages in the text widget */
-    apd->numpages = CountPages(apd->content.text);
-
-    /* Make sure that the Xt machinery is really using the right screen (assertion) */
-    if (XpGetScreenOfContext(XtDisplay(apd->printshell), apd->pcontext) != XtScreen(apd->printshell))
-        Error(("Widget's screen != print screen. BAD.\n"));
-
-    apd->isPrinting = True;
-
-    if (toFile) {
-        PrintMsg(("Printing to file '%s'...\n", toFile));
-        apd->printtofile_handle = XpuStartJobToFile(pdpy, pcontext, toFile);
-        if (!apd->printtofile_handle) {
-            perror("XpuStartJobToFile failure");
-            PrintMsg(("Printing failed: XpuStartJobToFile\n"));
-            apd->isPrinting = False;
-            return;
-        }
-    }
-    else
-    {
-        PrintMsg(("Printing to printer...\n"));
-        XpuStartJobToSpooler(pdpy);
-    }
-}
-
-
diff --git a/print.h b/print.h
deleted file mode 100644
index a87779c..0000000
--- a/print.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * $Xorg: print.h,v 1.1 2004/04/30 02:05:54 gisburn Exp $
- *
-Copyright 2004 Roland Mainz <roland.mainz at nrubsig.org>
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- */
-
-#ifndef XMORE_PRINT_H
-#define XMORE_PRINT_H 1
-
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-#include <X11/Shell.h>
-#include <X11/Xaw/Print.h>
-#include <X11/Xaw/Cardinals.h>
-#include <X11/XprintUtil/xprintutil.h>
-
-#if defined(XMORE)
-#define PrintMsg(x) { printf("xmore: "); printf x ; }
-#elif defined(XEDIT)
-#define PrintMsg(x) { XeditPrintf x ; }
-#else
-#error unknown application
-#endif 
-
-/* Prototypes */
-void DoPrintTextSource(const char *programname,
-                       Widget textsource,
-                       Widget toplevel, 
-                       Display *pdpy, XPContext pcontext,
-                       XpuColorspaceRec *colorspace,
-                       XtCallbackProc printDisplayDestroyCallback,
-                       const char *jobTitle,
-                       const char *toFile);
-
-#endif /* !XMORE_PRINT_H */
diff --git a/printdialog.c b/printdialog.c
deleted file mode 100644
index 50d2a88..0000000
--- a/printdialog.c
+++ /dev/null
@@ -1,1396 +0,0 @@
-/*
- * $Xorg: printdialog.c,v 1.1 2004/05/12 02:05:54 gisburn Exp $
- *
-Copyright 2004 Roland Mainz <roland.mainz at nrubsig.org>
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- */
-
-/* Force ANSI C prototypes from X11 headers */
-#ifndef FUNCPROTO 
-#define FUNCPROTO 15
-#endif /* !FUNCPROTO */
-
-#include <X11/StringDefs.h> 
-#include <X11/Intrinsic.h> 
-#include <X11/Shell.h>
-#include <X11/Xaw/Form.h>
-#include <X11/Xaw/Toggle.h>
-#include <X11/Xaw/List.h>
-#include <X11/Xaw/Command.h>
-#include <X11/Xaw/AsciiText.h>
-#include <X11/Xaw/Dialog.h>
-
-#ifdef XKB
-#include <X11/extensions/XKBbells.h>
-#endif /* XKB */
-
-#ifdef XEDIT
-#include "xedit.h"
-#endif /* XEDIT */
-#include "printdialog.h"
-#include "printdialogprivates.h"
-#include "print.h"
-
-#include <stdlib.h>
-#include <ctype.h>
-#include <stdio.h>
-
-/* Turn a NULL pointer string into an empty string */
-#define NULLSTR(x) (((x)!=NULL)?(x):(""))
-
-#define Error(x) { printf x ; exit(EXIT_FAILURE); }
-#define Assertion(expr, msg) { if (!(expr)) { Error msg } }
-#ifdef DEBUG
-#  define Log(x)   { if(True)  printf x; }
-#else
-#  define Log(x)   { if(False) printf x; }
-#endif /* DEBUG */
-
-/* Local prototypes */
-static void     do_beep(PrintDialogWidget pdw);
-static void     center_popup(Widget parent, Widget popup);
-static void     updateWidgetStates(PrintDialogWidget pdw);
-static void     printSetupClose(PrintDialogWidget pdw);
-static void     printSetupOKXtProc(Widget w, XtPointer client_data, XtPointer callData);
-static void     printSetupCancelXtProc(Widget w, XtPointer client_data, XtPointer callData);
-static void     printSetupJobCopiesXtProc(Widget w, XtPointer client_data, XtPointer callData);
-static void     printDialogDestXtProc(Widget w, XtPointer client_data, XtPointer callData);
-static void     printSelectFileXtProc(Widget w, XtPointer client_data, XtPointer callData);
-static void     printOKXtProc(Widget w, XtPointer client_data, XtPointer callData);
-static void     printSetupXtProc(Widget w, XtPointer client_data, XtPointer callData);
-static void     printFileSelectedXtProc(Widget w, XtPointer client_data, XtPointer callData);
-static void     buildFileDialog(PrintDialogWidget pdw);
-static void     closePrinterConnection(PrintDialogWidget  pdw, Bool closeDisplay);
-static Bool     openPrinterConnection(PrintDialogWidget  pdw);
-static void     destroyPrintSetupDialog(PrintDialogWidget pdw);
-static Widget   buildPrintSetupDialog(PrintDialogWidget pdw);
-static String  *xpprinterlist_to_widget_printerlist(XPPrinterList printerlist, int num_printers);
-static String  *xppaperlist_to_widget_paperlist(XpuMediumSourceSizeList paperlist, int num_papers);
-static String  *xpresolutionlist_to_widget_resolutionlist(XpuResolutionList reslist, int num_resolutions);
-static String  *xporientationlist_to_widget_orientationlist(XpuOrientationList orientationlist, int num_orientations);
-static String  *xpplexlist_to_widget_plexlist(XpuPlexList plexlist, int num_plex);
-static String  *xpcolorspacelist_to_widget_colorspacelist(XpuColorspaceList colorspacelist, int num_colorspaces);
-static void     printerSelectionPrinterSelectedXtProc(Widget w, XtPointer client_data, XtPointer callData);
-static void     printSelectPrinterXtProc(Widget w, XtPointer client_data, XtPointer callData);
-static void     printerSelectionClose(PrintDialogWidget  pdw);
-static void     printerSelectionOKXtProc(Widget w, XtPointer client_data, XtPointer callData);
-static void     printerSelectionCancelXtProc(Widget w, XtPointer client_data, XtPointer callData);
-static Bool     buildPrinterSelectionDialog(PrintDialogWidget  pdw);
-static void     destroyPrinterSelectionDialog(PrintDialogWidget pdw);
-static void     createprintdialogchildren(Widget w);
-
-static
-void do_beep(PrintDialogWidget pdw)
-{
-    Log(("*** Beep!\n"));
-#ifdef XKB
-    XkbStdBell(XtDisplay((Widget)pdw), XtWindow((Widget)pdw), 0, XkbBI_MinorError);
-#else
-    XBell(XtDisplay((Widget)pdw), 0);
-#endif /* XKB */
-}
-
-/* Center popup (on parent, not on screen - which would be a bad idea
- * in the Xinerama case) */
-static
-void center_popup(Widget parent, Widget popup)
-{
-    Dimension width,
-              height;
-    Position  x,
-              y;
-
-    XtVaGetValues(parent,
-        XtNx,  &x,
-        XtNy,  &y,
-        NULL);
-    XtVaGetValues(popup,
-        XtNwidth,  &width,
-        XtNheight, &height,
-        NULL);
-
-    x += (Position)width  / 2;
-    y += (Position)height / 3;
-
-    XtVaSetValues(popup,
-        XtNx, x,
-        XtNy, y,
-        NULL);
-}
-
-static
-void updateWidgetStates(PrintDialogWidget pdw)
-{
-    PrintDialogPart *pdp = &pdw->printdialog;
-    
-    /* Do not update anything if we will be destroyed */
-    if (pdw->core.being_destroyed)
-        return;
-
-    if (pdp->printToFile == False) {  
-        XtVaSetValues(pdp->main.printtoprinter, XtNstate,     True,  NULL);
-        XtVaSetValues(pdp->main.printtofile,    XtNstate,     False, NULL);
-        /* Disable the widgets which depend on print-to-file */
-        XtVaSetValues(pdp->main.filenamelabel,  XtNsensitive, False, NULL);
-        XtVaSetValues(pdp->main.filename,       XtNsensitive, False, NULL);
-        XtVaSetValues(pdp->main.selectfile,     XtNsensitive, False, NULL);
-    }
-    else
-    {
-        XtVaSetValues(pdp->main.printtoprinter, XtNstate, False, NULL);
-        XtVaSetValues(pdp->main.printtofile,    XtNstate, True,  NULL);
-        /* Enable the widgets which depend on print-to-file */
-        XtVaSetValues(pdp->main.filenamelabel,  XtNsensitive, True, NULL);
-        XtVaSetValues(pdp->main.filename,       XtNsensitive, True, NULL);
-        XtVaSetValues(pdp->main.selectfile,     XtNsensitive, True, NULL);
-    }
-
-    /* Update file name */
-    XtVaSetValues(pdp->main.filename, XtNlabel, pdp->filename?pdp->filename:"-", NULL);
-    
-    /* General check whether we can print... */
-    pdp->canPrint = True;
-    if (pdp->printer_name == NULL) {
-        pdp->canPrint = False;
-    }
-    else if (strlen(pdp->printer_name) == 0) {
-        pdp->canPrint = False;
-    }
-
-    pdp->canReallyPrint = pdp->canPrint;
-
-    /* Some extra checks for print-to-file */
-    if (pdp->printToFile) {
-        if (pdp->filename == NULL) {
-            pdp->canReallyPrint = False;
-        }
-        else if (strlen(pdp->filename) == 0) {
-            pdp->canReallyPrint = False;
-        }
-    }
-
-    XtVaSetValues(pdp->main.ok,    XtNsensitive, pdp->canReallyPrint, NULL);
-    XtVaSetValues(pdp->main.setup, XtNsensitive, pdp->canPrint,       NULL);
-}
-
-static void
-printSetupClose(PrintDialogWidget pdw)
-{ 
-    PrintDialogPart *pdp = &pdw->printdialog;
-    if (pdp->setup.popup) {
-        XtPopdown(pdp->setup.popup);
-    }
-}
-
-static void
-printSetupOKXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget    pdw = (PrintDialogWidget)client_data;
-    PrintDialogPart     *pdp = &pdw->printdialog;
-    char                *s;
-    XawListReturnStruct *lrs;    
-    Log(("## printSetupOK: closing print setup!\n"));
-    
-    /* Set copy count (if the value is invalid beep and return to the user ) */
-    XtVaGetValues(pdp->setup.jobcopies, XtNstring, &s, NULL);
-    if (s) {
-        int c = atoi(s);
-        if (c < 1 || c > 999) {
-            do_beep(pdw);
-            XtVaSetValues(pdp->setup.jobcopies, XtNstring, "1", NULL);
-            Log(("## printSetupOKXtProc: not a valid copy count value\n"));
-            return;
-        }
-        
-        /* Fix me: We should set the number of _job_ copies here, not _doc_ copies */
-        XpuSetDocumentCopies(pdp->pdpy, pdp->pcontext, c);
-    }
-    
-    /* Set paper size */
-    lrs = XawListShowCurrent(pdp->setup.paperlist);
-    if (lrs->list_index != XAW_LIST_NONE) {
-        Log(("selected paper is '%s'/'%d'\n", lrs->string, lrs->list_index));
-        Assertion(lrs->list_index < pdp->num_papers, (("Error: lrs->list_index < pdp->num_papers\n")));
-        XpuSetDocMediumSourceSize(pdp->pdpy, pdp->pcontext, &pdp->paperlist[lrs->list_index]);
-    }
-    XtFree((char *)lrs);
-
-    /* Set resolution */
-    lrs = XawListShowCurrent(pdp->setup.resolutionlist);
-    if (lrs->list_index != XAW_LIST_NONE) {
-        Log(("selected resolution is '%s'/'%d'\n", lrs->string, lrs->list_index));
-        Assertion(lrs->list_index < pdp->num_resolutions, (("Error: lrs->list_index < pdp->num_resolutions\n")));
-        XpuSetDocResolution(pdp->pdpy, pdp->pcontext, &pdp->resolutionlist[lrs->list_index]);
-    }
-    XtFree((char *)lrs);
-
-    /* Set orientation */
-    lrs = XawListShowCurrent(pdp->setup.orientationlist);
-    if (lrs->list_index != XAW_LIST_NONE) {
-        Log(("selected orientation is '%s'/'%d'\n", lrs->string, lrs->list_index));
-        Assertion(lrs->list_index < pdp->num_orientations, (("Error: lrs->list_index < pdp->num_orientations\n")));
-        XpuSetDocOrientation(pdp->pdpy, pdp->pcontext, &pdp->orientationlist[lrs->list_index]);
-    }
-    XtFree((char *)lrs);
-
-    /* Set plex mode */
-    lrs = XawListShowCurrent(pdp->setup.plexlist);
-    if (lrs->list_index != XAW_LIST_NONE) {
-        Log(("selected plex is '%s'/'%d'\n", lrs->string, lrs->list_index));
-        Assertion(lrs->list_index < pdp->num_plex, (("Error: lrs->list_index < pdp->num_plex\n")));
-        XpuSetDocPlex(pdp->pdpy, pdp->pcontext, &pdp->plexlist[lrs->list_index]);
-    }
-    XtFree((char *)lrs);
-
-    /* Set colorspace */
-    lrs = XawListShowCurrent(pdp->setup.colorspacelist);
-    if (lrs->list_index != XAW_LIST_NONE) {
-        Log(("selected colorspace is '%s'/'%d'\n", lrs->string, lrs->list_index));
-        Assertion(lrs->list_index < pdp->num_colorspaces, (("Error: lrs->list_index < pdp->num_colorspaces\n")));
-        pdp->selected_colorspace = &pdp->colorspacelist[lrs->list_index];
-    }
-    XtFree((char *)lrs);
-    
-    printSetupClose(pdw);
-}
-
-static void
-printSetupCancelXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget  pdw = (PrintDialogWidget)client_data;
-    Log(("## printSetupCancel: closing print setup!\n"));
-
-    printSetupClose(pdw);
-}
-
-static void
-printSetupJobCopiesXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget pdw    = (PrintDialogWidget)client_data;
-    PrintDialogPart  *pdp    = &pdw->printdialog;
-    char             *string = NULL;
-    
-    Log(("## printSetupJobCopiesXtProc!\n"));
-
-    /* Check whether the input is a valid number - and in the case of invalid input reset the value */    
-    XtVaGetValues(pdp->setup.jobcopies, XtNstring, &string, NULL);
-    if (string) {
-        char *s;
-        int   i;
-        Bool  isValidNumber = True;
-
-        /* First check for invalid characters... */
-        for( s = string ; *s != '\0' ; s++ ) {
-            if (!isdigit(*s)) {
-                isValidNumber = False;
-                break;
-            }
-        }
-        
-        /* .. and the do a range check... */
-        i = atoi(string);
-        if (i < 1 || i > 999) {
-            isValidNumber = False;
-        }
-        
-        if (!isValidNumber) {
-            do_beep(pdw);
-            XtVaSetValues(pdp->setup.jobcopies, XtNstring, "1", NULL);
-            Log(("## printSetupJobCopiesXtProc: not a valid number\n"));
-        }
-    }
-}
-
-static void
-printCancelXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget pdw = (PrintDialogWidget)client_data;
-    PrintDialogPart  *pdp = &pdw->printdialog;
-
-    printSetupClose(pdw);
-
-    if (pdp->cancel_callback) {
-        Log(("printCancelXtProc: calling callback\n"));
-        XtCallCallbackList((Widget)pdw, pdp->cancel_callback, NULL);
-    }
-}
-
-static void
-printDialogDestXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget  pdw = (PrintDialogWidget)client_data;
-    PrintDialogPart   *pdp = &pdw->printdialog;
-
-    if (w == pdp->main.printtoprinter) {  
-        pdp->printToFile = False;
-    }
-    else if (w == pdp->main.printtofile) {
-        pdp->printToFile = True;
-    }
-    else
-    {
-        Log(("printDialogDestXtProc: ERROR: Unknown widget.\n"));
-    }
-
-    updateWidgetStates(pdw);
-}
-
-static void
-printSelectFileXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget   pdw = (PrintDialogWidget)client_data;
-    PrintDialogPart    *pdp = &pdw->printdialog;
-
-    Log(("## printSelectFileXtProc!\n"));
-
-    if (!pdp->selectFile.shell) {
-        buildFileDialog(pdw);
-    }
-    
-    center_popup((Widget)pdw, pdp->selectFile.shell);
-
-    XtPopup(pdp->selectFile.shell, XtGrabExclusive);
-}
-
-static void
-printOKXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget  pdw = (PrintDialogWidget)client_data;
-    PrintDialogPart   *pdp = &pdw->printdialog;
-    Log(("## printing!\n"));
-    
-    if (!pdp->pdpy) {
-        Log(("printOKXtProc: no printer connection, opening one....\n"));
-        openPrinterConnection(pdw);
-
-        if (!pdp->pdpy) {
-            Log(("printOKXtProc: still no printer connection - BAD (this should never happen).\n"));
-            do_beep(pdw);
-            return;
-        }
-    }    
-
-    if (pdp->ok_callback) {
-        XawPrintDialogCallbackStruct pdcs;
-
-        Log(("printOKXtProc: calling callbacks...\n"));
-        memset(&pdcs, 0, sizeof(pdcs));
-        pdcs.pdpy            = pdp->pdpy;
-        pdcs.pcontext        = pdp->pcontext;
-        pdcs.printToFile     = pdp->printToFile;
-        pdcs.printToFileName = (const char *)pdp->filename;
-        pdcs.colorspace      = pdp->selected_colorspace;
-        XtCallCallbackList((Widget)pdw, pdp->ok_callback, &pdcs);
-    }
-
-    printSetupClose(pdw);
-}
-
-static void
-printSetupXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget   pdw = (PrintDialogWidget)client_data;
-    PrintDialogPart    *pdp = &pdw->printdialog;
-
-    Log(("## setup!\n"));
-
-    if (!pdp->setup.popup) {
-        if (buildPrintSetupDialog(pdw) == NULL) {
-            Log(("printSetupXtProc: buildPrintSetupDialog failure.\n"));
-            return;
-        }
-    }
-
-    center_popup((Widget)pdw, pdp->setup.popup);
-
-    XtPopup(pdp->setup.popup, XtGrabExclusive);
-}
-
-static void
-printFileSelectedXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget  pdw = (PrintDialogWidget)client_data;
-    PrintDialogPart   *pdp = &pdw->printdialog;
-    const char        *filename;
-    
-    Log(("printFileSelectedXtProc: User selected file.\n"));
-    filename = XawDialogGetValueString(pdp->selectFile.dialog);
-    
-    if (pdp->filename)
-        free(pdp->filename);
-    pdp->filename = strdup(filename);
-    
-    XtPopdown(pdp->selectFile.shell);
-    
-    updateWidgetStates(pdw);
-}
-
-static
-void buildFileDialog(PrintDialogWidget pdw)
-{
-    PrintDialogPart *pdp = &pdw->printdialog;
-    int              n;
-    Arg              args[20];
-
-    pdp->selectFile.shell = XtCreatePopupShell("selectfile",
-                                               transientShellWidgetClass,
-                                               (Widget)pdw, NULL, 0);
-    n = 0;
-    XtSetArg(args[n], XtNvalue, pdp->filename?pdp->filename:""); n++;  
-    pdp->selectFile.dialog = XtCreateManagedWidget("dialog", dialogWidgetClass,
-                                                   pdp->selectFile.shell, args, n);
-    XawDialogAddButton(pdp->selectFile.dialog, "Accept", printFileSelectedXtProc, pdw);
-
-    XtRealizeWidget(pdp->selectFile.shell);
-}
-
-static
-void closePrinterConnection(PrintDialogWidget pdw, Bool closeDisplay)
-{ 
-    PrintDialogPart *pdp = &pdw->printdialog;
-    
-    Log(("# closePrinterConnection\n"));
-
-    destroyPrintSetupDialog(pdw);
-
-    if (pdp->paperlist) {
-        XpuFreeMediumSourceSizeList(pdp->paperlist);
-        pdp->paperlist = NULL;
-    }
-
-    if (pdp->widget_paperlist) {
-        free(pdp->widget_paperlist);
-        pdp->widget_paperlist = NULL;
-    }
-
-    if (pdp->resolutionlist) {
-        XpuFreeResolutionList(pdp->resolutionlist);
-        pdp->resolutionlist = NULL;
-    }
-
-    if (pdp->widget_resolutionlist) {
-        free(pdp->widget_resolutionlist);
-        pdp->widget_resolutionlist = NULL;
-    }
-
-
-    if (pdp->orientationlist) {
-        XpuFreeOrientationList(pdp->orientationlist);
-        pdp->orientationlist = NULL;
-    }  
-
-    if (pdp->widget_orientationlist) {
-        free(pdp->widget_orientationlist);
-        pdp->widget_orientationlist = NULL;
-    }
-
-    if (pdp->plexlist) {
-        XpuFreePlexList(pdp->plexlist);
-        pdp->plexlist = NULL;
-    }  
-
-    if (pdp->widget_plexlist) {
-        free(pdp->widget_plexlist);
-        pdp->widget_plexlist = NULL;
-    }
-
-    if (pdp->colorspacelist) {
-        XpuFreeColorspaceList(pdp->colorspacelist);
-        pdp->colorspacelist = NULL;
-    }  
-
-    if (pdp->widget_colorspacelist) {
-        free(pdp->widget_colorspacelist);
-        pdp->widget_colorspacelist = NULL;
-    }
-    pdp->selected_colorspace = NULL;
-
-    if (pdp->pdpy) {
-        if (closeDisplay) {
-            XpuClosePrinterDisplay(pdp->pdpy, pdp->pcontext);
-        }
-        pdp->pdpy     = NULL;
-        pdp->pcontext = None;
-    }
-
-    updateWidgetStates(pdw);
-}
-
-static
-Bool openPrinterConnection(PrintDialogWidget pdw)
-{
-    PrintDialogPart   *pdp = &pdw->printdialog;
-
-    Log(("# openPrinterConnection\n"));
-
-    /* Close any outstanding connection first... */
-    closePrinterConnection(pdw, True);
-
-    if (!pdp->printer_name) {
-        Log(("# error: openPrinterConnection: No printer name.\n"));
-        return False;
-    }
-
-    if (XpuGetPrinter(pdp->printer_name, &pdp->pdpy, &pdp->pcontext) == False) {
-        Log(("openPrinterConnection: could not open printer.\n"));
-        return False;
-    }
-
-    pdp->paperlist       = XpuGetMediumSourceSizeList(pdp->pdpy, pdp->pcontext, &pdp->num_papers);
-    pdp->resolutionlist  =       XpuGetResolutionList(pdp->pdpy, pdp->pcontext, &pdp->num_resolutions);
-    pdp->orientationlist =      XpuGetOrientationList(pdp->pdpy, pdp->pcontext, &pdp->num_orientations);
-    pdp->plexlist        =             XpuGetPlexList(pdp->pdpy, pdp->pcontext, &pdp->num_plex);  
-    pdp->colorspacelist  =       XpuGetColorspaceList(pdp->pdpy, pdp->pcontext, &pdp->num_colorspaces);  
-
-    pdp->widget_paperlist       = xppaperlist_to_widget_paperlist(pdp->paperlist, pdp->num_papers);
-    pdp->widget_resolutionlist  = xpresolutionlist_to_widget_resolutionlist(pdp->resolutionlist, pdp->num_resolutions);
-    pdp->widget_orientationlist = xporientationlist_to_widget_orientationlist(pdp->orientationlist, pdp->num_orientations);
-    pdp->widget_plexlist        = xpplexlist_to_widget_plexlist(pdp->plexlist, pdp->num_plex);
-    pdp->widget_colorspacelist  = xpcolorspacelist_to_widget_colorspacelist(pdp->colorspacelist, pdp->num_colorspaces);
-
-    updateWidgetStates(pdw);
-
-    return True;
-}
-
-#undef DEFAULT_WIDTH
-#define DEFAULT_WIDTH 120
-#undef DEFAULT_INFOLABEL_WIDTH
-#define DEFAULT_INFOLABEL_WIDTH 250
-
-static
-void destroyPrintSetupDialog(PrintDialogWidget pdw)
-{
-    PrintDialogPart *pdp = &pdw->printdialog;
-
-    if (pdp->setup.popup) {
-        XtDestroyWidget(pdp->setup.popup);
-    }
-
-    /* |XtDestroyWidget(pdp->setup.popup);| above will recursively destroy
-     * all children so we only have to reset the pointers here... */
-    pdp->setup.popup            = NULL;
-    pdp->setup.form             = NULL;
-    pdp->setup.paperlist        = NULL;
-    pdp->setup.resolutionlist   = NULL;
-    pdp->setup.orientationlist  = NULL;
-    pdp->setup.plexlist         = NULL;
-    pdp->setup.colorspacelist   = NULL;
-    pdp->setup.ok               = NULL;
-    pdp->setup.cancel           = NULL;
-}
-
-static
-Widget buildPrintSetupDialog(PrintDialogWidget pdw)
-{
-    PrintDialogPart  *pdp = &pdw->printdialog;
-    int               n;
-    Arg               args[20];
-    Widget            listform;
-    XpuSupportedFlags jobflags,
-                      docflags;
-    Bool              canChangeJobCopies,
-                      canChangePaperSize,
-                      canChangeResolution,
-                      canChangeOrientation,
-                      canChangePlex;
-
-    if (!pdp->pdpy) {
-        Log(("buildPrintSetupDialog: no printer connection, opening one....\n"));
-        openPrinterConnection(pdw);
-
-        if (!pdp->pdpy) {
-            Log(("buildPrintSetupDialog: still no printer connection - BAD.\n"));
-            do_beep(pdw);
-            return NULL;
-        }
-    }
-
-    /* Get flags which types of attributes can be modified */
-    jobflags = XpuGetSupportedDocAttributes(pdp->pdpy, pdp->pcontext);
-    docflags = XpuGetSupportedDocAttributes(pdp->pdpy, pdp->pcontext);
-    canChangeJobCopies   = (jobflags & XPUATTRIBUTESUPPORTED_COPY_COUNT) == XPUATTRIBUTESUPPORTED_COPY_COUNT;
-    canChangePaperSize   = (docflags & XPUATTRIBUTESUPPORTED_DEFAULT_MEDIUM) == XPUATTRIBUTESUPPORTED_DEFAULT_MEDIUM;
-    canChangeResolution  = (docflags & XPUATTRIBUTESUPPORTED_DEFAULT_PRINTER_RESOLUTION) == XPUATTRIBUTESUPPORTED_DEFAULT_PRINTER_RESOLUTION;
-    canChangeOrientation = (docflags & XPUATTRIBUTESUPPORTED_CONTENT_ORIENTATION) == XPUATTRIBUTESUPPORTED_CONTENT_ORIENTATION;
-    canChangePlex        = (docflags & XPUATTRIBUTESUPPORTED_PLEX) == XPUATTRIBUTESUPPORTED_PLEX;
-
-    n = 0;
-    XtSetArg(args[n], XtNallowShellResize, True); n++;
-    pdp->setup.popup = XtCreatePopupShell("setup", transientShellWidgetClass, (Widget)pdw, args, n);
-
-    n = 0;
-    pdp->setup.form = XtCreateManagedWidget("form", formWidgetClass, pdp->setup.popup, args, n);
-
-    n = 0;
-    listform = XtCreateManagedWidget("list", formWidgetClass, pdp->setup.form, args, n);
-
-    n = 0;
-    XtSetArg(args[n], XtNresizable,           True);                        n++;
-    XtSetArg(args[n], XtNforceColumns,        True);                        n++;
-    XtSetArg(args[n], XtNdefaultColumns,      1);                           n++;
-    XtSetArg(args[n], XtNsensitive,           canChangePaperSize);          n++;
-    XtSetArg(args[n], XtNlist,                pdp->widget_paperlist);       n++;
-    XtSetArg(args[n], XtNwidth,               DEFAULT_WIDTH);               n++;
-    pdp->setup.paperlist = XtCreateManagedWidget("paperlist", listWidgetClass, listform, args, n);
-
-    n = 0;
-    XtSetArg(args[n], XtNresizable,           True);                        n++;
-    XtSetArg(args[n], XtNforceColumns,        True);                        n++;
-    XtSetArg(args[n], XtNdefaultColumns,      1);                           n++;
-    XtSetArg(args[n], XtNsensitive,           canChangeResolution);         n++;
-    XtSetArg(args[n], XtNlist,                pdp->widget_resolutionlist);  n++;
-    XtSetArg(args[n], XtNwidth,               DEFAULT_WIDTH);               n++;
-    pdp->setup.resolutionlist = XtCreateManagedWidget("resolutionlist", listWidgetClass, listform, args, n);
-    
-    n = 0;
-    XtSetArg(args[n], XtNresizable,           True);                        n++;
-    XtSetArg(args[n], XtNforceColumns,        True);                        n++;
-    XtSetArg(args[n], XtNdefaultColumns,      1);                           n++;
-    XtSetArg(args[n], XtNsensitive,           canChangeOrientation);        n++;
-    XtSetArg(args[n], XtNlist,                pdp->widget_orientationlist); n++;
-    XtSetArg(args[n], XtNwidth,               DEFAULT_WIDTH);               n++;
-    pdp->setup.orientationlist = XtCreateManagedWidget("orientationlist", listWidgetClass, listform, args, n);
-
-    n = 0;
-    XtSetArg(args[n], XtNresizable,           True);                        n++;
-    XtSetArg(args[n], XtNforceColumns,        True);                        n++;
-    XtSetArg(args[n], XtNdefaultColumns,      1);                           n++;
-    XtSetArg(args[n], XtNsensitive,           canChangePlex);               n++;
-    XtSetArg(args[n], XtNlist,                pdp->widget_plexlist);        n++;
-    XtSetArg(args[n], XtNwidth,               DEFAULT_WIDTH);               n++;
-    pdp->setup.plexlist = XtCreateManagedWidget("plexlist", listWidgetClass, listform, args, n);
-
-    n = 0;
-    XtSetArg(args[n], XtNresizable,           True);                        n++;
-    XtSetArg(args[n], XtNforceColumns,        True);                        n++;
-    XtSetArg(args[n], XtNdefaultColumns,      1);                           n++;
-    XtSetArg(args[n], XtNsensitive,           True);                        n++;
-    XtSetArg(args[n], XtNlist,                pdp->widget_colorspacelist);  n++;
-    XtSetArg(args[n], XtNwidth,               DEFAULT_WIDTH);               n++;
-    pdp->setup.colorspacelist = XtCreateManagedWidget("colorspacelist", listWidgetClass, listform, args, n);
-    
-    n = 0;
-    XtSetArg(args[n], XtNborderWidth,         0);                           n++;
-    XtSetArg(args[n], XtNresizable,           False);                       n++;
-    XtSetArg(args[n], XtNjustify,             XtJustifyRight);              n++;
-    XtSetArg(args[n], XtNwidth,               DEFAULT_WIDTH);               n++;
-    XtSetArg(args[n], XtNsensitive,           canChangeJobCopies);          n++;
-    pdp->setup.jobcopieslabel = XtCreateManagedWidget("jobcopieslabel", labelWidgetClass, listform, args, n);
-
-    n = 0;
-    XtSetArg(args[n], XtNstring,              "1");                         n++;
-    XtSetArg(args[n], XtNresizable,           True);                        n++;
-    XtSetArg(args[n], XtNeditType,            XawtextEdit);                 n++;
-    XtSetArg(args[n], XtNsensitive,           canChangeJobCopies);          n++;
-    pdp->setup.jobcopies = XtCreateManagedWidget("jobcopies", asciiTextWidgetClass, listform, args, n);
-    XtAddCallback(pdp->setup.jobcopies, XtNpositionCallback, printSetupJobCopiesXtProc, pdw);
-
-    n = 0;
-    pdp->setup.ok = XtCreateManagedWidget("ok", commandWidgetClass, pdp->setup.form, args, n);
-    XtAddCallback(pdp->setup.ok, XtNcallback, printSetupOKXtProc, pdw);
-
-    n = 0;
-    pdp->setup.cancel = XtCreateManagedWidget("cancel", commandWidgetClass, pdp->setup.form, args, n);
-    XtAddCallback(pdp->setup.cancel, XtNcallback, printSetupCancelXtProc, pdw);
-
-    XtRealizeWidget(pdp->setup.popup); 
-
-    return pdp->setup.popup;
-}
-
-#undef DEFAULT_WIDTH
-#define DEFAULT_WIDTH 150
-
-static
-String *xpprinterlist_to_widget_printerlist(XPPrinterList printerlist, int num_printers)
-{
-    int     i;
-    String *names;
-
-    names = malloc(sizeof(String *) * (num_printers+1));
-    if(!names)
-      return NULL;
-
-    for(i = 0 ; i < num_printers ; i++)
-        names[i] = printerlist[i].name;
-
-    names[i] = NULL; /* Terminate the list */
-
-    return names;
-}
-
-static
-String *xppaperlist_to_widget_paperlist(XpuMediumSourceSizeList paperlist, int num_papers)
-{
-    int     i;
-    String *names;
-
-    names = malloc(sizeof(String *) * (num_papers+1));
-    if (!names)
-      return NULL;
-
-    for(i = 0 ; i < num_papers ; i++)
-        names[i] = (char *)paperlist[i].medium_name; /* FixMe: tray selection missing */
-
-    names[i] = NULL; /* Terminate the list */
-
-    return names;
-}
-
-static
-String *xpresolutionlist_to_widget_resolutionlist(XpuResolutionList reslist, int num_resolutions)
-{
-    int     i;
-    String *names;
-
-    names = malloc(sizeof(String *) * (num_resolutions+1));
-    if (!names)
-        return NULL;
-
-    for(i = 0 ; i < num_resolutions ; i++)
-        names[i] = (char *)reslist[i].name;
-
-    names[i] = NULL; /* Terminate the list */
-
-    return names;
-}
-
-static
-String *xporientationlist_to_widget_orientationlist(XpuOrientationList orientationlist, int num_orientations)
-{
-    int     i;
-    String *names;
-
-    names = malloc(sizeof(String *) * (num_orientations+1));
-    if (!names)
-        return NULL;
-
-    for(i = 0 ; i < num_orientations ; i++)
-        names[i] = (char *)orientationlist[i].orientation;
-
-    names[i] = NULL; /* Terminate the list */
-
-    return names;
-}
-
-static
-String *xpplexlist_to_widget_plexlist(XpuPlexList plexlist, int num_plex)
-{
-    int     i;
-    String *names;
-
-    names = malloc(sizeof(String *) * (num_plex+1));
-    if(!names)
-      return NULL;
-
-    for(i = 0 ; i < num_plex ; i++)
-      names[i] = (char *)plexlist[i].plex;
-
-    names[i] = NULL; /* Terminate the list */
-
-    return names;
-}
-
-static
-String *xpcolorspacelist_to_widget_colorspacelist(XpuColorspaceList colorspacelist, int num_colorspaces)
-{
-    int     i;
-    String *names;
-
-    names = malloc(sizeof(String *) * (num_colorspaces+1));
-    if(!names)
-      return NULL;
-
-    for(i = 0 ; i < num_colorspaces ; i++)
-      names[i] = (char *)colorspacelist[i].name;
-
-    names[i] = NULL; /* Terminate the list */
-
-    return names;
-}
-
-static void
-printerSelectionPrinterSelectedXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget    pdw = (PrintDialogWidget)client_data;
-    PrintDialogPart     *pdp = &pdw->printdialog;
-    XawListReturnStruct *lrs = (XawListReturnStruct *)callData;
-    int                  list_index;
-
-    Log(("## user selected a printer\n"));
-
-    list_index = lrs->list_index;
-    if (list_index == XAW_LIST_NONE) {
-        Log(("printerSelectionPrinterSelectedXtProc: Nothing selected.\n"));
-        return;
-    }
-    
-    Log(("selected printer is '%d'/'%s'/'%s'\n", 
-        list_index, lrs->string, NULLSTR(pdp->printerlist[list_index].name)));
-
-    /* Enable OK button */
-    XtVaSetValues(pdp->selectPrinter.ok, XtNsensitive, True, NULL);
-}
-
-static void
-printSelectPrinterXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget   pdw = (PrintDialogWidget)client_data;
-    PrintDialogPart    *pdp = &pdw->printdialog;
-
-    Log(("## select printer!\n"));
-
-    if (!pdp->selectPrinter.popup) {
-        if (!buildPrinterSelectionDialog(pdw)) {
-            Log(("printSelectPrinterXtProc: buildPrinterSelectionDialog failure.\n"));
-            return;
-        }
-    }
-
-    center_popup((Widget)pdw, pdp->selectPrinter.popup);
-
-    XtPopup(pdp->selectPrinter.popup, XtGrabExclusive);
-}
-
-static void
-printerSelectionClose(PrintDialogWidget  pdw)
-{ 
-    PrintDialogPart *pdp = &pdw->printdialog;
-
-    if (pdp->selectPrinter.popup) {
-        XtPopdown(pdp->selectPrinter.popup);
-    }
-}
-
-static void
-printerSelectionOKXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget    pdw = (PrintDialogWidget)client_data;
-    PrintDialogPart     *pdp = &pdw->printdialog;
-    XawListReturnStruct *lrs;
-    int                  list_index;
-
-    Log(("## printerSelectionOKXtProc: closing printer selection!\n"));
-
-    /* Copy current selection in printer list widget and open a printer connection */
-    lrs = XawListShowCurrent(pdp->selectPrinter.list);
-    if (!lrs) {
-        Log(("printerSelectionOKXtProc: |lrs|==NULL\n"));
-        return;
-    }
-
-    list_index = lrs->list_index;
-    if (lrs->list_index == XAW_LIST_NONE) {
-        Log(("printerSelectionOKXtProc: rs->list_index == XAW_LIST_NONE\n"));
-        XtFree((char *)lrs);
-        return;
-    }
-
-    /* Set printer name and description in main dialog */
-    XtVaSetValues(pdp->main.name, XtNlabel, NULLSTR(pdp->printerlist[list_index].name), NULL);
-    XtVaSetValues(pdp->main.desc, XtNlabel, NULLSTR(pdp->printerlist[list_index].desc), NULL);
-
-    if (pdp->printer_name)
-        free(pdp->printer_name);
-    pdp->printer_name = strdup(lrs->string);
-
-    /* Close any outstanding printer connection since user has selected
-     * a different printer */
-    closePrinterConnection(pdw, True);
-
-    printerSelectionClose(pdw);
-    
-    XtFree((char *)lrs);
-}
-
-static void
-printerSelectionCancelXtProc(Widget w, XtPointer client_data, XtPointer callData)
-{
-    PrintDialogWidget  pdw = (PrintDialogWidget)client_data;
-    Log(("## printerSelectionCancelXtProc: closing printer selection!\n"));
-
-    printerSelectionClose(pdw);
-}
-
-static
-Bool buildPrinterSelectionDialog(PrintDialogWidget  pdw)
-{
-    PrintDialogPart   *pdp = &pdw->printdialog;
-
-    int  n;
-    Arg  args[20];
-
-    n = 0;
-    XtSetArg(args[n], XtNallowShellResize, True);                    n++;
-    pdp->selectPrinter.popup = XtCreatePopupShell("printerselection", transientShellWidgetClass, (Widget)pdw, args, n);
-
-    n = 0;
-    pdp->selectPrinter.form = XtCreateManagedWidget("form", formWidgetClass, pdp->selectPrinter.popup, args, n);
-
-    n = 0;
-    XtSetArg(args[n], XtNresizable,        True);                    n++;
-    XtSetArg(args[n], XtNforceColumns,     True);                    n++;
-    XtSetArg(args[n], XtNdefaultColumns,   1);                       n++;
-    XtSetArg(args[n], XtNlist,             pdp->widget_printerlist); n++;
-    XtSetArg(args[n], XtNwidth,            DEFAULT_WIDTH);           n++;
-    pdp->selectPrinter.list = XtCreateManagedWidget("list", listWidgetClass, pdp->selectPrinter.form, args, n);
-    XtAddCallback(pdp->selectPrinter.list, XtNcallback, printerSelectionPrinterSelectedXtProc, pdw);
-
-    n = 0;
-    XtSetArg(args[n], XtNsensitive,        False);                   n++;
-    pdp->selectPrinter.ok = XtCreateManagedWidget("ok", commandWidgetClass, pdp->selectPrinter.form, args, n);
-    XtAddCallback(pdp->selectPrinter.ok, XtNcallback, printerSelectionOKXtProc, pdw);
-
-    n = 0;
-    pdp->selectPrinter.cancel = XtCreateManagedWidget("cancel", commandWidgetClass, pdp->selectPrinter.form, args, n);
-    XtAddCallback(pdp->selectPrinter.cancel, XtNcallback, printerSelectionCancelXtProc, pdw);
-
-    XtRealizeWidget(pdp->selectPrinter.popup);
-
-    return True;
-}
-
-static
-void destroyPrinterSelectionDialog(PrintDialogWidget pdw)
-{
-    PrintDialogPart *pdp = &pdw->printdialog;
-
-    if (pdp->selectPrinter.popup) {
-        XtDestroyWidget(pdp->selectPrinter.popup);
-    }
-
-    /* |XtDestroyWidget(pdp->setup.popup);| above will recursively destroy
-     * all children so we only have to reset the pointers here... */
-    pdp->selectPrinter.popup   = NULL;
-    pdp->selectPrinter.form    = NULL;
-    pdp->selectPrinter.list    = NULL;
-    pdp->selectPrinter.popup   = NULL;
-    pdp->selectPrinter.cancel  = NULL;
-}
-
-/*
- * Function:
- *      createprintdialogchildren
- *
- * Parameters:
- *      w - print dialog widget
- *
- * Description:
- *      Creates the print dialog widgets.
- *
- * Note
- *      -
- */
-static void
-createprintdialogchildren(Widget w)
-{
-    int                n;
-    Arg                args[20];
-    PrintDialogWidget  pdw = (PrintDialogWidget)w;
-    PrintDialogPart   *pdp = &pdw->printdialog;
-    const char        *default_printername = NULL,
-                      *default_printerdesc = NULL;
-    Bool               has_default_printer = False;
-
-    pdp->printerlist = XpuGetPrinterList(NULL, &pdp->num_printers);
-    pdp->widget_printerlist = xpprinterlist_to_widget_printerlist(pdp->printerlist, pdp->num_printers);
-
-    if (pdp->num_printers > 0) {
-        if (pdp->printerlist[0].name && strlen(pdp->printerlist[0].name)) {
-            /* XprintUtils moves the default printer to the top */
-            default_printername = pdp->printerlist[0].name;
-            default_printerdesc = pdp->printerlist[0].desc;
-            pdp->printer_name   = strdup(pdp->printerlist[0].name);
-            has_default_printer = True;
-        }
-    }
-    else
-    {
-      PrintMsg(("No Xprint servers could be found.\n"
-                "Check whether the XPSERVERLIST environment variable contains any valid Xprint server(s).\n"));
-    }
-    
-    n = 0;
-    XtSetArg(args[n], XtNborderWidth,     0);                        n++;
-    pdp->main.form = XtCreateManagedWidget("main", formWidgetClass, (Widget)pdw, args, n);
-
-    n = 0;
-    pdp->main.innerform = XtCreateManagedWidget("innerform", formWidgetClass, pdp->main.form, args, n);
-
-    n = 0;
-    XtSetArg(args[n], XtNborderWidth,     0);                        n++;
-    XtSetArg(args[n], XtNresizable,       False);                    n++;
-    XtSetArg(args[n], XtNjustify,         XtJustifyRight);           n++;
-    XtSetArg(args[n], XtNwidth,           DEFAULT_WIDTH);            n++;
-    pdp->main.desclabel = XtCreateManagedWidget("desclabel", labelWidgetClass, pdp->main.innerform, args, n);
-
-    n = 0;
-    XtSetArg(args[n], XtNborderWidth,     0);                        n++;
-    XtSetArg(args[n], XtNresizable,       False);                    n++;
-    XtSetArg(args[n], XtNjustify,         XtJustifyLeft);            n++;
-    XtSetArg(args[n], XtNwidth,           DEFAULT_INFOLABEL_WIDTH);  n++;
-    XtSetArg(args[n], XtNlabel,           default_printerdesc?default_printerdesc:"-"); n++;
-    pdp->main.desc = XtCreateManagedWidget("desc", labelWidgetClass, pdp->main.innerform, args, n);
-
-    n = 0;
-    XtSetArg(args[n], XtNsensitive,       has_default_printer);      n++;
-    pdp->main.info = XtCreateManagedWidget("info", commandWidgetClass, pdp->main.innerform, args, n);
-  /*
-    XtAddCallback(pdp->main.info, XtNcallback, printerInfoXtProc, pdw);
-  */
-    n = 0;
-    XtSetArg(args[n], XtNborderWidth,     0);                        n++;
-    XtSetArg(args[n], XtNresizable,       False);                    n++;
-    XtSetArg(args[n], XtNjustify,         XtJustifyRight);           n++;
-    XtSetArg(args[n], XtNwidth,           DEFAULT_WIDTH);            n++;
-    pdp->main.namelabel = XtCreateManagedWidget("namelabel", labelWidgetClass, pdp->main.innerform, args, n);
-
-    n = 0;
-    XtSetArg(args[n], XtNborderWidth,     0);                        n++;
-    XtSetArg(args[n], XtNresizable,       False);                    n++;
-    XtSetArg(args[n], XtNjustify,         XtJustifyLeft);            n++;
-    XtSetArg(args[n], XtNlabel,           default_printername?default_printername:"-"); n++;
-    XtSetArg(args[n], XtNwidth,           DEFAULT_INFOLABEL_WIDTH);  n++;
-    pdp->main.name = XtCreateManagedWidget("name", labelWidgetClass, pdp->main.innerform, args, n);
-
-    n = 0;
-    pdp->main.selectprinter = XtCreateManagedWidget("selectprinter", commandWidgetClass, pdp->main.innerform, args, n);
-    XtAddCallback(pdp->main.selectprinter, XtNcallback, printSelectPrinterXtProc, pdw);
-
-    /* Line: "File selection" */
-
-    n = 0;
-    XtSetArg(args[n], XtNborderWidth,     0);                        n++;
-    XtSetArg(args[n], XtNresizable,       False);                    n++;
-    XtSetArg(args[n], XtNjustify,         XtJustifyRight);           n++;
-    XtSetArg(args[n], XtNwidth,           DEFAULT_WIDTH);            n++;
-    XtSetArg(args[n], XtNsensitive,       False);                    n++;
-    pdp->main.filenamelabel = XtCreateManagedWidget("filenamelabel", labelWidgetClass, pdp->main.innerform, args, n);
-
-    n = 0;
-    XtSetArg(args[n], XtNborderWidth,     0);                        n++;
-    XtSetArg(args[n], XtNresizable,       False);                    n++;
-    XtSetArg(args[n], XtNjustify,         XtJustifyLeft);            n++;
-    XtSetArg(args[n], XtNlabel,           "-");                      n++;
-    XtSetArg(args[n], XtNwidth,           DEFAULT_INFOLABEL_WIDTH);  n++;
-    XtSetArg(args[n], XtNsensitive,       False);                    n++;
-    pdp->main.filename = XtCreateManagedWidget("filename", labelWidgetClass, pdp->main.innerform, args, n);
-
-    n = 0;
-    XtSetArg(args[n], XtNsensitive,       False);                    n++;
-    pdp->main.selectfile = XtCreateManagedWidget("selectfile", commandWidgetClass, pdp->main.innerform, args, n);
-    XtAddCallback(pdp->main.selectfile, XtNcallback, printSelectFileXtProc, pdw);
-
-    /* Line: Misc (Print destination toggles, copy-count etc.)*/
-    n = 0;
-    XtSetArg(args[n], XtNstate,           True);                     n++;
-    pdp->main.printtoprinter = XtCreateManagedWidget("printtoprinter", toggleWidgetClass, pdp->main.innerform, args, n);
-    XtAddCallback(pdp->main.printtoprinter, XtNcallback, printDialogDestXtProc, pdw);
-
-    n = 0;
-    XtSetArg(args[n], XtNstate,           False);                    n++;
-    pdp->main.printtofile = XtCreateManagedWidget("printtofile", toggleWidgetClass, pdp->main.innerform, args, n);
-    XtAddCallback(pdp->main.printtofile, XtNcallback, printDialogDestXtProc, pdw);
-
-    /* End-of-Inner-Form-Content */
-
-    n = 0;
-    XtSetArg(args[n], XtNsensitive,       has_default_printer);       n++;
-    pdp->main.ok = XtCreateManagedWidget("ok", commandWidgetClass, pdp->main.form, args, n);
-    XtAddCallback(pdp->main.ok, XtNcallback, printOKXtProc, pdw);
-
-    n = 0;
-    XtSetArg(args[n], XtNsensitive,       has_default_printer);       n++;
-    pdp->main.setup = XtCreateManagedWidget("setup", commandWidgetClass, pdp->main.form, args, n);
-    XtAddCallback(pdp->main.setup, XtNcallback, printSetupXtProc, pdw);
-
-    n = 0;
-    pdp->main.cancel = XtCreateManagedWidget("cancel", commandWidgetClass, pdp->main.form, args, n);
-    XtAddCallback(pdp->main.cancel, XtNcallback, printCancelXtProc, pdw);
-}
-
-/*
- * Class Methods
- */
-static void    XawPrintDialogConstraintInitialize(Widget, Widget, ArgList, Cardinal *);
-static void    XawPrintDialogGetValuesHook(Widget, ArgList, Cardinal*);
-static void    XawPrintDialogInitialize(Widget, Widget, ArgList, Cardinal*);
-static void    XawPrintDialogDestroy(Widget);
-static Boolean XawPrintDialogSetValues(Widget, Widget, Widget, ArgList, Cardinal *);
-
-/*
- * Initialization
- */
-static XtResource resources[] = {
-  {
-    XtNicon,
-    XtCIcon,
-    XtRBitmap,
-    sizeof(Pixmap),
-    XtOffsetOf(PrintDialogRec, printdialog.icon),
-    XtRImmediate,
-    0
-  },
-  {
-    XawNOkCallback, XtCCallback, XtRCallback,
-    sizeof(XtCallbackList), XtOffsetOf(PrintDialogRec, printdialog.ok_callback),
-    XtRImmediate, (XtPointer)NULL
-  },
-  {
-    XawNCancelCallback, XtCCallback, XtRCallback,
-    sizeof(XtCallbackList), XtOffsetOf(PrintDialogRec, printdialog.cancel_callback),
-    XtRImmediate, (XtPointer)NULL
-  },
-};
-
-PrintDialogClassRec printdialogClassRec = {
-  /* core */
-  {
-    (WidgetClass)&formClassRec,         /* superclass */
-    "PrintDialog",                      /* class_name */
-    sizeof(PrintDialogRec),             /* widget_size */
-    XawInitializeWidgetSet,             /* class_initialize */
-    NULL,                               /* class_part init */
-    False,                              /* class_inited */
-    XawPrintDialogInitialize,           /* initialize */
-    NULL,                               /* initialize_hook */
-    XtInheritRealize,                   /* realize */
-    NULL,                               /* actions */
-    0,                                  /* num_actions */
-    resources,                          /* resources */
-    XtNumber(resources),                /* num_resources */
-    NULLQUARK,                          /* xrm_class */
-    True,                               /* compress_motion */
-    True,                               /* compress_exposure */
-    True,                               /* compress_enterleave */
-    False,                              /* visible_interest */
-    XawPrintDialogDestroy,              /* destroy */
-    XtInheritResize,                    /* resize */
-    XtInheritExpose,                    /* expose */
-    XawPrintDialogSetValues,            /* set_values */
-    NULL,                               /* set_values_hook */
-    XtInheritSetValuesAlmost,           /* set_values_almost */
-    XawPrintDialogGetValuesHook,        /* get_values_hook */
-    NULL,                               /* accept_focus */
-    XtVersion,                          /* version */
-    NULL,                               /* callback_private */
-    NULL,                               /* tm_table */
-    XtInheritQueryGeometry,             /* query_geometry */
-    XtInheritDisplayAccelerator,        /* display_accelerator */
-    NULL,                               /* extension */
-  },
-  /* composite */
-  {
-    XtInheritGeometryManager,           /* geometry_manager */
-    XtInheritChangeManaged,             /* change_managed */
-    XtInheritInsertChild,               /* insert_child */
-    XtInheritDeleteChild,               /* delete_child */
-    NULL,                               /* extension */
-  },
-  /* constraint */
-  {
-    NULL,                               /* subresourses */
-    0,                                  /* subresource_count */
-    sizeof(PrintDialogConstraintsRec),  /* constraint_size */
-    XawPrintDialogConstraintInitialize, /* initialize */
-    NULL,                               /* destroy */
-    NULL,                               /* set_values */
-    NULL,                               /* extension */
-  },
-  /* form */
-  {
-    XtInheritLayout,                    /* layout */
-  },
-  /* printdialog */
-  {
-    NULL,                               /* extension */
-  }
-};
-
-WidgetClass printDialogWidgetClass = (WidgetClass)&printdialogClassRec;
-
-/*
- * Implementation
- */
-/*ARGSUSED*/
-static void
-XawPrintDialogInitialize(Widget request, Widget cnew, ArgList args, Cardinal *num_args)
-{
-    PrintDialogWidget dw = (PrintDialogWidget)cnew;
-    Arg               arglist[9];
-    Cardinal          arg_cnt = 0;
-
-    XtSetArg(arglist[arg_cnt], XtNborderWidth, 0);     arg_cnt++;
-    XtSetArg(arglist[arg_cnt], XtNleft, XtChainLeft);  arg_cnt++;
-
-    if (dw->printdialog.icon != (Pixmap)0) {
-        XtSetArg(arglist[arg_cnt], XtNbitmap, dw->printdialog.icon);     arg_cnt++;
-        XtSetArg(arglist[arg_cnt], XtNright, XtChainLeft);               arg_cnt++;
-        dw->printdialog.iconW = XtCreateManagedWidget("icon", labelWidgetClass,
-                                                      cnew, arglist, arg_cnt);
-        arg_cnt = 2;
-        XtSetArg(arglist[arg_cnt], XtNfromHoriz, dw->printdialog.iconW); arg_cnt++;
-    }
-    else {
-        dw->printdialog.iconW = NULL;
-    }
-    
-    createprintdialogchildren((Widget)dw);
-}
-
-/*ARGSUSED*/
-static void
-XawPrintDialogConstraintInitialize(Widget request, Widget cnew,
-                                   ArgList args, Cardinal *num_args)
-{
-    PrintDialogWidget dw = (PrintDialogWidget)cnew->core.parent;
-    PrintDialogConstraints constraint = (PrintDialogConstraints)cnew->core.constraints;
-
-    if (!XtIsSubclass(cnew, commandWidgetClass)) /* if not a button */
-        return;                                  /* then just use defaults */
-
-    constraint->form.left = constraint->form.right = XtChainLeft;
-    constraint->form.vert_base = dw->printdialog.main.form;
-
-    if (dw->composite.num_children > 1) {
-        WidgetList  children = dw->composite.children;
-        Widget     *childP;
-
-        for (childP = children + dw->composite.num_children - 1;
-           childP >= children; childP-- ) {
-            if (*childP == dw->printdialog.main.form)
-                break;
-            if (XtIsManaged(*childP) &&
-                XtIsSubclass(*childP, commandWidgetClass)) {
-                constraint->form.horiz_base = *childP;
-                break;
-            }
-        }
-    }
-}
-
-#define ICON       0
-#define NUM_CHECKS 1
-/*ARGSUSED*/
-static Boolean
-XawPrintDialogSetValues(Widget current, Widget request, Widget cnew,
-                        ArgList in_args, Cardinal *in_num_args)
-{
-    PrintDialogWidget w   = (PrintDialogWidget)cnew;
-    PrintDialogWidget old = (PrintDialogWidget)current;
-    Arg               args[5];
-    unsigned int      i;
-    Bool              checks[NUM_CHECKS];
-
-    for (i = 0; i < NUM_CHECKS; i++)
-        checks[i] = False;
-
-    for (i = 0; i < *in_num_args; i++) {
-        if (!strcmp(XtNicon, in_args[i].name))
-            checks[ICON]  = True;
-    }
-
-    if (checks[ICON]) {
-        if (w->printdialog.icon != 0) {
-            XtSetArg(args[0], XtNbitmap, w->printdialog.icon);
-            if (old->printdialog.iconW != NULL) {
-                XtSetValues(old->printdialog.iconW, args, 1);
-            }
-            else {
-                XtSetArg(args[1], XtNborderWidth, 0);
-                XtSetArg(args[2], XtNleft,        XtChainLeft);
-                XtSetArg(args[3], XtNright,       XtChainLeft);
-                w->printdialog.iconW = XtCreateWidget("icon", labelWidgetClass,
-                                                      cnew, args, 4);
-                XtManageChild(w->printdialog.iconW);
-            }
-        }
-        else if (old->printdialog.icon != 0) {
-            XtDestroyWidget(old->printdialog.iconW);
-            w->printdialog.iconW = NULL;
-        }
-    }
-
-    return True;
-}
-
-/*
- * Function:
- *      XawPrintDialogGetValuesHook
- *
- * Parameters:
- *      w        - Print Dialog Widget
- *      args     - argument list
- *      num_args - number of args
- *
- * Description:
- *      This is a get values hook routine that gets the values in the dialog.
- */
-static void
-XawPrintDialogGetValuesHook(Widget w, ArgList args, Cardinal *num_args)
-{
-    /* NO-OP for now */
-}
-
-static void 
-XawPrintDialogDestroy(Widget w)
-{
-    PrintDialogWidget pdw = (PrintDialogWidget)w;
-    Log(("# XawPrintDialogDestroy: start.\n"));
-
-    destroyPrintSetupDialog(pdw);
-    destroyPrinterSelectionDialog(pdw);
-    closePrinterConnection(pdw, True);
-    
-    Log(("# XawPrintDialogDestroy: done.\n"));
-}
-
-/*
- * Function:
- *      XawPrintDialogClosePrinterConnection
- *
- * Parameters:
- *      w            - Print Dialog Widget
- *      closeDisplay - Boolean which decides whether |Display *|
- *                     and |XPContext| should be disposed, too.
- *
- * Description:
- *      The print display connection is owned by the print dialog
- *      by default.
- *      If the application wishes to close the display connection
- *      to the print server, either to close it itself or force
- *      a disconnection for other reasons this function can be used.
- *
- * Notes
- *      1. PUBLIC API
- *      2. After this function returns all resources returned by the
- *         print dialog which are related to the status of the printer
- *         connection are stale.
- */
-void
-XawPrintDialogClosePrinterConnection(Widget w, Bool closeDisplay)
-{
-    closePrinterConnection((PrintDialogWidget)w, closeDisplay);
-}
-
diff --git a/printdialog.h b/printdialog.h
deleted file mode 100644
index f166a27..0000000
--- a/printdialog.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * $Xorg: printdialog.h,v 1.1 2004/04/30 02:05:54 gisburn Exp $
- *
-Copyright 2004 Roland Mainz <roland.mainz at nrubsig.org>
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- */
-
-#ifndef XMORE_PRINTDIALOG_H
-#define XMORE_PRINTDIALOG_H 1
-
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-#include <X11/Shell.h>
-#include <X11/Xaw/Print.h>
-#include <X11/Xaw/Cardinals.h>
-#include <X11/Xaw/Form.h>
-#include <X11/XprintUtil/xprintutil.h>
-
-/* Resources:
-   NOT WRITTEN YET
-*/
-
-#define XtCIcon "Icon"
-#define XtNicon "icon"
-
-#define XawNOkCallback             "okCallback"
-#define XawNCancelCallback         "cancelCallback"
-
-typedef struct
-{
-    Display            *pdpy;
-    XPContext           pcontext;
-    const char         *printToFileName;
-    Boolean             printToFile;
-    XpuColorspaceRec   *colorspace;
-} XawPrintDialogCallbackStruct;
-
-typedef struct _PrintDialogClassRec *PrintDialogWidgetClass;
-typedef struct _PrintDialogRec      *PrintDialogWidget;
-
-extern WidgetClass printDialogWidgetClass;
-
-_XFUNCPROTOBEGIN
-
-/* Prototypes */
-void XawPrintDialogClosePrinterConnection(Widget w, Bool closeDisplay);
-
-_XFUNCPROTOEND
-
-#endif /* !XMORE_PRINTDIALOG_H */
diff --git a/printdialogprivates.h b/printdialogprivates.h
deleted file mode 100644
index 1e66eb8..0000000
--- a/printdialogprivates.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * $Xorg: printdialogprivates.h,v 1.1 2004/05/12 02:05:54 gisburn Exp $
- *
-Copyright 2004 Roland Mainz <roland.mainz at nrubsig.org>
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- */
-
-#ifndef _XawPrintDialogP_h
-#define _XawPrintDialogP_h 1
-
-#include <X11/IntrinsicP.h>
-#include <X11/StringDefs.h>
-#include <X11/Xos.h>
-#include <X11/Xmu/Misc.h>
-#include <X11/CoreP.h>
-#include <X11/Xaw/AsciiText.h>
-#include <X11/Xaw/Cardinals.h>
-#include <X11/Xaw/Command.h>    
-#include <X11/Xaw/Label.h>
-#include <X11/Xaw/DialogP.h>
-#include <X11/Xaw/XawInit.h>
-#include <X11/Xaw/Dialog.h>
-#include <X11/Xaw/FormP.h>
-
-/* From Xaw/Privates.h */
-#ifndef XtWidth
-#define XtWidth(w)        (((RectObj)w)->rectangle.width)
-#endif
-#ifndef XtHeight
-#define XtHeight(w)       (((RectObj)w)->rectangle.height)
-#endif
-
-
-typedef struct {
-    XtPointer extension;
-} PrintDialogClassPart;
-
-typedef struct _PrintDialogClassRec {
-    CoreClassPart         core_class;
-    CompositeClassPart    composite_class;
-    ConstraintClassPart   constraint_class;
-    FormClassPart         form_class;
-    PrintDialogClassPart  print_dialog_class;
-} PrintDialogClassRec;
-
-extern PrintDialogClassRec printDialogClassRec;
-
-typedef struct _PrintDialogPart {
-    /* resources */
-    String	   label;		/* description of the dialog	 */
-    String	   value;		/* for the user response	 */
-    Pixmap	   icon;		/* icon bitmap			 */
-    XtCallbackList ok_callback,
-                   cancel_callback;
-        
-    /* private */
-    Widget	iconW;		/* widget to display the icon	 */
-    
-    struct
-    {
-        Widget form,
-               innerform,
-               desclabel,
-               desc,
-               info,
-               namelabel,
-               name,
-               selectprinter,
-               filenamelabel,
-               filename,
-               selectfile,
-               printtoprinter,
-               printtofile,
-               ok,
-               setup,
-               cancel;
-    } main;
-
-    Bool   printToFile;
-    char  *filename;
-    Bool   canPrint,       /* can we print ? */
-           canReallyPrint; /* is it really save to print ? */
-    XpuColorspaceRec *selected_colorspace;
-
-    struct
-    {
-        Widget popup,
-               form,
-               list,
-               ok,
-               cancel;
-    } selectPrinter;
-
-    struct
-    {
-      Widget popup,
-             form,
-             paperlist,
-             resolutionlist,
-             orientationlist,
-             plexlist,
-             colorspacelist,
-             jobcopieslabel,
-             jobcopies,
-             ok,
-             cancel;
-    } setup;
-
-    struct
-    {
-        Widget dialog,
-               shell;
-    } selectFile;
-
-    XPPrinterList  printerlist;
-    int            num_printers;
-    String        *widget_printerlist;
-
-    String     printer_name;
-    Display   *pdpy;
-    XPContext  pcontext;
-
-    XpuMediumSourceSizeList  paperlist;
-    int                      num_papers;
-    String                  *widget_paperlist;
-    
-    XpuResolutionList        resolutionlist;
-    int                      num_resolutions;
-    String                  *widget_resolutionlist;
-
-    XpuOrientationList       orientationlist;
-    int                      num_orientations;
-    String                  *widget_orientationlist;
-
-    XpuPlexList              plexlist;
-    int                      num_plex;
-    String                  *widget_plexlist;
-
-    XpuColorspaceList        colorspacelist;
-    int                      num_colorspaces;
-    String                  *widget_colorspacelist;
-} PrintDialogPart;
-
-typedef struct _PrintDialogRec {
-    CorePart            core;
-    CompositePart       composite;
-    ConstraintPart      constraint;
-    FormPart            form;
-    PrintDialogPart     printdialog;
-} PrintDialogRec;
-
-typedef struct {
-    XtPointer extension;
-} PrintDialogConstraintsPart;
-
-typedef struct _PrintDialogConstraintsRec {
-    FormConstraintsPart        form;
-    PrintDialogConstraintsPart printdialog;
-} PrintDialogConstraintsRec, *PrintDialogConstraints;
-
-#endif /* !_XawPrintDialogP_h */
-
-- 
1.6.0.4



More information about the xorg-devel mailing list