[PATCH app-xedit 3/4] xprint: remove xprint related C code
Jeremy Huddleston
jeremyhu at freedesktop.org
Fri Mar 26 12:53:36 PDT 2010
Reviewed-by: Jeremy Huddleston <jeremyhu at freedestop.org>
On Mar 26, 2010, at 05:27, Gaetan Nadon wrote:
> 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
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5820 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg-devel/attachments/20100326/cf5d75ae/attachment-0001.bin>
More information about the xorg-devel
mailing list