summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am11
-rw-r--r--configure.ac6
-rw-r--r--print.c435
-rw-r--r--print.h56
-rw-r--r--printdialog.c1396
-rw-r--r--printdialog.h70
-rw-r--r--printdialogprivates.h182
7 files changed, 0 insertions, 2156 deletions
diff --git a/Makefile.am b/Makefile.am
index 007ade8..d8aa027 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -28,17 +28,6 @@ xmore_SOURCES = \
xmore.c \
xmore.h
-if XAW_USE_XPRINT
-xmore_CFLAGS += -DUSE_XPRINT
-
-xmore_SOURCES += \
- print.c \
- printdialog.c \
- printdialog.h \
- printdialogprivates.h \
- print.h
-endif
-
appman_PRE = \
xmore.man
diff --git a/configure.ac b/configure.ac
index b67765c..34d6aa6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -34,12 +34,6 @@ AC_PROG_INSTALL
# Checks for pkg-config packages
PKG_CHECK_MODULES(XMORE, xaw7)
-if test "x$xaw_use_xprint" = "xyes" ; then
- PKG_CHECK_MODULES(XPRINT_UTIL, xprintutil xp)
-
- XMORE_CFLAGS="$XMORE_CFLAGS $XPRINT_UTIL_CFLAGS"
- XMORE_LIBS="$XMORE_LIBS $XPRINT_UTIL_LIBS"
-fi
AC_SUBST(XMORE_CFLAGS)
AC_SUBST(XMORE_LIBS)
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@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@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@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@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@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 */
-