summaryrefslogtreecommitdiffstats
path: root/kdeprint/kprinter.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdeprint/kprinter.h')
-rw-r--r--kdeprint/kprinter.h780
1 files changed, 780 insertions, 0 deletions
diff --git a/kdeprint/kprinter.h b/kdeprint/kprinter.h
new file mode 100644
index 000000000..7682c89f9
--- /dev/null
+++ b/kdeprint/kprinter.h
@@ -0,0 +1,780 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (c) 2001 Michael Goffioul <kdeprint@swing.be>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ **/
+
+#ifndef KPRINTER_H
+#define KPRINTER_H
+
+#include <qpaintdevice.h>
+#include <qprinter.h>
+#include <qmap.h>
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qvaluelist.h>
+#include <kdemacros.h>
+#include <kdelibs_export.h>
+
+#include <kdeprint/kpreloadobject.h>
+
+class KPrinterImpl;
+class KPrintDialogPage;
+class KPrinterPrivate;
+class DrPageSize;
+
+/**
+ * This class is the main interface to access the KDE print framework. It allows KDE
+ * applications to easily access the print system, through an interface that is compatible
+ * with QPrinter. So that the porting of an existing application should be as easy as
+ * replacing any occurrence of QPrinter by KPrinter. However applications that explicitly
+ * used the QPrintDialog class must be changed to the standard KPrinter way of accessing
+ * the print dialog.
+ *
+ * Basically, a KDE application will use the KPrinter object as a paint device, and will draw
+ * on it using QPainter. In a standard application, the use of the KPrinter class will
+ * look like this:
+ * \code
+ * #include <kprinter.h>
+ * #include <qpainter.h>
+ *
+ * void MyClass::doPrint()
+ * {
+ * KPrinter printer;
+ *
+ * // do some printer initialization
+ * printer.setFullPage( true );
+ *
+ * // initialize the printer using the print dialog
+ * if ( printer.setup( this ) )
+ * {
+ * // create a painter to paint on the printer object
+ * QPainter painter;
+ *
+ * // start painting
+ * painter.begin( &printer );
+ * <do something>
+ * // stop painting, this will automatically send the print data to the printer
+ * painter.end();
+ * }
+ * }
+ * \endcode
+ *
+ * The KPrinter interface also allows some more advanced possibilities, like the customization
+ * of the print dialog to integrate application specific print options. This is done by subclassing
+ * KPrintDialogPage and adding the page using addDialogPage().
+ *
+ * When compiling an application that uses KPrinter, you must link to -lkdeprint, which when
+ * using the standard KDE build framework can be done by adding $(LIB_KDEPRINT) to _LDADD.
+ *
+ * @short The central interface class to access the KDE print system.
+ * @author Michael Goffioul
+ * @see QPrinter, KPrintDialogPage
+ */
+class KDEPRINT_EXPORT KPrinter : public QPaintDevice, public KPReloadObject
+{
+friend class KPrinterWrapper;
+friend class KPrinterImpl;
+public:
+ // Print global settings (set via static functions)
+ /**
+ * Defines the standard pages available for the print dialog:
+ * @li @p CopiesPage: page and copies selection (included by default)
+ * @li @p FilesPage: file selection (only used by kprinter utility)
+ * @li @p Custom: unused
+ *
+ * @see addStandardPage(), removeStandardPage()
+ */
+ enum StandardPageType { CopiesPage = 0x01, FilesPage = 0x02, Custom = 0x10 };
+ /**
+ * Defines whether the application can perform page selection itself or not.
+ * Some print systems (like CUPS) can do page selection, in this case the
+ * page selection will be enabled in the print dialog, otherwise it will be
+ * disabled. However some applications (word processor) can do page selection
+ * themselves, then it will be enabled in the print dialog, whatever the
+ * print system used. But such an application has to tell kdeprint about its
+ * feature:
+ * @li @p ApplicationSide: the application will do page selection
+ * @li @p SystemSide: page selection will be left to the print system, if available (default)
+ *
+ * @see setPageSelection(), pageSelection()
+ */
+ enum PageSelectionType { ApplicationSide = 0x01, SystemSide = 0x02 };
+ /**
+ * Defines the type of the application, this affects the GUI of the print dialog:
+ * @li @p Dialog: print dialog used in an application (default)
+ * @li @p StandAlone: print dialog used as a standalone widget
+ * @li @p StandAlonePersistent: print dialog used as standalone widget, but persistent (do not use)
+ *
+ * @internal
+ * @see setApplicationType(), applicationType()
+ */
+ enum ApplicationType { Dialog = 0x00, StandAlone = 0x01, StandAlonePersistent = 0x02 };
+
+ // QPrinter extension
+ /**
+ * Defines the page set to print:
+ * @li @p AllPages: all pages
+ * @li @p OddPages: only odd pages
+ * @li @p EvenPages: only even pages
+ *
+ * @see pageSet()
+ */
+ enum PageSetType { AllPages = 0x00, OddPages = 0x01, EvenPages = 0x02 };
+ /**
+ * Defines the collate property of the printer (if supported by the print system):
+ * @li @p Collate: copies collated (1-2-3-..., 1-2-3-...)
+ * @li @p Uncollate: copies uncollated (1-1-..., 2-2-..., 3-3-...)
+ *
+ * @see setCollate(), collate()
+ */
+ enum CollateType { Collate = 0x00, Uncollate = 0x01 };
+
+ // from QPrinter class
+ /**
+ * Defines the color mode of the printer
+ * @see QPrinter::ColorMode
+ */
+ enum ColorMode { GrayScale = QPrinter::GrayScale, Color = QPrinter::Color };
+ /**
+ * Defines the orientation of the paper
+ * @see QPrinter::Orientation
+ */
+ enum Orientation { Portrait = QPrinter::Portrait, Landscape = QPrinter::Landscape };
+ /**
+ * Defines the page order of the print job
+ * @see QPrinter::PageOrder
+ */
+ enum PageOrder { FirstPageFirst = QPrinter::FirstPageFirst, LastPageFirst = QPrinter::LastPageFirst };
+ /**
+ * Defines the paper size to use
+ * @see QPrinter::PageSize
+ */
+ enum PageSize
+ {
+ A4 = QPrinter::A4,
+ B5 = QPrinter::B5,
+ Letter = QPrinter::Letter,
+ Legal = QPrinter::Legal,
+ Executive = QPrinter::Executive,
+ A0 = QPrinter::A0,
+ A1 = QPrinter::A1,
+ A2 = QPrinter::A2,
+ A3 = QPrinter::A3,
+ A5 = QPrinter::A5,
+ A6 = QPrinter::A6,
+ A7 = QPrinter::A7,
+ A8 = QPrinter::A8,
+ A9 = QPrinter::A9,
+ B0 = QPrinter::B0,
+ B1 = QPrinter::B1,
+ B10 = QPrinter::B10,
+ B2 = QPrinter::B2,
+ B3 = QPrinter::B3,
+ B4 = QPrinter::B4,
+ B6 = QPrinter::B6,
+ B7 = QPrinter::B7,
+ B8 = QPrinter::B8,
+ B9 = QPrinter::B9,
+ C5E = QPrinter::C5E,
+ Comm10E = QPrinter::Comm10E,
+ DLE = QPrinter::DLE,
+ Folio = QPrinter::Folio,
+ Ledger = QPrinter::Ledger,
+ Tabloid = QPrinter::Tabloid,
+ NPageSize = QPrinter::NPageSize
+ };
+
+ // constructors / destructor
+ /**
+ * Constructor. This also restores/saves the state from a previous KPrinter object created within
+ * the same application run, if @p restore is true. Setting @p restore to false may
+ * be useful if you want an independent/clean KPrinter object.
+ * @param restore if true, options will be restored/saved between successive KPrinter objects
+ * @param m the mode to establish the KPrinter in (see QPrinter::PrinterMode)
+ */
+ KPrinter(bool restore = true, QPrinter::PrinterMode m = QPrinter::ScreenResolution );
+ /**
+ * Destructor. This also saves the current KPrinter state for future printing.
+ */
+ ~KPrinter();
+
+ // QPrinter interface (+ some extensions)
+ /**
+ * See QPrinter::newPage().
+ */
+ bool newPage();
+ /**
+ * See QPrinter::abort().
+ */
+ bool abort();
+ /**
+ * See QPrinter::aborted(.)
+ */
+ bool aborted() const;
+ /**
+ * See QPrinter::outputToFile().
+ */
+ bool outputToFile() const;
+ /**
+ * See QPrinter::setOutputToFile().
+ */
+ void setOutputToFile(bool);
+ /**
+ * See QPrinter::outputFileName().
+ */
+ QString outputFileName() const;
+ /**
+ * See QPrinter::setOutputFileName().
+ */
+ void setOutputFileName(const QString&);
+ /**
+ * See QPrinter::docName().
+ */
+ QString docName() const;
+ /**
+ * See QPrinter::setDocName().
+ */
+ void setDocName(const QString&);
+ /**
+ * See QPrinter::creator().
+ */
+ QString creator() const;
+ /**
+ * See QPrinter::setCreator().
+ */
+ void setCreator(const QString&);
+ /**
+ * See QPrinter::fullPage().
+ */
+ bool fullPage() const;
+ /**
+ * See QPrinter::setFullPage().
+ */
+ void setFullPage(bool);
+ /**
+ * See QPrinter::colorMode().
+ */
+ ColorMode colorMode() const;
+ /**
+ * See QPrinter::setColorMode().
+ */
+ void setColorMode(ColorMode);
+ /**
+ * See QPrinter::numCopies().
+ */
+ int numCopies() const;
+ /**
+ * See QPrinter::setNumCopies().
+ */
+ void setNumCopies(int n);
+ /**
+ * See QPrinter::orientation().
+ */
+ Orientation orientation() const;
+ /**
+ * See QPrinter::setOrientation().
+ */
+ void setOrientation(Orientation);
+ /**
+ * See QPrinter::pageOrder().
+ */
+ PageOrder pageOrder() const;
+ /**
+ * See QPrinter::setPageOrder().
+ */
+ void setPageOrder(PageOrder);
+ /**
+ * Returns the collate status of the current KPrinter.
+ */
+ CollateType collate() const;
+ /**
+ * Sets the collate status for the current KPrinter to @p type.
+ */
+ void setCollate(CollateType type);
+ /**
+ * See QPrinter::minPage().
+ */
+ int minPage() const;
+ /**
+ * See QPrinter::maxPage().
+ */
+ int maxPage() const;
+ /**
+ * See QPrinter::setMinMax().
+ */
+ void setMinMax(int, int);
+ /**
+ * Returns the first page to be printed.
+ * @deprecated Applications
+ * should use pageList() instead, which takes into account all options: collate,
+ * page order, ranges, page set, ...
+ *
+ * @see pageList()
+ */
+ int fromPage() const KDE_DEPRECATED;
+ /**
+ * Returns the last page to be printed.
+ * @deprecated Applications
+ * should use pageList() instead, which takes into account all options: collate,
+ * page order, ranges, page set, ...
+ *
+ * @see pageList()
+ */
+ int toPage() const;
+ /**
+ * Sets the first and last page to be printed. See QPrinter::setFromTo().
+ */
+ void setFromTo(int, int);
+ /**
+ * See QPrinter::pageSize().
+ */
+ PageSize pageSize() const;
+ /**
+ * See QPrinter::setPageSize().
+ */
+ void setPageSize(PageSize);
+ /**
+ * See QPrinter::printerName().
+ */
+ QString printerName() const;
+ /**
+ * See QPrinter::setPrinterName().
+ */
+ void setPrinterName(const QString&);
+ /**
+ * Returns the print program as set by setPrintProgram() or by the print dialog
+ * if a special printer has been selected.
+ * @return the print command line
+ * @see setPrintProgram()
+ */
+ QString printProgram() const;
+ /**
+ * Sets the command line to use when printing. This function is useful
+ * when using a KPrinter object without the print dialog, to control what
+ * to print and how to do it. The command line may contain the following
+ * tags:
+ * @li %in : the input file to the print program. It is required and automatically
+ * appended at the end of the command line if not present.
+ * @li %out : the output file. Use this tag in conjunction with setOutputToFile()
+ * and setOutputFileName()
+ * @li %psl : the page size in lower case. This may be useful with some
+ * programs like gs.
+ * \code
+ * void createPNGOutputFile(const QString& filename)
+ * {
+ * // use a clean KPrinter object
+ * KPrinter prt(false);
+ *
+ * prt.setOutputToFile( true );
+ * prt.setOutputFileName( filename );
+ * prt.setPrintProgram( "gs -sDEVICE=png256 -sPAPERSIZE=%psl -sOutputFile=%out %in" );
+ *
+ * QPainter painter( &prt );
+ * doPaint( &painter );
+ * }
+ * \endcode
+ * @param cmd the print command line (containing at least the @p %in tag)
+ * @see printProgram()
+ */
+ void setPrintProgram(const QString& cmd);
+ /**
+ * See QPrinter::printerSelectionOption(). Unused.
+ */
+ QString printerSelectionOption() const;
+ /**
+ * See QPrinter::setPrinterSelectionOption(). Unused
+ */
+ void setPrinterSelectionOption(const QString&);
+ /**
+ * Returns the current page number.
+ * @see setCurrentPage()
+ */
+ int currentPage() const;
+ /**
+ * Sets the current page number. This page number will be used if the user
+ * selected "current page" in the print dialog. This option will only be
+ * enabled if the application does page selection itself and the application
+ * has called setCurrentPage() before opening the print dialog:
+ * \code
+ * MyClass::MyClass()
+ * {
+ * // declares my application able to do page selection
+ * KPrinter::setPageSelection( KPrinter::ApplicationSide );
+ * }
+ *
+ * void MyClass::doPrint()
+ * {
+ * KPrinter printer;
+ *
+ * printer.setCurrentPage( mycurrentpage );
+ * if ( printer.setup( this ) )
+ * {
+ * QValueList<int> pages = printer.pageList();
+ * // print the pages
+ * ...
+ * }
+ * }
+ * \endcode
+ * @param p the current page number (starting from 1)
+ */
+ void setCurrentPage(int p = 0);
+ /**
+ * Returns the page set of the current KPrinter object.
+ */
+ PageSetType pageSet() const;
+ /**
+ * Sets up the KPrinter object using the print dialog, returns true if the user clicked OK.
+ * @param parent the parent widget to use for the print dialog
+ * @param caption the caption to use in the print dialog
+ * @param forceExpand force the expansion of the dialog (the show/hide button will be hidden)
+ * @returns boolean value corresponding to the button clicked by the user
+ */
+ bool setup(QWidget *parent = 0, const QString& caption = QString::null, bool forceExpand = false);
+ /**
+ * See QPrinter::margins().
+ */
+ QSize margins() const;
+ /**
+ * Not used yet.
+ */
+ void setMargins(QSize m);
+ /**
+ * Returns the page size in dot unit ( 1 dot = 1/72th in ). This method is intended for
+ * internal use, if you want to access actual page size, use a QPaintDeviceMetrics object
+ * instead. Note that the size returned by this method does not take resolution into
+ * account, and that it can returns invalid size if no page metric was found in the printer
+ * driver. DO NOT USE, WILL BE REMOVED.
+ * @see setRealPageSize
+ * @obsolete
+ */
+ QSize realPageSize() const;
+ /**
+ * DO NOT USE, WILL BE REMOVED.
+ * @obsolete
+ */
+ void setRealPageSize( QSize p );
+ /**
+ * DO NOT USE, WILL BE REMOVED.
+ * @obsolete
+ */
+ void setRealDrawableArea( const QRect& r );
+ /**
+ * DO NOT USE, WILL BE REMOVED.
+ * @obsolete
+ */
+ QRect realDrawableArea() const;
+
+ void margins( uint *top, uint *left, uint *bottom, uint *right ) const;
+ void setMargins( uint top, uint left, uint bottom, uint right );
+
+ /**
+ * Returns the page list to be printed, correpsonding to the options selected by the user. This
+ * takes into account collate, page order, page set, ranges, ... This is useful when the
+ * application does page selection itself.
+ * @see setCurrentPage()
+ */
+ QValueList<int> pageList() const;
+ /**
+ * Sets the KPrinter object to preview mode if @p on is true. In this mode, nothing will be
+ * printed but only a preview dialog will be popped up with the single "Close" action. Using
+ * this mode, any application can easily implement a preview action:
+ * \code
+ * void MyClass:doPreview()
+ * {
+ * // use a "clean" KPrinter object (independent from previous print jobs),
+ * // this is not necessary, it depends on the application
+ * KPrinter prt( false );
+ * prt.setPreviewOnly( true );
+ *
+ * QPainter painter( &prt );
+ * doPrint( &painter );
+ * }
+ * \endcode
+ * @param on the preview-only state
+ * @see previewOnly()
+ */
+ void setPreviewOnly(bool on);
+ /**
+ * Returns the preview-only state for this KPrinter object.
+ * @see setPreviewOnly()
+ */
+ bool previewOnly() const;
+ /**
+ * Set the resolution of the current KPrinter object. The resolution is given in DPI. This
+ * resolution mainly affects the accuracy for object positionning on the paint device, and
+ * does not influence the real resolution that will be used by the printer (this should be
+ * set in the driver settings). The resolution is usually defined in the constructor.
+ * @param dpi the resolution in DPI
+ * @see KPrinter(), resolution()
+ */
+ void setResolution(int dpi);
+ /**
+ * Resturns the resolution of the current KPrinter object. The resolution is given in DPI.
+ * @returns resolution in DPI
+ * @see setResolution(), KPrinter()
+ */
+ int resolution() const;
+
+ /**
+ * Define the KPrinter object to use the actual printer resolution. Under some print systems
+ * (CUPS, Foomatic, PostScript printers), it is possible to know the actual resolution that
+ * is used by the printer, as selected by the user in the driver settings. If @p on is true,
+ * this KPrinter object will use the actual printer resolution if it is able to extract it.
+ * If nothing can be found, the default resolution will be the one defined by the PrinterMode
+ * argument used in the KPrinter constructor, or set explicitly by setResolution().
+ * @param on true if the KPrinter object should use the actual printer resolution
+ * @see resolution(), setResolution()
+ */
+ void setUsePrinterResolution( bool on );
+
+ /**
+ * For internal use only.
+ */
+ KPrinterImpl* implementation() const;
+ /**
+ * Prints the files given in argument. This will first filter the files accorsing to the filtering
+ * options selected by the user in the print dialog, then send the filtered files to the printer
+ * with the print options selected. This function is called automatically when calling
+ * QPainter::end() for a painter object constructed on KPrinter. In normal use, you don't need
+ * this use this function explicitly.
+ */
+ bool printFiles(const QStringList& files, bool removeafter = false, bool startviewer = true);
+
+ /**
+ * Adds a customized page to the print dialog. The pages will appear in a tab widget in the
+ * bottom half of the dialog, along with the standard "Copies" page. The page must be created
+ * and added each time you want open a print dialog with setup(). If you correctly
+ * reimplemented KPrintDialogPage::setOptions(), the settings will be restored from call
+ * to call, you don't have to worry about state saving/restoration.
+ * @param _page the page to add
+ * @see KPrintDialogPage::setOptions()
+ */
+ static void addDialogPage(KPrintDialogPage* _page);
+ /**
+ * Sets the page selection mode of the application. If needed, call this method somewhere at
+ * the beginning of your code. The default value is @p SystemSide.
+ * @param _mode the mode for the application
+ * @see pageSelection()
+ */
+ static void setPageSelection(PageSelectionType _mode);
+ /**
+ * Returns the page selection mode of the current application.
+ * @returns the page selection mode
+ * @see setPageSelection()
+ */
+ static PageSelectionType pageSelection();
+ /**
+ * Sets the application type concerning the print dialog. You probably don't want to use it.
+ * For internal use only.
+ * @param type the type for this application
+ * @see applicationType()
+ */
+ static void setApplicationType(ApplicationType type);
+ /**
+ * Returns the application type concerning the print dialog. For internal use only.
+ * @returns the type for the current application
+ * @see setApplicationType()
+ */
+ static ApplicationType applicationType();
+ /**
+ * Adds a standard page to the print dialog. This is not useful yet as there's only one
+ * standard page defines @p CopiesPage.
+ * @param p the page identifier
+ * @see StandardPageType
+ */
+ static void addStandardPage(int p);
+ /**
+ * Removes a standard page from the print dialog. If your application doesn't want a
+ * standard page in the dialog, simply call this method with the correct identifier.
+ * By default, the print dialog includes the @p CopiesPage page.
+ * @param p the page identifier
+ * @see StandardPageType
+ */
+ static void removeStandardPage(int p);
+ /**
+ * Starts the add printer wizard. This utility function allows any application for
+ * adding a printer using the KDEPrint powerful wizard.
+ * @param parent the parent widget for the wizard
+ * @returns 1: success, 0: cancel, -1: error
+ */
+ //static int addPrinterWizard(QWidget *parent = 0);
+
+ /**
+ * The KPrinter object stores all its settings in an internal QMap structure on
+ * QString. This allows to store any property. This method allows an application to access
+ * any print option from the KPrinter object, using the option name. For example if your
+ * application add a customized page to the print dialog, this page will saves its settings
+ * into the KPrinter object using this QMap<QString,QString> structure. After showing the
+ * print dialog, your application can then access these options using this method. The
+ * custom option name should follow the form "kde-appname-optionname".
+ * \code
+ * void MyClass::doPrint()
+ * {
+ * KPrinter prt;
+ *
+ * // add my custom page
+ * prt.addDialogPage( new MyDialogPage() );
+ *
+ * // open print dialog
+ * if ( prt.setup( this ) )
+ * {
+ * QString fntname = prt.option( "kde-myapp-fontname" );
+ * ...
+ * do_something;
+ * ...
+ * }
+ * }
+ * \endcode
+ * @param key the option name (key)
+ * @returns the option value correponding to the key, or QString::null
+ * @see KPrintDialogPage, setOption, options(), setOptions()
+ */
+ const QString& option(const QString& key) const;
+ /**
+ * Adds or modifies an option in the KPrinter object. You probably don't need to use this function
+ * explicitly. This will be done implicitely for example when reimplementing
+ * KPrintDialogPage::getOptions().
+ * @param key the option name
+ * @param value the option value
+ * @see option(), KPrintDialogPage
+ */
+ void setOption(const QString& key, const QString& value);
+ /**
+ * Returns the complete set of print options from the KPrinter object. For internal use.
+ * @returns the option set as a QMap object
+ */
+ const QMap<QString,QString>& options() const;
+ /**
+ * Sets the option set in one operation. This method has some side effects like merging
+ * the internal map with the one given in argument, but only for option in the form
+ * "kde-...". For internal use only.
+ * @param opts the option set to be merged in the KPrinter object
+ */
+ void setOptions(const QMap<QString,QString>& opts);
+ /**
+ * For internal use only. Does a similar job as setOption(), except that all possible
+ * internal printers are initialized with the option if it has the form "kde-...".
+ * @param opts the option set
+ * @see setOptions()
+ */
+ void initOptions(const QMap<QString,QString>& opts);
+
+ /**
+ * Returns the search name of the printer selected by the user. Each printer is identified by
+ * a unique name. This method is mainly used for state restoration. For internal use.
+ * @returns the unique printer search name
+ * @see setSearchName
+ */
+ QString searchName() const;
+ /**
+ * Sets the search name of the KPrinter object. For internal use.
+ * @param n the unique printer search name
+ * @see searchName()
+ */
+ void setSearchName(const QString& n);
+ /**
+ * Returns the last error message issued by the print system. Unimplemented yet.
+ * @returns the last error message
+ */
+ QString errorMessage() const;
+ /**
+ * Sets the last error message. For internal use.
+ * @param msg the error message
+ */
+ void setErrorMessage(const QString& msg);
+ /**
+ * Configure the KPrinter object to be used with the printer named
+ * @p prname. After the call, the KPrinter object can be used without
+ * the need to call the print dialog. If @p prname is empty, then the
+ * KPrinter object is configured for the default printer. If @p prname
+ * corresponds to a pseudo-printer which needs an output file, a file
+ * dialog will be used. In that case, providing a parent widget for
+ * that dialog in @p parent may be useful.
+ * @param prname the name of the printer for which the KPrinter object
+ * has to be configured
+ * @param parent a parent widget, used a parent for a file dialog
+ * @returns boolean flag: if false, the KPrinter has not been correctly
+ * set up, and the application shouldn't use it to print. This may
+ * happen if the printer named @p prname has not been found or if the
+ * user clicked "Cancel" in the file dialog.
+ * @see setup()
+ */
+ bool autoConfigure(const QString& prname = QString::null, QWidget *parent = 0);
+ /**
+ * Set the default document filename. This filename will be used as the
+ * default basename for the output file, instead of the default "print".
+ * For example, by using setDocFileName("my_document"), the default
+ * output file will be $HOME/my_document.ps.
+ * @param filename the default document basename to use
+ * @see docFileName()
+ */
+ void setDocFileName(const QString& filename);
+ /**
+ * Get the default document filename, that is the default basename used for
+ * the output file.
+ * @returns the default document basename
+ * @see setDocFileName()
+ */
+ QString docFileName() const;
+ /**
+ * Set the default document directory. This directory will be used as
+ * the default location for any output file. If not set, $HOME directory
+ * is used instead.
+ * @param dir the new default output directory
+ * @see docDirectory()
+ */
+ void setDocDirectory( const QString& dir );
+ /**
+ * Get the default document directory, that is the directory used for
+ * any output file. By default, it is the $HOME directory.
+ * @returns the default output directory
+ * @see setDocDirectory
+ */
+ QString docDirectory() const;
+
+protected:
+ virtual bool cmd(int, QPainter*, QPDevCmdParam*);
+ virtual int metric(int) const;
+ void translateQtOptions();
+ void loadSettings();
+ void saveSettings();
+ void preparePrinting();
+ void finishPrinting();
+ void reload();
+ void init(bool restore = true, QPrinter::PrinterMode m = QPrinter::ScreenResolution);
+ bool doPreview(const QString& file);
+ void setRealPageSize(DrPageSize* p);
+ void setOption( const QString& key, const QString& value, bool broadcast );
+
+protected:
+ KPrinterPrivate *d;
+};
+
+//**************************************************************************************
+
+// Utility functions
+
+KDEPRINT_EXPORT KPrinter::PageSize pageNameToPageSize(const QString& name);
+KDEPRINT_EXPORT const char* pageSizeToPageName(KPrinter::PageSize s);
+/**
+ * DO NOT USE, WILL BE REMOVED.
+ * @obsolete
+ */
+QSize rangeToSize( const QString& );
+
+#endif