summaryrefslogtreecommitdiffstats
path: root/kdeprint
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit4aed2c8219774f5d797760606b8489a92ddc5163 (patch)
tree3f8c130f7d269626bf6a9447407ef6c35954426a /kdeprint
downloadtdebase-4aed2c8219774f5d797760606b8489a92ddc5163.tar.gz
tdebase-4aed2c8219774f5d797760606b8489a92ddc5163.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdeprint')
-rw-r--r--kdeprint/Makefile.am1
-rw-r--r--kdeprint/configure.in.in1
-rw-r--r--kdeprint/descriptions/Makefile.am24
-rw-r--r--kdeprint/descriptions/printers.cpp7084
-rwxr-xr-xkdeprint/descriptions/readppd83
-rw-r--r--kdeprint/descriptions/sortthem.cpp28
-rw-r--r--kdeprint/kdeprint_part/Makefile.am24
-rw-r--r--kdeprint/kdeprint_part/kdeprint_part.desktop85
-rw-r--r--kdeprint/kdeprint_part/kdeprint_part.rc28
-rw-r--r--kdeprint/kdeprint_part/printpart.cpp81
-rw-r--r--kdeprint/kdeprint_part/printpart.h59
-rw-r--r--kdeprint/kdeprintfax/Makefile.am23
-rwxr-xr-xkdeprint/kdeprintfax/anytops98
-rw-r--r--kdeprint/kdeprintfax/conffax.cpp80
-rw-r--r--kdeprint/kdeprintfax/conffax.h40
-rw-r--r--kdeprint/kdeprintfax/conffilters.cpp192
-rw-r--r--kdeprint/kdeprintfax/conffilters.h48
-rw-r--r--kdeprint/kdeprintfax/confgeneral.cpp90
-rw-r--r--kdeprint/kdeprintfax/confgeneral.h43
-rw-r--r--kdeprint/kdeprintfax/configdlg.cpp75
-rw-r--r--kdeprint/kdeprintfax/configdlg.h48
-rw-r--r--kdeprint/kdeprintfax/confsystem.cpp199
-rw-r--r--kdeprint/kdeprintfax/confsystem.h50
-rw-r--r--kdeprint/kdeprintfax/cr16-action-abentry.pngbin0 -> 864 bytes
-rw-r--r--kdeprint/kdeprintfax/defcmds.cpp38
-rw-r--r--kdeprint/kdeprintfax/defcmds.h32
-rw-r--r--kdeprint/kdeprintfax/faxab.cpp212
-rw-r--r--kdeprint/kdeprintfax/faxab.h64
-rw-r--r--kdeprint/kdeprintfax/faxctrl.cpp669
-rw-r--r--kdeprint/kdeprintfax/faxctrl.h73
-rw-r--r--kdeprint/kdeprintfax/faxfilters3
-rw-r--r--kdeprint/kdeprintfax/filterdlg.cpp72
-rw-r--r--kdeprint/kdeprintfax/filterdlg.h41
-rw-r--r--kdeprint/kdeprintfax/hi128-app-kdeprintfax.pngbin0 -> 10612 bytes
-rw-r--r--kdeprint/kdeprintfax/hi16-app-kdeprintfax.pngbin0 -> 787 bytes
-rw-r--r--kdeprint/kdeprintfax/hi22-app-kdeprintfax.pngbin0 -> 1241 bytes
-rw-r--r--kdeprint/kdeprintfax/hi32-app-kdeprintfax.pngbin0 -> 1928 bytes
-rw-r--r--kdeprint/kdeprintfax/hi48-app-kdeprintfax.pngbin0 -> 3352 bytes
-rw-r--r--kdeprint/kdeprintfax/hi64-app-kdeprintfax.pngbin0 -> 4669 bytes
-rw-r--r--kdeprint/kdeprintfax/hisc-app-kdeprintfax.svgzbin0 -> 11876 bytes
-rw-r--r--kdeprint/kdeprintfax/kdeprintfax.cpp607
-rw-r--r--kdeprint/kdeprintfax/kdeprintfax.desktop97
-rw-r--r--kdeprint/kdeprintfax/kdeprintfax.h115
-rw-r--r--kdeprint/kdeprintfax/kdeprintfaxui.rc31
-rw-r--r--kdeprint/kdeprintfax/main.cpp78
-rw-r--r--kdeprint/kjobviewer/Makefile.am24
-rw-r--r--kdeprint/kjobviewer/hi128-app-kjobviewer.pngbin0 -> 8472 bytes
-rw-r--r--kdeprint/kjobviewer/hi16-app-kjobviewer.pngbin0 -> 684 bytes
-rw-r--r--kdeprint/kjobviewer/hi22-app-kjobviewer.pngbin0 -> 1003 bytes
-rw-r--r--kdeprint/kjobviewer/hi32-app-kjobviewer.pngbin0 -> 1633 bytes
-rw-r--r--kdeprint/kjobviewer/hi48-app-kjobviewer.pngbin0 -> 2588 bytes
-rw-r--r--kdeprint/kjobviewer/hi64-app-kjobviewer.pngbin0 -> 3720 bytes
-rw-r--r--kdeprint/kjobviewer/hisc-app-kjobviewer.svgzbin0 -> 17679 bytes
-rw-r--r--kdeprint/kjobviewer/kjobviewer.cpp233
-rw-r--r--kdeprint/kjobviewer/kjobviewer.desktop92
-rw-r--r--kdeprint/kjobviewer/kjobviewer.h57
-rw-r--r--kdeprint/kjobviewer/kjobviewerui.rc35
-rw-r--r--kdeprint/kjobviewer/main.cpp49
-rw-r--r--kdeprint/kprinter/Makefile.am18
-rw-r--r--kdeprint/kprinter/configure.in.in1
-rw-r--r--kdeprint/kprinter/kprinter.desktop107
-rw-r--r--kdeprint/kprinter/main.cpp58
-rw-r--r--kdeprint/kprinter/printwrapper.cpp403
-rw-r--r--kdeprint/kprinter/printwrapper.h49
-rw-r--r--kdeprint/printmgr/Makefile.am18
-rw-r--r--kdeprint/printmgr/hi128-app-printmgr.pngbin0 -> 8472 bytes
-rw-r--r--kdeprint/printmgr/hi16-app-printmgr.pngbin0 -> 684 bytes
-rw-r--r--kdeprint/printmgr/hi22-app-printmgr.pngbin0 -> 1003 bytes
-rw-r--r--kdeprint/printmgr/hi32-app-printmgr.pngbin0 -> 1633 bytes
-rw-r--r--kdeprint/printmgr/hi48-app-printmgr.pngbin0 -> 2588 bytes
-rw-r--r--kdeprint/printmgr/hi64-app-printmgr.pngbin0 -> 3720 bytes
-rw-r--r--kdeprint/printmgr/hisc-app-printmgr.svgzbin0 -> 17679 bytes
-rw-r--r--kdeprint/printmgr/kcmprintmgr.cpp73
-rw-r--r--kdeprint/printmgr/kcmprintmgr.h39
-rw-r--r--kdeprint/printmgr/printers.desktop235
-rw-r--r--kdeprint/slave/Makefile.am22
-rw-r--r--kdeprint/slave/kio_print.cpp920
-rw-r--r--kdeprint/slave/kio_print.h70
-rw-r--r--kdeprint/slave/mimetypes/Makefile.am3
-rw-r--r--kdeprint/slave/mimetypes/class.desktop75
-rw-r--r--kdeprint/slave/mimetypes/driver.desktop76
-rw-r--r--kdeprint/slave/mimetypes/folder.desktop76
-rw-r--r--kdeprint/slave/mimetypes/jobs.desktop85
-rw-r--r--kdeprint/slave/mimetypes/manager.desktop87
-rw-r--r--kdeprint/slave/mimetypes/printer.desktop79
-rw-r--r--kdeprint/slave/mimetypes/printermodel.desktop78
-rw-r--r--kdeprint/slave/print.protocol15
-rw-r--r--kdeprint/slave/printdb.protocol14
-rw-r--r--kdeprint/slave/templates/Makefile.am31
-rw-r--r--kdeprint/slave/templates/bar-bottom-left.pngbin0 -> 369 bytes
-rw-r--r--kdeprint/slave/templates/bar-bottom-middle.pngbin0 -> 160 bytes
-rw-r--r--kdeprint/slave/templates/bar-bottom-right.pngbin0 -> 346 bytes
-rw-r--r--kdeprint/slave/templates/bar-middle-left.pngbin0 -> 126 bytes
-rw-r--r--kdeprint/slave/templates/bar-middle-right.pngbin0 -> 141 bytes
-rw-r--r--kdeprint/slave/templates/bar-top-left.pngbin0 -> 358 bytes
-rw-r--r--kdeprint/slave/templates/bar-top-middle.pngbin0 -> 145 bytes
-rw-r--r--kdeprint/slave/templates/bar-top-right.pngbin0 -> 359 bytes
-rw-r--r--kdeprint/slave/templates/bottom-left.pngbin0 -> 665 bytes
-rw-r--r--kdeprint/slave/templates/bottom-middle.pngbin0 -> 174 bytes
-rw-r--r--kdeprint/slave/templates/bottom-right.pngbin0 -> 4922 bytes
-rw-r--r--kdeprint/slave/templates/box-bottom-left.pngbin0 -> 616 bytes
-rw-r--r--kdeprint/slave/templates/box-bottom-middle.pngbin0 -> 171 bytes
-rw-r--r--kdeprint/slave/templates/box-bottom-right.pngbin0 -> 578 bytes
-rw-r--r--kdeprint/slave/templates/box-centre-kdeprint.pngbin0 -> 9633 bytes
-rw-r--r--kdeprint/slave/templates/box-middle-left.pngbin0 -> 157 bytes
-rw-r--r--kdeprint/slave/templates/box-middle-right.pngbin0 -> 161 bytes
-rw-r--r--kdeprint/slave/templates/box-top-left.pngbin0 -> 673 bytes
-rw-r--r--kdeprint/slave/templates/box-top-middle.pngbin0 -> 181 bytes
-rw-r--r--kdeprint/slave/templates/box-top-right.pngbin0 -> 679 bytes
-rw-r--r--kdeprint/slave/templates/class.template188
-rw-r--r--kdeprint/slave/templates/driver.template133
-rw-r--r--kdeprint/slave/templates/htmlstyles.css38
-rw-r--r--kdeprint/slave/templates/jobs.template140
-rw-r--r--kdeprint/slave/templates/printer.template205
-rw-r--r--kdeprint/slave/templates/pseudo.template188
-rw-r--r--kdeprint/slave/templates/top-left.pngbin0 -> 15484 bytes
-rw-r--r--kdeprint/slave/templates/top-middle.pngbin0 -> 233 bytes
-rw-r--r--kdeprint/slave/templates/top-right-kdeprint.pngbin0 -> 13466 bytes
118 files changed, 14630 insertions, 0 deletions
diff --git a/kdeprint/Makefile.am b/kdeprint/Makefile.am
new file mode 100644
index 000000000..81364da3d
--- /dev/null
+++ b/kdeprint/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = printmgr kjobviewer kprinter kdeprintfax slave kdeprint_part
diff --git a/kdeprint/configure.in.in b/kdeprint/configure.in.in
new file mode 100644
index 000000000..255d82a9b
--- /dev/null
+++ b/kdeprint/configure.in.in
@@ -0,0 +1 @@
+dnl nothing special
diff --git a/kdeprint/descriptions/Makefile.am b/kdeprint/descriptions/Makefile.am
new file mode 100644
index 000000000..b8b0bd95a
--- /dev/null
+++ b/kdeprint/descriptions/Makefile.am
@@ -0,0 +1,24 @@
+KDE_OPTIONS = qtonly
+# Note: sortthem does not sort! (It is just a sort of uniq(1)
+
+INCLUDES = $(all_includes)
+
+EXTRA_PROGRAMS = sortthem
+
+sortthem_SOURCES = sortthem.cpp
+sortthem_LDFLAGS = $(all_libraries) $(LIB_QT)
+
+printers.cpp: sortthem
+ : > printers.cpp
+ for i in `find /usr/share/cups/model -type f ! -name '*.gz'`; do perl $(srcdir)/readppd < $$i >> printers.cpp; done
+ for i in `find /usr/share/cups/model -type f -name '*.gz'`; do \
+ gzip -cd $$i | perl $(srcdir)/readppd >> printers.cpp; done
+ iconv -flatin1 -tutf-8 printers.cpp | grep -v '"[-0-9][0-9]*")' > printers.new
+ mv printers.new printers.cpp
+ ./sortthem < printers.cpp | perl -n -e "print \"// xgettext: no-c-format\n\".\$$_;" > printers.new && mv printers.new $(srcdir)/printers.cpp
+
+messages:
+ $(XGETTEXT) printers.cpp -o $(podir)/../kdelibs/ppdtranslations.pot
+
+.PHONY: printers.cpp
+
diff --git a/kdeprint/descriptions/printers.cpp b/kdeprint/descriptions/printers.cpp
new file mode 100644
index 000000000..274c5084b
--- /dev/null
+++ b/kdeprint/descriptions/printers.cpp
@@ -0,0 +1,7084 @@
+// xgettext: no-c-format
+i18n("Executive");
+// xgettext: no-c-format
+i18n("Envelope B5");
+// xgettext: no-c-format
+i18n("Envelope #10");
+// xgettext: no-c-format
+i18n("Envelope DL");
+// xgettext: no-c-format
+i18n("PageRegion");
+// xgettext: no-c-format
+i18n("Media Source");
+// xgettext: no-c-format
+i18n("Default");
+// xgettext: no-c-format
+i18n("Manual Feed");
+// xgettext: no-c-format
+i18n("Output Resolution");
+// xgettext: no-c-format
+i18n("150 DPI");
+// xgettext: no-c-format
+i18n("300 DPI");
+// xgettext: no-c-format
+i18n("600 DPI");
+// xgettext: no-c-format
+i18n("1200 DPI");
+// xgettext: no-c-format
+i18n("2400 DPI");
+// xgettext: no-c-format
+i18n("Double-Sided Printing");
+// xgettext: no-c-format
+i18n("Off");
+// xgettext: no-c-format
+i18n("Long Edge (Standard)");
+// xgettext: no-c-format
+i18n("Short Edge (Flip)");
+// xgettext: no-c-format
+i18n("US Letter");
+// xgettext: no-c-format
+i18n("US Legal");
+// xgettext: no-c-format
+i18n("US Executive");
+// xgettext: no-c-format
+i18n("US Tabloid");
+// xgettext: no-c-format
+i18n("A3");
+// xgettext: no-c-format
+i18n("Media Type");
+// xgettext: no-c-format
+i18n("Plain Paper");
+// xgettext: no-c-format
+i18n("Bond Paper");
+// xgettext: no-c-format
+i18n("Special Paper");
+// xgettext: no-c-format
+i18n("Transparency");
+// xgettext: no-c-format
+i18n("Glossy Paper");
+// xgettext: no-c-format
+i18n("Tray");
+// xgettext: no-c-format
+i18n("Envelope Feed");
+// xgettext: no-c-format
+i18n("Output Mode");
+// xgettext: no-c-format
+i18n("CMYK Color");
+// xgettext: no-c-format
+i18n("CMY Color");
+// xgettext: no-c-format
+i18n("Grayscale");
+// xgettext: no-c-format
+i18n("600x300 DPI");
+// xgettext: no-c-format
+i18n("CRET Color");
+// xgettext: no-c-format
+i18n("Duplexer");
+// xgettext: no-c-format
+i18n("Address - 1 1/8 x 3 1/2\"");
+// xgettext: no-c-format
+i18n("Large Address - 1 4/10 x 3 1/2\"");
+// xgettext: no-c-format
+i18n("Return Address - 3/4 x 2\"");
+// xgettext: no-c-format
+i18n("Shipping Address - 2 5/16 x 4\"");
+// xgettext: no-c-format
+i18n("Internet Postage 2-Part - 2 1/4 x 7 1/2\"");
+// xgettext: no-c-format
+i18n("Internet Postage 3-Part - 2 1/4 x 7\"");
+// xgettext: no-c-format
+i18n("File Folder - 9/16 x 3 7/16\"");
+// xgettext: no-c-format
+i18n("Hanging Folder - 9/16 x 2\"");
+// xgettext: no-c-format
+i18n("3.5\" Disk - 2 1/8 x 2 3/4\"");
+// xgettext: no-c-format
+i18n("136 DPI");
+// xgettext: no-c-format
+i18n("203 DPI");
+// xgettext: no-c-format
+i18n("Output Darkness");
+// xgettext: no-c-format
+i18n("Normal");
+// xgettext: no-c-format
+i18n("FanFoldUS");
+// xgettext: no-c-format
+i18n("60 DPI");
+// xgettext: no-c-format
+i18n("120x60 DPI");
+// xgettext: no-c-format
+i18n("180 DPI");
+// xgettext: no-c-format
+i18n("360x180 DPI");
+// xgettext: no-c-format
+i18n("360 DPI");
+// xgettext: no-c-format
+i18n("60x72 DPI");
+// xgettext: no-c-format
+i18n("120x72 DPI");
+// xgettext: no-c-format
+i18n("240x72 DPI");
+// xgettext: no-c-format
+i18n("Tray 4");
+// xgettext: no-c-format
+i18n("720 DPI");
+// xgettext: no-c-format
+i18n("Page Size and Printing Quality");
+// xgettext: no-c-format
+i18n("A4, 600x600 DPI");
+// xgettext: no-c-format
+i18n("Letter, 600x600 DPI");
+// xgettext: no-c-format
+i18n("A4, 1200x600 DPI");
+// xgettext: no-c-format
+i18n("B5, 600x600 DPI");
+// xgettext: no-c-format
+i18n("B5, 1200x600 DPI");
+// xgettext: no-c-format
+i18n("Legal, 600x600 DPI");
+// xgettext: no-c-format
+i18n("Legal, 1200x600 DPI");
+// xgettext: no-c-format
+i18n("Letter, 1200x600 DPI");
+// xgettext: no-c-format
+i18n("High Grade Paper");
+// xgettext: no-c-format
+i18n("Back Print Media");
+// xgettext: no-c-format
+i18n("Iron-On Transfer Sheet");
+// xgettext: no-c-format
+i18n("Hot OHP Media");
+// xgettext: no-c-format
+i18n("Post Card");
+// xgettext: no-c-format
+i18n("Thick Paper");
+// xgettext: no-c-format
+i18n("Printing Mode");
+// xgettext: no-c-format
+i18n("BlackOnly");
+// xgettext: no-c-format
+i18n("Colour");
+// xgettext: no-c-format
+i18n("HalfTone");
+// xgettext: no-c-format
+i18n("NoHalfTone");
+// xgettext: no-c-format
+i18n("Dithering");
+// xgettext: no-c-format
+i18n("FloydSteinberg");
+// xgettext: no-c-format
+i18n("NoFloydSteinberg");
+// xgettext: no-c-format
+i18n("Banding");
+// xgettext: no-c-format
+i18n("NoBanding");
+// xgettext: no-c-format
+i18n("Colour Mode");
+// xgettext: no-c-format
+i18n("CMY");
+// xgettext: no-c-format
+i18n("Colour Correction Mode");
+// xgettext: no-c-format
+i18n("FullBlack");
+// xgettext: no-c-format
+i18n("Colour correction");
+// xgettext: no-c-format
+i18n("NoColourCorrection");
+// xgettext: no-c-format
+i18n("ColourCorrection");
+// xgettext: no-c-format
+i18n("How often every dot is printed");
+// xgettext: no-c-format
+i18n("PrintTwice");
+// xgettext: no-c-format
+i18n("PrintOnce");
+// xgettext: no-c-format
+i18n("Black Printing Mode");
+// xgettext: no-c-format
+i18n("SolidBlack");
+// xgettext: no-c-format
+i18n("MixedBlack");
+// xgettext: no-c-format
+i18n("Square Dithering");
+// xgettext: no-c-format
+i18n("SquareDithering");
+// xgettext: no-c-format
+i18n("NoSquareDithering");
+// xgettext: no-c-format
+i18n("Do Curl Correction");
+// xgettext: no-c-format
+i18n("CurlCorrectionAlways");
+// xgettext: no-c-format
+i18n("CurlCorrectionAfterFinal");
+// xgettext: no-c-format
+i18n("Curl Correction on current pass");
+// xgettext: no-c-format
+i18n("NoCurlCorrectionOnCurrent");
+// xgettext: no-c-format
+i18n("CurlCorrectionOnCurrent");
+// xgettext: no-c-format
+i18n("Colour Intensity");
+// xgettext: no-c-format
+i18n("Line Feed Adjustment");
+// xgettext: no-c-format
+i18n("Gamma");
+// xgettext: no-c-format
+i18n("0.00");
+// xgettext: no-c-format
+i18n("0.05");
+// xgettext: no-c-format
+i18n("0.10");
+// xgettext: no-c-format
+i18n("0.15");
+// xgettext: no-c-format
+i18n("0.20");
+// xgettext: no-c-format
+i18n("0.25");
+// xgettext: no-c-format
+i18n("0.30");
+// xgettext: no-c-format
+i18n("0.35");
+// xgettext: no-c-format
+i18n("0.40");
+// xgettext: no-c-format
+i18n("0.45");
+// xgettext: no-c-format
+i18n("0.50");
+// xgettext: no-c-format
+i18n("0.55");
+// xgettext: no-c-format
+i18n("0.60");
+// xgettext: no-c-format
+i18n("0.65");
+// xgettext: no-c-format
+i18n("0.70");
+// xgettext: no-c-format
+i18n("0.75");
+// xgettext: no-c-format
+i18n("0.80");
+// xgettext: no-c-format
+i18n("0.85");
+// xgettext: no-c-format
+i18n("0.90");
+// xgettext: no-c-format
+i18n("0.95");
+// xgettext: no-c-format
+i18n("1.00");
+// xgettext: no-c-format
+i18n("1.05");
+// xgettext: no-c-format
+i18n("1.10");
+// xgettext: no-c-format
+i18n("1.15");
+// xgettext: no-c-format
+i18n("1.20");
+// xgettext: no-c-format
+i18n("1.25");
+// xgettext: no-c-format
+i18n("1.30");
+// xgettext: no-c-format
+i18n("1.35");
+// xgettext: no-c-format
+i18n("1.40");
+// xgettext: no-c-format
+i18n("1.45");
+// xgettext: no-c-format
+i18n("1.50");
+// xgettext: no-c-format
+i18n("1.55");
+// xgettext: no-c-format
+i18n("1.60");
+// xgettext: no-c-format
+i18n("1.65");
+// xgettext: no-c-format
+i18n("1.70");
+// xgettext: no-c-format
+i18n("1.75");
+// xgettext: no-c-format
+i18n("1.80");
+// xgettext: no-c-format
+i18n("1.85");
+// xgettext: no-c-format
+i18n("1.90");
+// xgettext: no-c-format
+i18n("1.95");
+// xgettext: no-c-format
+i18n("2.00");
+// xgettext: no-c-format
+i18n("2.05");
+// xgettext: no-c-format
+i18n("2.10");
+// xgettext: no-c-format
+i18n("2.15");
+// xgettext: no-c-format
+i18n("2.20");
+// xgettext: no-c-format
+i18n("2.25");
+// xgettext: no-c-format
+i18n("2.30");
+// xgettext: no-c-format
+i18n("2.35");
+// xgettext: no-c-format
+i18n("2.40");
+// xgettext: no-c-format
+i18n("2.45");
+// xgettext: no-c-format
+i18n("2.50");
+// xgettext: no-c-format
+i18n("2.55");
+// xgettext: no-c-format
+i18n("2.60");
+// xgettext: no-c-format
+i18n("2.65");
+// xgettext: no-c-format
+i18n("2.70");
+// xgettext: no-c-format
+i18n("2.75");
+// xgettext: no-c-format
+i18n("2.80");
+// xgettext: no-c-format
+i18n("2.85");
+// xgettext: no-c-format
+i18n("2.90");
+// xgettext: no-c-format
+i18n("2.95");
+// xgettext: no-c-format
+i18n("3.00");
+// xgettext: no-c-format
+i18n("3.05");
+// xgettext: no-c-format
+i18n("3.10");
+// xgettext: no-c-format
+i18n("3.15");
+// xgettext: no-c-format
+i18n("3.20");
+// xgettext: no-c-format
+i18n("3.25");
+// xgettext: no-c-format
+i18n("3.30");
+// xgettext: no-c-format
+i18n("3.35");
+// xgettext: no-c-format
+i18n("3.40");
+// xgettext: no-c-format
+i18n("3.45");
+// xgettext: no-c-format
+i18n("3.50");
+// xgettext: no-c-format
+i18n("3.55");
+// xgettext: no-c-format
+i18n("3.60");
+// xgettext: no-c-format
+i18n("3.65");
+// xgettext: no-c-format
+i18n("3.70");
+// xgettext: no-c-format
+i18n("3.75");
+// xgettext: no-c-format
+i18n("3.80");
+// xgettext: no-c-format
+i18n("3.85");
+// xgettext: no-c-format
+i18n("3.90");
+// xgettext: no-c-format
+i18n("3.95");
+// xgettext: no-c-format
+i18n("4.00");
+// xgettext: no-c-format
+i18n("Horizontal (X-)Shift (in dots)");
+// xgettext: no-c-format
+i18n("Vertical (Y-)Shift (in dots)");
+// xgettext: no-c-format
+i18n("Next Job");
+// xgettext: no-c-format
+i18n("NextJobOnSameSheet");
+// xgettext: no-c-format
+i18n("NextJobOnNewSheet");
+// xgettext: no-c-format
+i18n("Next Job is spot colour page");
+// xgettext: no-c-format
+i18n("NextSpotColourPage");
+// xgettext: no-c-format
+i18n("NextNotSpotColourPage");
+// xgettext: no-c-format
+i18n("This Job is spot colour page");
+// xgettext: no-c-format
+i18n("ThisSpotColourPage");
+// xgettext: no-c-format
+i18n("ThisNotSpotColourPage");
+// xgettext: no-c-format
+i18n("Page Size");
+// xgettext: no-c-format
+i18n("B5");
+// xgettext: no-c-format
+i18n("Manual");
+// xgettext: no-c-format
+i18n("Automatic");
+// xgettext: no-c-format
+i18n("Cardboard");
+// xgettext: no-c-format
+i18n("Coated Film");
+// xgettext: no-c-format
+i18n("Fine Paper");
+// xgettext: no-c-format
+i18n("Iron Seal");
+// xgettext: no-c-format
+i18n("OHP");
+// xgettext: no-c-format
+i18n("OHP (MD 2000)");
+// xgettext: no-c-format
+i18n("Rebeca Free");
+// xgettext: no-c-format
+i18n("Resolution");
+// xgettext: no-c-format
+i18n("1200x600 DPI");
+// xgettext: no-c-format
+i18n("Color Mode");
+// xgettext: no-c-format
+i18n("Colour Depth");
+// xgettext: no-c-format
+i18n("Floyd Steinb. High Qual. (32 bpp)");
+// xgettext: no-c-format
+i18n("Floyd Steinberg Simple (8 bpp)");
+// xgettext: no-c-format
+i18n("Monochrome (1 bpp)");
+// xgettext: no-c-format
+i18n("Simple Colour (4 bpp)");
+// xgettext: no-c-format
+i18n("On");
+// xgettext: no-c-format
+i18n("Duplex");
+// xgettext: no-c-format
+i18n("DoubleSided");
+// xgettext: no-c-format
+i18n("SingleSided");
+// xgettext: no-c-format
+i18n("Black color saving");
+// xgettext: no-c-format
+i18n("EcoBlack");
+// xgettext: no-c-format
+i18n("NormalBlack");
+// xgettext: no-c-format
+i18n("Black Level");
+// xgettext: no-c-format
+i18n("Cyan Level");
+// xgettext: no-c-format
+i18n("Magenta Level");
+// xgettext: no-c-format
+i18n("Yellow Level");
+// xgettext: no-c-format
+i18n("B4 (JIS)");
+// xgettext: no-c-format
+i18n("B6 (JIS)");
+// xgettext: no-c-format
+i18n("Envelope You 4");
+// xgettext: no-c-format
+i18n("Hagaki");
+// xgettext: no-c-format
+i18n("Ledger");
+// xgettext: no-c-format
+i18n("Oufuku");
+// xgettext: no-c-format
+i18n("600x600 DPI");
+// xgettext: no-c-format
+i18n("300x300 DPI");
+// xgettext: no-c-format
+i18n("3x5");
+// xgettext: no-c-format
+i18n("4x6");
+// xgettext: no-c-format
+i18n("5x7");
+// xgettext: no-c-format
+i18n("5x8");
+// xgettext: no-c-format
+i18n("6x8");
+// xgettext: no-c-format
+i18n("8x10");
+// xgettext: no-c-format
+i18n("8x12");
+// xgettext: no-c-format
+i18n("11x14");
+// xgettext: no-c-format
+i18n("13x19");
+// xgettext: no-c-format
+i18n("16x20");
+// xgettext: no-c-format
+i18n("16x24");
+// xgettext: no-c-format
+i18n("60x60 dpi");
+// xgettext: no-c-format
+i18n("60x72 dpi");
+// xgettext: no-c-format
+i18n("60x180 dpi");
+// xgettext: no-c-format
+i18n("60x216 dpi");
+// xgettext: no-c-format
+i18n("120x60 dpi");
+// xgettext: no-c-format
+i18n("120x72 dpi");
+// xgettext: no-c-format
+i18n("120x180 dpi");
+// xgettext: no-c-format
+i18n("120x216 dpi");
+// xgettext: no-c-format
+i18n("180x60 dpi");
+// xgettext: no-c-format
+i18n("180x72 dpi");
+// xgettext: no-c-format
+i18n("180x180 dpi");
+// xgettext: no-c-format
+i18n("180x216 dpi");
+// xgettext: no-c-format
+i18n("240x60 dpi");
+// xgettext: no-c-format
+i18n("240x72 dpi");
+// xgettext: no-c-format
+i18n("240x180 dpi");
+// xgettext: no-c-format
+i18n("240x216 dpi");
+// xgettext: no-c-format
+i18n("360x60 dpi");
+// xgettext: no-c-format
+i18n("360x72 dpi");
+// xgettext: no-c-format
+i18n("360x180 dpi");
+// xgettext: no-c-format
+i18n("360x216 dpi");
+// xgettext: no-c-format
+i18n("11x17");
+// xgettext: no-c-format
+i18n("Photo Paper");
+// xgettext: no-c-format
+i18n("HP Premium Paper");
+// xgettext: no-c-format
+i18n("Transparency Paper");
+// xgettext: no-c-format
+i18n("Print Quality");
+// xgettext: no-c-format
+i18n("Draft Quality");
+// xgettext: no-c-format
+i18n("Normal Quality");
+// xgettext: no-c-format
+i18n("Presentation Quality");
+// xgettext: no-c-format
+i18n("Monochrome");
+// xgettext: no-c-format
+i18n("Dithering Pixels Per Inch");
+// xgettext: no-c-format
+i18n("Generic DeskJet");
+// xgettext: no-c-format
+i18n("Standard Tray");
+// xgettext: no-c-format
+i18n("Banner Printing");
+// xgettext: no-c-format
+i18n("Envelope Feeder");
+// xgettext: no-c-format
+i18n("Manual Feeder");
+// xgettext: no-c-format
+i18n("Quick-Dry Glossy");
+// xgettext: no-c-format
+i18n("Quick-Dry Transparency");
+// xgettext: no-c-format
+i18n("Quality");
+// xgettext: no-c-format
+i18n("Default Setting");
+// xgettext: no-c-format
+i18n("Draft");
+// xgettext: no-c-format
+i18n("Presentation");
+// xgettext: no-c-format
+i18n("Ink Drying Time (sec)");
+// xgettext: no-c-format
+i18n("Memory Limit (Bytes)");
+// xgettext: no-c-format
+i18n("Black Levels");
+// xgettext: no-c-format
+i18n("2 Levels");
+// xgettext: no-c-format
+i18n("3 Levels");
+// xgettext: no-c-format
+i18n("4 Levels");
+// xgettext: no-c-format
+i18n("No Black");
+// xgettext: no-c-format
+i18n("CMY Levels");
+// xgettext: no-c-format
+i18n("No CMY");
+// xgettext: no-c-format
+i18n("Printout Mode");
+// xgettext: no-c-format
+i18n("Draft (Color cartridge)");
+// xgettext: no-c-format
+i18n("Draft Grayscale (Black + color cartridge)");
+// xgettext: no-c-format
+i18n("Normal (Color cartridge)");
+// xgettext: no-c-format
+i18n("Normal Grayscale (Black + color cartridge)");
+// xgettext: no-c-format
+i18n("High Quality Grayscale (Black + color cartridge)");
+// xgettext: no-c-format
+i18n("Photo (Photo + color cartridge, photo paper)");
+// xgettext: no-c-format
+i18n("Photo/4x6 inch index card");
+// xgettext: no-c-format
+i18n("Photo with tear-off tab");
+// xgettext: no-c-format
+i18n("3x5 inch index card");
+// xgettext: no-c-format
+i18n("5x8 inch index card");
+// xgettext: no-c-format
+i18n("A6");
+// xgettext: no-c-format
+i18n("A6 with tear-off tab");
+// xgettext: no-c-format
+i18n("Envelope C6");
+// xgettext: no-c-format
+i18n("American Foolscap");
+// xgettext: no-c-format
+i18n("Oufuku-Hagaki");
+// xgettext: no-c-format
+i18n("16K");
+// xgettext: no-c-format
+i18n("Executive (JIS)");
+// xgettext: no-c-format
+i18n("Resolution, Quality, Ink Type, Media Type");
+// xgettext: no-c-format
+i18n("Controlled by 'Printout Mode'");
+// xgettext: no-c-format
+i18n("300 dpi, Color, Color Cartr.");
+// xgettext: no-c-format
+i18n("300 dpi, Color, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("300 dpi, Draft, Color, Color Cartr.");
+// xgettext: no-c-format
+i18n("300 dpi, Draft, Color, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("300 dpi, Draft, Grayscale, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("300 dpi, Grayscale, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("300 dpi, Photo, Photo + Color Cartr., Premium Paper");
+// xgettext: no-c-format
+i18n("600x300 dpi, Best, Grayscale, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("Normal Color");
+// xgettext: no-c-format
+i18n("Best Quality Color");
+// xgettext: no-c-format
+i18n("Black and White");
+// xgettext: no-c-format
+i18n("Floyd-Steinberg Color");
+// xgettext: no-c-format
+i18n("Floyd-Steinberg Color (Low Memory)");
+// xgettext: no-c-format
+i18n("Floyd-Steinberg Gray");
+// xgettext: no-c-format
+i18n("Black correction (Cyan reduction)");
+// xgettext: no-c-format
+i18n("Ink Reduction");
+// xgettext: no-c-format
+i18n("25 %");
+// xgettext: no-c-format
+i18n("50 %");
+// xgettext: no-c-format
+i18n("No");
+// xgettext: no-c-format
+i18n("Draft (Economy)");
+// xgettext: no-c-format
+i18n("Draft Grayscale (Economy)");
+// xgettext: no-c-format
+i18n("Normal Grayscale");
+// xgettext: no-c-format
+i18n("High Quality");
+// xgettext: no-c-format
+i18n("High Quality Grayscale");
+// xgettext: no-c-format
+i18n("Photo");
+// xgettext: no-c-format
+i18n("Photo Grayscale");
+// xgettext: no-c-format
+i18n("C5");
+// xgettext: no-c-format
+i18n("Commercial 10");
+// xgettext: no-c-format
+i18n("DL");
+// xgettext: no-c-format
+i18n("B5 ISO");
+// xgettext: no-c-format
+i18n("B6 ISO");
+// xgettext: no-c-format
+i18n("B7 ISO");
+// xgettext: no-c-format
+i18n("B8 ISO");
+// xgettext: no-c-format
+i18n("B9 ISO");
+// xgettext: no-c-format
+i18n("B10 ISO");
+// xgettext: no-c-format
+i18n("Monarch Envelope");
+// xgettext: no-c-format
+i18n("Postcard");
+// xgettext: no-c-format
+i18n("C7-6");
+// xgettext: no-c-format
+i18n("Japanese long envelope #4");
+// xgettext: no-c-format
+i18n("Hagaki Card");
+// xgettext: no-c-format
+i18n("Small paperback");
+// xgettext: no-c-format
+i18n("Penguin small paperback");
+// xgettext: no-c-format
+i18n("A2 Invitation");
+// xgettext: no-c-format
+i18n("Epson 4x6 Photo Paper");
+// xgettext: no-c-format
+i18n("Japanese long envelope #3");
+// xgettext: no-c-format
+i18n("B6-C4");
+// xgettext: no-c-format
+i18n("Penguin large paperback");
+// xgettext: no-c-format
+i18n("Crown Quarto");
+// xgettext: no-c-format
+i18n("Large Crown Quarto");
+// xgettext: no-c-format
+i18n("RA4");
+// xgettext: no-c-format
+i18n("American foolscap");
+// xgettext: no-c-format
+i18n("Bond");
+// xgettext: no-c-format
+i18n("Glossy Photo");
+// xgettext: no-c-format
+i18n("Transparencies");
+// xgettext: no-c-format
+i18n("Ink Type");
+// xgettext: no-c-format
+i18n("Color + Photo Cartridges");
+// xgettext: no-c-format
+i18n("Four Color Standard");
+// xgettext: no-c-format
+i18n("stpGamma");
+// xgettext: no-c-format
+i18n("Density");
+// xgettext: no-c-format
+i18n("0.12");
+// xgettext: no-c-format
+i18n("0.14");
+// xgettext: no-c-format
+i18n("0.16");
+// xgettext: no-c-format
+i18n("0.18");
+// xgettext: no-c-format
+i18n("0.22");
+// xgettext: no-c-format
+i18n("0.24");
+// xgettext: no-c-format
+i18n("0.26");
+// xgettext: no-c-format
+i18n("0.28");
+// xgettext: no-c-format
+i18n("0.32");
+// xgettext: no-c-format
+i18n("0.34");
+// xgettext: no-c-format
+i18n("0.36");
+// xgettext: no-c-format
+i18n("0.38");
+// xgettext: no-c-format
+i18n("0.42");
+// xgettext: no-c-format
+i18n("0.44");
+// xgettext: no-c-format
+i18n("0.46");
+// xgettext: no-c-format
+i18n("0.48");
+// xgettext: no-c-format
+i18n("0.52");
+// xgettext: no-c-format
+i18n("0.54");
+// xgettext: no-c-format
+i18n("0.56");
+// xgettext: no-c-format
+i18n("0.58");
+// xgettext: no-c-format
+i18n("0.62");
+// xgettext: no-c-format
+i18n("0.64");
+// xgettext: no-c-format
+i18n("0.66");
+// xgettext: no-c-format
+i18n("0.68");
+// xgettext: no-c-format
+i18n("0.72");
+// xgettext: no-c-format
+i18n("0.74");
+// xgettext: no-c-format
+i18n("0.76");
+// xgettext: no-c-format
+i18n("0.78");
+// xgettext: no-c-format
+i18n("0.82");
+// xgettext: no-c-format
+i18n("0.84");
+// xgettext: no-c-format
+i18n("0.86");
+// xgettext: no-c-format
+i18n("0.88");
+// xgettext: no-c-format
+i18n("0.92");
+// xgettext: no-c-format
+i18n("0.94");
+// xgettext: no-c-format
+i18n("0.96");
+// xgettext: no-c-format
+i18n("0.98");
+// xgettext: no-c-format
+i18n("1.02");
+// xgettext: no-c-format
+i18n("1.04");
+// xgettext: no-c-format
+i18n("1.06");
+// xgettext: no-c-format
+i18n("1.08");
+// xgettext: no-c-format
+i18n("1.12");
+// xgettext: no-c-format
+i18n("1.14");
+// xgettext: no-c-format
+i18n("1.16");
+// xgettext: no-c-format
+i18n("1.18");
+// xgettext: no-c-format
+i18n("1.22");
+// xgettext: no-c-format
+i18n("1.24");
+// xgettext: no-c-format
+i18n("1.26");
+// xgettext: no-c-format
+i18n("1.28");
+// xgettext: no-c-format
+i18n("1.32");
+// xgettext: no-c-format
+i18n("1.34");
+// xgettext: no-c-format
+i18n("1.36");
+// xgettext: no-c-format
+i18n("1.38");
+// xgettext: no-c-format
+i18n("1.42");
+// xgettext: no-c-format
+i18n("1.44");
+// xgettext: no-c-format
+i18n("1.46");
+// xgettext: no-c-format
+i18n("1.48");
+// xgettext: no-c-format
+i18n("1.52");
+// xgettext: no-c-format
+i18n("1.54");
+// xgettext: no-c-format
+i18n("1.56");
+// xgettext: no-c-format
+i18n("1.58");
+// xgettext: no-c-format
+i18n("1.62");
+// xgettext: no-c-format
+i18n("1.64");
+// xgettext: no-c-format
+i18n("1.66");
+// xgettext: no-c-format
+i18n("1.68");
+// xgettext: no-c-format
+i18n("1.72");
+// xgettext: no-c-format
+i18n("1.74");
+// xgettext: no-c-format
+i18n("1.76");
+// xgettext: no-c-format
+i18n("1.78");
+// xgettext: no-c-format
+i18n("1.82");
+// xgettext: no-c-format
+i18n("1.84");
+// xgettext: no-c-format
+i18n("1.86");
+// xgettext: no-c-format
+i18n("1.88");
+// xgettext: no-c-format
+i18n("1.92");
+// xgettext: no-c-format
+i18n("1.94");
+// xgettext: no-c-format
+i18n("1.96");
+// xgettext: no-c-format
+i18n("1.98");
+// xgettext: no-c-format
+i18n("stpBrightness");
+// xgettext: no-c-format
+i18n("0.02");
+// xgettext: no-c-format
+i18n("0.04");
+// xgettext: no-c-format
+i18n("0.06");
+// xgettext: no-c-format
+i18n("0.08");
+// xgettext: no-c-format
+i18n("stpSaturation");
+// xgettext: no-c-format
+i18n("0.0");
+// xgettext: no-c-format
+i18n("0.1");
+// xgettext: no-c-format
+i18n("0.2");
+// xgettext: no-c-format
+i18n("0.3");
+// xgettext: no-c-format
+i18n("0.4");
+// xgettext: no-c-format
+i18n("0.5");
+// xgettext: no-c-format
+i18n("0.6");
+// xgettext: no-c-format
+i18n("0.7");
+// xgettext: no-c-format
+i18n("0.8");
+// xgettext: no-c-format
+i18n("0.9");
+// xgettext: no-c-format
+i18n("1.0");
+// xgettext: no-c-format
+i18n("1.1");
+// xgettext: no-c-format
+i18n("1.2");
+// xgettext: no-c-format
+i18n("1.3");
+// xgettext: no-c-format
+i18n("1.4");
+// xgettext: no-c-format
+i18n("1.5");
+// xgettext: no-c-format
+i18n("1.6");
+// xgettext: no-c-format
+i18n("1.7");
+// xgettext: no-c-format
+i18n("1.8");
+// xgettext: no-c-format
+i18n("1.9");
+// xgettext: no-c-format
+i18n("2.0");
+// xgettext: no-c-format
+i18n("2.1");
+// xgettext: no-c-format
+i18n("2.2");
+// xgettext: no-c-format
+i18n("2.3");
+// xgettext: no-c-format
+i18n("2.4");
+// xgettext: no-c-format
+i18n("2.5");
+// xgettext: no-c-format
+i18n("2.6");
+// xgettext: no-c-format
+i18n("2.7");
+// xgettext: no-c-format
+i18n("2.8");
+// xgettext: no-c-format
+i18n("2.9");
+// xgettext: no-c-format
+i18n("3.0");
+// xgettext: no-c-format
+i18n("3.1");
+// xgettext: no-c-format
+i18n("3.2");
+// xgettext: no-c-format
+i18n("3.3");
+// xgettext: no-c-format
+i18n("3.4");
+// xgettext: no-c-format
+i18n("3.5");
+// xgettext: no-c-format
+i18n("3.6");
+// xgettext: no-c-format
+i18n("3.7");
+// xgettext: no-c-format
+i18n("3.8");
+// xgettext: no-c-format
+i18n("3.9");
+// xgettext: no-c-format
+i18n("4.0");
+// xgettext: no-c-format
+i18n("4.1");
+// xgettext: no-c-format
+i18n("4.2");
+// xgettext: no-c-format
+i18n("4.3");
+// xgettext: no-c-format
+i18n("4.4");
+// xgettext: no-c-format
+i18n("4.5");
+// xgettext: no-c-format
+i18n("4.6");
+// xgettext: no-c-format
+i18n("4.7");
+// xgettext: no-c-format
+i18n("4.8");
+// xgettext: no-c-format
+i18n("4.9");
+// xgettext: no-c-format
+i18n("5.0");
+// xgettext: no-c-format
+i18n("5.1");
+// xgettext: no-c-format
+i18n("5.2");
+// xgettext: no-c-format
+i18n("5.3");
+// xgettext: no-c-format
+i18n("5.4");
+// xgettext: no-c-format
+i18n("5.5");
+// xgettext: no-c-format
+i18n("5.6");
+// xgettext: no-c-format
+i18n("5.7");
+// xgettext: no-c-format
+i18n("5.8");
+// xgettext: no-c-format
+i18n("5.9");
+// xgettext: no-c-format
+i18n("6.0");
+// xgettext: no-c-format
+i18n("6.1");
+// xgettext: no-c-format
+i18n("6.2");
+// xgettext: no-c-format
+i18n("6.3");
+// xgettext: no-c-format
+i18n("6.4");
+// xgettext: no-c-format
+i18n("6.5");
+// xgettext: no-c-format
+i18n("6.6");
+// xgettext: no-c-format
+i18n("6.7");
+// xgettext: no-c-format
+i18n("6.8");
+// xgettext: no-c-format
+i18n("6.9");
+// xgettext: no-c-format
+i18n("7.0");
+// xgettext: no-c-format
+i18n("7.1");
+// xgettext: no-c-format
+i18n("7.2");
+// xgettext: no-c-format
+i18n("7.3");
+// xgettext: no-c-format
+i18n("7.4");
+// xgettext: no-c-format
+i18n("7.5");
+// xgettext: no-c-format
+i18n("7.6");
+// xgettext: no-c-format
+i18n("7.7");
+// xgettext: no-c-format
+i18n("7.8");
+// xgettext: no-c-format
+i18n("7.9");
+// xgettext: no-c-format
+i18n("8.0");
+// xgettext: no-c-format
+i18n("8.1");
+// xgettext: no-c-format
+i18n("8.2");
+// xgettext: no-c-format
+i18n("8.3");
+// xgettext: no-c-format
+i18n("8.4");
+// xgettext: no-c-format
+i18n("8.5");
+// xgettext: no-c-format
+i18n("8.6");
+// xgettext: no-c-format
+i18n("8.7");
+// xgettext: no-c-format
+i18n("8.8");
+// xgettext: no-c-format
+i18n("8.9");
+// xgettext: no-c-format
+i18n("9.0");
+// xgettext: no-c-format
+i18n("Contrast Level");
+// xgettext: no-c-format
+i18n("150 x 150 DPI");
+// xgettext: no-c-format
+i18n("300 x 300 DPI");
+// xgettext: no-c-format
+i18n("600 x 300 DPI");
+// xgettext: no-c-format
+i18n("600 x 600 DPI");
+// xgettext: no-c-format
+i18n("Output Type");
+// xgettext: no-c-format
+i18n("Gray Scale");
+// xgettext: no-c-format
+i18n("Continuous-tone photographs");
+// xgettext: no-c-format
+i18n("Line art");
+// xgettext: no-c-format
+i18n("Primarily solid colors or smooth gradients");
+// xgettext: no-c-format
+i18n("Dither Algorithm");
+// xgettext: no-c-format
+i18n("EvenTone");
+// xgettext: no-c-format
+i18n("Fast");
+// xgettext: no-c-format
+i18n("Raw CMYK");
+// xgettext: no-c-format
+i18n("Not capable");
+// xgettext: no-c-format
+i18n("Printer Default");
+// xgettext: no-c-format
+i18n("GhostScript pre-filtering");
+// xgettext: no-c-format
+i18n("Embed GhostScript fonts only");
+// xgettext: no-c-format
+i18n("Convert to PS level 1");
+// xgettext: no-c-format
+i18n("Convert to PS level 2");
+// xgettext: no-c-format
+i18n("No pre-filtering");
+// xgettext: no-c-format
+i18n("160x72 dpi");
+// xgettext: no-c-format
+i18n("160x144 dpi");
+// xgettext: no-c-format
+i18n("320x216 dpi");
+// xgettext: no-c-format
+i18n("Input Slot");
+// xgettext: no-c-format
+i18n("Standard");
+// xgettext: no-c-format
+i18n("Printer default");
+// xgettext: no-c-format
+i18n("PageSize");
+// xgettext: no-c-format
+i18n("Tabloid");
+// xgettext: no-c-format
+i18n("SRA4");
+// xgettext: no-c-format
+i18n("C4");
+// xgettext: no-c-format
+i18n("ArchA");
+// xgettext: no-c-format
+i18n("European foolscap");
+// xgettext: no-c-format
+i18n("Large Crown Octavo");
+// xgettext: no-c-format
+i18n("Japanese Kaku envelope #4");
+// xgettext: no-c-format
+i18n("ColorModel");
+// xgettext: no-c-format
+i18n("Black & White");
+// xgettext: no-c-format
+i18n("Back Print Film");
+// xgettext: no-c-format
+i18n("Fabric Sheets");
+// xgettext: no-c-format
+i18n("Envelope");
+// xgettext: no-c-format
+i18n("High Resolution Paper");
+// xgettext: no-c-format
+i18n("T-Shirt Transfers");
+// xgettext: no-c-format
+i18n("High Gloss Film");
+// xgettext: no-c-format
+i18n("Glossy Photo Paper");
+// xgettext: no-c-format
+i18n("Glossy Photo Cards");
+// xgettext: no-c-format
+i18n("Photo Paper Pro");
+// xgettext: no-c-format
+i18n("Other");
+// xgettext: no-c-format
+i18n("Auto Sheet Feeder");
+// xgettext: no-c-format
+i18n("Manual with Pause");
+// xgettext: no-c-format
+i18n("Manual without Pause");
+// xgettext: no-c-format
+i18n("90x90 DPI");
+// xgettext: no-c-format
+i18n("180x180 DPI");
+// xgettext: no-c-format
+i18n("360x360 DPI");
+// xgettext: no-c-format
+i18n("360x360 DPI DMT");
+// xgettext: no-c-format
+i18n("720x360 DPI");
+// xgettext: no-c-format
+i18n("Line Art");
+// xgettext: no-c-format
+i18n("Solid Colors");
+// xgettext: no-c-format
+i18n("Photograph");
+// xgettext: no-c-format
+i18n("Black");
+// xgettext: no-c-format
+i18n("Brightness");
+// xgettext: no-c-format
+i18n("0.000");
+// xgettext: no-c-format
+i18n("0.050");
+// xgettext: no-c-format
+i18n("0.100");
+// xgettext: no-c-format
+i18n("0.150");
+// xgettext: no-c-format
+i18n("0.200");
+// xgettext: no-c-format
+i18n("0.250");
+// xgettext: no-c-format
+i18n("0.300");
+// xgettext: no-c-format
+i18n("0.350");
+// xgettext: no-c-format
+i18n("0.400");
+// xgettext: no-c-format
+i18n("0.450");
+// xgettext: no-c-format
+i18n("0.500");
+// xgettext: no-c-format
+i18n("0.550");
+// xgettext: no-c-format
+i18n("0.600");
+// xgettext: no-c-format
+i18n("0.650");
+// xgettext: no-c-format
+i18n("0.700");
+// xgettext: no-c-format
+i18n("0.750");
+// xgettext: no-c-format
+i18n("0.800");
+// xgettext: no-c-format
+i18n("0.850");
+// xgettext: no-c-format
+i18n("0.900");
+// xgettext: no-c-format
+i18n("0.950");
+// xgettext: no-c-format
+i18n("1.000");
+// xgettext: no-c-format
+i18n("1.050");
+// xgettext: no-c-format
+i18n("1.100");
+// xgettext: no-c-format
+i18n("1.150");
+// xgettext: no-c-format
+i18n("1.200");
+// xgettext: no-c-format
+i18n("1.250");
+// xgettext: no-c-format
+i18n("1.300");
+// xgettext: no-c-format
+i18n("1.350");
+// xgettext: no-c-format
+i18n("1.400");
+// xgettext: no-c-format
+i18n("1.450");
+// xgettext: no-c-format
+i18n("1.500");
+// xgettext: no-c-format
+i18n("1.550");
+// xgettext: no-c-format
+i18n("1.600");
+// xgettext: no-c-format
+i18n("1.650");
+// xgettext: no-c-format
+i18n("1.700");
+// xgettext: no-c-format
+i18n("1.750");
+// xgettext: no-c-format
+i18n("1.800");
+// xgettext: no-c-format
+i18n("1.850");
+// xgettext: no-c-format
+i18n("1.900");
+// xgettext: no-c-format
+i18n("1.950");
+// xgettext: no-c-format
+i18n("2.000");
+// xgettext: no-c-format
+i18n("Contrast");
+// xgettext: no-c-format
+i18n("2.050");
+// xgettext: no-c-format
+i18n("2.100");
+// xgettext: no-c-format
+i18n("2.150");
+// xgettext: no-c-format
+i18n("2.200");
+// xgettext: no-c-format
+i18n("2.250");
+// xgettext: no-c-format
+i18n("2.300");
+// xgettext: no-c-format
+i18n("2.350");
+// xgettext: no-c-format
+i18n("2.400");
+// xgettext: no-c-format
+i18n("2.450");
+// xgettext: no-c-format
+i18n("2.500");
+// xgettext: no-c-format
+i18n("2.550");
+// xgettext: no-c-format
+i18n("2.600");
+// xgettext: no-c-format
+i18n("2.650");
+// xgettext: no-c-format
+i18n("2.700");
+// xgettext: no-c-format
+i18n("2.750");
+// xgettext: no-c-format
+i18n("2.800");
+// xgettext: no-c-format
+i18n("2.850");
+// xgettext: no-c-format
+i18n("2.900");
+// xgettext: no-c-format
+i18n("2.950");
+// xgettext: no-c-format
+i18n("3.000");
+// xgettext: no-c-format
+i18n("3.050");
+// xgettext: no-c-format
+i18n("3.100");
+// xgettext: no-c-format
+i18n("3.150");
+// xgettext: no-c-format
+i18n("3.200");
+// xgettext: no-c-format
+i18n("3.250");
+// xgettext: no-c-format
+i18n("3.300");
+// xgettext: no-c-format
+i18n("3.350");
+// xgettext: no-c-format
+i18n("3.400");
+// xgettext: no-c-format
+i18n("3.450");
+// xgettext: no-c-format
+i18n("3.500");
+// xgettext: no-c-format
+i18n("3.550");
+// xgettext: no-c-format
+i18n("3.600");
+// xgettext: no-c-format
+i18n("3.650");
+// xgettext: no-c-format
+i18n("3.700");
+// xgettext: no-c-format
+i18n("3.750");
+// xgettext: no-c-format
+i18n("3.800");
+// xgettext: no-c-format
+i18n("3.850");
+// xgettext: no-c-format
+i18n("3.900");
+// xgettext: no-c-format
+i18n("3.950");
+// xgettext: no-c-format
+i18n("4.000");
+// xgettext: no-c-format
+i18n("Cyan");
+// xgettext: no-c-format
+i18n("Magenta");
+// xgettext: no-c-format
+i18n("Yellow");
+// xgettext: no-c-format
+i18n("Saturation");
+// xgettext: no-c-format
+i18n("4.050");
+// xgettext: no-c-format
+i18n("4.100");
+// xgettext: no-c-format
+i18n("4.150");
+// xgettext: no-c-format
+i18n("4.200");
+// xgettext: no-c-format
+i18n("4.250");
+// xgettext: no-c-format
+i18n("4.300");
+// xgettext: no-c-format
+i18n("4.350");
+// xgettext: no-c-format
+i18n("4.400");
+// xgettext: no-c-format
+i18n("4.450");
+// xgettext: no-c-format
+i18n("4.500");
+// xgettext: no-c-format
+i18n("4.550");
+// xgettext: no-c-format
+i18n("4.600");
+// xgettext: no-c-format
+i18n("4.650");
+// xgettext: no-c-format
+i18n("4.700");
+// xgettext: no-c-format
+i18n("4.750");
+// xgettext: no-c-format
+i18n("4.800");
+// xgettext: no-c-format
+i18n("4.850");
+// xgettext: no-c-format
+i18n("4.900");
+// xgettext: no-c-format
+i18n("4.950");
+// xgettext: no-c-format
+i18n("5.000");
+// xgettext: no-c-format
+i18n("5.050");
+// xgettext: no-c-format
+i18n("5.100");
+// xgettext: no-c-format
+i18n("5.150");
+// xgettext: no-c-format
+i18n("5.200");
+// xgettext: no-c-format
+i18n("5.250");
+// xgettext: no-c-format
+i18n("5.300");
+// xgettext: no-c-format
+i18n("5.350");
+// xgettext: no-c-format
+i18n("5.400");
+// xgettext: no-c-format
+i18n("5.450");
+// xgettext: no-c-format
+i18n("5.500");
+// xgettext: no-c-format
+i18n("5.550");
+// xgettext: no-c-format
+i18n("5.600");
+// xgettext: no-c-format
+i18n("5.650");
+// xgettext: no-c-format
+i18n("5.700");
+// xgettext: no-c-format
+i18n("5.750");
+// xgettext: no-c-format
+i18n("5.800");
+// xgettext: no-c-format
+i18n("5.850");
+// xgettext: no-c-format
+i18n("5.900");
+// xgettext: no-c-format
+i18n("5.950");
+// xgettext: no-c-format
+i18n("6.000");
+// xgettext: no-c-format
+i18n("6.050");
+// xgettext: no-c-format
+i18n("6.100");
+// xgettext: no-c-format
+i18n("6.150");
+// xgettext: no-c-format
+i18n("6.200");
+// xgettext: no-c-format
+i18n("6.250");
+// xgettext: no-c-format
+i18n("6.300");
+// xgettext: no-c-format
+i18n("6.350");
+// xgettext: no-c-format
+i18n("6.400");
+// xgettext: no-c-format
+i18n("6.450");
+// xgettext: no-c-format
+i18n("6.500");
+// xgettext: no-c-format
+i18n("6.550");
+// xgettext: no-c-format
+i18n("6.600");
+// xgettext: no-c-format
+i18n("6.650");
+// xgettext: no-c-format
+i18n("6.700");
+// xgettext: no-c-format
+i18n("6.750");
+// xgettext: no-c-format
+i18n("6.800");
+// xgettext: no-c-format
+i18n("6.850");
+// xgettext: no-c-format
+i18n("6.900");
+// xgettext: no-c-format
+i18n("6.950");
+// xgettext: no-c-format
+i18n("7.000");
+// xgettext: no-c-format
+i18n("7.050");
+// xgettext: no-c-format
+i18n("7.100");
+// xgettext: no-c-format
+i18n("7.150");
+// xgettext: no-c-format
+i18n("7.200");
+// xgettext: no-c-format
+i18n("7.250");
+// xgettext: no-c-format
+i18n("7.300");
+// xgettext: no-c-format
+i18n("7.350");
+// xgettext: no-c-format
+i18n("7.400");
+// xgettext: no-c-format
+i18n("7.450");
+// xgettext: no-c-format
+i18n("7.500");
+// xgettext: no-c-format
+i18n("7.550");
+// xgettext: no-c-format
+i18n("7.600");
+// xgettext: no-c-format
+i18n("7.650");
+// xgettext: no-c-format
+i18n("7.700");
+// xgettext: no-c-format
+i18n("7.750");
+// xgettext: no-c-format
+i18n("7.800");
+// xgettext: no-c-format
+i18n("7.850");
+// xgettext: no-c-format
+i18n("7.900");
+// xgettext: no-c-format
+i18n("7.950");
+// xgettext: no-c-format
+i18n("8.000");
+// xgettext: no-c-format
+i18n("8.050");
+// xgettext: no-c-format
+i18n("8.100");
+// xgettext: no-c-format
+i18n("8.150");
+// xgettext: no-c-format
+i18n("8.200");
+// xgettext: no-c-format
+i18n("8.250");
+// xgettext: no-c-format
+i18n("8.300");
+// xgettext: no-c-format
+i18n("8.350");
+// xgettext: no-c-format
+i18n("8.400");
+// xgettext: no-c-format
+i18n("8.450");
+// xgettext: no-c-format
+i18n("8.500");
+// xgettext: no-c-format
+i18n("8.550");
+// xgettext: no-c-format
+i18n("8.600");
+// xgettext: no-c-format
+i18n("8.650");
+// xgettext: no-c-format
+i18n("8.700");
+// xgettext: no-c-format
+i18n("8.750");
+// xgettext: no-c-format
+i18n("8.800");
+// xgettext: no-c-format
+i18n("8.850");
+// xgettext: no-c-format
+i18n("8.900");
+// xgettext: no-c-format
+i18n("8.950");
+// xgettext: no-c-format
+i18n("9.000");
+// xgettext: no-c-format
+i18n("720x720 DPI");
+// xgettext: no-c-format
+i18n("1440x720 DPI");
+// xgettext: no-c-format
+i18n("Photo CcMmY Color");
+// xgettext: no-c-format
+i18n("Photo CcMmYK Color");
+// xgettext: no-c-format
+i18n("1200x1200 DPI");
+// xgettext: no-c-format
+i18n("12x18");
+// xgettext: no-c-format
+i18n("Super B 13x19");
+// xgettext: no-c-format
+i18n("20x24");
+// xgettext: no-c-format
+i18n("20x30");
+// xgettext: no-c-format
+i18n("22x30");
+// xgettext: no-c-format
+i18n("24x30");
+// xgettext: no-c-format
+i18n("24x36");
+// xgettext: no-c-format
+i18n("30x40");
+// xgettext: no-c-format
+i18n("A0");
+// xgettext: no-c-format
+i18n("A1");
+// xgettext: no-c-format
+i18n("A2");
+// xgettext: no-c-format
+i18n("RA0");
+// xgettext: no-c-format
+i18n("RA1");
+// xgettext: no-c-format
+i18n("RA2");
+// xgettext: no-c-format
+i18n("RA3");
+// xgettext: no-c-format
+i18n("SRA0");
+// xgettext: no-c-format
+i18n("SRA1");
+// xgettext: no-c-format
+i18n("SRA2");
+// xgettext: no-c-format
+i18n("B0 ISO");
+// xgettext: no-c-format
+i18n("B1 ISO");
+// xgettext: no-c-format
+i18n("B2 ISO");
+// xgettext: no-c-format
+i18n("B3 ISO");
+// xgettext: no-c-format
+i18n("B0 JIS");
+// xgettext: no-c-format
+i18n("B1 JIS");
+// xgettext: no-c-format
+i18n("B2 JIS");
+// xgettext: no-c-format
+i18n("B3 JIS");
+// xgettext: no-c-format
+i18n("C0");
+// xgettext: no-c-format
+i18n("C1");
+// xgettext: no-c-format
+i18n("C2");
+// xgettext: no-c-format
+i18n("C3");
+// xgettext: no-c-format
+i18n("ArchA Transverse");
+// xgettext: no-c-format
+i18n("ArchB");
+// xgettext: no-c-format
+i18n("ArchB Transverse");
+// xgettext: no-c-format
+i18n("ArchC");
+// xgettext: no-c-format
+i18n("ArchC Transverse");
+// xgettext: no-c-format
+i18n("ArchD");
+// xgettext: no-c-format
+i18n("ArchD Transverse");
+// xgettext: no-c-format
+i18n("ArchE");
+// xgettext: no-c-format
+i18n("Plain Paper Fast Load");
+// xgettext: no-c-format
+i18n("Glossy Film");
+// xgettext: no-c-format
+i18n("Envelopes");
+// xgettext: no-c-format
+i18n("Back Light Film");
+// xgettext: no-c-format
+i18n("Matte Paper");
+// xgettext: no-c-format
+i18n("Inkjet Paper");
+// xgettext: no-c-format
+i18n("Photo Quality Inkjet Paper");
+// xgettext: no-c-format
+i18n("Premium Glossy Photo Paper");
+// xgettext: no-c-format
+i18n("Premium Luster Photo Paper");
+// xgettext: no-c-format
+i18n("Photo Quality Glossy Paper");
+// xgettext: no-c-format
+i18n("Ilford Heavy Paper");
+// xgettext: no-c-format
+i18n("ColorLife Paper");
+// xgettext: no-c-format
+i18n("Roll Feed");
+// xgettext: no-c-format
+i18n("360 x 90 DPI Fast Economy Draft");
+// xgettext: no-c-format
+i18n("360 x 120 DPI Economy Draft");
+// xgettext: no-c-format
+i18n("180 DPI Economy Draft");
+// xgettext: no-c-format
+i18n("360 x 240 DPI Draft");
+// xgettext: no-c-format
+i18n("360 x 180 DPI Draft");
+// xgettext: no-c-format
+i18n("360 DPI Microweave");
+// xgettext: no-c-format
+i18n("360 DPI Microweave Unidirectional");
+// xgettext: no-c-format
+i18n("360 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("360 DPI Full Overlap");
+// xgettext: no-c-format
+i18n("360 DPI Full Overlap Unidirectional");
+// xgettext: no-c-format
+i18n("360 DPI FOL2");
+// xgettext: no-c-format
+i18n("360 DPI FOL2 Unidirectional");
+// xgettext: no-c-format
+i18n("360 DPI MW2");
+// xgettext: no-c-format
+i18n("360 DPI MW2 Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 360 DPI");
+// xgettext: no-c-format
+i18n("720 x 360 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 360 DPI Microweave");
+// xgettext: no-c-format
+i18n("720 x 360 DPI Microweave Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 360 DPI FOL");
+// xgettext: no-c-format
+i18n("720 x 360 DPI FOL Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 360 DPI FOL2");
+// xgettext: no-c-format
+i18n("720 x 360 DPI FOL2 Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 360 DPI MW2");
+// xgettext: no-c-format
+i18n("720 x 360 DPI MW2 Unidirectional");
+// xgettext: no-c-format
+i18n("720 DPI Microweave");
+// xgettext: no-c-format
+i18n("720 DPI Microweave Unidirectional");
+// xgettext: no-c-format
+i18n("720 DPI Full Overlap");
+// xgettext: no-c-format
+i18n("720 DPI Full Overlap Unidirectional");
+// xgettext: no-c-format
+i18n("720 DPI Four Pass");
+// xgettext: no-c-format
+i18n("720 DPI Four Pass Unidirectional");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Microweave");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Microweave Unidirectional");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI FOL");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI FOL Unidirectional");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Four Pass");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Four Pass Unidirectional");
+// xgettext: no-c-format
+i18n("Six Color Photo");
+// xgettext: no-c-format
+i18n("Five Color Photo Composite");
+// xgettext: no-c-format
+i18n("Three Color Composite");
+// xgettext: no-c-format
+i18n("Quadtone");
+// xgettext: no-c-format
+i18n("720 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("720 DPI High Quality");
+// xgettext: no-c-format
+i18n("720 DPI High Quality Unidirectional");
+// xgettext: no-c-format
+i18n("720 DPI Highest Quality");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Highest Quality");
+// xgettext: no-c-format
+i18n("2880 x 720 DPI");
+// xgettext: no-c-format
+i18n("2880 x 720 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("Roll Feed (cut each page)");
+// xgettext: no-c-format
+i18n("Roll Feed (do not cut)");
+// xgettext: no-c-format
+i18n("1440 x 1440 DPI");
+// xgettext: no-c-format
+i18n("1440 x 1440 DPI Highest Quality");
+// xgettext: no-c-format
+i18n("2880 x 1440 DPI");
+// xgettext: no-c-format
+i18n("Seven Color Photo");
+// xgettext: no-c-format
+i18n("Two Level Grayscale");
+// xgettext: no-c-format
+i18n("Cut Sheet Bin 1");
+// xgettext: no-c-format
+i18n("Cut Sheet Bin 2");
+// xgettext: no-c-format
+i18n("Cut Sheet Autoselect");
+// xgettext: no-c-format
+i18n("Manual Selection");
+// xgettext: no-c-format
+i18n("2880 x 720 DPI Microweave");
+// xgettext: no-c-format
+i18n("2880 x 720 DPI Microweave Unidirectional");
+// xgettext: no-c-format
+i18n("2880 x 720 DPI FOL");
+// xgettext: no-c-format
+i18n("2880 x 720 DPI FOL Unidirectional");
+// xgettext: no-c-format
+i18n("2880 x 720 DPI Four Pass");
+// xgettext: no-c-format
+i18n("2880 x 720 DPI Four Pass Unidirectional");
+// xgettext: no-c-format
+i18n("1440 x 1440 DPI Microweave");
+// xgettext: no-c-format
+i18n("1440 x 1440 DPI Microweave Unidirectional");
+// xgettext: no-c-format
+i18n("1440 x 1440 DPI FOL");
+// xgettext: no-c-format
+i18n("1440 x 1440 DPI FOL Unidirectional");
+// xgettext: no-c-format
+i18n("1440 x 1440 DPI Four Pass");
+// xgettext: no-c-format
+i18n("1440 x 1440 DPI Four Pass Unidirectional");
+// xgettext: no-c-format
+i18n("2880 x 1440 DPI Microweave");
+// xgettext: no-c-format
+i18n("2880 x 1440 DPI Microweave Unidirectional");
+// xgettext: no-c-format
+i18n("2880 x 1440 DPI FOL");
+// xgettext: no-c-format
+i18n("2880 x 1440 DPI FOL Unidirectional");
+// xgettext: no-c-format
+i18n("2880 x 1440 DPI Four Pass");
+// xgettext: no-c-format
+i18n("2880 x 1440 DPI Four Pass Unidirectional");
+// xgettext: no-c-format
+i18n("Seven Color Enhanced");
+// xgettext: no-c-format
+i18n("Six Color Enhanced Composite");
+// xgettext: no-c-format
+i18n("Plain");
+// xgettext: no-c-format
+i18n("300 DPI x 600 DPI");
+// xgettext: no-c-format
+i18n("600 DPI high quality");
+// xgettext: no-c-format
+i18n("600 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("1200 DPI high quality");
+// xgettext: no-c-format
+i18n("1200 DPI highest quality");
+// xgettext: no-c-format
+i18n("1200 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("2400 DPI x 1200 DPI");
+// xgettext: no-c-format
+i18n("2400 DPI x 1200 DPI high quality");
+// xgettext: no-c-format
+i18n("2400 DPI x 1200 DPI highest quality");
+// xgettext: no-c-format
+i18n("600x600 DPI monochrome");
+// xgettext: no-c-format
+i18n("Quick-dry Photo");
+// xgettext: no-c-format
+i18n("Quick-dry Transparency");
+// xgettext: no-c-format
+i18n("Portable Sheet Feeder");
+// xgettext: no-c-format
+i18n("Desktop Sheet Feeder");
+// xgettext: no-c-format
+i18n("Color + Black Cartridges");
+// xgettext: no-c-format
+i18n("Upper Tray");
+// xgettext: no-c-format
+i18n("Lower Tray");
+// xgettext: no-c-format
+i18n("Dual");
+// xgettext: no-c-format
+i18n("Thicker Paper");
+// xgettext: no-c-format
+i18n("Thin Paper");
+// xgettext: no-c-format
+i18n("Toner Saving");
+// xgettext: no-c-format
+i18n("High (50%)");
+// xgettext: no-c-format
+i18n("Low (25%)");
+// xgettext: no-c-format
+i18n("Standard printing");
+// xgettext: no-c-format
+i18n("Floyd-Steinberg dithered printing");
+// xgettext: no-c-format
+i18n("Tray 5");
+// xgettext: no-c-format
+i18n("2400x600 DPI");
+// xgettext: no-c-format
+i18n("Draft Grayscale");
+// xgettext: no-c-format
+i18n("Printer Model");
+// xgettext: no-c-format
+i18n("HP LaserJet II series");
+// xgettext: no-c-format
+i18n("HP LaserJet III series");
+// xgettext: no-c-format
+i18n("8K");
+// xgettext: no-c-format
+i18n("Large Capacity Tray");
+// xgettext: no-c-format
+i18n("Multi Purpose Tray");
+// xgettext: no-c-format
+i18n("300 dpi, Draft, Grayscale, Black Cartr.");
+// xgettext: no-c-format
+i18n("300 dpi, Grayscale, Black Cartr.");
+// xgettext: no-c-format
+i18n("600 dpi, Grayscale, Black Cartr.");
+// xgettext: no-c-format
+i18n("180x360 dpi");
+// xgettext: no-c-format
+i18n("360x360 dpi");
+// xgettext: no-c-format
+i18n("180 x 180 DPI");
+// xgettext: no-c-format
+i18n("360 x 360 DPI");
+// xgettext: no-c-format
+i18n("Plain paper");
+// xgettext: no-c-format
+i18n("Bond paper");
+// xgettext: no-c-format
+i18n("Media Weight");
+// xgettext: no-c-format
+i18n("Normal paper");
+// xgettext: no-c-format
+i18n("Thick paper");
+// xgettext: no-c-format
+i18n("90 DPI");
+// xgettext: no-c-format
+i18n("Ghostscript Bits Per Pixel");
+// xgettext: no-c-format
+i18n("Monochrome (1bpp)");
+// xgettext: no-c-format
+i18n("CMYK with Ghostscript dithering (8bpp)");
+// xgettext: no-c-format
+i18n("CMYK with Ghostscript FS dithering (16bpp)");
+// xgettext: no-c-format
+i18n("CMYK with FS dithering (24 bpp)");
+// xgettext: no-c-format
+i18n("CMYK with FS dithering (32 bpp)");
+// xgettext: no-c-format
+i18n("Color Model");
+// xgettext: no-c-format
+i18n("Four-color CMYK");
+// xgettext: no-c-format
+i18n("Greyscale");
+// xgettext: no-c-format
+i18n("Three-color RGB");
+// xgettext: no-c-format
+i18n("Colours to be used");
+// xgettext: no-c-format
+i18n("Cyan only");
+// xgettext: no-c-format
+i18n("Cyan, Black");
+// xgettext: no-c-format
+i18n("Cyan, Magenta");
+// xgettext: no-c-format
+i18n("Cyan, Magenta, Black");
+// xgettext: no-c-format
+i18n("Cyan, Magenta, Yellow");
+// xgettext: no-c-format
+i18n("Cyan, Magenta, Yellow, Black");
+// xgettext: no-c-format
+i18n("Cyan, Yellow");
+// xgettext: no-c-format
+i18n("Cyan, Yellow, Black");
+// xgettext: no-c-format
+i18n("Black only");
+// xgettext: no-c-format
+i18n("Black for any colour");
+// xgettext: no-c-format
+i18n("Magenta only");
+// xgettext: no-c-format
+i18n("Magenta, Black");
+// xgettext: no-c-format
+i18n("Magenta, Yellow");
+// xgettext: no-c-format
+i18n("Magenta, Yellow, Black");
+// xgettext: no-c-format
+i18n("Yellow only");
+// xgettext: no-c-format
+i18n("Yellow, Black");
+// xgettext: no-c-format
+i18n("90 x 90 DPI");
+// xgettext: no-c-format
+i18n("Resolution, Media Type");
+// xgettext: no-c-format
+i18n("360x360dpi, back print film");
+// xgettext: no-c-format
+i18n("360x360dpi, coated paper");
+// xgettext: no-c-format
+i18n("360x360dpi, fabric sheet");
+// xgettext: no-c-format
+i18n("360x360dpi, glossy paper");
+// xgettext: no-c-format
+i18n("360x360dpi, high gloss film");
+// xgettext: no-c-format
+i18n("360x360dpi, high resolution paper");
+// xgettext: no-c-format
+i18n("360x360dpi, plain paper");
+// xgettext: no-c-format
+i18n("360x360dpi, plain paper, high speed");
+// xgettext: no-c-format
+i18n("360x360dpi, transparency film");
+// xgettext: no-c-format
+i18n("Very High Quality");
+// xgettext: no-c-format
+i18n("Very High Quality Grayscale");
+// xgettext: no-c-format
+i18n("720 x 720 DPI");
+// xgettext: no-c-format
+i18n("360 dpi");
+// xgettext: no-c-format
+i18n("720 dpi");
+// xgettext: no-c-format
+i18n("Low Quality");
+// xgettext: no-c-format
+i18n("720x720dpi, back print film");
+// xgettext: no-c-format
+i18n("720x720dpi, coated paper");
+// xgettext: no-c-format
+i18n("720x720dpi, glossy paper");
+// xgettext: no-c-format
+i18n("720x720dpi, high-gloss paper");
+// xgettext: no-c-format
+i18n("720x720dpi, high resolution paper");
+// xgettext: no-c-format
+i18n("720x720dpi, plain paper");
+// xgettext: no-c-format
+i18n("720x720dpi, transparency film");
+// xgettext: no-c-format
+i18n("1200 x 600 DPI");
+// xgettext: no-c-format
+i18n("Resolution, Quality, Media Type");
+// xgettext: no-c-format
+i18n("600x600dpi, iron-on transfer sheets, normal quality");
+// xgettext: no-c-format
+i18n("600x600dpi, plain paper, normal quality");
+// xgettext: no-c-format
+i18n("600x600dpi, transparencies, normal quality");
+// xgettext: no-c-format
+i18n("1200x1200dpi, glossy photo cards, high quality");
+// xgettext: no-c-format
+i18n("1200x1200dpi, high gloss photo paper, high quality");
+// xgettext: no-c-format
+i18n("1200x1200dpi, professional photo paper, highest quality");
+// xgettext: no-c-format
+i18n("1200 x 1200 DPI");
+// xgettext: no-c-format
+i18n("Number of Copies");
+// xgettext: no-c-format
+i18n("REt Setting");
+// xgettext: no-c-format
+i18n("Halftoning");
+// xgettext: no-c-format
+i18n("HP LaserJet 4L");
+// xgettext: no-c-format
+i18n("Shift output horizontally (in 1/300 inch)");
+// xgettext: no-c-format
+i18n("Shift output vertically (in 1/300 inch)");
+// xgettext: no-c-format
+i18n("Full Paint");
+// xgettext: no-c-format
+i18n("FullPaint");
+// xgettext: no-c-format
+i18n("PartialPaint");
+// xgettext: no-c-format
+i18n("Printer's paper size");
+// xgettext: no-c-format
+i18n("IgnoreSize");
+// xgettext: no-c-format
+i18n("RequireSize");
+// xgettext: no-c-format
+i18n("240x240 DPI");
+// xgettext: no-c-format
+i18n("300x300 dpi");
+// xgettext: no-c-format
+i18n("300x600 dpi");
+// xgettext: no-c-format
+i18n("600x600 dpi");
+// xgettext: no-c-format
+i18n("600x1200 dpi");
+// xgettext: no-c-format
+i18n("1200x1200 dpi");
+// xgettext: no-c-format
+i18n("Head Separation");
+// xgettext: no-c-format
+i18n("300x600 DPI");
+// xgettext: no-c-format
+i18n("300x1200 DPI");
+// xgettext: no-c-format
+i18n("600x1200 DPI");
+// xgettext: no-c-format
+i18n("1200x300 DPI");
+// xgettext: no-c-format
+i18n("Photo Quality Colour (6-ink)");
+// xgettext: no-c-format
+i18n("Normal Quality Colour (4-ink)");
+// xgettext: no-c-format
+i18n("Bidirectional printing");
+// xgettext: no-c-format
+i18n("off");
+// xgettext: no-c-format
+i18n("on");
+// xgettext: no-c-format
+i18n("Horz. align. betw. cartr.");
+// xgettext: no-c-format
+i18n("Vert. align. betw. cartr.");
+// xgettext: no-c-format
+i18n("Distance even/odd nozzles left cartr.");
+// xgettext: no-c-format
+i18n("Distance even/odd nozzles right cartr.");
+// xgettext: no-c-format
+i18n("Number of passes per line");
+// xgettext: no-c-format
+i18n("Paper Source");
+// xgettext: no-c-format
+i18n("Tray 8");
+// xgettext: no-c-format
+i18n("Tray 9");
+// xgettext: no-c-format
+i18n("Tray 10");
+// xgettext: no-c-format
+i18n("Tray 11");
+// xgettext: no-c-format
+i18n("Tray 12");
+// xgettext: no-c-format
+i18n("Tray 13");
+// xgettext: no-c-format
+i18n("Tray 14");
+// xgettext: no-c-format
+i18n("Tray 15");
+// xgettext: no-c-format
+i18n("Page Output");
+// xgettext: no-c-format
+i18n("FaceUp");
+// xgettext: no-c-format
+i18n("FaceDown");
+// xgettext: no-c-format
+i18n("Thick Paper/Card Board");
+// xgettext: no-c-format
+i18n("Toner Density");
+// xgettext: no-c-format
+i18n("TonerSaving");
+// xgettext: no-c-format
+i18n("Output Order");
+// xgettext: no-c-format
+i18n("Collate");
+// xgettext: no-c-format
+i18n("Orientation");
+// xgettext: no-c-format
+i18n("Landscape");
+// xgettext: no-c-format
+i18n("Portrait");
+// xgettext: no-c-format
+i18n("RIT Control");
+// xgettext: no-c-format
+i18n("RITOff");
+// xgettext: no-c-format
+i18n("RITOn");
+// xgettext: no-c-format
+i18n("Monochrome, fast");
+// xgettext: no-c-format
+i18n("Monochrome, Floyd-Steinberg");
+// xgettext: no-c-format
+i18n("Head motion");
+// xgettext: no-c-format
+i18n("Unidirectional");
+// xgettext: no-c-format
+i18n("Bidirectional");
+// xgettext: no-c-format
+i18n("Weaving");
+// xgettext: no-c-format
+i18n("Microweave (Printer internal)");
+// xgettext: no-c-format
+i18n("Softweave (Driver internal)");
+// xgettext: no-c-format
+i18n("ESC/P2 Encoding");
+// xgettext: no-c-format
+i18n("Delta Row");
+// xgettext: no-c-format
+i18n("Run Length");
+// xgettext: no-c-format
+i18n("Uncompressed");
+// xgettext: no-c-format
+i18n("Preconfiguration file");
+// xgettext: no-c-format
+i18n("stcolor");
+// xgettext: no-c-format
+i18n("none");
+// xgettext: no-c-format
+i18n("Initialization values for dithering");
+// xgettext: no-c-format
+i18n("Uniform");
+// xgettext: no-c-format
+i18n("Random");
+// xgettext: no-c-format
+i18n("360 x 120 DPI");
+// xgettext: no-c-format
+i18n("360 x 240 DPI");
+// xgettext: no-c-format
+i18n("360 x 180 DPI");
+// xgettext: no-c-format
+i18n("360 x 90 DPI");
+// xgettext: no-c-format
+i18n("360x360dpi, 4-bit, PostScript halftoning, weaved");
+// xgettext: no-c-format
+i18n("360x360dpi, 32-bit CMYK");
+// xgettext: no-c-format
+i18n("720x720dpi, 32-bit CMYK, weaved");
+// xgettext: no-c-format
+i18n("Colour, Floyd-Steinberg, CMYK, better");
+// xgettext: no-c-format
+i18n("Colour, fast, CMYK");
+// xgettext: no-c-format
+i18n("Colour, modif. Floyd-Steinberg, CMYK, faster");
+// xgettext: no-c-format
+i18n("Colour, fast, RGB");
+// xgettext: no-c-format
+i18n("Colour, Floyd-Steinberg, RGB");
+// xgettext: no-c-format
+i18n("Colour, Floyd-Steinberg, CMYK, simpler");
+// xgettext: no-c-format
+i18n("Colour, Stefan-Singer algorithm, RGB");
+// xgettext: no-c-format
+i18n("360 dpi, plain paper");
+// xgettext: no-c-format
+i18n("720 dpi, plain paper");
+// xgettext: no-c-format
+i18n("1440x720dpi, inkjet paper");
+// xgettext: no-c-format
+i18n("Resolution, Color Mode, Media Type");
+// xgettext: no-c-format
+i18n("360x360dpi, plain paper, grayscale");
+// xgettext: no-c-format
+i18n("720x720dpi, inkjet paper");
+// xgettext: no-c-format
+i18n("720x720dpi, plain paper, grayscale");
+// xgettext: no-c-format
+i18n("1440x720dpi, inkjet paper, grayscale");
+// xgettext: no-c-format
+i18n("360x360dpi, plain paper low quality");
+// xgettext: no-c-format
+i18n("360x360dpi");
+// xgettext: no-c-format
+i18n("720x720dpi");
+// xgettext: no-c-format
+i18n("F4");
+// xgettext: no-c-format
+i18n("Government Legal");
+// xgettext: no-c-format
+i18n("Government Letter");
+// xgettext: no-c-format
+i18n("Half Letter");
+// xgettext: no-c-format
+i18n("TonerSave");
+// xgettext: no-c-format
+i18n("Dpi");
+// xgettext: no-c-format
+i18n("600x300 dpi (Class600)");
+// xgettext: no-c-format
+i18n("1200x600 dpi (Class1200)");
+// xgettext: no-c-format
+i18n("Ritech");
+// xgettext: no-c-format
+i18n("Resolution, Color Mode");
+// xgettext: no-c-format
+i18n("180x180dpi, Grayscale, plain paper");
+// xgettext: no-c-format
+i18n("360x360dpi, Color, plain paper");
+// xgettext: no-c-format
+i18n("360x360dpi, Grayscale, plain paper");
+// xgettext: no-c-format
+i18n("360x720 DPI");
+// xgettext: no-c-format
+i18n("400x400 DPI");
+// xgettext: no-c-format
+i18n("300 dpi, Best, Color, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("600 dpi, Best, Color, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("600 dpi, Grayscale, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("Super B");
+// xgettext: no-c-format
+i18n("Manual Feeding");
+// xgettext: no-c-format
+i18n("Paper type");
+// xgettext: no-c-format
+i18n("Glossy film");
+// xgettext: no-c-format
+i18n("Special paper");
+// xgettext: no-c-format
+i18n("Transparency film");
+// xgettext: no-c-format
+i18n("Printing Quality");
+// xgettext: no-c-format
+i18n("RET (Resolution Enhancement)");
+// xgettext: no-c-format
+i18n("Draft (auto-detect paper type)");
+// xgettext: no-c-format
+i18n("Photo (on photo paper)");
+// xgettext: no-c-format
+i18n("300 dpi, Photo, Black + Color Cartr., Photo Paper");
+// xgettext: no-c-format
+i18n("600 dpi, Color, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("600 dpi, Photo, Black + Color Cartr., Photo Paper");
+// xgettext: no-c-format
+i18n("Draft Grayscale (auto-detect paper type)");
+// xgettext: no-c-format
+i18n("Normal (auto-detect paper type)");
+// xgettext: no-c-format
+i18n("Normal Grayscale (auto-detect paper type)");
+// xgettext: no-c-format
+i18n("High Quality (auto-detect paper type)");
+// xgettext: no-c-format
+i18n("High Quality Grayscale (auto-detect paper type)");
+// xgettext: no-c-format
+i18n("1200 dpi, Photo, Black + Color Cartr., Photo Paper");
+// xgettext: no-c-format
+i18n("Binding for Double-Sided Pr.");
+// xgettext: no-c-format
+i18n("Long Edge");
+// xgettext: no-c-format
+i18n("Short Edge");
+// xgettext: no-c-format
+i18n("Auto");
+// xgettext: no-c-format
+i18n("Contone (4096 colors)");
+// xgettext: no-c-format
+i18n("2A");
+// xgettext: no-c-format
+i18n("4A");
+// xgettext: no-c-format
+i18n("Arch A");
+// xgettext: no-c-format
+i18n("Arch B");
+// xgettext: no-c-format
+i18n("Arch C");
+// xgettext: no-c-format
+i18n("Arch D");
+// xgettext: no-c-format
+i18n("Arch E");
+// xgettext: no-c-format
+i18n("B0 (ISO)");
+// xgettext: no-c-format
+i18n("B1 (ISO)");
+// xgettext: no-c-format
+i18n("B2 (ISO)");
+// xgettext: no-c-format
+i18n("B3 (ISO)");
+// xgettext: no-c-format
+i18n("B4 (ISO)");
+// xgettext: no-c-format
+i18n("B5 (ISO)");
+// xgettext: no-c-format
+i18n("B0 (JIS)");
+// xgettext: no-c-format
+i18n("B1 (JIS)");
+// xgettext: no-c-format
+i18n("B2 (JIS)");
+// xgettext: no-c-format
+i18n("B3 (JIS)");
+// xgettext: no-c-format
+i18n("Super A");
+// xgettext: no-c-format
+i18n("Tabloid Extra");
+// xgettext: no-c-format
+i18n("EconoFast Mode");
+// xgettext: no-c-format
+i18n("Color (Color Cartridge, for photos)");
+// xgettext: no-c-format
+i18n("Color (both cartridges, for text with images)");
+// xgettext: no-c-format
+i18n("Grayscale (black cartridge)");
+// xgettext: no-c-format
+i18n("Dithering Algorithm");
+// xgettext: no-c-format
+i18n("Floyd Steinberg (higher quality)");
+// xgettext: no-c-format
+i18n("Ordered (faster)");
+// xgettext: no-c-format
+i18n("Off (better quality)");
+// xgettext: no-c-format
+i18n("On (faster)");
+// xgettext: no-c-format
+i18n("Black ink density adjustment.");
+// xgettext: no-c-format
+i18n("Bottom Margin");
+// xgettext: no-c-format
+i18n("Left Margin");
+// xgettext: no-c-format
+i18n("Right Margin");
+// xgettext: no-c-format
+i18n("Top Margin");
+// xgettext: no-c-format
+i18n("X Offset");
+// xgettext: no-c-format
+i18n("Y Offset");
+// xgettext: no-c-format
+i18n("Gamma Correction File");
+// xgettext: no-c-format
+i18n("Default (/etc/pnm2ppa.gamma)");
+// xgettext: no-c-format
+i18n("Normal Quality (/etc/pnm2ppa.gamma_normal)");
+// xgettext: no-c-format
+i18n("Best Quality (/etc/pnm2ppa.gamma_best)");
+// xgettext: no-c-format
+i18n("None");
+// xgettext: no-c-format
+i18n("GhostScript Rendering Format");
+// xgettext: no-c-format
+i18n("Gamma Correction");
+// xgettext: no-c-format
+i18n("Gamma Black");
+// xgettext: no-c-format
+i18n("Gamma Cyan");
+// xgettext: no-c-format
+i18n("Gamma Magenta");
+// xgettext: no-c-format
+i18n("Gamma Yellow");
+// xgettext: no-c-format
+i18n("Draft Grayscale (Black cartridge)");
+// xgettext: no-c-format
+i18n("Normal Grayscale (Black cartridge)");
+// xgettext: no-c-format
+i18n("High Quality Grayscale (Black cartridge)");
+// xgettext: no-c-format
+i18n("600x300 dpi, Best, Grayscale, Black Cartr.");
+// xgettext: no-c-format
+i18n("300 dpi, Color, Full Bleed, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("600 dpi, Color, Full Bleed, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("1200 dpi, Photo, Full Bleed, Black + Color Cartr., Photo Paper");
+// xgettext: no-c-format
+i18n("Photo (Color cartridge, on photo paper)");
+// xgettext: no-c-format
+i18n("300 dpi, Photo, Color Cartr., Photo Paper");
+// xgettext: no-c-format
+i18n("600 dpi, Photo, Color Cartr., Photo Paper");
+// xgettext: no-c-format
+i18n("Glossy");
+// xgettext: no-c-format
+i18n("Paper");
+// xgettext: no-c-format
+i18n("Behaviour when Toner Low");
+// xgettext: no-c-format
+i18n("Output Bin");
+// xgettext: no-c-format
+i18n("Upper");
+// xgettext: no-c-format
+i18n("Lower");
+// xgettext: no-c-format
+i18n("MP Tray");
+// xgettext: no-c-format
+i18n("300 dpi, Color, Full Bleed, Color Cartr.");
+// xgettext: no-c-format
+i18n("600 dpi, Color, Color Cartr.");
+// xgettext: no-c-format
+i18n("600 dpi, Color, Full Bleed, Color Cartr.");
+// xgettext: no-c-format
+i18n("1200 dpi, Photo, Color Cartr., Photo Paper");
+// xgettext: no-c-format
+i18n("1200 dpi, Photo, Full Bleed, Color Cartr., Photo Paper");
+// xgettext: no-c-format
+i18n("150 dpi, Best, Color, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("150 dpi, Color, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("150 dpi, Draft, Color, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("150 dpi, Draft, Grayscale, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("150 dpi, Grayscale, Black + Color Cartr.");
+// xgettext: no-c-format
+i18n("2400x1200 DPI");
+// xgettext: no-c-format
+i18n("High Quality (Color cartridge)");
+// xgettext: no-c-format
+i18n("Cover for HP DeskJet 3425");
+// xgettext: no-c-format
+i18n("75x75 dpi");
+// xgettext: no-c-format
+i18n("150x150 dpi");
+// xgettext: no-c-format
+i18n("Black cartridge");
+// xgettext: no-c-format
+i18n("Color cartridge");
+// xgettext: no-c-format
+i18n("Folio");
+// xgettext: no-c-format
+i18n("Normal Paper");
+// xgettext: no-c-format
+i18n("Card Stock");
+// xgettext: no-c-format
+i18n("Adhesive Labels");
+// xgettext: no-c-format
+i18n("Pre-printed paper");
+// xgettext: no-c-format
+i18n("Allow use of 'Reprint' button");
+// xgettext: no-c-format
+i18n("Yes");
+// xgettext: no-c-format
+i18n("Altitude Correction");
+// xgettext: no-c-format
+i18n("High Altitude (Low Air Pressure)");
+// xgettext: no-c-format
+i18n("Low Altitude (High Air Pressure)");
+// xgettext: no-c-format
+i18n("Reprint Page after Paper Jam");
+// xgettext: no-c-format
+i18n("Page Timeout");
+// xgettext: no-c-format
+i18n("15 sec");
+// xgettext: no-c-format
+i18n("30 sec");
+// xgettext: no-c-format
+i18n("45 sec");
+// xgettext: no-c-format
+i18n("Idle time to start power save mode (min)");
+// xgettext: no-c-format
+i18n("5 min");
+// xgettext: no-c-format
+i18n("10 min");
+// xgettext: no-c-format
+i18n("15 min");
+// xgettext: no-c-format
+i18n("30 min");
+// xgettext: no-c-format
+i18n("45 min");
+// xgettext: no-c-format
+i18n("60 min");
+// xgettext: no-c-format
+i18n("Use Power Saving Mode");
+// xgettext: no-c-format
+i18n("Dithering PPI");
+// xgettext: no-c-format
+i18n("300 x 600 DPI");
+// xgettext: no-c-format
+i18n("2400 x 1200 DPI");
+// xgettext: no-c-format
+i18n("2-passes x-weaving");
+// xgettext: no-c-format
+i18n("3-passes x-weaving");
+// xgettext: no-c-format
+i18n("320x320 DPI");
+// xgettext: no-c-format
+i18n("160x160 DPI");
+// xgettext: no-c-format
+i18n("Darkness");
+// xgettext: no-c-format
+i18n("Darkest");
+// xgettext: no-c-format
+i18n("Lightest");
+// xgettext: no-c-format
+i18n("Black toner saving");
+// xgettext: no-c-format
+i18n("DeskJet");
+// xgettext: no-c-format
+i18n("DeskJet 310");
+// xgettext: no-c-format
+i18n("DeskJet 320");
+// xgettext: no-c-format
+i18n("DeskJet 340");
+// xgettext: no-c-format
+i18n("DeskJet 400");
+// xgettext: no-c-format
+i18n("DeskJet 600");
+// xgettext: no-c-format
+i18n("DeskJet 660C");
+// xgettext: no-c-format
+i18n("DeskJet 670C");
+// xgettext: no-c-format
+i18n("DeskJet 680C");
+// xgettext: no-c-format
+i18n("DeskJet 690C");
+// xgettext: no-c-format
+i18n("DeskJet 870C");
+// xgettext: no-c-format
+i18n("DeskJet 890C");
+// xgettext: no-c-format
+i18n("DeskJet 970C with Duplexer");
+// xgettext: no-c-format
+i18n("DeskJet 1120C");
+// xgettext: no-c-format
+i18n("DeskJet Plus");
+// xgettext: no-c-format
+i18n("DeskJet Portable");
+// xgettext: no-c-format
+i18n("Olivetti (Black sent after CMY)");
+// xgettext: no-c-format
+i18n("Unspecified Model");
+// xgettext: no-c-format
+i18n("Unspecified Old Model");
+// xgettext: no-c-format
+i18n("Configure Every Page");
+// xgettext: no-c-format
+i18n("Media Size");
+// xgettext: no-c-format
+i18n("Letter");
+// xgettext: no-c-format
+i18n("Legal");
+// xgettext: no-c-format
+i18n("A4");
+// xgettext: no-c-format
+i18n("PageRegion");
+// xgettext: no-c-format
+i18n("Output Resolution");
+// xgettext: no-c-format
+i18n("204x196 DPI");
+// xgettext: no-c-format
+i18n("204x98 DPI");
+// xgettext: no-c-format
+i18n("your fax for replies");
+// xgettext: no-c-format
+i18n("ID");
+// xgettext: no-c-format
+i18n("your fax header");
+// xgettext: no-c-format
+i18n("Default");
+// xgettext: no-c-format
+i18n("Resolution");
+// xgettext: no-c-format
+i18n("72dpi");
+// xgettext: no-c-format
+i18n("144dpi");
+// xgettext: no-c-format
+i18n("300dpi");
+// xgettext: no-c-format
+i18n("360dpi");
+// xgettext: no-c-format
+i18n("600dpi");
+// xgettext: no-c-format
+i18n("720dpi");
+// xgettext: no-c-format
+i18n("1200dpi");
+// xgettext: no-c-format
+i18n("1440dpi");
+// xgettext: no-c-format
+i18n("2400dpi");
+// xgettext: no-c-format
+i18n("PageSize");
+// xgettext: no-c-format
+i18n("A0");
+// xgettext: no-c-format
+i18n("A1");
+// xgettext: no-c-format
+i18n("A2");
+// xgettext: no-c-format
+i18n("A3");
+// xgettext: no-c-format
+i18n("A5");
+// xgettext: no-c-format
+i18n("A6");
+// xgettext: no-c-format
+i18n("B4");
+// xgettext: no-c-format
+i18n("B5");
+// xgettext: no-c-format
+i18n("B6");
+// xgettext: no-c-format
+i18n("US Legal");
+// xgettext: no-c-format
+i18n("US Letter");
+// xgettext: no-c-format
+i18n("Executive");
+// xgettext: no-c-format
+i18n("Statement");
+// xgettext: no-c-format
+i18n("US Tabloid");
+// xgettext: no-c-format
+i18n("Ledger Landscape");
+// xgettext: no-c-format
+i18n("US C");
+// xgettext: no-c-format
+i18n("US D");
+// xgettext: no-c-format
+i18n("US E");
+// xgettext: no-c-format
+i18n("ARCH A");
+// xgettext: no-c-format
+i18n("ARCH B");
+// xgettext: no-c-format
+i18n("ARCH C");
+// xgettext: no-c-format
+i18n("ARCH D");
+// xgettext: no-c-format
+i18n("ARCH E");
+// xgettext: no-c-format
+i18n("Monarch Envelope");
+// xgettext: no-c-format
+i18n("DL Envelope");
+// xgettext: no-c-format
+i18n("C4 Envelope");
+// xgettext: no-c-format
+i18n("C5 Envelope");
+// xgettext: no-c-format
+i18n("C6 Envelope");
+// xgettext: no-c-format
+i18n("C10 Envelope");
+// xgettext: no-c-format
+i18n("C65 Envelope");
+// xgettext: no-c-format
+i18n("Folio");
+// xgettext: no-c-format
+i18n("InputSlot");
+// xgettext: no-c-format
+i18n("Autotray");
+// xgettext: no-c-format
+i18n("Tray 2 Paper Tray");
+// xgettext: no-c-format
+i18n("Installed Memory");
+// xgettext: no-c-format
+i18n("Standard 16MB");
+// xgettext: no-c-format
+i18n("80 MB");
+// xgettext: no-c-format
+i18n("B5 (JIS)");
+// xgettext: no-c-format
+i18n("Envelope 10");
+// xgettext: no-c-format
+i18n("Envelope DL");
+// xgettext: no-c-format
+i18n("Envelope C5");
+// xgettext: no-c-format
+i18n("Envelope C6");
+// xgettext: no-c-format
+i18n("Envelope Monarch");
+// xgettext: no-c-format
+i18n("Envelope A2");
+// xgettext: no-c-format
+i18n("4x6");
+// xgettext: no-c-format
+i18n("5x8");
+// xgettext: no-c-format
+i18n("A6 Card");
+// xgettext: no-c-format
+i18n("Print Color as Gray");
+// xgettext: no-c-format
+i18n("On");
+// xgettext: no-c-format
+i18n("Off");
+// xgettext: no-c-format
+i18n("Media Type");
+// xgettext: no-c-format
+i18n("Plain Paper");
+// xgettext: no-c-format
+i18n("HP Premium Inkjet Paper");
+// xgettext: no-c-format
+i18n("HP Premium Inkjet Heavyweight Paper");
+// xgettext: no-c-format
+i18n("HP Premium Transparency");
+// xgettext: no-c-format
+i18n("HP Premium Photo Paper");
+// xgettext: no-c-format
+i18n("HP Photo Paper");
+// xgettext: no-c-format
+i18n("HP Professional Brochure Paper, Glossy");
+// xgettext: no-c-format
+i18n("HP Professional Brochure Paper, Matte");
+// xgettext: no-c-format
+i18n(" Paper Source");
+// xgettext: no-c-format
+i18n("Tray 1");
+// xgettext: no-c-format
+i18n("Tray 2");
+// xgettext: no-c-format
+i18n("Manual Feed");
+// xgettext: no-c-format
+i18n("HP ColorSmart");
+// xgettext: no-c-format
+i18n("Automatic");
+// xgettext: no-c-format
+i18n("Manual");
+// xgettext: no-c-format
+i18n("Text");
+// xgettext: no-c-format
+i18n("ScreenMatch(sRGB)");
+// xgettext: no-c-format
+i18n("Vivid");
+// xgettext: no-c-format
+i18n("Graphics");
+// xgettext: no-c-format
+i18n("Image");
+// xgettext: no-c-format
+i18n(" Print Quality");
+// xgettext: no-c-format
+i18n("Best");
+// xgettext: no-c-format
+i18n("Normal");
+// xgettext: no-c-format
+i18n("Fast");
+// xgettext: no-c-format
+i18n("CMYK Inks");
+// xgettext: no-c-format
+i18n("FAST");
+// xgettext: no-c-format
+i18n("SWOP Emulation");
+// xgettext: no-c-format
+i18n("Eurostandard");
+// xgettext: no-c-format
+i18n("TOYO");
+// xgettext: no-c-format
+i18n("Pages per Sheet");
+// xgettext: no-c-format
+i18n("1 (Portrait)");
+// xgettext: no-c-format
+i18n("1 (Landscape)");
+// xgettext: no-c-format
+i18n("2 (Portrait)");
+// xgettext: no-c-format
+i18n("2 (Landscape)");
+// xgettext: no-c-format
+i18n("4 (Portrait)");
+// xgettext: no-c-format
+i18n("4 (Landscape)");
+// xgettext: no-c-format
+i18n("6 (Portrait)");
+// xgettext: no-c-format
+i18n("6 (Landscape)");
+// xgettext: no-c-format
+i18n("9 (Portrait)");
+// xgettext: no-c-format
+i18n("9 (Landscape)");
+// xgettext: no-c-format
+i18n("16 (Portrait)");
+// xgettext: no-c-format
+i18n("16 (Landscape)");
+// xgettext: no-c-format
+i18n("Watermark");
+// xgettext: no-c-format
+i18n("None");
+// xgettext: no-c-format
+i18n("Company Confidential");
+// xgettext: no-c-format
+i18n("Company Proprietary");
+// xgettext: no-c-format
+i18n("Company Private");
+// xgettext: no-c-format
+i18n("Confidential");
+// xgettext: no-c-format
+i18n("Copy");
+// xgettext: no-c-format
+i18n("Copyright");
+// xgettext: no-c-format
+i18n("Draft");
+// xgettext: no-c-format
+i18n("File Copy");
+// xgettext: no-c-format
+i18n("Final");
+// xgettext: no-c-format
+i18n("For Internal Use Only");
+// xgettext: no-c-format
+i18n("Preliminary");
+// xgettext: no-c-format
+i18n("Proof");
+// xgettext: no-c-format
+i18n("Review Copy");
+// xgettext: no-c-format
+i18n("Sample");
+// xgettext: no-c-format
+i18n("Top Secret");
+// xgettext: no-c-format
+i18n("Urgent");
+// xgettext: no-c-format
+i18n("Watermark Font");
+// xgettext: no-c-format
+i18n("Courier Bold");
+// xgettext: no-c-format
+i18n("Times Bold");
+// xgettext: no-c-format
+i18n("Helvetica Bold");
+// xgettext: no-c-format
+i18n("Watermark Size");
+// xgettext: no-c-format
+i18n("24 Points");
+// xgettext: no-c-format
+i18n("30 Points");
+// xgettext: no-c-format
+i18n("36 Points");
+// xgettext: no-c-format
+i18n("42 Points");
+// xgettext: no-c-format
+i18n("48 Points");
+// xgettext: no-c-format
+i18n("54 Points");
+// xgettext: no-c-format
+i18n("60 Points");
+// xgettext: no-c-format
+i18n("66 Points");
+// xgettext: no-c-format
+i18n("72 Points");
+// xgettext: no-c-format
+i18n("78 Points");
+// xgettext: no-c-format
+i18n("84 Points");
+// xgettext: no-c-format
+i18n("90 Points");
+// xgettext: no-c-format
+i18n("Watermark Angle");
+// xgettext: no-c-format
+i18n("90 Degrees");
+// xgettext: no-c-format
+i18n("75 Degrees");
+// xgettext: no-c-format
+i18n("60 Degrees");
+// xgettext: no-c-format
+i18n("45 Degrees");
+// xgettext: no-c-format
+i18n("30 Degrees");
+// xgettext: no-c-format
+i18n("15 Degrees");
+// xgettext: no-c-format
+i18n("0 Degrees");
+// xgettext: no-c-format
+i18n("-15 Degrees");
+// xgettext: no-c-format
+i18n("-30 Degrees");
+// xgettext: no-c-format
+i18n("-45 Degrees");
+// xgettext: no-c-format
+i18n("-60 Degrees");
+// xgettext: no-c-format
+i18n("-75 Degrees");
+// xgettext: no-c-format
+i18n("-90 Degrees");
+// xgettext: no-c-format
+i18n("Watermark Style");
+// xgettext: no-c-format
+i18n("Narrow Outline");
+// xgettext: no-c-format
+i18n("Medium Outline");
+// xgettext: no-c-format
+i18n("Wide Outline");
+// xgettext: no-c-format
+i18n("Wide Halo Outline");
+// xgettext: no-c-format
+i18n("Print Watermark");
+// xgettext: no-c-format
+i18n("All Pages");
+// xgettext: no-c-format
+i18n("First Page Only");
+// xgettext: no-c-format
+i18n("32 MB");
+// xgettext: no-c-format
+i18n("48 MB");
+// xgettext: no-c-format
+i18n("64 MB");
+// xgettext: no-c-format
+i18n("72 MB");
+// xgettext: no-c-format
+i18n("Tabloid");
+// xgettext: no-c-format
+i18n("4x6 Index Card");
+// xgettext: no-c-format
+i18n("5x8 Index Card");
+// xgettext: no-c-format
+i18n("Super B");
+// xgettext: no-c-format
+i18n("Super A3");
+// xgettext: no-c-format
+i18n("Input Slot");
+// xgettext: no-c-format
+i18n("Tray 3");
+// xgettext: no-c-format
+i18n("Rear Manual Feed");
+// xgettext: no-c-format
+i18n("True");
+// xgettext: no-c-format
+i18n("False");
+// xgettext: no-c-format
+i18n("HP Rapid-Dry Transparency");
+// xgettext: no-c-format
+i18n("HP Transparency");
+// xgettext: no-c-format
+i18n("HP Iron-on T-shirt Transfers");
+// xgettext: no-c-format
+i18n("Fit to Page");
+// xgettext: no-c-format
+i18n("Prompt User");
+// xgettext: no-c-format
+i18n("Nearest Size and Scale");
+// xgettext: no-c-format
+i18n("Nearest Size and Crop");
+// xgettext: no-c-format
+i18n("Print Quality");
+// xgettext: no-c-format
+i18n("EconoFast");
+// xgettext: no-c-format
+i18n("Color Control");
+// xgettext: no-c-format
+i18n("Enhanced Native");
+// xgettext: no-c-format
+i18n("ColorSmart Business Graphics");
+// xgettext: no-c-format
+i18n("No Color Adjustment");
+// xgettext: no-c-format
+i18n("Pantone");
+// xgettext: no-c-format
+i18n("Rendering Intent");
+// xgettext: no-c-format
+i18n("Contrast");
+// xgettext: no-c-format
+i18n("Colorimetric");
+// xgettext: no-c-format
+i18n("Saturation");
+// xgettext: no-c-format
+i18n(" -25% Lighter");
+// xgettext: no-c-format
+i18n(" -20%");
+// xgettext: no-c-format
+i18n(" -15%");
+// xgettext: no-c-format
+i18n(" -10%");
+// xgettext: no-c-format
+i18n(" -5%");
+// xgettext: no-c-format
+i18n(" 0% No Change");
+// xgettext: no-c-format
+i18n(" +5%");
+// xgettext: no-c-format
+i18n(" +10%");
+// xgettext: no-c-format
+i18n(" +15%");
+// xgettext: no-c-format
+i18n(" +20%");
+// xgettext: no-c-format
+i18n(" +25% Darker");
+// xgettext: no-c-format
+i18n("Application Halftoning");
+// xgettext: no-c-format
+i18n("Yes");
+// xgettext: no-c-format
+i18n("No");
+// xgettext: no-c-format
+i18n("Scale to");
+// xgettext: no-c-format
+i18n("No Change");
+// xgettext: no-c-format
+i18n("PPD Version");
+// xgettext: no-c-format
+i18n("2.0");
+// xgettext: no-c-format
+i18n("Rear Feed Unit");
+// xgettext: no-c-format
+i18n("Installed");
+// xgettext: no-c-format
+i18n("Not Installed");
+// xgettext: no-c-format
+i18n("Memory Configuration");
+// xgettext: no-c-format
+i18n("36 - 43 MB RAM");
+// xgettext: no-c-format
+i18n("44 - 51 MB RAM");
+// xgettext: no-c-format
+i18n("52 - 59 MB RAM");
+// xgettext: no-c-format
+i18n("60 - 67 MB RAM");
+// xgettext: no-c-format
+i18n(">= 68 MB RAM");
+// xgettext: no-c-format
+i18n("Print as Grayscale");
+// xgettext: no-c-format
+i18n("ColorSmart");
+// xgettext: no-c-format
+i18n("Auto");
+// xgettext: no-c-format
+i18n("Pantone<AE>");
+// xgettext: no-c-format
+i18n("ColorSmart Text");
+// xgettext: no-c-format
+i18n("Vivid Color");
+// xgettext: no-c-format
+i18n("Match Color Across Printers");
+// xgettext: no-c-format
+i18n("No Adjustment");
+// xgettext: no-c-format
+i18n("ColorSmart Graphics");
+// xgettext: no-c-format
+i18n("ColorSmart Photos");
+// xgettext: no-c-format
+i18n("Text Halftone");
+// xgettext: no-c-format
+i18n("Detail");
+// xgettext: no-c-format
+i18n("Smooth");
+// xgettext: no-c-format
+i18n("Basic");
+// xgettext: no-c-format
+i18n("Graphics Halftone");
+// xgettext: no-c-format
+i18n("Image Halftone");
+// xgettext: no-c-format
+i18n("Transparency/HP Special Paper");
+// xgettext: no-c-format
+i18n("Media Source");
+// xgettext: no-c-format
+i18n("Auto Select");
+// xgettext: no-c-format
+i18n("Front Tray");
+// xgettext: no-c-format
+i18n("Rear Tray");
+// xgettext: no-c-format
+i18n("Output Bin");
+// xgettext: no-c-format
+i18n("Upper");
+// xgettext: no-c-format
+i18n("Lower");
+// xgettext: no-c-format
+i18n(" 8 - 15 MB Total RAM");
+// xgettext: no-c-format
+i18n(" 16 - 23 MB Total RAM");
+// xgettext: no-c-format
+i18n(" 24 - 31 MB Total RAM");
+// xgettext: no-c-format
+i18n(" 32 - 39 MB Total RAM");
+// xgettext: no-c-format
+i18n(" 40 - 56 MB Total RAM");
+// xgettext: no-c-format
+i18n("Letter 8 1/2 x 11 in");
+// xgettext: no-c-format
+i18n("Legal 8 1/2 x 14 in");
+// xgettext: no-c-format
+i18n("Tabloid 11 x 17 in");
+// xgettext: no-c-format
+i18n("Executive 7 1/4 x 10 1/2 in");
+// xgettext: no-c-format
+i18n("A4 210 x 297 mm");
+// xgettext: no-c-format
+i18n("A3 297 x 420 mm");
+// xgettext: no-c-format
+i18n("Halftone");
+// xgettext: no-c-format
+i18n("Cluster (Standard)");
+// xgettext: no-c-format
+i18n("Scatter (Enhanced)");
+// xgettext: no-c-format
+i18n("Printer's Current Setting");
+// xgettext: no-c-format
+i18n("Full Color");
+// xgettext: no-c-format
+i18n("Paper");
+// xgettext: no-c-format
+i18n("Transparency");
+// xgettext: no-c-format
+i18n("Resolution Enhancement (REt)");
+// xgettext: no-c-format
+i18n("Light");
+// xgettext: no-c-format
+i18n("Medium");
+// xgettext: no-c-format
+i18n("Dark");
+// xgettext: no-c-format
+i18n("Printer Default");
+// xgettext: no-c-format
+i18n("Tray3");
+// xgettext: no-c-format
+i18n("32 - 39 MB RAM");
+// xgettext: no-c-format
+i18n("40 - 63 MB RAM");
+// xgettext: no-c-format
+i18n("64 - 95 MB RAM");
+// xgettext: no-c-format
+i18n("96 - 127 MB RAM");
+// xgettext: no-c-format
+i18n("128 - 159 MB RAM");
+// xgettext: no-c-format
+i18n("160 - 191 MB RAM");
+// xgettext: no-c-format
+i18n(" 192 MB RAM");
+// xgettext: no-c-format
+i18n("Duplex Unit (for 2-Sided Printing)");
+// xgettext: no-c-format
+i18n("Envelope B5");
+// xgettext: no-c-format
+i18n("Envelope #10");
+// xgettext: no-c-format
+i18n("Plain");
+// xgettext: no-c-format
+i18n("Preprinted");
+// xgettext: no-c-format
+i18n("Letterhead");
+// xgettext: no-c-format
+i18n("Glossy");
+// xgettext: no-c-format
+i18n("Prepunched");
+// xgettext: no-c-format
+i18n("Labels");
+// xgettext: no-c-format
+i18n("Bond");
+// xgettext: no-c-format
+i18n("Recycled");
+// xgettext: no-c-format
+i18n("Color");
+// xgettext: no-c-format
+i18n("Heavy");
+// xgettext: no-c-format
+i18n("Card Stock");
+// xgettext: no-c-format
+i18n("Print Finish");
+// xgettext: no-c-format
+i18n("Matte");
+// xgettext: no-c-format
+i18n("Paper Source");
+// xgettext: no-c-format
+i18n("Tray2");
+// xgettext: no-c-format
+i18n("Tray1");
+// xgettext: no-c-format
+i18n("2-Sided Printing");
+// xgettext: no-c-format
+i18n("Long-Edge Binding");
+// xgettext: no-c-format
+i18n("Short-Edge Binding");
+// xgettext: no-c-format
+i18n("SWOP");
+// xgettext: no-c-format
+i18n("ColorSmart II");
+// xgettext: no-c-format
+i18n("ScreenMatch(sRGB)-Detail");
+// xgettext: no-c-format
+i18n("ScreenMatch(sRGB)-Smooth");
+// xgettext: no-c-format
+i18n("Vivid-Detail");
+// xgettext: no-c-format
+i18n("Vivid-Smooth");
+// xgettext: no-c-format
+i18n("500-Sheet Paper Feeder");
+// xgettext: no-c-format
+i18n("Printer Disk");
+// xgettext: no-c-format
+i18n("RAM Disk");
+// xgettext: no-c-format
+i18n("Hard Disk");
+// xgettext: no-c-format
+i18n("32 - 63 MB RAM");
+// xgettext: no-c-format
+i18n("192 - 223 MB RAM");
+// xgettext: no-c-format
+i18n("224 - 256 MB RAM");
+// xgettext: no-c-format
+i18n("Duplex Printing Accessory");
+// xgettext: no-c-format
+i18n("Paper Matching");
+// xgettext: no-c-format
+i18n("Prompt User for correct size");
+// xgettext: no-c-format
+i18n("Nearest Size & Scale");
+// xgettext: no-c-format
+i18n("Nearest Size & Crop");
+// xgettext: no-c-format
+i18n("Job Retention");
+// xgettext: no-c-format
+i18n("Quick Copy");
+// xgettext: no-c-format
+i18n("Proof and Hold");
+// xgettext: no-c-format
+i18n("Stored Job");
+// xgettext: no-c-format
+i18n("Private Job");
+// xgettext: no-c-format
+i18n("PIN (for Private Job)");
+// xgettext: no-c-format
+i18n("User Specified PIN");
+// xgettext: no-c-format
+i18n("User Name");
+// xgettext: no-c-format
+i18n("Use file sharing name");
+// xgettext: no-c-format
+i18n("Forms");
+// xgettext: no-c-format
+i18n("Custom user name");
+// xgettext: no-c-format
+i18n("Job Name");
+// xgettext: no-c-format
+i18n("Use Document Name");
+// xgettext: no-c-format
+i18n("User Specified Job Name");
+// xgettext: no-c-format
+i18n("US Letter (Small)");
+// xgettext: no-c-format
+i18n("US Legal (Small)");
+// xgettext: no-c-format
+i18n("A4 (Small)");
+// xgettext: no-c-format
+i18n("JB5");
+// xgettext: no-c-format
+i18n("Env ISO B5");
+// xgettext: no-c-format
+i18n("Env Comm10");
+// xgettext: no-c-format
+i18n("Env C5");
+// xgettext: no-c-format
+i18n("Env DL");
+// xgettext: no-c-format
+i18n("Env Monarch");
+// xgettext: no-c-format
+i18n("Tray 3 (Optional)");
+// xgettext: no-c-format
+i18n("Glossy Finish");
+// xgettext: no-c-format
+i18n("Automatic PANTONE¨ Color Calibration");
+// xgettext: no-c-format
+i18n("EuroScale");
+// xgettext: no-c-format
+i18n("DIC");
+// xgettext: no-c-format
+i18n("Manual Text");
+// xgettext: no-c-format
+i18n("Calibrated-Detail");
+// xgettext: no-c-format
+i18n("Calibrated-Smooth");
+// xgettext: no-c-format
+i18n("Manual Graphics");
+// xgettext: no-c-format
+i18n("Manual Image");
+// xgettext: no-c-format
+i18n("Watermark/Overlay");
+// xgettext: no-c-format
+i18n("Overlay");
+// xgettext: no-c-format
+i18n("Watermark Pages");
+// xgettext: no-c-format
+i18n("All");
+// xgettext: no-c-format
+i18n("First Only");
+// xgettext: no-c-format
+i18n("Watermark Text");
+// xgettext: no-c-format
+i18n("Custom");
+// xgettext: no-c-format
+i18n("Watermark Size (points)");
+// xgettext: no-c-format
+i18n("90<A1>");
+// xgettext: no-c-format
+i18n("75<A1>");
+// xgettext: no-c-format
+i18n("60<A1>");
+// xgettext: no-c-format
+i18n("45<A1>");
+// xgettext: no-c-format
+i18n("30<A1>");
+// xgettext: no-c-format
+i18n("15<A1>");
+// xgettext: no-c-format
+i18n("0<A1>");
+// xgettext: no-c-format
+i18n("Ð15<A1>");
+// xgettext: no-c-format
+i18n("Ð30<A1>");
+// xgettext: no-c-format
+i18n("Ð45<A1>");
+// xgettext: no-c-format
+i18n("Ð60<A1>");
+// xgettext: no-c-format
+i18n("Ð75<A1>");
+// xgettext: no-c-format
+i18n("Ð90<A1>");
+// xgettext: no-c-format
+i18n("Thin Outline");
+// xgettext: no-c-format
+i18n("Thick Outline");
+// xgettext: no-c-format
+i18n("Thick Outline with Halo");
+// xgettext: no-c-format
+i18n("Filled");
+// xgettext: no-c-format
+i18n("Watermark Color");
+// xgettext: no-c-format
+i18n("Gray");
+// xgettext: no-c-format
+i18n("Red");
+// xgettext: no-c-format
+i18n("Orange");
+// xgettext: no-c-format
+i18n("Yellow");
+// xgettext: no-c-format
+i18n("Green");
+// xgettext: no-c-format
+i18n("Blue");
+// xgettext: no-c-format
+i18n("Violet");
+// xgettext: no-c-format
+i18n("Watermark Intensity");
+// xgettext: no-c-format
+i18n("Darkest");
+// xgettext: no-c-format
+i18n("Darker");
+// xgettext: no-c-format
+i18n("Medium Dark");
+// xgettext: no-c-format
+i18n("Medium Light");
+// xgettext: no-c-format
+i18n("Lighter");
+// xgettext: no-c-format
+i18n("Lightest");
+// xgettext: no-c-format
+i18n("Collate");
+// xgettext: no-c-format
+i18n("On (turn off in application)");
+// xgettext: no-c-format
+i18n("2000 sheet input Tray 4");
+// xgettext: no-c-format
+i18n("Multi-Bin Mailbox");
+// xgettext: no-c-format
+i18n("Printer hard disk");
+// xgettext: no-c-format
+i18n("Printer Memory");
+// xgettext: no-c-format
+i18n("Multi-Bin Mailbox Mode");
+// xgettext: no-c-format
+i18n("Mailbox");
+// xgettext: no-c-format
+i18n("Stacking");
+// xgettext: no-c-format
+i18n("Job Separation");
+// xgettext: no-c-format
+i18n("Color Mode");
+// xgettext: no-c-format
+i18n("CMYK");
+// xgettext: no-c-format
+i18n("Grayscale");
+// xgettext: no-c-format
+i18n("Duplex");
+// xgettext: no-c-format
+i18n("Duplex Tumble");
+// xgettext: no-c-format
+i18n("Duplex (Two-Sided)");
+// xgettext: no-c-format
+i18n("One Sided");
+// xgettext: no-c-format
+i18n("ColorSmartCRD Text");
+// xgettext: no-c-format
+i18n("Screen Match");
+// xgettext: no-c-format
+i18n("OHT");
+// xgettext: no-c-format
+i18n("ColorSmartCRD Graphics");
+// xgettext: no-c-format
+i18n("ColorSmartCRD Images");
+// xgettext: no-c-format
+i18n("HalftoneText");
+// xgettext: no-c-format
+i18n("Halftone Graphics");
+// xgettext: no-c-format
+i18n("Halftone Images");
+// xgettext: no-c-format
+i18n("Cardstock");
+// xgettext: no-c-format
+i18n("Heavy Media >= 28lbs");
+// xgettext: no-c-format
+i18n("Envelope");
+// xgettext: no-c-format
+i18n("28 Lb Type1");
+// xgettext: no-c-format
+i18n("28 Lb Type2");
+// xgettext: no-c-format
+i18n("Media Type First");
+// xgettext: no-c-format
+i18n("Media Type Rest");
+// xgettext: no-c-format
+i18n("Staple");
+// xgettext: no-c-format
+i18n("Manual Feed (Tray 1)");
+// xgettext: no-c-format
+i18n("Tray 4");
+// xgettext: no-c-format
+i18n("Paper Source First");
+// xgettext: no-c-format
+i18n("Paper Source Rest");
+// xgettext: no-c-format
+i18n("Output Destination");
+// xgettext: no-c-format
+i18n("Top Output Bin (Face-Down)");
+// xgettext: no-c-format
+i18n("Left Output Bin (Face-Up)");
+// xgettext: no-c-format
+i18n("Stacker");
+// xgettext: no-c-format
+i18n("Job Separator");
+// xgettext: no-c-format
+i18n("Mailbox 1");
+// xgettext: no-c-format
+i18n("Mailbox 2");
+// xgettext: no-c-format
+i18n("Mailbox 3");
+// xgettext: no-c-format
+i18n("Mailbox 4");
+// xgettext: no-c-format
+i18n("Mailbox 5");
+// xgettext: no-c-format
+i18n("Mailbox 6");
+// xgettext: no-c-format
+i18n("Mailbox 7");
+// xgettext: no-c-format
+i18n("Mailbox 8");
+// xgettext: no-c-format
+i18n("Page Size");
+// xgettext: no-c-format
+i18n("Exec");
+// xgettext: no-c-format
+i18n("11x17");
+// xgettext: no-c-format
+i18n("Com-10");
+// xgettext: no-c-format
+i18n("DL");
+// xgettext: no-c-format
+i18n("Monarch");
+// xgettext: no-c-format
+i18n("C5");
+// xgettext: no-c-format
+i18n("JIS B5");
+// xgettext: no-c-format
+i18n("JPostD");
+// xgettext: no-c-format
+i18n("12x18");
+// xgettext: no-c-format
+i18n("9x12");
+// xgettext: no-c-format
+i18n("C4");
+// xgettext: no-c-format
+i18n("N-UP AND WATERMARK SETTINGS");
+// xgettext: no-c-format
+i18n("");
+// xgettext: no-c-format
+i18n("(None)");
+// xgettext: no-c-format
+i18n("Optional Tray 2");
+// xgettext: no-c-format
+i18n("Optional Tray 4");
+// xgettext: no-c-format
+i18n("1000 sheet input Tray 4");
+// xgettext: no-c-format
+i18n("Accessory Output Bins");
+// xgettext: no-c-format
+i18n("8 Bin Mailbox (Mailbox mode)");
+// xgettext: no-c-format
+i18n("8 Bin Mailbox (Stacker-Separator-Collator)");
+// xgettext: no-c-format
+i18n("HP 3000-Sheet Stapler-Stacker");
+// xgettext: no-c-format
+i18n("HP 3000-Sheet Stacker");
+// xgettext: no-c-format
+i18n("Enabled");
+// xgettext: no-c-format
+i18n("Disabled");
+// xgettext: no-c-format
+i18n("Color Treatment");
+// xgettext: no-c-format
+i18n("High Print Quality");
+// xgettext: no-c-format
+i18n("SWOP-Coated");
+// xgettext: no-c-format
+i18n("Euroscale");
+// xgettext: no-c-format
+i18n("Manually Print on 2nd Side");
+// xgettext: no-c-format
+i18n("Manual Images");
+// xgettext: no-c-format
+i18n("Private Stored Job");
+// xgettext: no-c-format
+i18n("PrinterÕs Current Setting");
+// xgettext: no-c-format
+i18n("Stacker-Separator-Collator");
+// xgettext: no-c-format
+i18n("Stapler");
+// xgettext: no-c-format
+i18n("Bin 1");
+// xgettext: no-c-format
+i18n("Bin 2");
+// xgettext: no-c-format
+i18n("Bin 3");
+// xgettext: no-c-format
+i18n("Bin 4");
+// xgettext: no-c-format
+i18n("Bin 5");
+// xgettext: no-c-format
+i18n("Bin 6");
+// xgettext: no-c-format
+i18n("Bin 7");
+// xgettext: no-c-format
+i18n("Bin 8");
+// xgettext: no-c-format
+i18n("Stapler Option");
+// xgettext: no-c-format
+i18n("1 Staple, diagonal");
+// xgettext: no-c-format
+i18n("1 Staple, parallel");
+// xgettext: no-c-format
+i18n("2 Staples, parallel");
+// xgettext: no-c-format
+i18n("3 Staples, parallel");
+// xgettext: no-c-format
+i18n("6 Staples, parallel");
+// xgettext: no-c-format
+i18n("JIS B4");
+// xgettext: no-c-format
+i18n("A3 (Oversize 12x18.11)");
+// xgettext: no-c-format
+i18n("Executive (JIS)");
+// xgettext: no-c-format
+i18n("16K");
+// xgettext: no-c-format
+i18n("8K");
+// xgettext: no-c-format
+i18n("Double Postcard (JIS)");
+// xgettext: no-c-format
+i18n("EconoMode");
+// xgettext: no-c-format
+i18n("Total Memory");
+// xgettext: no-c-format
+i18n("6 - 7 MB");
+// xgettext: no-c-format
+i18n("8 - 11 MB");
+// xgettext: no-c-format
+i18n("12 - 19 MB");
+// xgettext: no-c-format
+i18n("20 - 27 MB");
+// xgettext: no-c-format
+i18n("28 - 35 MB");
+// xgettext: no-c-format
+i18n("36 MB or more");
+// xgettext: no-c-format
+i18n("8.5 x 13");
+// xgettext: no-c-format
+i18n("Postcard (JIS)");
+// xgettext: no-c-format
+i18n("B5 (ISO)");
+// xgettext: no-c-format
+i18n("Tray 1 (Manual)");
+// xgettext: no-c-format
+i18n("Manual Duplex");
+// xgettext: no-c-format
+i18n("Odd Pages");
+// xgettext: no-c-format
+i18n("Even Pages");
+// xgettext: no-c-format
+i18n("Levels of Gray");
+// xgettext: no-c-format
+i18n("Enhanced");
+// xgettext: no-c-format
+i18n("Standard");
+// xgettext: no-c-format
+i18n("Resolution Enhancement");
+// xgettext: no-c-format
+i18n("Optional Lower Tray");
+// xgettext: no-c-format
+i18n("Optional Envelope Feeder");
+// xgettext: no-c-format
+i18n("JCLOpenUI *JCLResolution");
+// xgettext: no-c-format
+i18n("Legal Frame Size");
+// xgettext: no-c-format
+i18n("Com-10 Env");
+// xgettext: no-c-format
+i18n("Monarch Env");
+// xgettext: no-c-format
+i18n("DL Env");
+// xgettext: no-c-format
+i18n("C5 Env");
+// xgettext: no-c-format
+i18n("B5 Env");
+// xgettext: no-c-format
+i18n("Multipurpose Tray");
+// xgettext: no-c-format
+i18n("Paper Cassette");
+// xgettext: no-c-format
+i18n("Lower Cassette");
+// xgettext: no-c-format
+i18n("Envelope Feeder");
+// xgettext: no-c-format
+i18n("Rough");
+// xgettext: no-c-format
+i18n("Duplex Unit");
+// xgettext: no-c-format
+i18n("Printer Hard Disk");
+// xgettext: no-c-format
+i18n("Total Printer Memory");
+// xgettext: no-c-format
+i18n("4 - 7 MB");
+// xgettext: no-c-format
+i18n(" Tray 1");
+// xgettext: no-c-format
+i18n(" Tray 1 (Manual)");
+// xgettext: no-c-format
+i18n(" Tray 2");
+// xgettext: no-c-format
+i18n(" Tray 3");
+// xgettext: no-c-format
+i18n(" Tray 4");
+// xgettext: no-c-format
+i18n(" Envelope Feeder");
+// xgettext: no-c-format
+i18n("Scale Patterns");
+// xgettext: no-c-format
+i18n("Off (1-Sided)");
+// xgettext: no-c-format
+i18n("Flip on Long Edge (Standard)");
+// xgettext: no-c-format
+i18n("Flip on Short Edge");
+// xgettext: no-c-format
+i18n("User");
+// xgettext: no-c-format
+i18n("FastRes 1200");
+// xgettext: no-c-format
+i18n("Number of Input Trays");
+// xgettext: no-c-format
+i18n(" 2");
+// xgettext: no-c-format
+i18n(" 3");
+// xgettext: no-c-format
+i18n(" 4");
+// xgettext: no-c-format
+i18n(" 5");
+// xgettext: no-c-format
+i18n(" 6");
+// xgettext: no-c-format
+i18n(" 7");
+// xgettext: no-c-format
+i18n(" 8");
+// xgettext: no-c-format
+i18n(" 9");
+// xgettext: no-c-format
+i18n("12 - 15 MB");
+// xgettext: no-c-format
+i18n("16 - 19 MB");
+// xgettext: no-c-format
+i18n(" Tray 5");
+// xgettext: no-c-format
+i18n(" Tray 6");
+// xgettext: no-c-format
+i18n(" Tray 7");
+// xgettext: no-c-format
+i18n(" Tray 8");
+// xgettext: no-c-format
+i18n(" Tray 9");
+// xgettext: no-c-format
+i18n(" Tray 10");
+// xgettext: no-c-format
+i18n("ManualFeed");
+// xgettext: no-c-format
+i18n("Page Protection");
+// xgettext: no-c-format
+i18n(" 2 - 3 MB Total RAM");
+// xgettext: no-c-format
+i18n(" 4 - 5 MB Total RAM");
+// xgettext: no-c-format
+i18n(" 6 - 9 MB Total RAM");
+// xgettext: no-c-format
+i18n("10 - 14 MB Total RAM");
+// xgettext: no-c-format
+i18n("15 - 26 MB Total RAM");
+// xgettext: no-c-format
+i18n("Upper Tray");
+// xgettext: no-c-format
+i18n("Lower Tray");
+// xgettext: no-c-format
+i18n("Long Edge Binding");
+// xgettext: no-c-format
+i18n("Short Edge Binding");
+// xgettext: no-c-format
+i18n("Upper - Face Down");
+// xgettext: no-c-format
+i18n("Lower - Face Up");
+// xgettext: no-c-format
+i18n("12 - 27 MB Total RAM");
+// xgettext: no-c-format
+i18n("28 - 35 MB Total RAM");
+// xgettext: no-c-format
+i18n("36 - 52 MB Total RAM");
+// xgettext: no-c-format
+i18n("11x17 (Oversize)");
+// xgettext: no-c-format
+i18n("ISO B5 Env");
+// xgettext: no-c-format
+i18n("MP Tray");
+// xgettext: no-c-format
+i18n("Printer<27>s Current Setting");
+// xgettext: no-c-format
+i18n("Optional Lower Cassette");
+// xgettext: no-c-format
+i18n("Optional Duplex Unit");
+// xgettext: no-c-format
+i18n("Long-edge Binding");
+// xgettext: no-c-format
+i18n("Short-edge Binding");
+// xgettext: no-c-format
+i18n("500-Sheet Tray 3");
+// xgettext: no-c-format
+i18n("12 MB or more");
+// xgettext: no-c-format
+i18n("Vellum");
+// xgettext: no-c-format
+i18n("11x17 (Oversize 12x18.5)");
+// xgettext: no-c-format
+i18n("A3 (Oversize 312x440)");
+// xgettext: no-c-format
+i18n("B4 (JIS)");
+// xgettext: no-c-format
+i18n("B6 (JIS)");
+// xgettext: no-c-format
+i18n("Tray 1 (MultiPurpose Tray)");
+// xgettext: no-c-format
+i18n("Tray 2 (Paper Cassette)");
+// xgettext: no-c-format
+i18n("Letter (8 1/2 x 11 in)");
+// xgettext: no-c-format
+i18n("Legal (8 1/2 x 14 in)");
+// xgettext: no-c-format
+i18n("A4 (210 x 297 mm)");
+// xgettext: no-c-format
+i18n("Executive (7 1/4 x 10 1/2 in)");
+// xgettext: no-c-format
+i18n("A5 (148 x 210 mm)");
+// xgettext: no-c-format
+i18n("Com-10 Env (4 1/8 x 9 1/2 in)");
+// xgettext: no-c-format
+i18n("Monarch Env (3 7/8 x 7 1/2 in)");
+// xgettext: no-c-format
+i18n("DL Env (110 x 220 mm)");
+// xgettext: no-c-format
+i18n("C5 Env (162 x 229 mm)");
+// xgettext: no-c-format
+i18n("B5 Env (176 x 250 mm)");
+// xgettext: no-c-format
+i18n("2000-Sheet Input Tray (Tray 4)");
+// xgettext: no-c-format
+i18n("28 - 43 MB Total RAM");
+// xgettext: no-c-format
+i18n("44 - 59 MB Total RAM");
+// xgettext: no-c-format
+i18n("60 - 75 MB Total RAM");
+// xgettext: no-c-format
+i18n("76 -100 MB Total RAM");
+// xgettext: no-c-format
+i18n("Double Postcard");
+// xgettext: no-c-format
+i18n("Page Region");
+// xgettext: no-c-format
+i18n("Top Output Bin (Face Down)");
+// xgettext: no-c-format
+i18n("Left Output Bin (Face Up)");
+// xgettext: no-c-format
+i18n("Stacker (Face Down)");
+// xgettext: no-c-format
+i18n("Job Seperator (Face Down)");
+// xgettext: no-c-format
+i18n("Mailbox 1 (Face Down)");
+// xgettext: no-c-format
+i18n("Mailbox 2 (Face Down)");
+// xgettext: no-c-format
+i18n("Mailbox 3 (Face Down)");
+// xgettext: no-c-format
+i18n("Mailbox 4 (Face Down)");
+// xgettext: no-c-format
+i18n("Mailbox 5 (Face Down)");
+// xgettext: no-c-format
+i18n("Mailbox 6 (Face Down)");
+// xgettext: no-c-format
+i18n("Mailbox 7 (Face Down)");
+// xgettext: no-c-format
+i18n("Mailbox 8 (Face Down)");
+// xgettext: no-c-format
+i18n("Printer Resolution");
+// xgettext: no-c-format
+i18n("600 dpi");
+// xgettext: no-c-format
+i18n("300 dpi");
+// xgettext: no-c-format
+i18n("Mailbox with Stapler");
+// xgettext: no-c-format
+i18n("Mailbox with Stapler Mode");
+// xgettext: no-c-format
+i18n("Job Separator (Face Down)");
+// xgettext: no-c-format
+i18n("Stapler (Face Down)");
+// xgettext: no-c-format
+i18n("3 MB");
+// xgettext: no-c-format
+i18n("4 - 5 MB");
+// xgettext: no-c-format
+i18n("6 MB or more");
+// xgettext: no-c-format
+i18n("Top Bin");
+// xgettext: no-c-format
+i18n("Left Bin (Face Up)");
+// xgettext: no-c-format
+i18n("Stapler (max 50 Sheets)");
+// xgettext: no-c-format
+i18n("Stapler Opposing (max 50)");
+// xgettext: no-c-format
+i18n("Stapler (max 20 Letter or A4)");
+// xgettext: no-c-format
+i18n("Collator");
+// xgettext: no-c-format
+i18n("Stapling Options");
+// xgettext: no-c-format
+i18n("One Staple Angled");
+// xgettext: no-c-format
+i18n("One Staple");
+// xgettext: no-c-format
+i18n("Two Staples");
+// xgettext: no-c-format
+i18n("Three Staples");
+// xgettext: no-c-format
+i18n("Six Staples");
+// xgettext: no-c-format
+i18n("Administrator Defined");
+// xgettext: no-c-format
+i18n("Tray 5");
+// xgettext: no-c-format
+i18n("5 Bin Mailbox with Stapler");
+// xgettext: no-c-format
+i18n("7 Bin Mailbox");
+// xgettext: no-c-format
+i18n("8 Bin Mailbox");
+// xgettext: no-c-format
+i18n("HP 3000-Sheet Stapler/Stacker");
+// xgettext: no-c-format
+i18n("Standard Mailbox");
+// xgettext: no-c-format
+i18n("20 - 23 MB");
+// xgettext: no-c-format
+i18n("24 - 27 MB");
+// xgettext: no-c-format
+i18n("11x17 (Oversize 11.7x17.7)");
+// xgettext: no-c-format
+i18n("System Name (if available)");
+// xgettext: no-c-format
+i18n(" 1");
+// xgettext: no-c-format
+i18n("PIN digit 1 (for Private Job)");
+// xgettext: no-c-format
+i18n("PIN digit 2 (for Private Job)");
+// xgettext: no-c-format
+i18n("PIN digit 3 (for Private Job)");
+// xgettext: no-c-format
+i18n("PIN digit 4 (for Private Job)");
+// xgettext: no-c-format
+i18n("Edge-to-Edge Printing");
+// xgettext: no-c-format
+i18n("32 - 39 MB");
+// xgettext: no-c-format
+i18n("40 - 47 MB");
+// xgettext: no-c-format
+i18n("48 - 55 MB");
+// xgettext: no-c-format
+i18n("56 - 63 MB");
+// xgettext: no-c-format
+i18n("64 - 71 MB");
+// xgettext: no-c-format
+i18n("72 MB or more");
+// xgettext: no-c-format
+i18n("Banner Printing");
+// xgettext: no-c-format
+i18n("Manual Feeder");
+// xgettext: no-c-format
+i18n("Standard Tray");
+// xgettext: no-c-format
+i18n("Sheet Feeder");
+// xgettext: no-c-format
+i18n("Bond Paper");
+// xgettext: no-c-format
+i18n("Glossy Paper");
+// xgettext: no-c-format
+i18n("HP Premium Paper");
+// xgettext: no-c-format
+i18n("Quick-Dry Glossy");
+// xgettext: no-c-format
+i18n("Quick-Dry Transparency");
+// xgettext: no-c-format
+i18n("Transparency Film");
+// xgettext: no-c-format
+i18n("75 DPI");
+// xgettext: no-c-format
+i18n("150 DPI");
+// xgettext: no-c-format
+i18n("300 DPI");
+// xgettext: no-c-format
+i18n("600 DPI");
+// xgettext: no-c-format
+i18n("600x300 DPI");
+// xgettext: no-c-format
+i18n("Quality");
+// xgettext: no-c-format
+i18n("Default Setting");
+// xgettext: no-c-format
+i18n("Presentation");
+// xgettext: no-c-format
+i18n("CMY");
+// xgettext: no-c-format
+i18n("CMY+K");
+// xgettext: no-c-format
+i18n("Model");
+// xgettext: no-c-format
+i18n("DeskJet");
+// xgettext: no-c-format
+i18n("DeskJet 310");
+// xgettext: no-c-format
+i18n("DeskJet 320");
+// xgettext: no-c-format
+i18n("DeskJet 340");
+// xgettext: no-c-format
+i18n("DeskJet 400");
+// xgettext: no-c-format
+i18n("DeskJet 500");
+// xgettext: no-c-format
+i18n("DeskJet 500C");
+// xgettext: no-c-format
+i18n("DeskJet 510");
+// xgettext: no-c-format
+i18n("DeskJet 520");
+// xgettext: no-c-format
+i18n("DeskJet 540");
+// xgettext: no-c-format
+i18n("DeskJet 550C");
+// xgettext: no-c-format
+i18n("DeskJet 560C");
+// xgettext: no-c-format
+i18n("DeskJet 600");
+// xgettext: no-c-format
+i18n("DeskJet 660C");
+// xgettext: no-c-format
+i18n("DeskJet 670C");
+// xgettext: no-c-format
+i18n("DeskJet 680C");
+// xgettext: no-c-format
+i18n("DeskJet 690C");
+// xgettext: no-c-format
+i18n("DeskJet 850C");
+// xgettext: no-c-format
+i18n("DeskJet 855C");
+// xgettext: no-c-format
+i18n("DeskJet 870C");
+// xgettext: no-c-format
+i18n("DeskJet 890C");
+// xgettext: no-c-format
+i18n("DeskJet 970C with Duplexer");
+// xgettext: no-c-format
+i18n("DeskJet 1120C");
+// xgettext: no-c-format
+i18n("DeskJet Plus");
+// xgettext: no-c-format
+i18n("DeskJet Portable");
+// xgettext: no-c-format
+i18n("Olivetti (Black sent after CMY)");
+// xgettext: no-c-format
+i18n("Unspecified Model");
+// xgettext: no-c-format
+i18n("Unspecified Old Model");
+// xgettext: no-c-format
+i18n("Black Levels");
+// xgettext: no-c-format
+i18n("2 Levels");
+// xgettext: no-c-format
+i18n("3 Levels");
+// xgettext: no-c-format
+i18n("4 Levels");
+// xgettext: no-c-format
+i18n("No Black");
+// xgettext: no-c-format
+i18n("CMY Levels");
+// xgettext: no-c-format
+i18n("No CMY");
+// xgettext: no-c-format
+i18n("Compression Method");
+// xgettext: no-c-format
+i18n("Compressed Replacement Delta Row Encoding");
+// xgettext: no-c-format
+i18n("Delta Row Compression");
+// xgettext: no-c-format
+i18n("Runlength Encoding");
+// xgettext: no-c-format
+i18n("Tagged Image File Format");
+// xgettext: no-c-format
+i18n("Unencoded");
+// xgettext: no-c-format
+i18n("Intensity Rendering");
+// xgettext: no-c-format
+i18n("Floyd-Steinberg Dithering");
+// xgettext: no-c-format
+i18n("Half Tones");
+// xgettext: no-c-format
+i18n("Printer-internal");
+// xgettext: no-c-format
+i18n("Leading Edge");
+// xgettext: no-c-format
+i18n("Long edge; left side of canonical page");
+// xgettext: no-c-format
+i18n("Long edge; right side of canonical page");
+// xgettext: no-c-format
+i18n("Short edge; bottom of canonical page");
+// xgettext: no-c-format
+i18n("Short edge; top of canonical page");
+// xgettext: no-c-format
+i18n("Generate only PCL with 'Configure Raster Data'");
+// xgettext: no-c-format
+i18n("OnlyCRD");
+// xgettext: no-c-format
+i18n("GeneralPCL");
+// xgettext: no-c-format
+i18n("Print Head Passes per Line");
+// xgettext: no-c-format
+i18n("1 Pass (Fastest)");
+// xgettext: no-c-format
+i18n("2 Passes (50% of the dots/pass)");
+// xgettext: no-c-format
+i18n("4 Passes (25% of the dots/pass)");
+// xgettext: no-c-format
+i18n("PCL3GUI Language Mode");
+// xgettext: no-c-format
+i18n("PCL3GUI");
+// xgettext: no-c-format
+i18n("NoPCL3GUI");
+// xgettext: no-c-format
+i18n("3x5");
+// xgettext: no-c-format
+i18n("5x7");
+// xgettext: no-c-format
+i18n("6x8");
+// xgettext: no-c-format
+i18n("8x10");
+// xgettext: no-c-format
+i18n("8x12");
+// xgettext: no-c-format
+i18n("US A2 Invitation");
+// xgettext: no-c-format
+i18n("A7");
+// xgettext: no-c-format
+i18n("A8");
+// xgettext: no-c-format
+i18n("A9");
+// xgettext: no-c-format
+i18n("A10");
+// xgettext: no-c-format
+i18n("B5 ISO");
+// xgettext: no-c-format
+i18n("B5 JIS");
+// xgettext: no-c-format
+i18n("B6 aka C4");
+// xgettext: no-c-format
+i18n("B6 ISO");
+// xgettext: no-c-format
+i18n("B6 JIS");
+// xgettext: no-c-format
+i18n("B7 ISO");
+// xgettext: no-c-format
+i18n("B7 JIS");
+// xgettext: no-c-format
+i18n("B8 ISO");
+// xgettext: no-c-format
+i18n("B8 JIS");
+// xgettext: no-c-format
+i18n("B9 ISO");
+// xgettext: no-c-format
+i18n("B9 JIS");
+// xgettext: no-c-format
+i18n("B10 ISO");
+// xgettext: no-c-format
+i18n("B10 JIS");
+// xgettext: no-c-format
+i18n("C6");
+// xgettext: no-c-format
+i18n("C7");
+// xgettext: no-c-format
+i18n("C7 by C6");
+// xgettext: no-c-format
+i18n("C8");
+// xgettext: no-c-format
+i18n("C9");
+// xgettext: no-c-format
+i18n("C10");
+// xgettext: no-c-format
+i18n("US Commercial 10 Envelope");
+// xgettext: no-c-format
+i18n("Crown Octavo");
+// xgettext: no-c-format
+i18n("Crown Quarto");
+// xgettext: no-c-format
+i18n("Demy Octavo");
+// xgettext: no-c-format
+i18n("Epson 4x6 Photo Paper");
+// xgettext: no-c-format
+i18n("American Foolscap");
+// xgettext: no-c-format
+i18n("Hagaki Card");
+// xgettext: no-c-format
+i18n("Half Letter");
+// xgettext: no-c-format
+i18n("Large Crown Octavo");
+// xgettext: no-c-format
+i18n("Large Crown Quarto");
+// xgettext: no-c-format
+i18n("Japanese Long Envelope Number 3");
+// xgettext: no-c-format
+i18n("Japanese Long Envelope Number 4");
+// xgettext: no-c-format
+i18n("Oufuku Card");
+// xgettext: no-c-format
+i18n("Penguin Small Paperback");
+// xgettext: no-c-format
+i18n("Postcard");
+// xgettext: no-c-format
+i18n("RA4");
+// xgettext: no-c-format
+i18n("Royal Octavo");
+// xgettext: no-c-format
+i18n("Small Paperback");
+// xgettext: no-c-format
+i18n("Tray");
+// xgettext: no-c-format
+i18n("Glossy/Photo");
+// xgettext: no-c-format
+i18n("Premium");
+// xgettext: no-c-format
+i18n("Quick-dry Photo");
+// xgettext: no-c-format
+i18n("Quick-dry Transparency");
+// xgettext: no-c-format
+i18n("Ghostscript Resolution");
+// xgettext: no-c-format
+i18n("1200 DPI");
+// xgettext: no-c-format
+i18n("150x150 DPI");
+// xgettext: no-c-format
+i18n("300x300 DPI");
+// xgettext: no-c-format
+i18n("600x600 DPI");
+// xgettext: no-c-format
+i18n("Grayscale only");
+// xgettext: no-c-format
+i18n("Image Type");
+// xgettext: no-c-format
+i18n("Pure bw or prescreened (currently black-only)");
+// xgettext: no-c-format
+i18n("Line art (color or gray scale)");
+// xgettext: no-c-format
+i18n("Continuous-tone photographs (color or gray scale)");
+// xgettext: no-c-format
+i18n("Primarily solid colors ro smooth gradients (color or gray scale)");
+// xgettext: no-c-format
+i18n("Dithering Algorithm");
+// xgettext: no-c-format
+i18n("Adaptive Hybrid");
+// xgettext: no-c-format
+i18n("Adaptive Random");
+// xgettext: no-c-format
+i18n("Hybrid Floyd-Steinberg");
+// xgettext: no-c-format
+i18n("Ordered");
+// xgettext: no-c-format
+i18n("Random Floyd-Steinberg");
+// xgettext: no-c-format
+i18n("Very Fast");
+// xgettext: no-c-format
+i18n("11x14");
+// xgettext: no-c-format
+i18n("13x19");
+// xgettext: no-c-format
+i18n("Arch A");
+// xgettext: no-c-format
+i18n("Arch B");
+// xgettext: no-c-format
+i18n("B4 ISO");
+// xgettext: no-c-format
+i18n("B4 JIS");
+// xgettext: no-c-format
+i18n("C3");
+// xgettext: no-c-format
+i18n("Demy Quarto");
+// xgettext: no-c-format
+i18n("European Foolscap");
+// xgettext: no-c-format
+i18n("Japanese Kaku Envelope Number 4");
+// xgettext: no-c-format
+i18n("RA3");
+// xgettext: no-c-format
+i18n("Royal Quarto");
+// xgettext: no-c-format
+i18n("SRA3");
+// xgettext: no-c-format
+i18n("SRA4");
+// xgettext: no-c-format
+i18n("Autoselect");
+// xgettext: no-c-format
+i18n("Optional Source");
+// xgettext: no-c-format
+i18n("Paper type");
+// xgettext: no-c-format
+i18n("Bond paper");
+// xgettext: no-c-format
+i18n("Glossy film");
+// xgettext: no-c-format
+i18n("Plain paper");
+// xgettext: no-c-format
+i18n("Special paper");
+// xgettext: no-c-format
+i18n("Transparency film");
+// xgettext: no-c-format
+i18n("Printing Quality");
+// xgettext: no-c-format
+i18n("RET (Resolution Enhancement)");
+// xgettext: no-c-format
+i18n("Manual Feeding");
+// xgettext: no-c-format
+i18n("Double-Sided Printing");
+// xgettext: no-c-format
+i18n("Long Edge (Standard)");
+// xgettext: no-c-format
+i18n("Short Edge (Flip)");
+// xgettext: no-c-format
+i18n("1200x600 DPI");
+// xgettext: no-c-format
+i18n("GhostScript pre-filtering");
+// xgettext: no-c-format
+i18n("Convert to PS level 1");
+// xgettext: no-c-format
+i18n("Convert to PS level 2");
+// xgettext: no-c-format
+i18n("No pre-filtering");
+// xgettext: no-c-format
+i18n("Printer default");
+// xgettext: no-c-format
+i18n("Tray 6");
+// xgettext: no-c-format
+i18n("Tray 7");
+// xgettext: no-c-format
+i18n("Printing Mode");
+// xgettext: no-c-format
+i18n("Manual Feed of Paper");
+// xgettext: no-c-format
+i18n("Binding for Double-Sided Pr.");
+// xgettext: no-c-format
+i18n("Long Edge");
+// xgettext: no-c-format
+i18n("Short Edge");
+// xgettext: no-c-format
+i18n("REt Setting");
+// xgettext: no-c-format
+i18n("Density");
+// xgettext: no-c-format
+i18n("Economy mode");
+// xgettext: no-c-format
+i18n("Economy Mode");
+// xgettext: no-c-format
+i18n("Standard Mode");
+// xgettext: no-c-format
+i18n("Fast Res.");
+// xgettext: no-c-format
+i18n("Memory Booster Technology");
+// xgettext: no-c-format
+i18n("Monochrome");
+// xgettext: no-c-format
+i18n("Floyd-Steinberg dithered printing");
+// xgettext: no-c-format
+i18n("Standard printing");
+// xgettext: no-c-format
+i18n("Color mode");
+// xgettext: no-c-format
+i18n("Contone (4096 colors)");
+// xgettext: no-c-format
+i18n("Normal (8 colors)");
+// xgettext: no-c-format
+i18n("16x20");
+// xgettext: no-c-format
+i18n("16x24");
+// xgettext: no-c-format
+i18n("Black and White");
+// xgettext: no-c-format
+i18n("Floyd-Steinberg Color");
+// xgettext: no-c-format
+i18n("Floyd-Steinberg Color (Low Memory)");
+// xgettext: no-c-format
+i18n("Floyd-Steinberg Gray");
+// xgettext: no-c-format
+i18n("Normal Color");
+// xgettext: no-c-format
+i18n("Raster Graphics Quality");
+// xgettext: no-c-format
+i18n("High");
+// xgettext: no-c-format
+i18n("Black, draft quality, ink economy mode");
+// xgettext: no-c-format
+i18n("Black, normal quality");
+// xgettext: no-c-format
+i18n("Color, best quality, optional color correction");
+// xgettext: no-c-format
+i18n("Color, best quality, black ink disabled, optional color correction");
+// xgettext: no-c-format
+i18n("Color, draft quality, ink economy, fast dither, no color correction");
+// xgettext: no-c-format
+i18n("Color, normal quality, optional color correction");
+// xgettext: no-c-format
+i18n("Color, normal quality, black ink disabled, optional color correction");
+// xgettext: no-c-format
+i18n("Do not use Color Correction");
+// xgettext: no-c-format
+i18n("DisableColorCorrection");
+// xgettext: no-c-format
+i18n("EnableColorCorrection");
+// xgettext: no-c-format
+i18n("Choice of Ghostscript Driver");
+// xgettext: no-c-format
+i18n("Attempts to choose best PNM format for document; not always reliable.");
+// xgettext: no-c-format
+i18n("Attempts to choose best monochrome PNM format for document; not always reliable.");
+// xgettext: no-c-format
+i18n("A fast monochrome format; best for B&W text and line images.");
+// xgettext: no-c-format
+i18n("256-shade greyscale format");
+// xgettext: no-c-format
+i18n("Format for color images (includes monochrome).");
+// xgettext: no-c-format
+i18n("Force left-to-right print sweeps only (reduce striping)");
+// xgettext: no-c-format
+i18n("Unidirectional");
+// xgettext: no-c-format
+i18n("Bidirectional");
+// xgettext: no-c-format
+i18n("Ink Reduction");
+// xgettext: no-c-format
+i18n("25 %");
+// xgettext: no-c-format
+i18n("25 % with Gamma Correction");
+// xgettext: no-c-format
+i18n("50 %");
+// xgettext: no-c-format
+i18n("50 % with Gamma Correction");
+// xgettext: no-c-format
+i18n("600x600 DPI monochrome");
+// xgettext: no-c-format
+i18n("A6 (Post card)");
+// xgettext: no-c-format
+i18n("Photo (4 x 6 in., 10 x 15 cm)");
+// xgettext: no-c-format
+i18n("300 DPI Grayscale");
+// xgettext: no-c-format
+i18n("300 DPI Normal");
+// xgettext: no-c-format
+i18n("300 DPI Photo");
+// xgettext: no-c-format
+i18n("600 DPI Photo");
+// xgettext: no-c-format
+i18n("Use Postcards");
+// xgettext: no-c-format
+i18n("Postcards");
+// xgettext: no-c-format
+i18n("Sheets");
+// xgettext: no-c-format
+i18n("Rendering type");
+// xgettext: no-c-format
+i18n("Snap black to white, others to black");
+// xgettext: no-c-format
+i18n("Cluster ordered dither");
+// xgettext: no-c-format
+i18n("Monochrome cluster ordered dither");
+// xgettext: no-c-format
+i18n("Driver does dithering");
+// xgettext: no-c-format
+i18n("Error diffusion");
+// xgettext: no-c-format
+i18n("Monochrome error diffusion");
+// xgettext: no-c-format
+i18n("Ordered dithering");
+// xgettext: no-c-format
+i18n("Monochrome ordered dithering");
+// xgettext: no-c-format
+i18n("Snap to primaries");
+// xgettext: no-c-format
+i18n("Best Quality Color");
+// xgettext: no-c-format
+i18n("Desktop CSF");
+// xgettext: no-c-format
+i18n("Desktop Sheet Feeder");
+// xgettext: no-c-format
+i18n("Portable Sheet Feeder");
+// xgettext: no-c-format
+i18n("Ink Type");
+// xgettext: no-c-format
+i18n("Color + Black Cartridges");
+// xgettext: no-c-format
+i18n("Color + Photo Cartridges");
+// xgettext: no-c-format
+i18n("300 DPI Color");
+// xgettext: no-c-format
+i18n("300 DPI Draft");
+// xgettext: no-c-format
+i18n("On (Flip on Long Edge)");
+// xgettext: no-c-format
+i18n("On (Flip on Short Edge)");
+// xgettext: no-c-format
+i18n("600 DPI Normal");
+// xgettext: no-c-format
+i18n("Special");
+// xgettext: no-c-format
+i18n("Transparent");
+// xgettext: no-c-format
+i18n("Quality Type");
+// xgettext: no-c-format
+i18n("Double-sided printing");
+// xgettext: no-c-format
+i18n("Behavior when Toner Low");
+// xgettext: no-c-format
+i18n("Continue Printing");
+// xgettext: no-c-format
+i18n("Stop Printing");
+// xgettext: no-c-format
+i18n("Job Offset");
+// xgettext: no-c-format
+i18n("Cassette");
+// xgettext: no-c-format
+i18n("First");
+// xgettext: no-c-format
+i18n("90 DPI");
+// xgettext: no-c-format
+i18n("180 DPI");
+// xgettext: no-c-format
+i18n("16MB RAM");
+// xgettext: no-c-format
+i18n("32MB RAM");
+// xgettext: no-c-format
+i18n("48MB RAM");
+// xgettext: no-c-format
+i18n("64MB RAM");
+// xgettext: no-c-format
+i18n("80MB RAM");
+// xgettext: no-c-format
+i18n("96MB RAM");
+// xgettext: no-c-format
+i18n("128MB RAM");
+// xgettext: no-c-format
+i18n("144MB RAM");
+// xgettext: no-c-format
+i18n("160MB RAM");
+// xgettext: no-c-format
+i18n("192MB - 224MB RAM");
+// xgettext: no-c-format
+i18n("256MB - 512MB RAM");
+// xgettext: no-c-format
+i18n("Drawer Base");
+// xgettext: no-c-format
+i18n("DB-208 (3 Trays)");
+// xgettext: no-c-format
+i18n("DB-608 (2 Trays)");
+// xgettext: no-c-format
+i18n("DB-208A (1 Tray)");
+// xgettext: no-c-format
+i18n("Finisher Installed");
+// xgettext: no-c-format
+i18n("FS-105");
+// xgettext: no-c-format
+i18n("400dpi");
+// xgettext: no-c-format
+i18n("Edge Smoothing");
+// xgettext: no-c-format
+i18n("Text Only");
+// xgettext: no-c-format
+i18n("All Objects");
+// xgettext: no-c-format
+i18n("Print Density");
+// xgettext: no-c-format
+i18n("Toner Save");
+// xgettext: no-c-format
+i18n("OHP Transparency");
+// xgettext: no-c-format
+i18n("Thin Paper");
+// xgettext: no-c-format
+i18n("Thick Paper");
+// xgettext: no-c-format
+i18n("Duplex Mode");
+// xgettext: no-c-format
+i18n("Sort");
+// xgettext: no-c-format
+i18n("Group");
+// xgettext: no-c-format
+i18n("Special Modes");
+// xgettext: no-c-format
+i18n("2-in-1");
+// xgettext: no-c-format
+i18n("Booklet");
+// xgettext: no-c-format
+i18n("Stapling");
+// xgettext: no-c-format
+i18n("Single (Portrait)");
+// xgettext: no-c-format
+i18n("Single (Landscape)");
+// xgettext: no-c-format
+i18n("Double Side (Portrait)");
+// xgettext: no-c-format
+i18n("Double Side (Landscape)");
+// xgettext: no-c-format
+i18n("Double Top (Portrait)");
+// xgettext: no-c-format
+i18n("Double Top (Landscape)");
+// xgettext: no-c-format
+i18n("Wait Mode");
+// xgettext: no-c-format
+i18n("Front Cover");
+// xgettext: no-c-format
+i18n("Printed");
+// xgettext: no-c-format
+i18n("Blank");
+// xgettext: no-c-format
+i18n("Front Cover Tray");
+// xgettext: no-c-format
+i18n("Back Cover");
+// xgettext: no-c-format
+i18n("Cover Tray");
+// xgettext: no-c-format
+i18n("Manual Feed (Thick)");
+// xgettext: no-c-format
+i18n("Middle");
+// xgettext: no-c-format
+i18n("Output Order");
+// xgettext: no-c-format
+i18n("Half-letter (5 1/2 x 8 1/2 in)");
+// xgettext: no-c-format
+i18n("Letter (8 1/2 x 11 in)");
+// xgettext: no-c-format
+i18n("Legal (8 1/2 x 14 in)");
+// xgettext: no-c-format
+i18n("Tabloid (11 x 17 in)");
+// xgettext: no-c-format
+i18n("F4");
+// xgettext: no-c-format
+i18n("Half-letter");
+// xgettext: no-c-format
+i18n("No Finisher");
+// xgettext: no-c-format
+i18n("FS-106");
+// xgettext: no-c-format
+i18n("FS-108B (BookletMaker)");
+// xgettext: no-c-format
+i18n("PI-108");
+// xgettext: no-c-format
+i18n("Large Capacity Tray");
+// xgettext: no-c-format
+i18n("Tandem Configuration");
+// xgettext: no-c-format
+i18n("Fold & Stitch");
+// xgettext: no-c-format
+i18n("Fold only");
+// xgettext: no-c-format
+i18n("Fold & Saddle Stitch");
+// xgettext: no-c-format
+i18n("Wait");
+// xgettext: no-c-format
+i18n("Wait with Proof");
+// xgettext: no-c-format
+i18n("Back Cover Tray");
+// xgettext: no-c-format
+i18n("Tandem Printing");
+// xgettext: no-c-format
+i18n("Normal Mode (Auto Select)");
+// xgettext: no-c-format
+i18n("Split Mode (Auto Split)");
+// xgettext: no-c-format
+i18n("Split Mode (Equal Split)");
+// xgettext: no-c-format
+i18n("Print Engine Select (Printer 1)");
+// xgettext: no-c-format
+i18n("Print Engine Select (Printer 2)");
+// xgettext: no-c-format
+i18n("EcoPrint");
+// xgettext: no-c-format
+i18n("PF-8 Paper Feeder");
+// xgettext: no-c-format
+i18n("Memory");
+// xgettext: no-c-format
+i18n("1MB Upgrade");
+// xgettext: no-c-format
+i18n("2MB Upgrade");
+// xgettext: no-c-format
+i18n("4MB Upgrade");
+// xgettext: no-c-format
+i18n("300 Dots per Inch (dpi)");
+// xgettext: no-c-format
+i18n("KIR");
+// xgettext: no-c-format
+i18n("Envelope #6");
+// xgettext: no-c-format
+i18n("Envelope #9");
+// xgettext: no-c-format
+i18n("Cassette 1 (Internal)");
+// xgettext: no-c-format
+i18n("Cassette 2");
+// xgettext: no-c-format
+i18n("Auto Tray Switch");
+// xgettext: no-c-format
+i18n("1.6.0 [08-13-99]");
+// xgettext: no-c-format
+i18n("PF-16 Paper Feeder");
+// xgettext: no-c-format
+i18n("8MB Upgrade");
+// xgettext: no-c-format
+i18n("16MB Upgrade");
+// xgettext: no-c-format
+i18n("32MB Upgrade");
+// xgettext: no-c-format
+i18n("600 Dots per Inch (dpi)");
+// xgettext: no-c-format
+i18n("1.6.1 [02-28-2000]");
+// xgettext: no-c-format
+i18n("PF-4 Paper Feeder");
+// xgettext: no-c-format
+i18n("3MB Upgrade");
+// xgettext: no-c-format
+i18n("PF-17 Paper Feeder");
+// xgettext: no-c-format
+i18n("Optional Disk");
+// xgettext: no-c-format
+i18n("PostCard");
+// xgettext: no-c-format
+i18n("DoublePostCard");
+// xgettext: no-c-format
+i18n("Multi-Purpose Feeder");
+// xgettext: no-c-format
+i18n("Job Spooling");
+// xgettext: no-c-format
+i18n("Optional Feeder");
+// xgettext: no-c-format
+i18n("PF-21 Paper Feeders");
+// xgettext: no-c-format
+i18n("One");
+// xgettext: no-c-format
+i18n("Two");
+// xgettext: no-c-format
+i18n("Output Device");
+// xgettext: no-c-format
+i18n("SO-6 Bulk Sorter");
+// xgettext: no-c-format
+i18n("ST-20 Bulk Stacker");
+// xgettext: no-c-format
+i18n("12MB Upgrade");
+// xgettext: no-c-format
+i18n("20MB Upgrade");
+// xgettext: no-c-format
+i18n("24MB Upgrade");
+// xgettext: no-c-format
+i18n("36MB Upgrade");
+// xgettext: no-c-format
+i18n("40MB Upgrade");
+// xgettext: no-c-format
+i18n("48MB Upgrade");
+// xgettext: no-c-format
+i18n("64MB Upgrade");
+// xgettext: no-c-format
+i18n("Cassette 3");
+// xgettext: no-c-format
+i18n("Custom 1");
+// xgettext: no-c-format
+i18n("Custom 2");
+// xgettext: no-c-format
+i18n("Custom 3");
+// xgettext: no-c-format
+i18n("Custom 4");
+// xgettext: no-c-format
+i18n("Custom 5");
+// xgettext: no-c-format
+i18n("Custom 6");
+// xgettext: no-c-format
+i18n("Custom 7");
+// xgettext: no-c-format
+i18n("Custom 8");
+// xgettext: no-c-format
+i18n("Top Tray (Face-Down)");
+// xgettext: no-c-format
+i18n("Rear Tray (Face-Up)");
+// xgettext: no-c-format
+i18n("Stacker Mode (Face-Down)");
+// xgettext: no-c-format
+i18n("Sorter Mode (Face-Down)");
+// xgettext: no-c-format
+i18n("Collator Mode (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 1 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 2 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 3 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 4 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 5 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 6 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 7 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 8 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 9 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 10 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 11 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 12 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 13 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 14 (Face-Down)");
+// xgettext: no-c-format
+i18n("Mailbox 15 (Face-Down)");
+// xgettext: no-c-format
+i18n("Duplexing");
+// xgettext: no-c-format
+i18n("Temporary");
+// xgettext: no-c-format
+i18n("EF-1 Envelope Feeder");
+// xgettext: no-c-format
+i18n("UF-1 Universal Feeder");
+// xgettext: no-c-format
+i18n("PF-7 Bulk Feeder");
+// xgettext: no-c-format
+i18n("PF-5 Paper Feeders");
+// xgettext: no-c-format
+i18n("HS-3 Bulk Stacker");
+// xgettext: no-c-format
+i18n("Bulk Feeder");
+// xgettext: no-c-format
+i18n("Universal Feeder");
+// xgettext: no-c-format
+i18n("Stacker Mode (Face-Up)");
+// xgettext: no-c-format
+i18n("5MB Upgrade");
+// xgettext: no-c-format
+i18n("6MB Upgrade");
+// xgettext: no-c-format
+i18n("9MB Upgrade");
+// xgettext: no-c-format
+i18n("10MB Upgrade");
+// xgettext: no-c-format
+i18n("17MB Upgrade");
+// xgettext: no-c-format
+i18n("18MB Upgrade");
+// xgettext: no-c-format
+i18n("33MB Upgrade");
+// xgettext: no-c-format
+i18n("34MB Upgrade");
+// xgettext: no-c-format
+i18n("PF-7E Bulk Feeder");
+// xgettext: no-c-format
+i18n("PF-20 Paper Feeders");
+// xgettext: no-c-format
+i18n("HS-3E Bulk Stacker");
+// xgettext: no-c-format
+i18n("60MB Upgrade");
+// xgettext: no-c-format
+i18n("1200 Dots per Inch (dpi)");
+// xgettext: no-c-format
+i18n("PF-1 Paper Feeder");
+// xgettext: no-c-format
+i18n("Cassette 1");
+// xgettext: no-c-format
+i18n("7MB Upgrade");
+// xgettext: no-c-format
+i18n("13MB Upgrade");
+// xgettext: no-c-format
+i18n("PF-2 Paper Feeder");
+// xgettext: no-c-format
+i18n("11x17 (Ledger)");
+// xgettext: no-c-format
+i18n("Side Tray (Face-Up)");
+// xgettext: no-c-format
+i18n("PF-80 Paper Feeder");
+// xgettext: no-c-format
+i18n("Process Color (CMYK)");
+// xgettext: no-c-format
+i18n("Quick Color (CMY)");
+// xgettext: no-c-format
+i18n("Color Matching");
+// xgettext: no-c-format
+i18n("Simulate Display");
+// xgettext: no-c-format
+i18n("Side Tray (Face-Down)");
+// xgettext: no-c-format
+i18n("Permanent");
+// xgettext: no-c-format
+i18n("Barcode");
+// xgettext: no-c-format
+i18n("First Page");
+// xgettext: no-c-format
+i18n("Barcode ID");
+// xgettext: no-c-format
+i18n("Barcode Position");
+// xgettext: no-c-format
+i18n("Upper Left");
+// xgettext: no-c-format
+i18n("Upper Right");
+// xgettext: no-c-format
+i18n("Lower Left");
+// xgettext: no-c-format
+i18n("Lower Right");
+// xgettext: no-c-format
+i18n("Upper Left Vertical");
+// xgettext: no-c-format
+i18n("Upper Right Vertical");
+// xgettext: no-c-format
+i18n("Lower Left Vertical");
+// xgettext: no-c-format
+i18n("Lower Right Vertical");
+// xgettext: no-c-format
+i18n("PF-81 Paper Feeder");
+// xgettext: no-c-format
+i18n("Color Correction");
+// xgettext: no-c-format
+i18n("Application Corrected");
+// xgettext: no-c-format
+i18n("Printer Corrected");
+// xgettext: no-c-format
+i18n("Ink Simulation (CMYK)");
+// xgettext: no-c-format
+i18n("Euroscale Press");
+// xgettext: no-c-format
+i18n("SWOP Press");
+// xgettext: no-c-format
+i18n("Monitor Simulation (RGB)");
+// xgettext: no-c-format
+i18n("SMPTE240M");
+// xgettext: no-c-format
+i18n("sRGB (HDTV)");
+// xgettext: no-c-format
+i18n("Trinitron");
+// xgettext: no-c-format
+i18n("Apple RGB");
+// xgettext: no-c-format
+i18n("NTSC");
+// xgettext: no-c-format
+i18n("Duplex Paper");
+// xgettext: no-c-format
+i18n("Coated Paper");
+// xgettext: no-c-format
+i18n("Temporary (RAM Disk)");
+// xgettext: no-c-format
+i18n("Temporary (Hard Disk)");
+// xgettext: no-c-format
+i18n("Permanent (Hard Disk)");
+// xgettext: no-c-format
+i18n("Virtual Mailbox (Administrator)");
+// xgettext: no-c-format
+i18n("Virtual Mailbox (User 1)");
+// xgettext: no-c-format
+i18n("Virtual Mailbox (User 2)");
+// xgettext: no-c-format
+i18n("Virtual Mailbox (User 3)");
+// xgettext: no-c-format
+i18n("Virtual Mailbox (User 4)");
+// xgettext: no-c-format
+i18n("Virtual Mailbox (User 5)");
+// xgettext: no-c-format
+i18n("Virtual Mailbox (User 6)");
+// xgettext: no-c-format
+i18n("Virtual Mailbox (User 7)");
+// xgettext: no-c-format
+i18n("Virtual Mailbox (User 8)");
+// xgettext: no-c-format
+i18n("Virtual Mailbox (User 9)");
+// xgettext: no-c-format
+i18n("Virtual Mailbox (User 10)");
+// xgettext: no-c-format
+i18n("PF-26 Paper Feeders");
+// xgettext: no-c-format
+i18n("PF-9 Paper Feeders");
+// xgettext: no-c-format
+i18n("11MB Upgrade");
+// xgettext: no-c-format
+i18n("15MB Upgrade");
+// xgettext: no-c-format
+i18n("19MB Upgrade");
+// xgettext: no-c-format
+i18n("23MB Upgrade");
+// xgettext: no-c-format
+i18n("31MB Upgrade");
+// xgettext: no-c-format
+i18n("35MB Upgrade");
+// xgettext: no-c-format
+i18n("39MB Upgrade");
+// xgettext: no-c-format
+i18n("47MB Upgrade");
+// xgettext: no-c-format
+i18n("63MB Upgrade");
+// xgettext: no-c-format
+i18n("PF-25 Paper Feeders");
+// xgettext: no-c-format
+i18n("38MB Upgrade");
+// xgettext: no-c-format
+i18n("PF-30 Paper Feeders");
+// xgettext: no-c-format
+i18n("One (2 Cassettes)");
+// xgettext: no-c-format
+i18n("Two (4 Cassettes)");
+// xgettext: no-c-format
+i18n("Three (6 Cassettes)");
+// xgettext: no-c-format
+i18n("SO-30 Bulk Sorter");
+// xgettext: no-c-format
+i18n("ST-30 Bulk Stacker");
+// xgettext: no-c-format
+i18n("DF-30 Document Finisher");
+// xgettext: no-c-format
+i18n("Cassette 4");
+// xgettext: no-c-format
+i18n("Cassette 5");
+// xgettext: no-c-format
+i18n("Cassette 6");
+// xgettext: no-c-format
+i18n("Staple Method");
+// xgettext: no-c-format
+i18n("Staple Job up to 20 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 20 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 19 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 18 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 17 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 16 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 15 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 14 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 13 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 12 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 11 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 10 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 9 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 8 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 7 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 6 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 5 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 4 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 3 Sheets");
+// xgettext: no-c-format
+i18n("Staple Every 2 Sheets");
+// xgettext: no-c-format
+i18n("DF-31 Document Finisher");
+// xgettext: no-c-format
+i18n("44MB Upgrade");
+// xgettext: no-c-format
+i18n("Lower Tray - Option");
+// xgettext: no-c-format
+i18n("Envelope Feeder - Option");
+// xgettext: no-c-format
+i18n("Printer Memory - Option");
+// xgettext: no-c-format
+i18n("1.5 Mb Printer Memory");
+// xgettext: no-c-format
+i18n("2.5 Mb Printer Memory");
+// xgettext: no-c-format
+i18n("4 Mb Printer Memory");
+// xgettext: no-c-format
+i18n("C9 Envelope");
+// xgettext: no-c-format
+i18n("B5 Envelope");
+// xgettext: no-c-format
+i18n("Manual Envelope");
+// xgettext: no-c-format
+i18n("Manual Paper");
+// xgettext: no-c-format
+i18n("Tray Linking");
+// xgettext: no-c-format
+i18n("2 Mb Printer Memory");
+// xgettext: no-c-format
+i18n("3 Mb Printer Memory");
+// xgettext: no-c-format
+i18n("5+ Mb Printer Memory");
+// xgettext: no-c-format
+i18n("Smoothing");
+// xgettext: no-c-format
+i18n("Other Envelope");
+// xgettext: no-c-format
+i18n("Duplex - Option");
+// xgettext: no-c-format
+i18n("Simplex");
+// xgettext: no-c-format
+i18n("Duplex - Long Edge");
+// xgettext: no-c-format
+i18n("Duplex - Short Edge");
+// xgettext: no-c-format
+i18n("Flash Memory Card - Option");
+// xgettext: no-c-format
+i18n("Printer Hard Disk - Option");
+// xgettext: no-c-format
+i18n("2 MB Printer Memory");
+// xgettext: no-c-format
+i18n("4 MB Printer Memory");
+// xgettext: no-c-format
+i18n("6 MB Printer Memory");
+// xgettext: no-c-format
+i18n("8 MB Printer Memory");
+// xgettext: no-c-format
+i18n("10 MB Printer Memory");
+// xgettext: no-c-format
+i18n("12 MB Printer Memory");
+// xgettext: no-c-format
+i18n("16 MB Printer Memory");
+// xgettext: no-c-format
+i18n("8 Mb Printer Memory");
+// xgettext: no-c-format
+i18n("12 Mb Printer Memory");
+// xgettext: no-c-format
+i18n("16 Mb Printer Memory");
+// xgettext: no-c-format
+i18n("Printer Software Version");
+// xgettext: no-c-format
+i18n("250.0x");
+// xgettext: no-c-format
+i18n("250.2x");
+// xgettext: no-c-format
+i18n("360 dpi");
+// xgettext: no-c-format
+i18n("High Quality");
+// xgettext: no-c-format
+i18n("Bold Black");
+// xgettext: no-c-format
+i18n("Screening");
+// xgettext: no-c-format
+i18n("Color Balance");
+// xgettext: no-c-format
+i18n("Blue Adjust");
+// xgettext: no-c-format
+i18n("Line Art && Text");
+// xgettext: no-c-format
+i18n("Images");
+// xgettext: no-c-format
+i18n("Color Model");
+// xgettext: no-c-format
+i18n("RGB");
+// xgettext: no-c-format
+i18n("Image Brightness");
+// xgettext: no-c-format
+i18n("+5");
+// xgettext: no-c-format
+i18n("+10");
+// xgettext: no-c-format
+i18n("+15");
+// xgettext: no-c-format
+i18n("+20");
+// xgettext: no-c-format
+i18n("+25");
+// xgettext: no-c-format
+i18n("+30");
+// xgettext: no-c-format
+i18n("+35");
+// xgettext: no-c-format
+i18n("+40");
+// xgettext: no-c-format
+i18n("+45");
+// xgettext: no-c-format
+i18n("+50");
+// xgettext: no-c-format
+i18n("Image Contrast");
+// xgettext: no-c-format
+i18n("20 MB Printer Memory");
+// xgettext: no-c-format
+i18n("32 or more MB Printer Memory");
+// xgettext: no-c-format
+i18n("Pause Mode");
+// xgettext: no-c-format
+i18n("ColorGrade");
+// xgettext: no-c-format
+i18n("Image Diffusion");
+// xgettext: no-c-format
+i18n("Oversize 11.7 x 22 in");
+// xgettext: no-c-format
+i18n("Duplexer - Option");
+// xgettext: no-c-format
+i18n("Tray 3 - Option");
+// xgettext: no-c-format
+i18n("Feeder 2 - Option");
+// xgettext: no-c-format
+i18n("1 MB Flash Memory");
+// xgettext: no-c-format
+i18n("2 MB Flash Memory");
+// xgettext: no-c-format
+i18n("4 MB Flash Memory");
+// xgettext: no-c-format
+i18n("18 MB Printer Memory");
+// xgettext: no-c-format
+i18n("24 MB Printer Memory");
+// xgettext: no-c-format
+i18n("Print Darkness");
+// xgettext: no-c-format
+i18n("1200 dpi");
+// xgettext: no-c-format
+i18n("Feeder");
+// xgettext: no-c-format
+i18n("Feeder 2");
+// xgettext: no-c-format
+i18n("Tray 2 - Option");
+// xgettext: no-c-format
+i18n("32 MB Printer Memory");
+// xgettext: no-c-format
+i18n("64 MB Printer Memory");
+// xgettext: no-c-format
+i18n("96 MB Printer Memory");
+// xgettext: no-c-format
+i18n("128 MB Printer Memory");
+// xgettext: no-c-format
+i18n("Toner Saver");
+// xgettext: no-c-format
+i18n("Image Smoothing");
+// xgettext: no-c-format
+i18n("Colored Paper");
+// xgettext: no-c-format
+i18n("Custom Type 1");
+// xgettext: no-c-format
+i18n("Custom Type 2");
+// xgettext: no-c-format
+i18n("Custom Type 3");
+// xgettext: no-c-format
+i18n("Custom Type 4");
+// xgettext: no-c-format
+i18n("Port Rotation");
+// xgettext: no-c-format
+i18n("Collate Copies");
+// xgettext: no-c-format
+i18n("Top");
+// xgettext: no-c-format
+i18n("Rear");
+// xgettext: no-c-format
+i18n("Black & White");
+// xgettext: no-c-format
+i18n("Display");
+// xgettext: no-c-format
+i18n("1200 Image Quality");
+// xgettext: no-c-format
+i18n("B5 182 x 257 mm");
+// xgettext: no-c-format
+i18n("A5 148 x 210 mm");
+// xgettext: no-c-format
+i18n("B4 257 x 364 mm");
+// xgettext: no-c-format
+i18n("A3 297 x 419 mm");
+// xgettext: no-c-format
+i18n("Universal 11.7 x 17 in");
+// xgettext: no-c-format
+i18n("7 3/4 Envelope 3 7/8 x 7 1/2 in");
+// xgettext: no-c-format
+i18n("9 Envelope 3 7/8 x 8 7/8 in");
+// xgettext: no-c-format
+i18n("10 Envelope 4 1/8 x 9 1/2 in");
+// xgettext: no-c-format
+i18n("DL Envelope 110 x 220 mm");
+// xgettext: no-c-format
+i18n("C5 Envelope 162 x 229 mm");
+// xgettext: no-c-format
+i18n("B5 Envelope 176 x 250 mm");
+// xgettext: no-c-format
+i18n("Other Envelope 8 1/2 x 14 in");
+// xgettext: no-c-format
+i18n("Universal");
+// xgettext: no-c-format
+i18n("Comm10");
+// xgettext: no-c-format
+i18n("ISOB5");
+// xgettext: no-c-format
+i18n("Other");
+// xgettext: no-c-format
+i18n("MP Feeder");
+// xgettext: no-c-format
+i18n("36 MB Printer Memory");
+// xgettext: no-c-format
+i18n("68 or more MB Printer Memory");
+// xgettext: no-c-format
+i18n("Left Cartridge");
+// xgettext: no-c-format
+i18n("Unknown Cartridge");
+// xgettext: no-c-format
+i18n("Standard Black Cartridge");
+// xgettext: no-c-format
+i18n("High Capacity Black Cartridge");
+// xgettext: no-c-format
+i18n("Photo Cartridge");
+// xgettext: no-c-format
+i18n("Right Cartridge");
+// xgettext: no-c-format
+i18n("Standard Color Cartridge");
+// xgettext: no-c-format
+i18n("High Capacity Color Cartridge");
+// xgettext: no-c-format
+i18n("Greeting Card");
+// xgettext: no-c-format
+i18n("Iron On");
+// xgettext: no-c-format
+i18n("Photo Paper");
+// xgettext: no-c-format
+i18n("QuickPrint");
+// xgettext: no-c-format
+i18n("Universal 8 1/2 x 14 in");
+// xgettext: no-c-format
+i18n("40 MB Printer Memory");
+// xgettext: no-c-format
+i18n("72 or more MB Printer Memory");
+// xgettext: no-c-format
+i18n("SA3 320 x 450 mm");
+// xgettext: no-c-format
+i18n("Universal 12.6 x 22 in");
+// xgettext: no-c-format
+i18n("SA3");
+// xgettext: no-c-format
+i18n("Duplex Option - Option");
+// xgettext: no-c-format
+i18n("Fax Card");
+// xgettext: no-c-format
+i18n("Printer Setting");
+// xgettext: no-c-format
+i18n("Black && White");
+// xgettext: no-c-format
+i18n("2 Color Draft");
+// xgettext: no-c-format
+i18n("Image Enhancement");
+// xgettext: no-c-format
+i18n("PictureGrade");
+// xgettext: no-c-format
+i18n("Custom Type 5");
+// xgettext: no-c-format
+i18n("Custom Type 6");
+// xgettext: no-c-format
+i18n("14 MB Printer Memory");
+// xgettext: no-c-format
+i18n("28 MB Printer Memory");
+// xgettext: no-c-format
+i18n("Toner Darkness");
+// xgettext: no-c-format
+i18n("Printer's default");
+// xgettext: no-c-format
+i18n("Tray 4 - Option");
+// xgettext: no-c-format
+i18n("Tray 5 - Option");
+// xgettext: no-c-format
+i18n("MP Feeder - Option");
+// xgettext: no-c-format
+i18n("Number of Output Bins - Option");
+// xgettext: no-c-format
+i18n("Standard Bin Only");
+// xgettext: no-c-format
+i18n("1 Extra Bin");
+// xgettext: no-c-format
+i18n("2 Extra Bins");
+// xgettext: no-c-format
+i18n("3 Extra Bins");
+// xgettext: no-c-format
+i18n("4 Extra Bins");
+// xgettext: no-c-format
+i18n("5 Extra Bins");
+// xgettext: no-c-format
+i18n("6 Extra Bins");
+// xgettext: no-c-format
+i18n("7 Extra Bins");
+// xgettext: no-c-format
+i18n("8 Extra Bins");
+// xgettext: no-c-format
+i18n("9 Extra Bins");
+// xgettext: no-c-format
+i18n("10 Extra Bins");
+// xgettext: no-c-format
+i18n("11 Extra Bins");
+// xgettext: no-c-format
+i18n("12 Extra Bins");
+// xgettext: no-c-format
+i18n("13 Extra Bins");
+// xgettext: no-c-format
+i18n("14 Extra Bins");
+// xgettext: no-c-format
+i18n("15 Extra Bins");
+// xgettext: no-c-format
+i18n("22 MB Printer Memory");
+// xgettext: no-c-format
+i18n("Standard Bin");
+// xgettext: no-c-format
+i18n("Bin 9");
+// xgettext: no-c-format
+i18n("Bin 10");
+// xgettext: no-c-format
+i18n("Bin 11");
+// xgettext: no-c-format
+i18n("Bin 12");
+// xgettext: no-c-format
+i18n("Bin 13");
+// xgettext: no-c-format
+i18n("Bin 14");
+// xgettext: no-c-format
+i18n("Bin 15");
+// xgettext: no-c-format
+i18n("250-Sheet Drawer");
+// xgettext: no-c-format
+i18n("500-Sheet Drawer");
+// xgettext: no-c-format
+i18n("2000-Sheet Drawer");
+// xgettext: no-c-format
+i18n("1 - Output Expander");
+// xgettext: no-c-format
+i18n("1 - Hi-Capacity Output Expander");
+// xgettext: no-c-format
+i18n("2 - 2 Output Expanders");
+// xgettext: no-c-format
+i18n("2 - 1 Hi-Capacity + 1 Output Expander");
+// xgettext: no-c-format
+i18n("3 - 3 Output Expanders");
+// xgettext: no-c-format
+i18n("5 - 5-Bin Mailbox");
+// xgettext: no-c-format
+i18n("6 - 1 Output Expander + 1 5-Bin Mailbox");
+// xgettext: no-c-format
+i18n("6 - 1 5-Bin Mailbox + 1 Output Expander");
+// xgettext: no-c-format
+i18n("10 - 2 5-Bin Mailboxes");
+// xgettext: no-c-format
+i18n("Other Envelope 9.02 x 14 in");
+// xgettext: no-c-format
+i18n("Color Registration");
+// xgettext: no-c-format
+i18n("High Speed");
+// xgettext: no-c-format
+i18n("Finish Quality");
+// xgettext: no-c-format
+i18n("Medium Gloss");
+// xgettext: no-c-format
+i18n("High Gloss");
+// xgettext: no-c-format
+i18n("Low Gloss");
+// xgettext: no-c-format
+i18n("Contone");
+// xgettext: no-c-format
+i18n("Stochastic");
+// xgettext: no-c-format
+i18n("Multipurpose Feeder");
+// xgettext: no-c-format
+i18n("3 MB Printer Memory");
+// xgettext: no-c-format
+i18n("Manual Feed Paper Type");
+// xgettext: no-c-format
+i18n("Tray 1 Paper Type");
+// xgettext: no-c-format
+i18n("Tray 2 Paper Type");
+// xgettext: no-c-format
+i18n("1200 Quality");
+// xgettext: no-c-format
+i18n("Paper Input Drawer - Option");
+// xgettext: no-c-format
+i18n("Finisher - Option");
+// xgettext: no-c-format
+i18n("Custom 11.7 x 17.7 in");
+// xgettext: no-c-format
+i18n("Upper (Tray 1)");
+// xgettext: no-c-format
+i18n("Lower (Tray 2)");
+// xgettext: no-c-format
+i18n("Input Drawer (Tray 3)");
+// xgettext: no-c-format
+i18n("No Tray Linking");
+// xgettext: no-c-format
+i18n("Link Tray 1+2");
+// xgettext: no-c-format
+i18n("Link Tray 1+2+3");
+// xgettext: no-c-format
+i18n("Link Tray 2+3");
+// xgettext: no-c-format
+i18n("Bin 0 (Top)");
+// xgettext: no-c-format
+i18n("Bin 1 (Side)");
+// xgettext: no-c-format
+i18n("Staple 1");
+// xgettext: no-c-format
+i18n("Staple 2");
+// xgettext: no-c-format
+i18n("Do Not Care");
+// xgettext: no-c-format
+i18n("26 MB Printer Memory");
+// xgettext: no-c-format
+i18n("Images Only");
+// xgettext: no-c-format
+i18n("Entire Page");
+// xgettext: no-c-format
+i18n("2500-Sheet Drawer");
+// xgettext: no-c-format
+i18n("Mailbox - Option");
+// xgettext: no-c-format
+i18n("Hole Punch");
+// xgettext: no-c-format
+i18n("Offset Pages");
+// xgettext: no-c-format
+i18n("Between Copies");
+// xgettext: no-c-format
+i18n("Universal 11.69 x 17 in");
+// xgettext: no-c-format
+i18n("300x1200 DPI");
+// xgettext: no-c-format
+i18n("300x600 DPI");
+// xgettext: no-c-format
+i18n("600x1200 DPI");
+// xgettext: no-c-format
+i18n("1200x1200 DPI");
+// xgettext: no-c-format
+i18n("1200x300 DPI");
+// xgettext: no-c-format
+i18n("Normal Quality Color (4-ink)");
+// xgettext: no-c-format
+i18n("Photo Quality Color (6-ink)");
+// xgettext: no-c-format
+i18n("Bidirectional printing");
+// xgettext: no-c-format
+i18n("off");
+// xgettext: no-c-format
+i18n("on");
+// xgettext: no-c-format
+i18n("300 dpi x 600 dpi");
+// xgettext: no-c-format
+i18n("600 dpi x 600 dpi");
+// xgettext: no-c-format
+i18n("1200 dpi x 600 dpi");
+// xgettext: no-c-format
+i18n("Color");
+// xgettext: no-c-format
+i18n("Page Drying Time");
+// xgettext: no-c-format
+i18n("0 sec");
+// xgettext: no-c-format
+i18n("10 sec.");
+// xgettext: no-c-format
+i18n("20 sec.");
+// xgettext: no-c-format
+i18n("30 sec.");
+// xgettext: no-c-format
+i18n("40 sec.");
+// xgettext: no-c-format
+i18n("50 sec");
+// xgettext: no-c-format
+i18n("60 sec");
+// xgettext: no-c-format
+i18n("300x300 dpi");
+// xgettext: no-c-format
+i18n("300x600 dpi");
+// xgettext: no-c-format
+i18n("600x1200 dpi");
+// xgettext: no-c-format
+i18n("600x600 dpi");
+// xgettext: no-c-format
+i18n("1200x1200 dpi");
+// xgettext: no-c-format
+i18n("Optional Multi-Feeder");
+// xgettext: no-c-format
+i18n("6 MB");
+// xgettext: no-c-format
+i18n("7 MB");
+// xgettext: no-c-format
+i18n("8 MB");
+// xgettext: no-c-format
+i18n("10 MB");
+// xgettext: no-c-format
+i18n("11 MB");
+// xgettext: no-c-format
+i18n("12 MB");
+// xgettext: no-c-format
+i18n("14 MB");
+// xgettext: no-c-format
+i18n("18 MB");
+// xgettext: no-c-format
+i18n("19 MB");
+// xgettext: no-c-format
+i18n("20 MB");
+// xgettext: no-c-format
+i18n("22 MB");
+// xgettext: no-c-format
+i18n("26 MB");
+// xgettext: no-c-format
+i18n("34 MB");
+// xgettext: no-c-format
+i18n("Legal14");
+// xgettext: no-c-format
+i18n("Legal13");
+// xgettext: no-c-format
+i18n("Com10");
+// xgettext: no-c-format
+i18n("Com9");
+// xgettext: no-c-format
+i18n("Multi Feeder");
+// xgettext: no-c-format
+i18n("TraySwitch");
+// xgettext: no-c-format
+i18n("4 MB");
+// xgettext: no-c-format
+i18n("5 MB");
+// xgettext: no-c-format
+i18n("600x1200dpi");
+// xgettext: no-c-format
+i18n("Multi-Feeder");
+// xgettext: no-c-format
+i18n("2 MB");
+// xgettext: no-c-format
+i18n("4MB");
+// xgettext: no-c-format
+i18n("5MB");
+// xgettext: no-c-format
+i18n("6MB");
+// xgettext: no-c-format
+i18n("7MB");
+// xgettext: no-c-format
+i18n("8MB");
+// xgettext: no-c-format
+i18n("10MB");
+// xgettext: no-c-format
+i18n("11MB");
+// xgettext: no-c-format
+i18n("12MB");
+// xgettext: no-c-format
+i18n("14MB");
+// xgettext: no-c-format
+i18n("18MB");
+// xgettext: no-c-format
+i18n("19MB");
+// xgettext: no-c-format
+i18n("20MB");
+// xgettext: no-c-format
+i18n("22MB");
+// xgettext: no-c-format
+i18n("26MB");
+// xgettext: no-c-format
+i18n("34MB");
+// xgettext: no-c-format
+i18n("35MB");
+// xgettext: no-c-format
+i18n("36MB");
+// xgettext: no-c-format
+i18n("38MB");
+// xgettext: no-c-format
+i18n("42MB");
+// xgettext: no-c-format
+i18n("50MB");
+// xgettext: no-c-format
+i18n("66MB");
+// xgettext: no-c-format
+i18n("Env10");
+// xgettext: no-c-format
+i18n("Env9");
+// xgettext: no-c-format
+i18n("EnvDL");
+// xgettext: no-c-format
+i18n("EnvC4");
+// xgettext: no-c-format
+i18n("EnvC5");
+// xgettext: no-c-format
+i18n("EnvMonarch");
+// xgettext: no-c-format
+i18n("OKHalftoneMode");
+// xgettext: no-c-format
+i18n("Regular");
+// xgettext: no-c-format
+i18n("Photo");
+// xgettext: no-c-format
+i18n("2.5 MB");
+// xgettext: no-c-format
+i18n("3.5 MB");
+// xgettext: no-c-format
+i18n("4.5 MB");
+// xgettext: no-c-format
+i18n("6.5 MB");
+// xgettext: no-c-format
+i18n("10.5 MB");
+// xgettext: no-c-format
+i18n("18.5 MB");
+// xgettext: no-c-format
+i18n("Post Card");
+// xgettext: no-c-format
+i18n("Cardboard");
+// xgettext: no-c-format
+i18n("Coated Film");
+// xgettext: no-c-format
+i18n("Fine Paper");
+// xgettext: no-c-format
+i18n("Iron Seal");
+// xgettext: no-c-format
+i18n("OHP");
+// xgettext: no-c-format
+i18n("OHP (MD 2000)");
+// xgettext: no-c-format
+i18n("Rebeca Free");
+// xgettext: no-c-format
+i18n("Color Depth");
+// xgettext: no-c-format
+i18n("Floyd Steinb. High Qual. (32 bpp)");
+// xgettext: no-c-format
+i18n("Floyd Steinberg Simple (8 bpp)");
+// xgettext: no-c-format
+i18n("Monochrome (1 bpp)");
+// xgettext: no-c-format
+i18n("Simple Color (4 bpp)");
+// xgettext: no-c-format
+i18n("Dithering");
+// xgettext: no-c-format
+i18n("DoubleSided");
+// xgettext: no-c-format
+i18n("SingleSided");
+// xgettext: no-c-format
+i18n("Black toner saving");
+// xgettext: no-c-format
+i18n("EcoBlack");
+// xgettext: no-c-format
+i18n("NormalBlack");
+// xgettext: no-c-format
+i18n("60x144 dpi");
+// xgettext: no-c-format
+i18n("60x72 dpi");
+// xgettext: no-c-format
+i18n("120x144 dpi");
+// xgettext: no-c-format
+i18n("120x72 dpi");
+// xgettext: no-c-format
+i18n("240x144 dpi");
+// xgettext: no-c-format
+i18n("240x72 dpi");
+// xgettext: no-c-format
+i18n("60x180 dpi");
+// xgettext: no-c-format
+i18n("60x216 dpi");
+// xgettext: no-c-format
+i18n("60x60 dpi");
+// xgettext: no-c-format
+i18n("120x180 dpi");
+// xgettext: no-c-format
+i18n("120x216 dpi");
+// xgettext: no-c-format
+i18n("120x60 dpi");
+// xgettext: no-c-format
+i18n("180x180 dpi");
+// xgettext: no-c-format
+i18n("180x216 dpi");
+// xgettext: no-c-format
+i18n("180x60 dpi");
+// xgettext: no-c-format
+i18n("180x72 dpi");
+// xgettext: no-c-format
+i18n("240x180 dpi");
+// xgettext: no-c-format
+i18n("240x216 dpi");
+// xgettext: no-c-format
+i18n("240x60 dpi");
+// xgettext: no-c-format
+i18n("360x180 dpi");
+// xgettext: no-c-format
+i18n("360x216 dpi");
+// xgettext: no-c-format
+i18n("360x60 dpi");
+// xgettext: no-c-format
+i18n("360x72 dpi");
+// xgettext: no-c-format
+i18n("72x72 dpi");
+// xgettext: no-c-format
+i18n("144x144 dpi");
+// xgettext: no-c-format
+i18n("Paper Size");
+// xgettext: no-c-format
+i18n("Paper Tray");
+// xgettext: no-c-format
+i18n("Paper Weight");
+// xgettext: no-c-format
+i18n("Heavier paper (28lb)");
+// xgettext: no-c-format
+i18n("Heaviest paper (32lb)");
+// xgettext: no-c-format
+i18n("Heavy paper (24lb)");
+// xgettext: no-c-format
+i18n("Light Paper (20lb)");
+// xgettext: no-c-format
+i18n("Lightest Paper (16lb)");
+// xgettext: no-c-format
+i18n("Darkness");
+// xgettext: no-c-format
+i18n("Rendering Mode");
+// xgettext: no-c-format
+i18n("Graphics Mode");
+// xgettext: no-c-format
+i18n("Text Mode");
+// xgettext: no-c-format
+i18n("US Executive");
+// xgettext: no-c-format
+i18n("Special Paper");
+// xgettext: no-c-format
+i18n("Envelope Feed");
+// xgettext: no-c-format
+i18n("Output Mode");
+// xgettext: no-c-format
+i18n("CMYK Color");
+// xgettext: no-c-format
+i18n("CMY Color");
+// xgettext: no-c-format
+i18n("CRET Color");
+// xgettext: no-c-format
+i18n("Duplexer");
+// xgettext: no-c-format
+i18n("Address - 1 1/8 x 3 1/2\"");
+// xgettext: no-c-format
+i18n("Large Address - 1 4/10 x 3 1/2\"");
+// xgettext: no-c-format
+i18n("Return Address - 3/4 x 2\"");
+// xgettext: no-c-format
+i18n("Shipping Address - 2 5/16 x 4\"");
+// xgettext: no-c-format
+i18n("Internet Postage 2-Part - 2 1/4 x 7 1/2\"");
+// xgettext: no-c-format
+i18n("Internet Postage 3-Part - 2 1/4 x 7\"");
+// xgettext: no-c-format
+i18n("File Folder - 9/16 x 3 7/16\"");
+// xgettext: no-c-format
+i18n("Hanging Folder - 9/16 x 2\"");
+// xgettext: no-c-format
+i18n("3.5\" Disk - 2 1/8 x 2 3/4\"");
+// xgettext: no-c-format
+i18n("136 DPI");
+// xgettext: no-c-format
+i18n("203 DPI");
+// xgettext: no-c-format
+i18n("Output Darkness");
+// xgettext: no-c-format
+i18n("FanFoldUS");
+// xgettext: no-c-format
+i18n("60 DPI");
+// xgettext: no-c-format
+i18n("120x60 DPI");
+// xgettext: no-c-format
+i18n("360x180 DPI");
+// xgettext: no-c-format
+i18n("360 DPI");
+// xgettext: no-c-format
+i18n("60x72 DPI");
+// xgettext: no-c-format
+i18n("120x72 DPI");
+// xgettext: no-c-format
+i18n("240x72 DPI");
+// xgettext: no-c-format
+i18n("720 DPI");
+// xgettext: no-c-format
+i18n("Page Size and Printing Quality");
+// xgettext: no-c-format
+i18n("A4, 600x600 DPI");
+// xgettext: no-c-format
+i18n("A4, 1200x600 DPI");
+// xgettext: no-c-format
+i18n("B5, 600x600 DPI");
+// xgettext: no-c-format
+i18n("B5, 1200x600 DPI");
+// xgettext: no-c-format
+i18n("Legal, 600x600 DPI");
+// xgettext: no-c-format
+i18n("Legal, 1200x600 DPI");
+// xgettext: no-c-format
+i18n("Letter, 600x600 DPI");
+// xgettext: no-c-format
+i18n("Letter, 1200x600 DPI");
+// xgettext: no-c-format
+i18n("Back Print Media");
+// xgettext: no-c-format
+i18n("High Grade Paper");
+// xgettext: no-c-format
+i18n("Iron-On Transfer Sheet");
+// xgettext: no-c-format
+i18n("Hot OHP Media");
+// xgettext: no-c-format
+i18n("BlackOnly");
+// xgettext: no-c-format
+i18n("HalfTone");
+// xgettext: no-c-format
+i18n("NoHalfTone");
+// xgettext: no-c-format
+i18n("FloydSteinberg");
+// xgettext: no-c-format
+i18n("NoFloydSteinberg");
+// xgettext: no-c-format
+i18n("Banding");
+// xgettext: no-c-format
+i18n("NoBanding");
+// xgettext: no-c-format
+i18n("Color Mode");
+// xgettext: no-c-format
+i18n("Do Curl Correction");
+// xgettext: no-c-format
+i18n("CurlCorrectionAlways");
+// xgettext: no-c-format
+i18n("CurlCorrectionAfterFinal");
+// xgettext: no-c-format
+i18n("Color Correction Mode");
+// xgettext: no-c-format
+i18n("FullBlack");
+// xgettext: no-c-format
+i18n("Next Job");
+// xgettext: no-c-format
+i18n("NextJobOnSameSheet");
+// xgettext: no-c-format
+i18n("NextJobOnNewSheet");
+// xgettext: no-c-format
+i18n("Next Job is spot color page");
+// xgettext: no-c-format
+i18n("NextSpotColorPage");
+// xgettext: no-c-format
+i18n("NextNotSpotColorPage");
+// xgettext: no-c-format
+i18n("Color correction");
+// xgettext: no-c-format
+i18n("NoColorCorrection");
+// xgettext: no-c-format
+i18n("ColorCorrection");
+// xgettext: no-c-format
+i18n("Curl Correction on current pass");
+// xgettext: no-c-format
+i18n("NoCurlCorrectionOnCurrent");
+// xgettext: no-c-format
+i18n("CurlCorrectionOnCurrent");
+// xgettext: no-c-format
+i18n("How often every dot is printed");
+// xgettext: no-c-format
+i18n("PrintTwice");
+// xgettext: no-c-format
+i18n("PrintOnce");
+// xgettext: no-c-format
+i18n("Black Printing Mode");
+// xgettext: no-c-format
+i18n("SolidBlack");
+// xgettext: no-c-format
+i18n("MixedBlack");
+// xgettext: no-c-format
+i18n("Square Dithering");
+// xgettext: no-c-format
+i18n("SquareDithering");
+// xgettext: no-c-format
+i18n("NoSquareDithering");
+// xgettext: no-c-format
+i18n("This Job is spot color page");
+// xgettext: no-c-format
+i18n("ThisSpotColorPage");
+// xgettext: no-c-format
+i18n("ThisNotSpotColorPage");
+// xgettext: no-c-format
+i18n("300 DPI Normal, color and black cartr.");
+// xgettext: no-c-format
+i18n("300 DPI Normal, color cartr. only");
+// xgettext: no-c-format
+i18n("A4, Color");
+// xgettext: no-c-format
+i18n("A4, Grayscale");
+// xgettext: no-c-format
+i18n("Letter, Color");
+// xgettext: no-c-format
+i18n("Letter, Grayscale");
+// xgettext: no-c-format
+i18n("Device");
+// xgettext: no-c-format
+i18n("Link stylewriter in dev directory (set it to the appropriate device)");
+// xgettext: no-c-format
+i18n("Serial Port #1 (Linux)");
+// xgettext: no-c-format
+i18n("Serial Port #2 (Linux)");
+// xgettext: no-c-format
+i18n("Serial Port #1 (NetBSD)");
+// xgettext: no-c-format
+i18n("Serial Port #2 (NetBSD)");
+// xgettext: no-c-format
+i18n("Pass output to device set by the spooler");
+// xgettext: no-c-format
+i18n("Label Size");
+// xgettext: no-c-format
+i18n("2.25x7.5in, 59x190mm (Lever archive - large)");
+// xgettext: no-c-format
+i18n("1.4x7.5in, 38x190mm (Lever archive - small)");
+// xgettext: no-c-format
+i18n("2.125x4.0in, 54x101mm (Shipping badge)");
+// xgettext: no-c-format
+i18n("2.125x2.75in, 54x70mm (Diskette)");
+// xgettext: no-c-format
+i18n("1.4x3.5in, 36x89mm (Large address)");
+// xgettext: no-c-format
+i18n("1.125x3.5in, 28x89mm (Standard address)");
+// xgettext: no-c-format
+i18n("0.5x2in, 12x50mm (Suspension file)");
+// xgettext: no-c-format
+i18n("0.75x5.875in, 19x147mm (Video tape spine)");
+// xgettext: no-c-format
+i18n("1.8x3.1in, 46x78mm (Video tape top)");
+// xgettext: no-c-format
+i18n("Dual");
+// xgettext: no-c-format
+i18n("Thicker Paper");
+// xgettext: no-c-format
+i18n("Toner Saving");
+// xgettext: no-c-format
+i18n("High (50%)");
+// xgettext: no-c-format
+i18n("Low (25%)");
+// xgettext: no-c-format
+i18n("2400x600 DPI");
+// xgettext: no-c-format
+i18n("180x360 dpi");
+// xgettext: no-c-format
+i18n("360x360 dpi");
+// xgettext: no-c-format
+i18n("Media Weight");
+// xgettext: no-c-format
+i18n("Normal paper");
+// xgettext: no-c-format
+i18n("Thick paper");
+// xgettext: no-c-format
+i18n("Draft Quality");
+// xgettext: no-c-format
+i18n("Normal Quality");
+// xgettext: no-c-format
+i18n("Ghostscript Bits Per Pixel");
+// xgettext: no-c-format
+i18n("Monochrome (1bpp)");
+// xgettext: no-c-format
+i18n("CMYK with Ghostscript dithering (8bpp)");
+// xgettext: no-c-format
+i18n("CMYK with Ghostscript FS dithering (16bpp)");
+// xgettext: no-c-format
+i18n("CMYK with FS dithering (24 bpp)");
+// xgettext: no-c-format
+i18n("CMYK with FS dithering (32 bpp)");
+// xgettext: no-c-format
+i18n("Mode");
+// xgettext: no-c-format
+i18n("Four-color CMYK");
+// xgettext: no-c-format
+i18n("Greyscale");
+// xgettext: no-c-format
+i18n("Three-color RGB");
+// xgettext: no-c-format
+i18n("Colors to be used");
+// xgettext: no-c-format
+i18n("Cyan only");
+// xgettext: no-c-format
+i18n("Cyan, Black");
+// xgettext: no-c-format
+i18n("Cyan, Magenta");
+// xgettext: no-c-format
+i18n("Cyan, Magenta, Black");
+// xgettext: no-c-format
+i18n("Cyan, Magenta, Yellow");
+// xgettext: no-c-format
+i18n("Cyan, Magenta, Yellow, Black");
+// xgettext: no-c-format
+i18n("Cyan, Yellow");
+// xgettext: no-c-format
+i18n("Cyan, Yellow, Black");
+// xgettext: no-c-format
+i18n("Black only");
+// xgettext: no-c-format
+i18n("Black for any color");
+// xgettext: no-c-format
+i18n("Magenta only");
+// xgettext: no-c-format
+i18n("Magenta, Black");
+// xgettext: no-c-format
+i18n("Magenta, Yellow");
+// xgettext: no-c-format
+i18n("Magenta, Yellow, Black");
+// xgettext: no-c-format
+i18n("Yellow only");
+// xgettext: no-c-format
+i18n("Yellow, Black");
+// xgettext: no-c-format
+i18n("Auto Sheet Feeder");
+// xgettext: no-c-format
+i18n("Manual without Pause");
+// xgettext: no-c-format
+i18n("Manual with Pause");
+// xgettext: no-c-format
+i18n("Back Print Film");
+// xgettext: no-c-format
+i18n("Fabric Sheets");
+// xgettext: no-c-format
+i18n("Glossy Photo Cards");
+// xgettext: no-c-format
+i18n("Glossy Photo Paper");
+// xgettext: no-c-format
+i18n("High Gloss Film");
+// xgettext: no-c-format
+i18n("High Resolution Paper");
+// xgettext: no-c-format
+i18n("Photo Paper Pro");
+// xgettext: no-c-format
+i18n("T-Shirt Transfers");
+// xgettext: no-c-format
+i18n("Black");
+// xgettext: no-c-format
+i18n("1440 DPI");
+// xgettext: no-c-format
+i18n("1440x720 DPI");
+// xgettext: no-c-format
+i18n("180x180 DPI");
+// xgettext: no-c-format
+i18n("360x360 DPI");
+// xgettext: no-c-format
+i18n("720x360 DPI");
+// xgettext: no-c-format
+i18n("360×360dpi, back print film");
+// xgettext: no-c-format
+i18n("360×360dpi, coated paper");
+// xgettext: no-c-format
+i18n("360×360dpi, fabric sheet");
+// xgettext: no-c-format
+i18n("360×360dpi, glossy paper");
+// xgettext: no-c-format
+i18n("360×360dpi, high gloss film");
+// xgettext: no-c-format
+i18n("360×360dpi, high resolution paper");
+// xgettext: no-c-format
+i18n("360×360dpi, plain paper");
+// xgettext: no-c-format
+i18n("360×360dpi, plain paper, high speed");
+// xgettext: no-c-format
+i18n("360×360dpi, transparency film");
+// xgettext: no-c-format
+i18n("720 dpi");
+// xgettext: no-c-format
+i18n("Black and Color");
+// xgettext: no-c-format
+i18n("Photo and Color");
+// xgettext: no-c-format
+i18n("360x360 DPI DMT");
+// xgettext: no-c-format
+i18n("720x720 DPI");
+// xgettext: no-c-format
+i18n("Low Quality");
+// xgettext: no-c-format
+i18n("720×720dpi, back print film");
+// xgettext: no-c-format
+i18n("720×720dpi, coated paper");
+// xgettext: no-c-format
+i18n("720×720dpi, glossy paper");
+// xgettext: no-c-format
+i18n("720×720dpi, high-gloss paper");
+// xgettext: no-c-format
+i18n("720×720dpi, high resolution paper");
+// xgettext: no-c-format
+i18n("720×720dpi, plain paper");
+// xgettext: no-c-format
+i18n("720×720dpi, transparency film");
+// xgettext: no-c-format
+i18n("Black and Photo catridges");
+// xgettext: no-c-format
+i18n("600×600dpi, iron-on transfer sheets, normal quality");
+// xgettext: no-c-format
+i18n("600×600dpi, plain paper, normal quality");
+// xgettext: no-c-format
+i18n("600×600dpi, transparencies, normal quality");
+// xgettext: no-c-format
+i18n("1200×1200dpi, glossy photo cards, high quality");
+// xgettext: no-c-format
+i18n("1200×1200dpi, high gloss photo paper, high quality");
+// xgettext: no-c-format
+i18n("1200×1200dpi, professional photo paper, highest quality");
+// xgettext: no-c-format
+i18n("300x300 DPI DMT");
+// xgettext: no-c-format
+i18n("600x600 DPI DMT");
+// xgettext: no-c-format
+i18n("Monochrome, fast");
+// xgettext: no-c-format
+i18n("Monochrome, Floyd-Steinberg");
+// xgettext: no-c-format
+i18n("ESC/P2 Encoding");
+// xgettext: no-c-format
+i18n("Delta Row");
+// xgettext: no-c-format
+i18n("Run Length");
+// xgettext: no-c-format
+i18n("Uncompressed");
+// xgettext: no-c-format
+i18n("Preconfiguration file");
+// xgettext: no-c-format
+i18n("stcolor");
+// xgettext: no-c-format
+i18n("none");
+// xgettext: no-c-format
+i18n("Head motion");
+// xgettext: no-c-format
+i18n("Initialization values for dithering");
+// xgettext: no-c-format
+i18n("Uniform");
+// xgettext: no-c-format
+i18n("Random");
+// xgettext: no-c-format
+i18n("Weaving");
+// xgettext: no-c-format
+i18n("Microweave (Printer internal)");
+// xgettext: no-c-format
+i18n("Softweave (Driver internal)");
+// xgettext: no-c-format
+i18n("360×360dpi, 32-bit CMYK");
+// xgettext: no-c-format
+i18n("3360×360dpi, 4-bit, PostScript halftoning, weaved");
+// xgettext: no-c-format
+i18n("720×720dpi, 32-bit CMYK, weaved");
+// xgettext: no-c-format
+i18n("Color, Floyd-Steinberg, CMYK, better");
+// xgettext: no-c-format
+i18n("Color, fast, CMYK");
+// xgettext: no-c-format
+i18n("Color, modif. Floyd-Steinberg, CMYK, faster");
+// xgettext: no-c-format
+i18n("Color, fast, RGB");
+// xgettext: no-c-format
+i18n("Color, Floyd-Steinberg, RGB");
+// xgettext: no-c-format
+i18n("Color, Floyd-Steinberg, CMYK, simpler");
+// xgettext: no-c-format
+i18n("Color, Stefan-Singer algorithm, RGB");
+// xgettext: no-c-format
+i18n("Back Light Film");
+// xgettext: no-c-format
+i18n("Glossy Film");
+// xgettext: no-c-format
+i18n("Inkjet Paper");
+// xgettext: no-c-format
+i18n("Matte Paper");
+// xgettext: no-c-format
+i18n("Photo Quality Glossy Paper");
+// xgettext: no-c-format
+i18n("Photo Quality Inkjet Paper");
+// xgettext: no-c-format
+i18n("Plain Paper Fast Load");
+// xgettext: no-c-format
+i18n("Premium Glossy Photo Paper");
+// xgettext: no-c-format
+i18n("720 DPI Microweave");
+// xgettext: no-c-format
+i18n("360 DPI High Quality");
+// xgettext: no-c-format
+i18n("360 DPI Softweave");
+// xgettext: no-c-format
+i18n("720 DPI Highest Quality");
+// xgettext: no-c-format
+i18n("720 DPI High Quality");
+// xgettext: no-c-format
+i18n("720 DPI Softweave");
+// xgettext: no-c-format
+i18n("1440 x 1440 DPI Emulated");
+// xgettext: no-c-format
+i18n("1440 x 2880 DPI Emulated");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Highest Quality");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Softweave");
+// xgettext: no-c-format
+i18n("B3 ISO");
+// xgettext: no-c-format
+i18n("B3 JIS");
+// xgettext: no-c-format
+i18n("RA2");
+// xgettext: no-c-format
+i18n("360 dpi, plain paper");
+// xgettext: no-c-format
+i18n("720 dpi, plain paper");
+// xgettext: no-c-format
+i18n("1440×720dpi, inkjet paper");
+// xgettext: no-c-format
+i18n("360×360dpi, plain paper, grayscale");
+// xgettext: no-c-format
+i18n("720×720dpi, inkjet paper");
+// xgettext: no-c-format
+i18n("720×720dpi, plain paper, grayscale");
+// xgettext: no-c-format
+i18n("1440×720dpi, inkjet paper, grayscale");
+// xgettext: no-c-format
+i18n("720x720dpi, plain paper");
+// xgettext: no-c-format
+i18n("360×360dpi");
+// xgettext: no-c-format
+i18n("720×720dpi");
+// xgettext: no-c-format
+i18n("Four color CMYK printing");
+// xgettext: no-c-format
+i18n("Six color CMYKcm printing");
+// xgettext: no-c-format
+i18n("75x75 dpi");
+// xgettext: no-c-format
+i18n("150x150 dpi");
+// xgettext: no-c-format
+i18n("2-passes x-weaving");
+// xgettext: no-c-format
+i18n("3-passes x-weaving");
+// xgettext: no-c-format
+i18n("2400 DPI");
+// xgettext: no-c-format
+i18n("Reset printer before printing");
+// xgettext: no-c-format
+i18n("NoReset");
+// xgettext: no-c-format
+i18n("Reset");
+// xgettext: no-c-format
+i18n("Power saving mode after printing");
+// xgettext: no-c-format
+i18n("PowerSaving");
+// xgettext: no-c-format
+i18n("NoPowerSaving");
+// xgettext: no-c-format
+i18n("Bits per R/G/B component");
+// xgettext: no-c-format
+i18n("HalfLetter");
+// xgettext: no-c-format
+i18n("B6-C4");
+// xgettext: no-c-format
+i18n("C7-6");
+// xgettext: no-c-format
+i18n("ArchA");
+// xgettext: no-c-format
+i18n("flsa");
+// xgettext: no-c-format
+i18n("flse");
+// xgettext: no-c-format
+i18n("Small paperback");
+// xgettext: no-c-format
+i18n("Penguin small paperback");
+// xgettext: no-c-format
+i18n("Penguin large paperback");
+// xgettext: no-c-format
+i18n("Long 3");
+// xgettext: no-c-format
+i18n("Long 4");
+// xgettext: no-c-format
+i18n("Kaku");
+// xgettext: no-c-format
+i18n("Commercial 10");
+// xgettext: no-c-format
+i18n("A2 Invitation");
+// xgettext: no-c-format
+i18n("ColorModel");
+// xgettext: no-c-format
+i18n("Line Art");
+// xgettext: no-c-format
+i18n("Solid Tone");
+// xgettext: no-c-format
+i18n("Photograph");
+// xgettext: no-c-format
+i18n("MediaType");
+// xgettext: no-c-format
+i18n("Transparencies");
+// xgettext: no-c-format
+i18n("Dither");
+// xgettext: no-c-format
+i18n("300 DPI x 600 DPI");
+// xgettext: no-c-format
+i18n("600 DPI high quality");
+// xgettext: no-c-format
+i18n("600 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("1200 DPI high quality");
+// xgettext: no-c-format
+i18n("1200 DPI highest quality");
+// xgettext: no-c-format
+i18n("1200 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("2400 DPI x 1200 DPI");
+// xgettext: no-c-format
+i18n("2400 DPI x 1200 DPI high quality");
+// xgettext: no-c-format
+i18n("2400 DPI x 1200 DPI highest quality");
+// xgettext: no-c-format
+i18n("ArchB");
+// xgettext: no-c-format
+i18n("Envelopes");
+// xgettext: no-c-format
+i18n("Premium Luster Photo Paper");
+// xgettext: no-c-format
+i18n("180 x 120 DPI");
+// xgettext: no-c-format
+i18n("180 x 120 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("360 x 120 DPI");
+// xgettext: no-c-format
+i18n("360 x 120 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("360 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("360 DPI Microweave");
+// xgettext: no-c-format
+i18n("360 DPI Microweave Unidirectional");
+// xgettext: no-c-format
+i18n("360 DPI High Quality Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 360 DPI Softweave");
+// xgettext: no-c-format
+i18n("720 x 360 DPI Softweave Unidirectional");
+// xgettext: no-c-format
+i18n("720 DPI Microweave Unidirectional");
+// xgettext: no-c-format
+i18n("720 DPI Softweave Unidirectional");
+// xgettext: no-c-format
+i18n("720 DPI High Quality Unidirectional");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Softweave Unidirectional");
+// xgettext: no-c-format
+i18n("Roll Feed");
+// xgettext: no-c-format
+i18n("2880 x 720 DPI Softweave");
+// xgettext: no-c-format
+i18n("2880 x 720 DPI Softweave Unidirectional");
+// xgettext: no-c-format
+i18n("180 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("360 DPI Full Overlap");
+// xgettext: no-c-format
+i18n("360 DPI Full Overlap Unidirectional");
+// xgettext: no-c-format
+i18n("360 DPI FOL2");
+// xgettext: no-c-format
+i18n("360 DPI FOL2 Unidirectional");
+// xgettext: no-c-format
+i18n("360 DPI MW2");
+// xgettext: no-c-format
+i18n("360 DPI MW2 Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 360 DPI Default");
+// xgettext: no-c-format
+i18n("720 x 360 DPI Default Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 360 DPI Microweave");
+// xgettext: no-c-format
+i18n("720 x 360 DPI Microweave Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 360 DPI FOL");
+// xgettext: no-c-format
+i18n("720 x 360 DPI FOL Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 360 DPI FOL2");
+// xgettext: no-c-format
+i18n("720 x 360 DPI FOL2 Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 360 DPI MW2");
+// xgettext: no-c-format
+i18n("720 x 360 DPI MW2 Unidirectional");
+// xgettext: no-c-format
+i18n("720 DPI Full Overlap");
+// xgettext: no-c-format
+i18n("720 DPI Full Overlap Unidirectional");
+// xgettext: no-c-format
+i18n("720 DPI Four Pass");
+// xgettext: no-c-format
+i18n("720 DPI Four Pass Unidirectional");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Microweave");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Microweave Unidirectional");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI FOL");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI FOL Unidirectional");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Four Pass");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Four Pass Unidirectional");
+// xgettext: no-c-format
+i18n("20x24");
+// xgettext: no-c-format
+i18n("20x30");
+// xgettext: no-c-format
+i18n("24x30");
+// xgettext: no-c-format
+i18n("24x36");
+// xgettext: no-c-format
+i18n("SRA2");
+// xgettext: no-c-format
+i18n("B2 ISO");
+// xgettext: no-c-format
+i18n("B2 JIS");
+// xgettext: no-c-format
+i18n("C2");
+// xgettext: no-c-format
+i18n("ArchC");
+// xgettext: no-c-format
+i18n("ArchD");
+// xgettext: no-c-format
+i18n("30x40");
+// xgettext: no-c-format
+i18n("RA0");
+// xgettext: no-c-format
+i18n("RA1");
+// xgettext: no-c-format
+i18n("SRA0");
+// xgettext: no-c-format
+i18n("SRA1");
+// xgettext: no-c-format
+i18n("B0 ISO");
+// xgettext: no-c-format
+i18n("B1 ISO");
+// xgettext: no-c-format
+i18n("B0 JIS");
+// xgettext: no-c-format
+i18n("B1 JIS");
+// xgettext: no-c-format
+i18n("C0");
+// xgettext: no-c-format
+i18n("C1");
+// xgettext: no-c-format
+i18n("ArchE");
+// xgettext: no-c-format
+i18n("1200 x 1200 DPI");
+// xgettext: no-c-format
+i18n("1200 x 600 DPI");
+// xgettext: no-c-format
+i18n("13 Inch Roll Paper");
+// xgettext: no-c-format
+i18n("1440 x 1440 DPI");
+// xgettext: no-c-format
+i18n("1440 x 1440 DPI Highest Quality");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI");
+// xgettext: no-c-format
+i18n("1440 x 720 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("150 x 150 DPI");
+// xgettext: no-c-format
+i18n("180 DPI Economy Draft");
+// xgettext: no-c-format
+i18n("180 x 180 DPI");
+// xgettext: no-c-format
+i18n("210 mm Roll Paper");
+// xgettext: no-c-format
+i18n("22 Inch Roll Paper");
+// xgettext: no-c-format
+i18n("2400 x 1200 DPI");
+// xgettext: no-c-format
+i18n("240x240 DPI");
+// xgettext: no-c-format
+i18n("24 Inch Roll Paper");
+// xgettext: no-c-format
+i18n("2880 x 1440 DPI");
+// xgettext: no-c-format
+i18n("2880 x 720 DPI");
+// xgettext: no-c-format
+i18n("2880 x 720 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("300 dpi, Color, Black & Color Cartr., Plain Paper");
+// xgettext: no-c-format
+i18n("300 dpi, Color, Color Cartr., Plain Paper");
+// xgettext: no-c-format
+i18n("300 dpi, Grayscale, Black Cartr., Plain Paper");
+// xgettext: no-c-format
+i18n("300 dpi, Grayscale, Black & Color Cartr., Plain Paper");
+// xgettext: no-c-format
+i18n("300 dpi, Photo, Black & Color Cartr., Photo Paper");
+// xgettext: no-c-format
+i18n("300 dpi, Photo, Photo & Color Cartr., Premium Paper");
+// xgettext: no-c-format
+i18n("300 x 300 DPI");
+// xgettext: no-c-format
+i18n("300 x 600 DPI");
+// xgettext: no-c-format
+i18n("360×360dpi, 4-bit, PostScript halftoning, weaved");
+// xgettext: no-c-format
+i18n("360 x 120 DPI Economy Draft");
+// xgettext: no-c-format
+i18n("360 x 180 DPI");
+// xgettext: no-c-format
+i18n("360 x 180 DPI Draft");
+// xgettext: no-c-format
+i18n("360 x 240 DPI");
+// xgettext: no-c-format
+i18n("360 x 240 DPI Draft");
+// xgettext: no-c-format
+i18n("360 x 360 DPI");
+// xgettext: no-c-format
+i18n("360x720 DPI");
+// xgettext: no-c-format
+i18n("360 x 90 DPI");
+// xgettext: no-c-format
+i18n("360 x 90 DPI Fast Economy Draft");
+// xgettext: no-c-format
+i18n("36 Inch Roll Paper");
+// xgettext: no-c-format
+i18n("3-ink color (Color ink cartridge)");
+// xgettext: no-c-format
+i18n("400x400 DPI");
+// xgettext: no-c-format
+i18n("44 Inch Roll Paper");
+// xgettext: no-c-format
+i18n("4 Inch Roll Paper");
+// xgettext: no-c-format
+i18n("4-ink color (Both ink cartridges)");
+// xgettext: no-c-format
+i18n("5 Inch Roll Paper");
+// xgettext: no-c-format
+i18n("600 dpi, Color, Black & Color Cartr., Plain Paper");
+// xgettext: no-c-format
+i18n("600 dpi, Color, Color Cartr., Plain Paper");
+// xgettext: no-c-format
+i18n("600 dpi, Grayscale, Black & Color Cartr., Plain Paper");
+// xgettext: no-c-format
+i18n("600 dpi, Photo, Black & Color Cartr., Photo Paper");
+// xgettext: no-c-format
+i18n("600 x 300 DPI");
+// xgettext: no-c-format
+i18n("600 x 600 DPI");
+// xgettext: no-c-format
+i18n("720 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 360 DPI");
+// xgettext: no-c-format
+i18n("720 x 360 DPI Unidirectional");
+// xgettext: no-c-format
+i18n("720 x 720 DPI");
+// xgettext: no-c-format
+i18n("89 mm Roll Paper");
+// xgettext: no-c-format
+i18n("90 x 90 DPI");
+// xgettext: no-c-format
+i18n("90x90 DPI");
+// xgettext: no-c-format
+i18n("A4, Colour");
+// xgettext: no-c-format
+i18n("Always");
+// xgettext: no-c-format
+i18n("B6 (ISO)");
+// xgettext: no-c-format
+i18n("Behaviour when Toner Low");
+// xgettext: no-c-format
+i18n("Bidirectional Printing");
+// xgettext: no-c-format
+i18n("Black and Blue (Cyan, Magenta, Black)");
+// xgettext: no-c-format
+i18n("Black and Cyan");
+// xgettext: no-c-format
+i18n("Black and Green (Cyan, Yellow, Black)");
+// xgettext: no-c-format
+i18n("Black and Magenta");
+// xgettext: no-c-format
+i18n("Black and Red (Magenta, Yellow, Black)");
+// xgettext: no-c-format
+i18n("Black and Yellow");
+// xgettext: no-c-format
+i18n("Black cartridge");
+// xgettext: no-c-format
+i18n("Black Cartridge");
+// xgettext: no-c-format
+i18n("Black correction (Cyan reduction)");
+// xgettext: no-c-format
+i18n("Black for any colour");
+// xgettext: no-c-format
+i18n("Black ink density adjustment.");
+// xgettext: no-c-format
+i18n("Black Level");
+// xgettext: no-c-format
+i18n("Black Level (Black cartr. only)");
+// xgettext: no-c-format
+i18n("Blue (Cyan and Magenta)");
+// xgettext: no-c-format
+i18n("Bottom Margin");
+// xgettext: no-c-format
+i18n("Brightness");
+// xgettext: no-c-format
+i18n("Color cartridge");
+// xgettext: no-c-format
+i18n("Color (Draft Quality)");
+// xgettext: no-c-format
+i18n("Color (High Quality)");
+// xgettext: no-c-format
+i18n("Color, normal quality, optional colour correction");
+// xgettext: no-c-format
+i18n("Colour");
+// xgettext: no-c-format
+i18n("Colour Cartridge");
+// xgettext: no-c-format
+i18n("Colour correction");
+// xgettext: no-c-format
+i18n("Colour Correction");
+// xgettext: no-c-format
+i18n("ColourCorrection");
+// xgettext: no-c-format
+i18n("Colour Correction Mode");
+// xgettext: no-c-format
+i18n("Colour Depth");
+// xgettext: no-c-format
+i18n("Colour, fast, CMYK");
+// xgettext: no-c-format
+i18n("Colour, fast, RGB");
+// xgettext: no-c-format
+i18n("Colour, Floyd-Steinberg, CMYK, better");
+// xgettext: no-c-format
+i18n("Colour, Floyd-Steinberg, CMYK, simpler");
+// xgettext: no-c-format
+i18n("Colour, Floyd-Steinberg, RGB");
+// xgettext: no-c-format
+i18n("Colour Intensity");
+// xgettext: no-c-format
+i18n("Colour mode");
+// xgettext: no-c-format
+i18n("Colour Mode");
+// xgettext: no-c-format
+i18n("Colour, modif. Floyd-Steinberg, CMYK, faster");
+// xgettext: no-c-format
+i18n("Colours one page at a time");
+// xgettext: no-c-format
+i18n("Colour, Stefan-Singer algorithm, RGB");
+// xgettext: no-c-format
+i18n("Colours to be printed");
+// xgettext: no-c-format
+i18n("Colours to be used");
+// xgettext: no-c-format
+i18n("Composed Black");
+// xgettext: no-c-format
+i18n("Compressed Data Transfer");
+// xgettext: no-c-format
+i18n("Continuous-tone photographs");
+// xgettext: no-c-format
+i18n("Contrast Level");
+// xgettext: no-c-format
+i18n("CorrectBlack");
+// xgettext: no-c-format
+i18n("Curl Correction");
+// xgettext: no-c-format
+i18n("Cyan");
+// xgettext: no-c-format
+i18n("Cyan Level");
+// xgettext: no-c-format
+i18n("Cyan Level (Colour cartr. only)");
+// xgettext: no-c-format
+i18n("Default behaviour");
+// xgettext: no-c-format
+i18n("Distance even/odd nozzles left cartr.");
+// xgettext: no-c-format
+i18n("Distance even/odd nozzles right cartr.");
+// xgettext: no-c-format
+i18n("Dither Algorithm");
+// xgettext: no-c-format
+i18n("Dithering Pixels Per Inch");
+// xgettext: no-c-format
+i18n("Dithering PPI");
+// xgettext: no-c-format
+i18n("Do not care about cartridges, colours one page at a time");
+// xgettext: no-c-format
+i18n("Do not care about cartridges, each line in all colours");
+// xgettext: no-c-format
+i18n("DoNotOverlay");
+// xgettext: no-c-format
+i18n("Driver Default");
+// xgettext: no-c-format
+i18n("Each line in all colours");
+// xgettext: no-c-format
+i18n("Executive, 1200x600 DPI");
+// xgettext: no-c-format
+i18n("Executive, 600x600 DPI");
+// xgettext: no-c-format
+i18n("FaceDown");
+// xgettext: no-c-format
+i18n("FaceUp");
+// xgettext: no-c-format
+i18n("First pass of an overlayed printout");
+// xgettext: no-c-format
+i18n("Five Color Photo Composite");
+// xgettext: no-c-format
+i18n("Floyd-Steinberg (not recommended for MicroDry)");
+// xgettext: no-c-format
+i18n("Foolscap A");
+// xgettext: no-c-format
+i18n("Foolscap E");
+// xgettext: no-c-format
+i18n("Four Color Standard");
+// xgettext: no-c-format
+i18n("FullPaint");
+// xgettext: no-c-format
+i18n("Gamma");
+// xgettext: no-c-format
+i18n("Gamma Black");
+// xgettext: no-c-format
+i18n("Gamma (Blue Component)");
+// xgettext: no-c-format
+i18n("Gamma Correction");
+// xgettext: no-c-format
+i18n("Gamma correction on saturation HSV component");
+// xgettext: no-c-format
+i18n("Gamma Cyan");
+// xgettext: no-c-format
+i18n("Gamma (Green Component)");
+// xgettext: no-c-format
+i18n("Gamma Magenta");
+// xgettext: no-c-format
+i18n("Gamma (Red Component)");
+// xgettext: no-c-format
+i18n("Gamma Yellow");
+// xgettext: no-c-format
+i18n("Generic DeskJet");
+// xgettext: no-c-format
+i18n("Glossy finishing");
+// xgettext: no-c-format
+i18n("Glossy Photo");
+// xgettext: no-c-format
+i18n("Gray Scale");
+// xgettext: no-c-format
+i18n("Grayscale (Black ink cartridge)");
+// xgettext: no-c-format
+i18n("Green (Cyan and Yellow)");
+// xgettext: no-c-format
+i18n("Hagaki");
+// xgettext: no-c-format
+i18n("Halftone (recommended for general use)");
+// xgettext: no-c-format
+i18n("Head Separation");
+// xgettext: no-c-format
+i18n("Horiz. Alignm. betw. Cartr.");
+// xgettext: no-c-format
+i18n("Horizontal (X-)Shift (in dots)");
+// xgettext: no-c-format
+i18n("Horz. align. betw. cartr.");
+// xgettext: no-c-format
+i18n("HP LaserJet 4L");
+// xgettext: no-c-format
+i18n("HP LaserJet III series");
+// xgettext: no-c-format
+i18n("HP LaserJet II series");
+// xgettext: no-c-format
+i18n("IgnoreSize");
+// xgettext: no-c-format
+i18n("Ilford Heavy Paper");
+// xgettext: no-c-format
+i18n("Ink Drying Time (sec)");
+// xgettext: no-c-format
+i18n("Inverse Printing");
+// xgettext: no-c-format
+i18n("Japanese Kaku envelope #4");
+// xgettext: no-c-format
+i18n("Japanese long envelope #3");
+// xgettext: no-c-format
+i18n("Japanese long envelope #4");
+// xgettext: no-c-format
+i18n("Job Type");
+// xgettext: no-c-format
+i18n("KeepBlack");
+// xgettext: no-c-format
+i18n("Keep pure black");
+// xgettext: no-c-format
+i18n("Landscape");
+// xgettext: no-c-format
+i18n("Last pass of an overlayed printout");
+// xgettext: no-c-format
+i18n("Left Margin");
+// xgettext: no-c-format
+i18n("Left Skip (in pixels)");
+// xgettext: no-c-format
+i18n("Letter, Colour");
+// xgettext: no-c-format
+i18n("Limit Error from Paper Colour Correction");
+// xgettext: no-c-format
+i18n("Line Feed Adjustment");
+// xgettext: no-c-format
+i18n("Magenta");
+// xgettext: no-c-format
+i18n("Magenta Level");
+// xgettext: no-c-format
+i18n("Magenta Level (Colour cartr. only)");
+// xgettext: no-c-format
+i18n("Memory Limit (Bytes)");
+// xgettext: no-c-format
+i18n("Middle pass of an overlayed printout");
+// xgettext: no-c-format
+i18n("Monochrome printing, re-usable economy black cartridge");
+// xgettext: no-c-format
+i18n("Monochrome printing, standard black cartridge");
+// xgettext: no-c-format
+i18n("More than 4 colours, colours one page at a time");
+// xgettext: no-c-format
+i18n("Never");
+// xgettext: no-c-format
+i18n("Next Job is spot colour page");
+// xgettext: no-c-format
+i18n("NextNotSpotColourPage");
+// xgettext: no-c-format
+i18n("NextSpotColourPage");
+// xgettext: no-c-format
+i18n("NoColourCorrection");
+// xgettext: no-c-format
+i18n("No dithering");
+// xgettext: no-c-format
+i18n("noGlossy");
+// xgettext: no-c-format
+i18n("Non-Bleed");
+// xgettext: no-c-format
+i18n("None (RGB --> CMY)");
+// xgettext: no-c-format
+i18n("Normal Quality Colour (4-ink)");
+// xgettext: no-c-format
+i18n("Number of Copies");
+// xgettext: no-c-format
+i18n("Number of passes per line");
+// xgettext: no-c-format
+i18n("Orientation");
+// xgettext: no-c-format
+i18n("Oufuku-Hagaki");
+// xgettext: no-c-format
+i18n("Output Type");
+// xgettext: no-c-format
+i18n("Page Output");
+// xgettext: no-c-format
+i18n("Paper Colour (Blue Component)");
+// xgettext: no-c-format
+i18n("Paper Colour (Green Component)");
+// xgettext: no-c-format
+i18n("Paper Colour (Red Component)");
+// xgettext: no-c-format
+i18n("PartialPaint");
+// xgettext: no-c-format
+i18n("Photo CcMmY Color");
+// xgettext: no-c-format
+i18n("Photo CcMmYK Color");
+// xgettext: no-c-format
+i18n("Photo (CMYK, gamma correction, ...)");
+// xgettext: no-c-format
+i18n("Photo Full Bleed");
+// xgettext: no-c-format
+i18n("Photo Quality Colour (6-ink)");
+// xgettext: no-c-format
+i18n("Plain (RGB --> CMYK)");
+// xgettext: no-c-format
+i18n("Portrait");
+// xgettext: no-c-format
+i18n("Presentation Quality");
+// xgettext: no-c-format
+i18n("Primarily solid colors or smooth gradients");
+// xgettext: no-c-format
+i18n("Printer Model");
+// xgettext: no-c-format
+i18n("Printer's paper size");
+// xgettext: no-c-format
+i18n("Print next job over the current one");
+// xgettext: no-c-format
+i18n("Printout Quality");
+// xgettext: no-c-format
+i18n("Quality, Ink Type, Media Type");
+// xgettext: no-c-format
+i18n("Randomization of Floyd-Steinberg");
+// xgettext: no-c-format
+i18n("Raw CMYK");
+// xgettext: no-c-format
+i18n("Red (Magenta and Yellow)");
+// xgettext: no-c-format
+i18n("RequireSize");
+// xgettext: no-c-format
+i18n("Reset after job");
+// xgettext: no-c-format
+i18n("Right Margin");
+// xgettext: no-c-format
+i18n("RIT Control");
+// xgettext: no-c-format
+i18n("RITOff");
+// xgettext: no-c-format
+i18n("RITOn");
+// xgettext: no-c-format
+i18n("Roll Paper");
+// xgettext: no-c-format
+i18n("Shift output horizontally (in 1/300 inch)");
+// xgettext: no-c-format
+i18n("Shift output vertically (in 1/300 inch)");
+// xgettext: no-c-format
+i18n("Simple Colour (4 bpp)");
+// xgettext: no-c-format
+i18n("Single Pass Job");
+// xgettext: no-c-format
+i18n("Six Color Photo");
+// xgettext: no-c-format
+i18n("Smooth Printing (BC-02 cartridge)");
+// xgettext: no-c-format
+i18n("Solid Colors");
+// xgettext: no-c-format
+i18n("Square (experimental, not recommended)");
+// xgettext: no-c-format
+i18n("StpBrightness");
+// xgettext: no-c-format
+i18n("StpGamma");
+// xgettext: no-c-format
+i18n("StpSaturation");
+// xgettext: no-c-format
+i18n("Super B 13x19");
+// xgettext: no-c-format
+i18n("Thick Paper/Card Board");
+// xgettext: no-c-format
+i18n("This Job is spot colour page");
+// xgettext: no-c-format
+i18n("ThisNotSpotColourPage");
+// xgettext: no-c-format
+i18n("ThisSpotColourPage");
+// xgettext: no-c-format
+i18n("Three Color Composite");
+// xgettext: no-c-format
+i18n("Toner Density");
+// xgettext: no-c-format
+i18n("TonerSaving");
+// xgettext: no-c-format
+i18n("Top Margin");
+// xgettext: no-c-format
+i18n("Top Skip (in pixels)");
+// xgettext: no-c-format
+i18n("Transparency Paper");
+// xgettext: no-c-format
+i18n("Tray 10");
+// xgettext: no-c-format
+i18n("Tray 11");
+// xgettext: no-c-format
+i18n("Tray 12");
+// xgettext: no-c-format
+i18n("Tray 13");
+// xgettext: no-c-format
+i18n("Tray 14");
+// xgettext: no-c-format
+i18n("Tray 15");
+// xgettext: no-c-format
+i18n("Tray 8");
+// xgettext: no-c-format
+i18n("Tray 9");
+// xgettext: no-c-format
+i18n("Use multi-colour ribbon");
+// xgettext: no-c-format
+i18n("UseMultiColourRibbon");
+// xgettext: no-c-format
+i18n("UseStandardRibbons");
+// xgettext: no-c-format
+i18n("Vert. align. betw. cartr.");
+// xgettext: no-c-format
+i18n("Vert. Alignm. betw. Cartr.");
+// xgettext: no-c-format
+i18n("Vertical (Y-)Shift (in dots)");
+// xgettext: no-c-format
+i18n("X Offset");
+// xgettext: no-c-format
+i18n("Yellow Level");
+// xgettext: no-c-format
+i18n("Yellow Level (Colour cartr. only)");
+// xgettext: no-c-format
+i18n("Y Offset");
diff --git a/kdeprint/descriptions/readppd b/kdeprint/descriptions/readppd
new file mode 100755
index 000000000..2c7621a36
--- /dev/null
+++ b/kdeprint/descriptions/readppd
@@ -0,0 +1,83 @@
+#! /usr/bin/perl
+
+$inui = 0;
+$tag = "";
+$linenr = 0;
+
+$incomdata = 0;
+$aftername = 0;
+$aftercomment = 0;
+$commentvalue = "";
+
+while ( <STDIN> )
+{
+ $linenr = $linenr + 1;
+
+ # *LanguageVersion: Check for English
+ if (/^\*LanguageVersion:\s+([\w\-]+)\s*$/) {
+ last if ($1 ne "English");
+ }
+
+ # *OpenUI *InputSlot/Media Source: PickOne
+ if ($_ =~ "^*OpenUI") {
+ $inui = 1;
+ $_ =~ s/^\*OpenUI\s*//;
+ $tag = $_;
+ $tag =~ s%:.*$%%;
+ $tag =~ s%/.*%%;
+ chomp($tag);
+ $_ =~ s%\s*:.*$%%;
+ $_ =~ s%\s*\*%%;
+ $_ =~ s%^[^/]*/%%;
+ $_ =~ s%\"%\\\"%g;
+ chomp($_);
+ print "i18n(\"", $_, "\");\n";
+ next;
+ }
+
+ if ($_ =~ "^*CloseUI") {
+ $inui = 0;
+ $tag = "";
+ }
+
+ if ($inui) {
+ if (substr($_, 0, length($tag)) eq $tag) {
+ $_ =~ s%\s*:.*$%%;
+ $_ =~ s%\*\S*\s*%%;
+ $_ =~ s%^[^/]*/%%;
+ $_ =~ s%\"%\\\"%g;
+ chomp($_);
+ print "i18n(\"", $_, "\");\n";
+ }
+ }
+
+ # *% COMDATA #$VAR1 = {: Start looking for 'name','comment','type'
+ if (/^\*\% COMDATA \#\$VAR1/) {
+ $incomdata = 1;
+ }
+
+ # *% COMDATA # 'name': Continue looking for 'comment'
+ if ($incomdata && /^\*\% COMDATA \#\s*\'name\'/) {
+ $aftername = 1;
+ $aftercomment = 0;
+ }
+
+ # *% COMDATA # 'comment' => '*': Continue looking for 'type'
+ if ($aftername && /^\*\% COMDATA \#\s*\'comment\'\s*\=\>\s*\'(.*)\'/) {
+ $aftername = 0;
+ $aftercomment = 1;
+ $commentvalue = $1;
+ }
+
+ # *% COMDATA # 'type' => '*':
+ # Output comment if type is 'int', 'float' or 'string'
+ if ($aftercomment && /^\*\% COMDATA \#\s*\'type\'\s*\=\>\s*\'(.*)\'/) {
+ $aftername = 0;
+ $aftercomment = 0;
+ if ($1 eq "int" || $1 eq "float" || $1 eq "string") {
+ print "i18n(\"$commentvalue\");\n";
+ }
+ }
+
+
+}
diff --git a/kdeprint/descriptions/sortthem.cpp b/kdeprint/descriptions/sortthem.cpp
new file mode 100644
index 000000000..e9e49c058
--- /dev/null
+++ b/kdeprint/descriptions/sortthem.cpp
@@ -0,0 +1,28 @@
+
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+
+
+int main(int argc, char **argv) {
+QStringList have;
+char buf[1024];
+
+
+ while (!feof(stdin)) {
+ char *cline = fgets(buf, 1000, stdin);
+ if (!cline) break;
+ if (!have.contains(cline)) {
+ have << cline;
+ fprintf(stdout, "%s", cline);
+ }
+ }
+
+
+return 0;
+}
+
+
diff --git a/kdeprint/kdeprint_part/Makefile.am b/kdeprint/kdeprint_part/Makefile.am
new file mode 100644
index 000000000..9646fab6d
--- /dev/null
+++ b/kdeprint/kdeprint_part/Makefile.am
@@ -0,0 +1,24 @@
+AM_CPPFLAGS = -D_KDEPRINT_COMPILE
+
+kde_module_LTLIBRARIES = libkdeprint_part.la
+
+libkdeprint_part_la_SOURCES = printpart.cpp
+libkdeprint_part_la_LDFLAGS = $(all_libraries) -module -avoid-version -no-undefined
+libkdeprint_part_la_LIBADD = -lkdeprint_management $(LIB_KPARTS)
+
+noinst_HEADERS = printpart.h
+
+METASOURCES = AUTO
+INCLUDES = $(all_includes)
+
+# service
+myservice_DATA = kdeprint_part.desktop
+myservicedir = $(kde_servicesdir)
+
+# UI file
+myrcfile_DATA = kdeprint_part.rc
+myrcfiledir = $(kde_datadir)/kdeprint_part
+
+messages: rc.cpp
+ $(EXTRACTRC) kdeprint_part.rc >> rc.cpp
+ $(XGETTEXT) *.cpp -o $(podir)/kdeprint_part.pot
diff --git a/kdeprint/kdeprint_part/kdeprint_part.desktop b/kdeprint/kdeprint_part/kdeprint_part.desktop
new file mode 100644
index 000000000..b49f26d03
--- /dev/null
+++ b/kdeprint/kdeprint_part/kdeprint_part.desktop
@@ -0,0 +1,85 @@
+[Desktop Entry]
+Type=Service
+Name=Print Management Tool
+Name[af]=Drukker Bestuur Program
+Name[ar]=أداة ادارة الطباعة
+Name[az]=Çap Edici İdarə Vasitəsi
+Name[be]=Кіраўнік друку
+Name[bg]=Управление на печата
+Name[bn]=মুদ্রণ ম্যানেজমেন্ট টুল
+Name[br]=Ostilh mererezh moulañ
+Name[bs]=Alat za upravljanje štampom
+Name[ca]=Eina per a gestionar la impressió
+Name[cs]=Správce tiskáren
+Name[csb]=Sprôwianié wëdrëkama
+Name[cy]=Erfyn Rheoli Argraffu
+Name[da]=Udskriftshåndteringsværktøj
+Name[de]=Druckerverwaltung
+Name[el]=Εργαλείο διαχείρισης εκτυπώσεων
+Name[eo]=Printadministrilo
+Name[es]=Herramienta de gestión de la impresión
+Name[et]=Trükkimise seadistused
+Name[eu]=Inprimaketa kudeatzeko tresna
+Name[fa]=ابزار مدیریت چاپ
+Name[fi]=Tulostuksenhallinta
+Name[fr]=Gestionnaire d'impression
+Name[fy]=Helpprogramma foar printbehear
+Name[ga]=Uirlis Bhainisteoireacht Priontála
+Name[gl]=Ferramenta de Xestión da Impresión
+Name[he]=כלי ניהול הדפסה
+Name[hi]=प्रिंटर प्रबंधन औज़ार
+Name[hr]=Alat za upravljanje ispisom
+Name[hu]=Nyomtatáskezelő eszköz
+Name[is]=Prentunartól
+Name[it]=Strumento di gestione della stampa
+Name[ja]=印刷マネージメントツール
+Name[ka]=ბეჭდვის მართვა
+Name[kk]=Басып шығаруды басқару
+Name[km]=ឧបករណ៍​គ្រប់គ្រង​ការ​បោះពុម្ព
+Name[ko]=휴대폰 관리 도구
+Name[lo]=ເຄື່ອງມືຈັດການພິມ
+Name[lt]=Spausdinimo valdymo įrankis
+Name[lv]=Drukas Menedžmenta Rīks
+Name[mk]=Алатка за менаџмент на печатење
+Name[mn]=Хэвлэгч удирдах хэлбэр
+Name[ms]=Cetak Alat Pengurusan
+Name[mt]=Għodda għall-immaniġġjar tal-printing
+Name[nb]=Verktøy for utskriftsbehandling
+Name[nds]=Druckers un Opgaven plegen
+Name[ne]=मुद्रण व्यवस्थापन उपकरण
+Name[nl]=Hulpprogramma voor printerbeheer
+Name[nn]=Utskriftshandsaming
+Name[nso]=Sebereka sa Taolo ya Kgatiso
+Name[pa]=ਛਾਪਣ (ਪਰਿੰਟ) ਪਰਬੰਧਨ ਸੰਦ
+Name[pl]=Zarządzanie wydrukiem
+Name[pt]=Ferramenta de Gestão de Impressões
+Name[pt_BR]=Ferramenta para Gerenciamento de Impressão
+Name[ro]=Administrare tipărire
+Name[ru]=Управление печатью
+Name[rw]=Gucapa Igikoresho cy'Ubuyobozi
+Name[se]=Čálihangieđahalli
+Name[sk]=Nástroj na správu tlače
+Name[sl]=Orodje za upravljanje tiskanja
+Name[sr]=Алат за управљање штампом
+Name[sr@Latn]=Alat za upravljanje štampom
+Name[sv]=Verktyg för utskriftshantering
+Name[ta]=அச்சு மேலாண்மைக் கருவி
+Name[tg]=Тафсири мудирияти чоп
+Name[th]=เครื่องมือจัดการงานพิมพ์
+Name[tr]=Yazdırma Yönetim Aracı
+Name[tt]=Bastıru İdäneñ Qoralı
+Name[uk]=Засіб керування друком
+Name[uz]=Bosib chiqarishni boshqarish vositasi
+Name[uz@cyrillic]=Босиб чиқаришни бошқариш воситаси
+Name[ven]=Tshishumiswa tsha vhulanguli ha phirinthara
+Name[vi]=Công cụ Quản lý In ấn
+Name[wa]=Usteye po manaedjî l' imprimaedje
+Name[xh]=Isixhobo Sophatho soshicilelo
+Name[zh_CN]=打印管理工具
+Name[zh_TW]=列印管理工具
+Name[zu]=Ithuluzi Lokuphathwa Koshicilelo
+MimeType=print/manager
+ServiceTypes=Browser/View,KParts/ReadOnlyPart
+X-KDE-Library=libkdeprint_part
+Icon=printmgr
+InitialPreference=12
diff --git a/kdeprint/kdeprint_part/kdeprint_part.rc b/kdeprint/kdeprint_part/kdeprint_part.rc
new file mode 100644
index 000000000..bb1db8edf
--- /dev/null
+++ b/kdeprint/kdeprint_part/kdeprint_part.rc
@@ -0,0 +1,28 @@
+<!DOCTYPE kpartgui>
+<kpartgui name="kdeprint_part">
+<ToolBar name="Kdeprint-Toolbar" newline="false"><text>Print Manager Toolbar</text>
+ <Action name="printer_add" />
+ <Action name="printer_add_special" />
+ <Separator lineSeparator="true" />
+ <Action name="printer_state_change" />
+ <Action name="printer_spool_change" />
+ <Separator />
+ <Action name="printer_hard_default" />
+ <Action name="printer_soft_default" />
+ <Action name="printer_remove" />
+ <Separator />
+ <Action name="printer_configure" />
+ <Action name="printer_test" />
+ <Separator lineSeparator="true" />
+ <Action name="server_configure" />
+ <Action name="server_restart" />
+ <Separator lineSeparator="true" />
+ <Action name="manager_configure" />
+ <Action name="view_refresh" />
+ <Separator lineSeparator="true" />
+ <Action name="view_printerinfos" />
+ <Action name="view_change" />
+ <Action name="orientation_change" />
+ <Action name="view_pfilter" />
+</ToolBar>
+</kpartgui>
diff --git a/kdeprint/kdeprint_part/printpart.cpp b/kdeprint/kdeprint_part/printpart.cpp
new file mode 100644
index 000000000..535c0e7e0
--- /dev/null
+++ b/kdeprint/kdeprint_part/printpart.cpp
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ **/
+
+#include "printpart.h"
+
+#include <kdeprint/kmmainview.h>
+#include <kdeprint/kiconselectaction.h>
+#include <kaction.h>
+#include <klocale.h>
+#include <kinstance.h>
+#include <kiconloader.h>
+#include <kaboutdata.h>
+#include <kdebug.h>
+#include <kparts/genericfactory.h>
+#include <qwidget.h>
+
+typedef KParts::GenericFactory<PrintPart> PrintPartFactory;
+K_EXPORT_COMPONENT_FACTORY( libkdeprint_part, PrintPartFactory )
+
+PrintPart::PrintPart(QWidget *parentWidget, const char * /*widgetName*/ ,
+ QObject *parent, const char *name,
+ const QStringList & /*args*/ )
+: KParts::ReadOnlyPart(parent, name)
+{
+ setInstance(PrintPartFactory::instance());
+ instance()->iconLoader()->addAppDir("kdeprint");
+ m_extension = new PrintPartExtension(this);
+
+ m_view = new KMMainView(parentWidget, "MainView", actionCollection());
+ m_view->setFocusPolicy(QWidget::ClickFocus);
+ m_view->enableToolbar(false);
+ setWidget(m_view);
+
+ initActions();
+}
+
+PrintPart::~PrintPart()
+{
+}
+
+KAboutData *PrintPart::createAboutData()
+{
+ return new KAboutData(I18N_NOOP("kdeprint_part"), I18N_NOOP("A Konqueror Plugin for Print Management"), "0.1");
+}
+
+bool PrintPart::openFile()
+{
+ return true;
+}
+
+void PrintPart::initActions()
+{
+ setXMLFile("kdeprint_part.rc");
+}
+
+PrintPartExtension::PrintPartExtension(PrintPart *parent)
+: KParts::BrowserExtension(parent, "PrintPartExtension")
+{
+}
+
+PrintPartExtension::~PrintPartExtension()
+{
+}
+
+#include "printpart.moc"
diff --git a/kdeprint/kdeprint_part/printpart.h b/kdeprint/kdeprint_part/printpart.h
new file mode 100644
index 000000000..afba3c277
--- /dev/null
+++ b/kdeprint/kdeprint_part/printpart.h
@@ -0,0 +1,59 @@
+/*
+ * 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 PRINTPART_H
+#define PRINTPART_H
+
+#include <kparts/part.h>
+#include <kparts/browserextension.h>
+
+class PrintPartExtension;
+class KMMainView;
+class KAboutData;
+
+class PrintPart : public KParts::ReadOnlyPart
+{
+ Q_OBJECT
+public:
+ PrintPart(QWidget *parentWidget, const char *widgetName,
+ QObject *parent, const char *name,
+ const QStringList & );
+ virtual ~PrintPart();
+
+ static KAboutData *createAboutData();
+
+protected:
+ bool openFile();
+ void initActions();
+
+private:
+ PrintPartExtension *m_extension;
+ KMMainView *m_view;
+};
+
+class PrintPartExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class PrintPart;
+public:
+ PrintPartExtension(PrintPart *parent);
+ virtual ~PrintPartExtension();
+};
+
+#endif
diff --git a/kdeprint/kdeprintfax/Makefile.am b/kdeprint/kdeprintfax/Makefile.am
new file mode 100644
index 000000000..c2b072049
--- /dev/null
+++ b/kdeprint/kdeprintfax/Makefile.am
@@ -0,0 +1,23 @@
+INCLUDES= $(all_includes)
+
+bin_PROGRAMS = kdeprintfax
+kdeprintfax_SOURCES = main.cpp kdeprintfax.cpp faxab.cpp faxctrl.cpp confgeneral.cpp configdlg.cpp \
+ conffax.cpp confsystem.cpp conffilters.cpp filterdlg.cpp defcmds.cpp
+kdeprintfax_LDFLAGS = $(all_libraries) $(KDE_RPATH)
+kdeprintfax_LDADD = $(LIB_KDEUI) $(LIB_KIO) $(LIB_KDEPRINT) -lkabc
+kdeprintfax_METASOURCES = AUTO
+
+xdg_apps_DATA = kdeprintfax.desktop
+
+uidir = $(kde_datadir)/kdeprintfax
+ui_DATA = kdeprintfaxui.rc faxfilters
+
+private_SCRIPTS = anytops
+privatedir = $(kde_datadir)/kdeprintfax
+
+messages: rc.cpp
+ $(XGETTEXT) `find . -name \*.h -o -name \*.cpp -o -name \*.cc` -o $(podir)/kdeprintfax.pot
+
+KDE_ICON = kdeprintfax
+pic_ICON = abentry
+picdir = $(kde_datadir)/kdeprintfax/icons
diff --git a/kdeprint/kdeprintfax/anytops b/kdeprint/kdeprintfax/anytops
new file mode 100755
index 000000000..4e67b49e9
--- /dev/null
+++ b/kdeprint/kdeprintfax/anytops
@@ -0,0 +1,98 @@
+#!/bin/sh
+
+FAXFILTERS=./faxfilters
+MIMETYPE=
+PAGE="letter"
+
+usage() {
+ echo "Usage: anytops [-m <filters>] [--mime=<mime-type>] [-p <page>] [--help] <infile> <outfile>"
+ exit $1
+}
+
+while true; do
+ case "$1" in
+ --help)
+ usage 0
+ ;;
+ -m)
+ shift
+ FAXFILTERS="$1"
+ shift
+ ;;
+ --mime=*)
+ MIMETYPE=${1#--mime=}
+ shift
+ ;;
+ -p)
+ shift
+ PAGE="$1"
+ shift
+ ;;
+ -v)
+ echo "Anytops v1.0: (c) 2001, Michael Goffioul <kdeprint@swing.be>";
+ echo "Small script to convert any file type into PS. Part of kdeprintfax."
+ exit 0
+ ;;
+ *)
+ break;
+ ;;
+ esac
+done
+
+INFILE=$1
+OUTFILE=$2
+
+if [ -z "$INFILE" -o -z "$OUTFILE" -o ! -f "$INFILE" ]; then
+ usage 1;
+fi
+
+if [ -z "$MIMETYPE" ]; then
+ MAGIC=$KDEDIR
+ if [ -z "$MAGIC" ]; then
+ MAGIC=/usr
+ fi
+ MAGIC=$MAGIC/share/mimelnk/magic
+
+ if [ ! -f "$MAGIC" ]; then
+ echo "KDE magic file not found. Check your installation."
+ exit 1;
+ fi
+
+ MIMETYPE=`file -b -m $MAGIC "$INFILE" 2> /dev/null`
+ MIMETYPE=${MIMETYPE%%;*}
+fi
+
+echo "Mime type: $MIMETYPE"
+MIMETYPE_BASE=`echo $MIMETYPE | cut -f 1 -d "/"`
+MIMETYPE_TYPE=`echo $MIMETYPE | cut -f 2- -d "/"`
+
+get_command() {
+ while read mime command; do
+ mimebase=`echo $mime | cut -f 1 -d "/"`
+ mimefile=`echo $mime | cut -f 2- -d "/"`
+ if test "$mimebase" = "$MIMETYPE_BASE" || test "$mimebase" = "*"; then
+ if test "$mimefile" = "$MIMETYPE_TYPE" || test "$mimefile" = "*"; then
+ echo $command
+ break;
+ fi
+ fi
+# PATTERN=`echo $MIMETYPE | grep $mime`
+# if [ "$PATTERN" = "$MIMETYPE" ]; then
+# echo $command
+# break;
+# fi
+ done
+}
+
+COMMAND=`cat $FAXFILTERS | get_command`
+
+if [ -z "$COMMAND" ]; then
+ echo "$MIMETYPE: file type not handled"
+ exit 1;
+fi
+
+echo "Command: $COMMAND"
+
+PAGEUP="`echo $PAGE | cut -c 1 | tr [:lower:] [:upper:]``echo $PAGE | cut -c 2-`"
+EXECCOMMAND=`echo $COMMAND | sed -e "s,%in,\"$INFILE\"," -e "s,%out,\"$OUTFILE\"," -e "s,%psl,$PAGE," -e "s,%psu,$PAGEUP,"`
+eval "$EXECCOMMAND"
diff --git a/kdeprint/kdeprintfax/conffax.cpp b/kdeprint/kdeprintfax/conffax.cpp
new file mode 100644
index 000000000..c88184595
--- /dev/null
+++ b/kdeprint/kdeprintfax/conffax.cpp
@@ -0,0 +1,80 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "conffax.h"
+
+#include <qcombobox.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qprinter.h>
+
+#include <kglobal.h>
+#include <kconfig.h>
+#include <klocale.h>
+#include <kseparator.h>
+
+#include <stdlib.h>
+
+ConfFax::ConfFax(QWidget *parent, const char *name)
+: QWidget(parent, name)
+{
+ m_resolution = new QComboBox(this);
+ m_resolution->setMinimumHeight(25);
+ m_pagesize = new QComboBox(this);
+ m_pagesize->setMinimumHeight(25);
+ m_resolution->insertItem(i18n("High (204x196 dpi)"));
+ m_resolution->insertItem(i18n("Low (204x98 dpi)"));
+ m_pagesize->insertItem(i18n("A4"));
+ m_pagesize->insertItem(i18n("Letter"));
+ m_pagesize->insertItem(i18n("Legal"));
+ QLabel *m_resolutionlabel = new QLabel(i18n("&Resolution:"), this);
+ m_resolutionlabel->setBuddy(m_resolution);
+ QLabel *m_pagesizelabel = new QLabel(i18n("&Paper size:"), this);
+ m_pagesizelabel->setBuddy(m_pagesize);
+
+ QGridLayout *l0 = new QGridLayout(this, 3, 2, 10, 10);
+ l0->setColStretch(1, 1);
+ l0->setRowStretch(2, 1);
+ l0->addWidget(m_resolutionlabel, 0, 0);
+ l0->addWidget(m_pagesizelabel, 1, 0);
+ l0->addWidget(m_resolution, 0, 1);
+ l0->addWidget(m_pagesize, 1, 1);
+}
+
+void ConfFax::load()
+{
+ KConfig *conf = KGlobal::config();
+ conf->setGroup("Fax");
+ QString v = conf->readEntry("Page", KGlobal::locale()->pageSize() == QPrinter::A4 ? "a4" : "letter");
+ if (v == "letter") m_pagesize->setCurrentItem(1);
+ else if (v == "legal") m_pagesize->setCurrentItem(2);
+ else m_pagesize->setCurrentItem(0);
+ v = conf->readEntry("Resolution", "High");
+ m_resolution->setCurrentItem((v == "Low" ? 1 : 0));
+}
+
+void ConfFax::save()
+{
+ KConfig *conf = KGlobal::config();
+ conf->setGroup("Fax");
+ conf->writeEntry("Resolution", (m_resolution->currentItem() == 0 ? "High" : "Low"));
+ conf->writeEntry("Page", (m_pagesize->currentItem() == 0 ? "a4" : (m_pagesize->currentItem() == 1 ? "letter" : "legal")));
+}
diff --git a/kdeprint/kdeprintfax/conffax.h b/kdeprint/kdeprintfax/conffax.h
new file mode 100644
index 000000000..ffcd125ae
--- /dev/null
+++ b/kdeprint/kdeprintfax/conffax.h
@@ -0,0 +1,40 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef CONFFAX_H
+#define CONFFAX_H
+
+#include <qwidget.h>
+
+class QComboBox;
+
+class ConfFax : public QWidget
+{
+public:
+ ConfFax(QWidget *parent = 0, const char *name = 0);
+
+ void load();
+ void save();
+
+private:
+ QComboBox *m_resolution, *m_pagesize;
+};
+
+#endif
diff --git a/kdeprint/kdeprintfax/conffilters.cpp b/kdeprint/kdeprintfax/conffilters.cpp
new file mode 100644
index 000000000..ab828c582
--- /dev/null
+++ b/kdeprint/kdeprintfax/conffilters.cpp
@@ -0,0 +1,192 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "conffilters.h"
+#include "filterdlg.h"
+
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qfile.h>
+#include <qtextstream.h>
+#include <qregexp.h>
+#include <qheader.h>
+
+#include <klocale.h>
+#include <klistview.h>
+#include <kiconloader.h>
+#include <kstandarddirs.h>
+#include <kmessagebox.h>
+
+ConfFilters::ConfFilters(QWidget *parent, const char *name)
+: QWidget(parent, name)
+{
+ m_filters = new KListView(this);
+ m_filters->addColumn(i18n("Mime Type"));
+ m_filters->addColumn(i18n("Command"));
+ m_filters->setFrameStyle(QFrame::WinPanel|QFrame::Sunken);
+ m_filters->setLineWidth(1);
+ m_filters->setSorting(-1);
+ m_filters->header()->setStretchEnabled(true, 1);
+ connect(m_filters, SIGNAL(doubleClicked(QListViewItem*)), SLOT(slotChange()));
+
+ m_add = new QPushButton(this);
+ m_add->setPixmap(BarIcon("filenew"));
+ m_remove = new QPushButton(this);
+ m_remove->setIconSet(BarIconSet("remove"));
+ m_change = new QPushButton(this);
+ m_change->setIconSet(BarIconSet("filter"));
+ m_up = new QPushButton(this);
+ m_up->setIconSet(BarIconSet("up"));
+ m_down = new QPushButton(this);
+ m_down->setIconSet(BarIconSet("down"));
+ connect(m_add, SIGNAL(clicked()), SLOT(slotAdd()));
+ connect(m_change, SIGNAL(clicked()), SLOT(slotChange()));
+ connect(m_remove, SIGNAL(clicked()), SLOT(slotRemove()));
+ connect(m_up, SIGNAL(clicked()), SLOT(slotUp()));
+ connect(m_down, SIGNAL(clicked()), SLOT(slotDown()));
+ QToolTip::add(m_add, i18n("Add filter"));
+ QToolTip::add(m_change, i18n("Modify filter"));
+ QToolTip::add(m_remove, i18n("Remove filter"));
+ QToolTip::add(m_up, i18n("Move filter up"));
+ QToolTip::add(m_down, i18n("Move filter down"));
+
+ QHBoxLayout *l0 = new QHBoxLayout(this, 10, 10);
+ QVBoxLayout *l1 = new QVBoxLayout(0, 0, 0);
+ l0->addWidget(m_filters, 1);
+ l0->addLayout(l1, 0);
+ l1->addWidget(m_add);
+ l1->addWidget(m_change);
+ l1->addWidget(m_remove);
+ l1->addSpacing(10);
+ l1->addWidget(m_up);
+ l1->addWidget(m_down);
+ l1->addStretch(1);
+ updateButton();
+ connect(m_filters, SIGNAL(selectionChanged ()),SLOT(updateButton()));
+}
+
+void ConfFilters::load()
+{
+ QFile f(locate("data","kdeprintfax/faxfilters"));
+ if (f.exists() && f.open(IO_ReadOnly))
+ {
+ QTextStream t(&f);
+ QString line;
+ int p(-1);
+ QListViewItem *item(0);
+ while (!t.eof())
+ {
+ line = t.readLine().stripWhiteSpace();
+ if ((p=line.find(QRegExp("\\s"))) != -1)
+ {
+ QString mime(line.left(p)), cmd(line.right(line.length()-p-1).stripWhiteSpace());
+ if (!mime.isEmpty() && !cmd.isEmpty())
+ item = new QListViewItem(m_filters, item, mime, cmd);
+ }
+ }
+ }
+}
+
+void ConfFilters::save()
+{
+ QListViewItem *item = m_filters->firstChild();
+ QFile f(locateLocal("data","kdeprintfax/faxfilters"));
+ if (f.open(IO_WriteOnly))
+ {
+ QTextStream t(&f);
+ while (item)
+ {
+ t << item->text(0) << ' ' << item->text(1) << endl;
+ item = item->nextSibling();
+ }
+ }
+}
+
+void ConfFilters::slotAdd()
+{
+ QString mime, cmd;
+ if (FilterDlg::doIt(this, &mime, &cmd))
+ if (!mime.isEmpty() && !cmd.isEmpty())
+ {
+ new QListViewItem(m_filters, m_filters->currentItem(), mime, cmd);
+ updateButton();
+ }
+ else
+ KMessageBox::error(this, i18n("Empty parameters."));
+}
+
+void ConfFilters::slotRemove()
+{
+ QListViewItem *item = m_filters->currentItem();
+ if (item)
+ delete item;
+ updateButton();
+}
+
+void ConfFilters::slotChange()
+{
+ QListViewItem *item = m_filters->currentItem();
+ if (item)
+ {
+ QString mime(item->text(0)), cmd(item->text(1));
+ if (FilterDlg::doIt(this, &mime, &cmd))
+ {
+ item->setText(0, mime);
+ item->setText(1, cmd);
+ }
+ }
+}
+
+void ConfFilters::slotUp()
+{
+ QListViewItem *item = m_filters->currentItem();
+ if (item && item->itemAbove())
+ {
+ m_filters->moveItem(item, 0, item->itemAbove()->itemAbove());
+ m_filters->setCurrentItem(item);
+ updateButton();
+ }
+}
+
+void ConfFilters::slotDown()
+{
+ QListViewItem *item = m_filters->currentItem();
+ if (item && item->itemBelow())
+ {
+ m_filters->moveItem(item, 0, item->itemBelow());
+ m_filters->setCurrentItem(item);
+ updateButton();
+ }
+}
+
+void ConfFilters::updateButton()
+{
+ QListViewItem *item = m_filters->currentItem();
+
+ bool state=item && item->itemBelow();
+ m_remove->setEnabled(item);
+ m_down->setEnabled(state);
+ state=item && item->itemAbove();
+ m_up->setEnabled(state);
+ m_change->setEnabled(item);
+}
+
+#include "conffilters.moc"
diff --git a/kdeprint/kdeprintfax/conffilters.h b/kdeprint/kdeprintfax/conffilters.h
new file mode 100644
index 000000000..38f564b1f
--- /dev/null
+++ b/kdeprint/kdeprintfax/conffilters.h
@@ -0,0 +1,48 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef CONFFILTERS_H
+#define CONFFILTERS_H
+
+#include <qwidget.h>
+#include <qpushbutton.h>
+class KListView;
+
+class ConfFilters : public QWidget
+{
+ Q_OBJECT
+public:
+ ConfFilters(QWidget *parent = 0, const char *name = 0);
+
+ void load();
+ void save();
+protected slots:
+ void slotAdd();
+ void slotRemove();
+ void slotChange();
+ void slotUp();
+ void slotDown();
+ void updateButton();
+private:
+ KListView *m_filters;
+ QPushButton *m_add,*m_remove,*m_up,*m_down,*m_change;
+};
+
+#endif
diff --git a/kdeprint/kdeprintfax/confgeneral.cpp b/kdeprint/kdeprintfax/confgeneral.cpp
new file mode 100644
index 000000000..3f592e694
--- /dev/null
+++ b/kdeprint/kdeprintfax/confgeneral.cpp
@@ -0,0 +1,90 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "confgeneral.h"
+
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qcheckbox.h>
+
+#include <kglobal.h>
+#include <kconfig.h>
+#include <klocale.h>
+#include <kseparator.h>
+
+#include <stdlib.h>
+
+ConfGeneral::ConfGeneral(QWidget *parent, const char *name)
+: QWidget(parent, name)
+{
+ m_name = new QLineEdit(this);
+ m_company = new QLineEdit(this);
+ m_number = new QLineEdit(this);
+ QLabel *m_namelabel = new QLabel(i18n("&Name:"), this);
+ m_namelabel->setBuddy(m_name);
+ QLabel *m_companylabel = new QLabel(i18n("&Company:"), this);
+ m_companylabel->setBuddy(m_company);
+ QLabel *m_numberlabel = new QLabel(i18n("N&umber:"), this);
+ m_numberlabel->setBuddy(m_number);
+ KSeparator *sep = new KSeparator( this );
+ m_replace_int_char = new QCheckBox( i18n( "Replace international prefix '+' with:" ), this );
+ m_replace_int_char_val = new QLineEdit( this );
+ m_replace_int_char_val->setEnabled( false );
+
+ connect( m_replace_int_char, SIGNAL( toggled( bool ) ), m_replace_int_char_val, SLOT( setEnabled( bool ) ) );
+
+ QGridLayout *l0 = new QGridLayout(this, 6, 2, 10, 10);
+ l0->setColStretch(1, 1);
+ l0->setRowStretch(5, 1);
+ l0->addWidget(m_namelabel, 0, 0);
+ l0->addWidget(m_companylabel, 1, 0);
+ l0->addWidget(m_numberlabel, 2, 0);
+ l0->addWidget(m_name, 0, 1);
+ l0->addWidget(m_company, 1, 1);
+ l0->addWidget(m_number, 2, 1);
+ l0->addMultiCellWidget( sep, 3, 3, 0, 1 );
+ QHBoxLayout *l1 = new QHBoxLayout( this, 0, 10 );
+ l0->addMultiCellLayout( l1, 4, 4, 0, 1 );
+ l1->addWidget( m_replace_int_char );
+ l1->addWidget( m_replace_int_char_val );
+}
+
+void ConfGeneral::load()
+{
+ KConfig *conf = KGlobal::config();
+ conf->setGroup("Personal");
+ m_name->setText(conf->readEntry("Name", getenv("USER")));
+ m_number->setText(conf->readEntry("Number"));
+ m_company->setText(conf->readEntry("Company"));
+ m_replace_int_char->setChecked( conf->readBoolEntry( "ReplaceIntChar", false ) );
+ m_replace_int_char_val->setText( conf->readEntry( "ReplaceIntCharVal" ) );
+}
+
+void ConfGeneral::save()
+{
+ KConfig *conf = KGlobal::config();
+ conf->setGroup("Personal");
+ conf->writeEntry("Name", m_name->text());
+ conf->writeEntry("Number", m_number->text());
+ conf->writeEntry("Company", m_company->text());
+ conf->writeEntry( "ReplaceIntChar", m_replace_int_char->isChecked() );
+ conf->writeEntry( "ReplaceIntCharVal", m_replace_int_char_val->text() );
+}
diff --git a/kdeprint/kdeprintfax/confgeneral.h b/kdeprint/kdeprintfax/confgeneral.h
new file mode 100644
index 000000000..5f88106d8
--- /dev/null
+++ b/kdeprint/kdeprintfax/confgeneral.h
@@ -0,0 +1,43 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef CONFGENERAL_H
+#define CONFGENERAL_H
+
+#include <qwidget.h>
+
+class QLineEdit;
+class QCheckBox;
+
+class ConfGeneral : public QWidget
+{
+public:
+ ConfGeneral(QWidget *parent = 0, const char *name = 0);
+
+ void load();
+ void save();
+
+private:
+ QLineEdit *m_name, *m_company, *m_number;
+ QCheckBox *m_replace_int_char;
+ QLineEdit *m_replace_int_char_val;
+};
+
+#endif
diff --git a/kdeprint/kdeprintfax/configdlg.cpp b/kdeprint/kdeprintfax/configdlg.cpp
new file mode 100644
index 000000000..669d8c200
--- /dev/null
+++ b/kdeprint/kdeprintfax/configdlg.cpp
@@ -0,0 +1,75 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "configdlg.h"
+#include "confgeneral.h"
+#include "conffax.h"
+#include "confsystem.h"
+#include "conffilters.h"
+
+#include <qvbox.h>
+#include <klocale.h>
+#include <kiconloader.h>
+
+ConfigDlg::ConfigDlg(QWidget *parent, const char *name)
+: KDialogBase(IconList, i18n("Configuration"), Ok|Cancel, Ok, parent, name, true)
+{
+ QVBox *page1 = addVBoxPage(i18n("Personal"), i18n("Personal Settings"), DesktopIcon("kdmconfig"));
+ m_general = new ConfGeneral(page1, "Personal");
+
+ QVBox *page2 = addVBoxPage(i18n("Page setup"), i18n("Page Setup"), DesktopIcon("editcopy"));
+ m_fax = new ConfFax(page2, "Fax");
+
+ QVBox *page3 = addVBoxPage(i18n("System"), i18n("Fax System Selection"), DesktopIcon("kdeprintfax"));
+ m_system = new ConfSystem(page3, "System");
+
+ QVBox *page4 = addVBoxPage(i18n("Filters"), i18n("Filters Configuration"), DesktopIcon("filter"));
+ m_filters = new ConfFilters(page4, "Filters");
+
+ resize(450, 300);
+}
+
+void ConfigDlg::load()
+{
+ m_general->load();
+ m_fax->load();
+ m_system->load();
+ m_filters->load();
+}
+
+void ConfigDlg::save()
+{
+ m_general->save();
+ m_fax->save();
+ m_system->save();
+ m_filters->save();
+}
+
+bool ConfigDlg::configure(QWidget *parent)
+{
+ ConfigDlg dlg(parent);
+ dlg.load();
+ if (dlg.exec())
+ {
+ dlg.save();
+ return true;
+ }
+ return false;
+}
diff --git a/kdeprint/kdeprintfax/configdlg.h b/kdeprint/kdeprintfax/configdlg.h
new file mode 100644
index 000000000..f4bba762d
--- /dev/null
+++ b/kdeprint/kdeprintfax/configdlg.h
@@ -0,0 +1,48 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef CONFIGDLG_H
+#define CONFIGDLG_H
+
+#include <kdialogbase.h>
+
+class ConfGeneral;
+class ConfFax;
+class ConfSystem;
+class ConfFilters;
+
+class ConfigDlg : public KDialogBase
+{
+public:
+ static bool configure(QWidget *parent = 0);
+
+protected:
+ ConfigDlg(QWidget *parent = 0, const char *name = 0);
+ void load();
+ void save();
+
+private:
+ ConfGeneral *m_general;
+ ConfFax *m_fax;
+ ConfSystem *m_system;
+ ConfFilters *m_filters;
+};
+
+#endif
diff --git a/kdeprint/kdeprintfax/confsystem.cpp b/kdeprint/kdeprintfax/confsystem.cpp
new file mode 100644
index 000000000..02ee7e66d
--- /dev/null
+++ b/kdeprint/kdeprintfax/confsystem.cpp
@@ -0,0 +1,199 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "confsystem.h"
+#include "defcmds.h"
+
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qcombobox.h>
+
+#include <kglobal.h>
+#include <kconfig.h>
+#include <klocale.h>
+#include <kseparator.h>
+
+#include <stdlib.h>
+
+#define EFAX_ID 0
+#define HYLAFAX_ID 1
+#define MGETTY_ID 2
+#define OTHER_ID 3
+
+ConfSystem::ConfSystem(QWidget *parent, const char *name)
+: QWidget(parent, name)
+{
+ m_system = new QComboBox(this);
+ m_system->insertItem("EFax");
+ m_system->insertItem("HylaFax");
+ m_system->insertItem("Mgetty-sendfax");
+ m_system->insertItem( "Other" );
+ m_command = new QLineEdit(this);
+ QLabel *syslabel = new QLabel(i18n("F&ax system:"), this);
+ QLabel *cmdlabel = new QLabel(i18n("Co&mmand:"), this);
+ syslabel->setBuddy(m_system);
+ cmdlabel->setBuddy(m_command);
+ connect(m_system, SIGNAL(activated(int)), SLOT(slotSystemChanged(int)));
+ m_current = 0;
+ m_system->setCurrentItem(m_current);
+
+ QWidget *m_dummy1 = new QWidget(this), *m_dummy2 = new QWidget(this);
+ m_server = new QLineEdit(m_dummy1);
+ m_device = new QComboBox(m_dummy2);
+ QLabel *srvlabel = new QLabel(i18n("Fax &server (if any):"), m_dummy1);
+ QLabel *devlabel = new QLabel(i18n("&Fax/Modem device:"), m_dummy2);
+ srvlabel->setBuddy(m_server);
+ devlabel->setBuddy(m_device);
+ m_device->insertItem(i18n("Standard Modem Port"));
+ for (int i=0; i<10; i++)
+ m_device->insertItem(i18n("Serial Port #%1").arg(i));
+ m_device->insertItem( i18n( "Other" ) );
+ connect( m_device, SIGNAL( activated( int ) ), SLOT( slotDeviceChanged( int ) ) );
+ m_device_edit = new QLineEdit( m_dummy2 );
+ slotDeviceChanged( 0 );
+
+ KSeparator *sep = new KSeparator(this);
+ sep->setMinimumHeight(10);
+
+ QVBoxLayout *l0 = new QVBoxLayout(this, 10, 10);
+ QGridLayout *l1 = new QGridLayout(0, 2, 2, 0, 10);
+ l0->addLayout(l1);
+ l1->setColStretch(1, 1);
+ l1->addWidget(syslabel, 0, 0);
+ l1->addWidget(cmdlabel, 1, 0);
+ l1->addWidget(m_system, 0, 1);
+ l1->addWidget(m_command, 1, 1);
+ l0->addWidget(sep);
+ l0->addWidget(m_dummy1);
+ l0->addWidget(m_dummy2);
+ l0->addStretch(1);
+ QHBoxLayout *l4 = new QHBoxLayout(m_dummy1, 0, 10);
+ l4->addWidget(srvlabel, 0);
+ l4->addWidget(m_server, 1);
+ QGridLayout *l5 = new QGridLayout( m_dummy2, 2, 2, 0, 10 );
+ l5->setColStretch( 1, 1 );
+ l5->addWidget(devlabel, 0, 0);
+ l5->addWidget(m_device, 0, 1);
+ l5->addWidget( m_device_edit, 1, 1 );
+}
+
+void ConfSystem::load()
+{
+ KConfig *conf = KGlobal::config();
+ conf->setGroup("System");
+ m_commands << conf->readPathEntry("EFax", defaultCommand(efax_default_cmd));
+ m_commands << conf->readPathEntry("HylaFax", defaultCommand(hylafax_default_cmd));
+ m_commands << conf->readPathEntry("Mgetty", defaultCommand(mgetty_default_cmd));
+ m_commands << conf->readPathEntry( "Other", QString::null );
+ QString v = conf->readEntry("System", "efax");
+ if (v == "mgetty") m_current = MGETTY_ID;
+ else if (v == "hylafax") m_current = HYLAFAX_ID;
+ else if ( v == "other" ) m_current = OTHER_ID;
+ else m_current = EFAX_ID;
+ conf->setGroup("Fax");
+ m_server->setText(conf->readEntry("Server", getenv("FAXSERVER")));
+ v = conf->readEntry("Device", "modem");
+ if (v.startsWith("ttyS"))
+ m_device->setCurrentItem(v.right(v.length()-4).toInt()+1);
+ else if ( v == "modem" )
+ m_device->setCurrentItem(0);
+ else
+ {
+ m_device->setCurrentItem( m_device->count()-1 );
+ m_device_edit->setText( "/dev/" + v );
+ slotDeviceChanged( m_device->count()-1 );
+ }
+
+ m_system->setCurrentItem(m_current);
+ m_command->setText(m_commands[m_current]);
+ slotSystemChanged(m_current);
+}
+
+void ConfSystem::save()
+{
+ m_commands[ m_current ] = m_command->text();
+ KConfig *conf = KGlobal::config();
+ conf->setGroup("System");
+ if (m_commands[EFAX_ID] != defaultCommand(efax_default_cmd))
+ conf->writePathEntry("EFax", m_commands[EFAX_ID]);
+ else
+ conf->deleteEntry("EFax");
+ if (m_commands[HYLAFAX_ID] != defaultCommand(hylafax_default_cmd))
+ conf->writePathEntry("HylaFax", m_commands[HYLAFAX_ID]);
+ else
+ conf->deleteEntry("HylaFax");
+ if (m_commands[MGETTY_ID] != defaultCommand(mgetty_default_cmd))
+ conf->writePathEntry("Mgetty", m_commands[MGETTY_ID]);
+ else
+ conf->deleteEntry("Mgetty");
+ if ( !m_commands[ OTHER_ID ].isEmpty() )
+ conf->writeEntry( "Other", m_commands[ OTHER_ID ] );
+ else
+ conf->deleteEntry( "Other" );
+ int ID = m_system->currentItem();
+ switch (ID)
+ {
+ case EFAX_ID: conf->writeEntry("System", "efax"); break;
+ case HYLAFAX_ID: conf->writeEntry("System", "hylafax"); break;
+ case MGETTY_ID: conf->writeEntry("System", "mgetty"); break;
+ case OTHER_ID: conf->writeEntry( "System", "other" ); break;
+ }
+ conf->setGroup("Fax");
+ if ( m_device->currentItem() != ( m_device->count()-1 ) )
+ conf->writeEntry("Device", m_device->currentItem() == 0 ? QString("modem") : QString("ttyS%1").arg(m_device->currentItem()-1));
+ else
+ {
+ QString dev = m_device_edit->text();
+ // strip leading "/dev/"
+ if ( dev.startsWith( "/dev/" ) )
+ dev = dev.mid( 5 );
+ conf->writeEntry( "Device", dev );
+ }
+ if (m_server->text().isEmpty())
+ conf->deleteEntry("Server");
+ else
+ conf->writeEntry("Server", m_server->text());
+}
+
+void ConfSystem::slotSystemChanged(int ID)
+{
+ m_commands[m_current] = m_command->text();
+ m_current = ID;
+ if (ID == EFAX_ID)
+ m_device->parentWidget()->show();
+ else
+ m_device->parentWidget()->hide();
+ if (ID == HYLAFAX_ID)
+ m_server->parentWidget()->show();
+ else
+ m_server->parentWidget()->hide();
+ m_command->setText(m_commands[m_current]);
+}
+
+void ConfSystem::slotDeviceChanged( int ID )
+{
+ if ( ID != ( m_device->count()-1 ) )
+ m_device_edit->hide();
+ else
+ m_device_edit->show();
+}
+
+#include "confsystem.moc"
diff --git a/kdeprint/kdeprintfax/confsystem.h b/kdeprint/kdeprintfax/confsystem.h
new file mode 100644
index 000000000..202e5f7a0
--- /dev/null
+++ b/kdeprint/kdeprintfax/confsystem.h
@@ -0,0 +1,50 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef CONFSYSTEM_H
+#define CONFSYSTEM_H
+
+#include <qwidget.h>
+#include <qstringlist.h>
+
+class QLineEdit;
+class QComboBox;
+
+class ConfSystem : public QWidget
+{
+ Q_OBJECT
+public:
+ ConfSystem(QWidget *parent = 0, const char *name = 0);
+
+ void load();
+ void save();
+
+protected slots:
+ void slotSystemChanged(int);
+ void slotDeviceChanged(int);
+
+private:
+ QComboBox *m_system, *m_device;
+ QLineEdit *m_command, *m_server, *m_device_edit;
+ QStringList m_commands;
+ int m_current;
+};
+
+#endif
diff --git a/kdeprint/kdeprintfax/cr16-action-abentry.png b/kdeprint/kdeprintfax/cr16-action-abentry.png
new file mode 100644
index 000000000..b6b1011f3
--- /dev/null
+++ b/kdeprint/kdeprintfax/cr16-action-abentry.png
Binary files differ
diff --git a/kdeprint/kdeprintfax/defcmds.cpp b/kdeprint/kdeprintfax/defcmds.cpp
new file mode 100644
index 000000000..b9fc8beee
--- /dev/null
+++ b/kdeprint/kdeprintfax/defcmds.cpp
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ **/
+
+#include "defcmds.h"
+
+#include <qregexp.h>
+#include <kstandarddirs.h>
+
+QString defaultCommand(const QString& cmd)
+{
+ QString str(cmd);
+ QRegExp r("%exe_(\\w+)");
+ int p(-1);
+ if ((p=r.search(str)) != -1)
+ {
+ QString exe = KStandardDirs::findExe(r.cap(1));
+ if (exe.isEmpty())
+ exe = "/usr/bin/"+r.cap(1);
+ str.replace(p, r.matchedLength(), exe);
+ }
+ return str;
+}
diff --git a/kdeprint/kdeprintfax/defcmds.h b/kdeprint/kdeprintfax/defcmds.h
new file mode 100644
index 000000000..6502250d3
--- /dev/null
+++ b/kdeprint/kdeprintfax/defcmds.h
@@ -0,0 +1,32 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef DEFCMDS_H
+#define DEFCMDS_H
+
+#include <qstring.h>
+
+#define efax_default_cmd "%exe_fax %user_{NAME=\"@@\"} %dev_{DEV=@@} PAGE=%page %from_{FROM=@@} %res_{?\?-l} send %number %files"
+#define hylafax_default_cmd "%exe_sendfax %cover_{?\?-n} %server_h %res_{-m?\?-l} %subject_r %time_a %enterprise_x %comment_c %email_f %from_W %page_s -d %name_{@@@}%number %files"
+#define mgetty_default_cmd "%exe_faxspool %user_F %email_f %name_D %time_t %number %files %res_{?\?-n} %cover_{?\?-C -}"
+
+QString defaultCommand(const QString& cmd);
+
+#endif
diff --git a/kdeprint/kdeprintfax/faxab.cpp b/kdeprint/kdeprintfax/faxab.cpp
new file mode 100644
index 000000000..28ba4e5c8
--- /dev/null
+++ b/kdeprint/kdeprintfax/faxab.cpp
@@ -0,0 +1,212 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "faxab.h"
+
+#include <qlabel.h>
+#include <qlayout.h>
+#include <kpushbutton.h>
+#include <klistview.h>
+#include <qheader.h>
+#include <klocale.h>
+#include <kabc/stdaddressbook.h>
+#include <kmessagebox.h>
+#include <kiconloader.h>
+#include <krun.h>
+#include <kstdguiitem.h>
+#include <kglobal.h>
+#include <kconfig.h>
+
+FaxAB::FaxAB(QWidget *parent, const char *name)
+: KDialog(parent, name, true)
+{
+ m_list = new KListView( this );
+ m_list->addColumn( i18n( "Name" ) );
+ m_list->addColumn( i18n( "Fax Number" ) );
+ m_list->header()->setStretchEnabled( true, 0 );
+ QLabel *m_listlabel = new QLabel(i18n("Entries:"), this);
+ m_ok = new KPushButton(KStdGuiItem::ok(), this);
+ QPushButton *m_cancel = new KPushButton(KStdGuiItem::cancel(), this);
+ QPushButton *m_ab = new KPushButton(KGuiItem(i18n("&Edit Addressbook"), "contents"), this);
+ connect(m_ok, SIGNAL(clicked()), SLOT(accept()));
+ connect(m_cancel, SIGNAL(clicked()), SLOT(reject()));
+ connect(m_ab, SIGNAL(clicked()), SLOT(slotEditAb()));
+ m_ok->setDefault(true);
+
+ QVBoxLayout *l0 = new QVBoxLayout(this, 10, 10);
+ l0->addWidget( m_listlabel );
+ l0->addWidget( m_list );
+ QHBoxLayout *l2 = new QHBoxLayout(0, 0, 10);
+ l0->addLayout(l2, 0);
+ l2->addWidget(m_ab, 0);
+ l2->addStretch(1);
+ l2->addWidget(m_ok, 0);
+ l2->addWidget(m_cancel, 0);
+
+ KConfig *conf = KGlobal::config();
+ conf->setGroup( "General" );
+ QSize defsize( 400, 200 );
+ resize( conf->readSizeEntry( "ABSize", &defsize ) );
+
+ initialize();
+ connect(KABC::StdAddressBook::self(), SIGNAL(addressBookChanged(AddressBook*)), SLOT(slotAbChanged(AddressBook*)));
+}
+
+FaxAB::~FaxAB()
+{
+ KConfig *conf = KGlobal::config();
+ conf->setGroup( "General" );
+ conf->writeEntry( "ABSize", size() );
+}
+
+void FaxAB::initialize()
+{
+ m_entries.clear();
+ m_list->clear();
+
+ KABC::AddressBook *bk = KABC::StdAddressBook::self();
+ for (KABC::AddressBook::Iterator it=bk->begin(); it!=bk->end(); ++it)
+ {
+ KABC::PhoneNumber::List numbers = (*it).phoneNumbers();
+ KABC::PhoneNumber::List faxNumbers;
+ for (QValueList<KABC::PhoneNumber>::Iterator nit=numbers.begin(); nit!=numbers.end(); ++nit)
+ {
+ if (((*nit).type() & KABC::PhoneNumber::Fax) && !(*nit).number().isEmpty())
+ faxNumbers << ( *nit );
+ }
+ if (faxNumbers.count() > 0)
+ {
+ for ( KABC::PhoneNumber::List::ConstIterator nit = faxNumbers.begin(); nit != faxNumbers.end(); ++nit )
+ {
+ FaxABEntry entry;
+ entry.m_number = ( *nit );
+ entry.m_enterprise = ( *it ).organization();
+ if ( !( *it ).formattedName().isEmpty() )
+ entry.m_name = ( *it ).formattedName();
+ else
+ {
+ QString key = ( *it ).familyName();
+ if ( !( *it ).givenName().isEmpty() )
+ {
+ if ( !key.isEmpty() )
+ key.append( " " );
+ key.append( ( *it ).givenName() );
+ }
+ entry.m_name = key;
+ }
+ entry.m_name += ( " (" + ( *nit ).typeLabel() + ")" );
+ m_entries[ entry.m_name ] = entry;
+ }
+ }
+ }
+
+ if (m_entries.count() > 0)
+ {
+ for (QMap<QString,FaxABEntry>::ConstIterator it=m_entries.begin(); it!=m_entries.end(); ++it)
+ {
+ QCheckListItem *item = new QCheckListItem( m_list, it.key(), QCheckListItem::CheckBox );
+ item->setText( 1, ( *it ).m_number.number() );
+ item->setText( 2, ( *it ).m_enterprise );
+ }
+ m_list->sort();
+ m_ok->setEnabled(true);
+ }
+ else
+ m_ok->setDisabled(true);
+}
+
+void FaxAB::slotEditAb()
+{
+ KRun::runCommand("kaddressbook");
+}
+
+void FaxAB::slotAbChanged(AddressBook*)
+{
+ initialize();
+}
+
+bool FaxAB::getEntry(QStringList& number, QStringList& name, QStringList& enterprise, QWidget *parent)
+{
+ FaxAB kab(parent);
+ if (!kab.isValid())
+ {
+ KMessageBox::error(parent, i18n("No fax number found in your address book."));
+ return false;
+ }
+ if (kab.exec())
+ {
+ QListViewItemIterator it( kab.m_list, QListViewItemIterator::Checked );
+ while ( it.current() )
+ {
+ number << it.current()->text( 1 );
+ name << it.current()->text( 0 );
+ enterprise << it.current()->text( 2 );
+ ++it;
+ }
+ /*
+ number = kab.m_fax->currentText();
+ name = kab.m_name->currentText();
+ if (kab.m_entries.contains(name))
+ {
+ enterprise = kab.m_entries[name][0];
+ }
+ */
+ return true;
+ }
+
+ return false;
+}
+
+bool FaxAB::getEntryByNumber(const QString& number, QString& name, QString& enterprise)
+{
+ KABC::AddressBook *bk = KABC::StdAddressBook::self();
+ for (KABC::AddressBook::Iterator it=bk->begin(); it!=bk->end(); ++it)
+ {
+ KABC::PhoneNumber::List numbers = (*it).phoneNumbers();
+ QStringList filteredNumbers;
+ for (QValueList<KABC::PhoneNumber>::Iterator nit=numbers.begin(); nit!=numbers.end(); ++nit)
+ {
+ if (((*nit).type() & KABC::PhoneNumber::Fax) )
+ {
+ QString strippedNumber;
+ for (uint i = 0; i < (*nit).number().length(); ++i)
+ if ((*nit).number()[i].isDigit() || ( *nit ).number()[ i ] == '+')
+ strippedNumber.append((*nit).number()[i]);
+
+ if ( strippedNumber == number)
+ {
+ enterprise = (*it).organization();
+ name = (*it).formattedName();
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+}
+
+bool FaxAB::isValid()
+{
+ return true;
+ //return (m_name->count() > 0);
+}
+
+#include "faxab.moc"
diff --git a/kdeprint/kdeprintfax/faxab.h b/kdeprint/kdeprintfax/faxab.h
new file mode 100644
index 000000000..c72662055
--- /dev/null
+++ b/kdeprint/kdeprintfax/faxab.h
@@ -0,0 +1,64 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef FAXAB_H
+#define FAXAB_H
+
+#include <kdialog.h>
+#include <qmap.h>
+#include <qstringlist.h>
+#include <kabc/phonenumber.h>
+
+class KListView;
+class AddressBook;
+class QPushButton;
+
+class FaxAB : public KDialog
+{
+ Q_OBJECT
+public:
+ FaxAB(QWidget *parent = 0, const char *name = 0);
+ ~FaxAB();
+ bool isValid();
+
+ static bool getEntry(QStringList& number, QStringList& name, QStringList& enterprise, QWidget *parent = 0);
+ static bool getEntryByNumber(const QString& number, QString& name, QString& enterprise);
+
+protected slots:
+ void slotEditAb();
+ void slotAbChanged(AddressBook*);
+
+protected:
+ void initialize();
+
+private:
+ struct FaxABEntry
+ {
+ QString m_name;
+ KABC::PhoneNumber m_number;
+ QString m_enterprise;
+ };
+
+ KListView* m_list;
+ QMap<QString,FaxABEntry> m_entries;
+ QPushButton* m_ok;
+};
+
+#endif
diff --git a/kdeprint/kdeprintfax/faxctrl.cpp b/kdeprint/kdeprintfax/faxctrl.cpp
new file mode 100644
index 000000000..4cb5f3bc7
--- /dev/null
+++ b/kdeprint/kdeprintfax/faxctrl.cpp
@@ -0,0 +1,669 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "faxctrl.h"
+#include "kdeprintfax.h"
+#include "defcmds.h"
+
+#include <ktextedit.h>
+#include <qfile.h>
+#include <qtextstream.h>
+#include <kpushbutton.h>
+#include <qlayout.h>
+#include <qregexp.h>
+#include <kprinter.h>
+#include <qsimplerichtext.h>
+#include <qpainter.h>
+#include <qpaintdevicemetrics.h>
+#include <qvaluestack.h>
+#include <qstylesheet.h>
+
+#include <kprocess.h>
+#include <kglobal.h>
+#include <kconfig.h>
+#include <klocale.h>
+#include <kdialogbase.h>
+#include <kmimetype.h>
+#include <kstandarddirs.h>
+#include <kapplication.h>
+#include <kwin.h>
+#include <kemailsettings.h>
+#include <kdebug.h>
+#include <kstdguiitem.h>
+#include <kfiledialog.h>
+#include <kmessagebox.h>
+
+#include <stdlib.h>
+#include <stdarg.h>
+
+#define quote(x) KProcess::quote(x)
+
+/** \brief Return a string for the page size.
+ *
+ * @param size the page size, which is actually of type @c QPrinter::PageSize
+ * @return a pointer to a static string for the name of the page size.
+ */
+char const* pageSizeText(int size)
+{
+ switch(size)
+ {
+ case QPrinter::A4: return "a4";
+ case QPrinter::Legal: return "legal";
+ case QPrinter::Letter: return "letter";
+ default: return "letter";
+ }
+}
+
+/** \brief Return the default page size.
+ */
+static QString pageSize()
+{
+ KConfig *conf = KGlobal::config();
+ conf->setGroup("Fax");
+ return conf->readEntry("Page", pageSizeText(KGlobal::locale()->pageSize()));
+}
+
+static QString stripNumber( const QString& s )
+{
+ KConfig *conf = KGlobal::config();
+ conf->setGroup( "Personal" );
+
+ // removes any non-numeric character, except ('+','*','#') (hope it's supported by faxing tools)
+ QString strip_s = s;
+ strip_s.replace( QRegExp( "[^\\d+*#]" ), "" );
+ if ( strip_s.find( '+' ) != -1 && conf->readBoolEntry( "ReplaceIntChar", false ) )
+ strip_s.replace( "+", conf->readEntry( "ReplaceIntCharVal" ) );
+ return strip_s;
+}
+
+static QString tagList( int n, ... )
+{
+ QString t;
+
+ va_list ap;
+ va_start( ap, n );
+ for ( int i=0; i<n; i++ )
+ {
+ QString tag = va_arg( ap, const char* );
+ tag.append( "(_(\\w|\\{[^\\}]*\\}))?" );
+ if ( t.isEmpty() )
+ t = tag;
+ else
+ t.append( "|" ).append( tag );
+ }
+
+ return t;
+}
+
+/** Process a @c %variable that has a boolean value.
+ * The format is <tt>%name_{iftrue??iffalse}</tt>. Either
+ * @em iftrue or @em iffalse can be empty (or both, but that would
+ * be silly). For example, if the fax software uses the
+ * option @c -l for low resolution, you might use <tt>%res_{??-l}</tt>,
+ * and if it uses high resolution, use <tt>%res_{-h??}</tt>. As an
+ * abbreviation, omit the trailing <tt>?</tt>, e.g., <tt>%res_{-h}</tt>.
+ *
+ * By the way, when using multiple, adjacent question marks,
+ * always be careful about inadvertently using trigraphs.
+ * Always escape the second and subsequent question marks, to be safe.
+ * I suppose question marks are not the best string to use,
+ * but I think they work well for the end-user.
+ *
+ * @param match the string to process
+ * @param value the Boolean value to control the processing
+ * @return the new value of the tag
+ */
+static QString processTag( const QString& match, bool value)
+{
+ QString v;
+ int p = match.find( '_' );
+ if ( p != -1 && match[ p+1 ] == '{' )
+ {
+ // Find the ?? that separates the iftrue from the iffalse parts.
+ int q = match.find( "?\?", p+2 );
+ if ( q == -1 )
+ {
+ // No iffalse part
+ if (value)
+ v = match.mid( p+2 );
+ // else value is false, so leave v empty.
+ }
+ else if ( value )
+ // Extract only the iftrue part
+ v = match.mid( p+2, q-p-2 );
+ else
+ // Extract only the iffalse part
+ v = match.mid( q+2, match.length()-q-3 );
+ }
+ // Else the string is malformed: no _ or no { after the _
+ // In either case, there isn't much the program can do,
+ // so just leave the result string empty.
+
+ return v;
+}
+
+static QString processTag( const QString& match, const QString& value )
+{
+ QString v;
+ int p = match.find( '_' );
+ if ( p != -1 )
+ {
+ if ( value.isEmpty() )
+ v = "";
+ else
+ {
+ if ( match[ p+1 ] == '{' )
+ {
+ v = match.mid( p+2, match.length()-p-3 );
+ v.replace( "@@", quote( value ) );
+ }
+ else
+ v = ( "-" + match.mid( p+1 ) + " " + quote( value ) );
+ }
+ }
+ else
+ v = quote( value );
+ return v;
+}
+
+static bool isTag( const QString& m, const QString& t )
+{
+ return ( m == t || m.startsWith( t+"_" ) );
+}
+
+static QString replaceTags( const QString& s, const QString& tags, KdeprintFax *fax = NULL, const KdeprintFax::FaxItem& item = KdeprintFax::FaxItem() )
+{
+ // unquote variables (they will be replaced with quoted values later)
+
+ QValueStack<bool> stack;
+ KConfig *conf = KGlobal::config();
+
+ QString cmd = s;
+
+ bool issinglequote=false;
+ bool isdoublequote=false;
+ QRegExp re_noquote("(\\$\\(|\\)|\\(|\"|'|\\\\|`|"+tags+")");
+ QRegExp re_singlequote("('|"+tags+")");
+ QRegExp re_doublequote("(\\$\\(|\"|\\\\|`|"+tags+")");
+ for ( int i = re_noquote.search(cmd);
+ i != -1;
+ i = (issinglequote?re_singlequote.search(cmd,i)
+ :isdoublequote?re_doublequote.search(cmd,i)
+ :re_noquote.search(cmd,i))
+ )
+ {
+ if (cmd[i]=='(') // (...)
+ {
+ // assert(isdoublequote == false)
+ stack.push(isdoublequote);
+ i++;
+ }
+ else if (cmd[i]=='$') // $(...)
+ {
+ stack.push(isdoublequote);
+ isdoublequote = false;
+ i+=2;
+ }
+ else if (cmd[i]==')') // $(...) or (...)
+ {
+ if (!stack.isEmpty())
+ isdoublequote = stack.pop();
+ else
+ qWarning("Parse error.");
+ i++;
+ }
+ else if (cmd[i]=='\'')
+ {
+ issinglequote=!issinglequote;
+ i++;
+ }
+ else if (cmd[i]=='"')
+ {
+ isdoublequote=!isdoublequote;
+ i++;
+ }
+ else if (cmd[i]=='\\')
+ i+=2;
+ else if (cmd[i]=='`')
+ {
+ // Replace all `...` with safer $(...)
+ cmd.replace (i, 1, "$(");
+ QRegExp re_backticks("(`|\\\\`|\\\\\\\\|\\\\\\$)");
+ for ( int i2=re_backticks.search(cmd,i+2);
+ i2!=-1;
+ i2=re_backticks.search(cmd,i2)
+ )
+ {
+ if (cmd[i2] == '`')
+ {
+ cmd.replace (i2, 1, ")");
+ i2=cmd.length(); // leave loop
+ }
+ else
+ { // remove backslash and ignore following character
+ cmd.remove (i2, 1);
+ i2++;
+ }
+ }
+ // Leave i unchanged! We need to process "$("
+ }
+ else
+ {
+ QString match, v;
+
+ // get match
+ if (issinglequote)
+ match=re_singlequote.cap();
+ else if (isdoublequote)
+ match=re_doublequote.cap();
+ else
+ match=re_noquote.cap();
+
+ // substitute %variables
+ // settings
+ if ( isTag( match, "%dev" ) )
+ {
+ conf->setGroup("Fax");
+ v = processTag( match, conf->readEntry("Device", "modem") );
+
+ }
+ else if (isTag( match, "%server" ))
+ {
+ conf->setGroup( "Fax" );
+ v = conf->readEntry("Server");
+ if (v.isEmpty())
+ v = getenv("FAXSERVER");
+ if (v.isEmpty())
+ v = QString::fromLatin1("localhost");
+ v = processTag( match, v );
+ }
+ else if (isTag( match, "%page" ))
+ {
+ conf->setGroup( "Fax" );
+ v = processTag( match, pageSize() );
+ }
+ else if (isTag( match, "%res" ))
+ {
+ conf->setGroup( "Fax" );
+ v = processTag(match, conf->readEntry("Resolution", "High") == "High");
+ }
+ else if (isTag( match, "%user" ))
+ {
+ conf->setGroup("Personal");
+ v = processTag(match, conf->readEntry("Name", getenv("USER")));
+ }
+ else if (isTag( match, "%from" ))
+ {
+ conf->setGroup( "Personal" );
+ v = processTag(match, conf->readEntry("Number"));
+ }
+ else if (isTag( match, "%email" ))
+ {
+ KEMailSettings e;
+ v = processTag(match, e.getSetting(KEMailSettings::EmailAddress));
+ }
+ // arguments
+ else if (isTag( match, "%number" ))
+ v = processTag( match, stripNumber( item.number) );
+ else if (isTag( match, "%rawnumber" ))
+ v = processTag( match, item.number );
+ else if (isTag( match, "%name" ))
+ v = processTag(match, item.name);
+ else if (isTag( match, "%comment" ))
+ v = processTag(match, fax->comment());
+ else if (isTag( match, "%enterprise" ))
+ v = processTag(match, item.enterprise);
+ else if ( isTag( match, "%time" ) )
+ v = processTag( match, fax->time() );
+ else if ( isTag( match, "%subject" ) )
+ v = processTag( match, fax->subject() );
+ else if (isTag( match, "%cover" ))
+ v = processTag(match, fax->cover());
+
+ // %variable inside of a quote?
+ if (isdoublequote)
+ v='"'+v+'"';
+ else if (issinglequote)
+ v="'"+v+"'";
+
+ cmd.replace (i, match.length(), v);
+ i+=v.length();
+ }
+ }
+
+ return cmd;
+}
+
+FaxCtrl::FaxCtrl(QWidget *parent, const char *name)
+: QObject(parent, name)
+{
+ m_process = new KProcess();
+ m_process->setUseShell(true);
+ connect(m_process, SIGNAL(receivedStdout(KProcess*,char*,int)), SLOT(slotReceivedStdout(KProcess*,char*,int)));
+ connect(m_process, SIGNAL(receivedStderr(KProcess*,char*,int)), SLOT(slotReceivedStdout(KProcess*,char*,int)));
+ connect(m_process, SIGNAL(processExited(KProcess*)), SLOT(slotProcessExited(KProcess*)));
+ connect(this, SIGNAL(faxSent(bool)), SLOT(cleanTempFiles()));
+ m_logview = 0;
+}
+
+FaxCtrl::~FaxCtrl()
+{
+ slotCloseLog();
+ delete m_process;
+}
+
+bool FaxCtrl::send(KdeprintFax *f)
+{
+ m_command = faxCommand();
+ if (m_command.isEmpty())
+ return false;
+
+ // replace tags common to all fax "operations"
+ m_command = replaceTags( m_command, tagList( 11, "%dev", "%server", "%page", "%res", "%user", "%from", "%email", "%comment", "%time", "%subject", "%cover" ), f );
+
+ m_log = QString::null;
+ m_filteredfiles.clear();
+ cleanTempFiles();
+ m_files = f->files();
+ m_faxlist = f->faxList();
+
+ addLogTitle( i18n( "Converting input files to PostScript" ) );
+ filter();
+
+ return true;
+}
+
+void FaxCtrl::slotReceivedStdout(KProcess*, char *buffer, int len)
+{
+ QCString str(buffer, len);
+ kdDebug() << "Received stdout: " << str << endl;
+ addLog(QString(str));
+}
+
+void FaxCtrl::slotProcessExited(KProcess*)
+{
+ // we exited a process: if there's still entries in m_files, this was a filter
+ // process, else this was the fax process
+ bool ok = (m_process->normalExit() && ((m_process->exitStatus() & (m_files.count() > 0 ? 0x1 : 0xFFFFFFFF)) == 0));
+ if ( ok )
+ {
+ if ( m_files.count() > 0 )
+ {
+ // remove first element
+ m_files.remove(m_files.begin());
+ if (m_files.count() > 0)
+ filter();
+ else
+ sendFax();
+ }
+ else if ( !m_faxlist.isEmpty() )
+ sendFax();
+ else
+ faxSent( true );
+ }
+ else
+ {
+ emit faxSent(false);
+ }
+}
+
+QString FaxCtrl::faxCommand()
+{
+ KConfig *conf = KGlobal::config();
+ conf->setGroup("System");
+ QString sys = conf->readPathEntry("System", "efax");
+ QString cmd;
+ if (sys == "hylafax")
+ cmd = conf->readPathEntry("HylaFax", hylafax_default_cmd);
+ else if (sys == "mgetty")
+ cmd = conf->readPathEntry("Mgetty", mgetty_default_cmd);
+ else if ( sys == "other" )
+ cmd = conf->readPathEntry( "Other", QString::null );
+ else
+ cmd = conf->readPathEntry("EFax", efax_default_cmd);
+ if (cmd.startsWith("%exe_"))
+ cmd = defaultCommand(cmd);
+ return cmd;
+}
+
+void FaxCtrl::sendFax()
+{
+ if ( m_command.find( "%files" ) != -1 )
+ {
+ // replace %files tag
+ QString filestr;
+ for (QStringList::ConstIterator it=m_filteredfiles.begin(); it!=m_filteredfiles.end(); ++it)
+ filestr += (quote(*it)+" ");
+ m_command.replace("%files", filestr);
+ }
+
+ if ( !m_faxlist.isEmpty() )
+ {
+ KdeprintFax::FaxItem item = m_faxlist.first();
+ m_faxlist.remove(m_faxlist.begin());
+
+ addLogTitle( i18n( "Sending fax to %1 (%2)" ).arg( item.number ).arg( item.name ) );
+
+ QString cmd = replaceTags( m_command, tagList( 4, "%number", "%name", "%enterprise", "%rawnumber" ), NULL, item );
+ m_process->clearArguments();
+ *m_process << cmd;
+ addLog(i18n("Sending to fax using: %1").arg(cmd));
+ if (!m_process->start(KProcess::NotifyOnExit, KProcess::AllOutput))
+ emit faxSent(false);
+ else
+ emit message(i18n("Sending fax to %1...").arg( item.number ));
+ }
+}
+
+void FaxCtrl::filter()
+{
+ if (m_files.count() > 0)
+ {
+ QString mimeType = KMimeType::findByURL(KURL(m_files[0]), 0, true)->name();
+ if (mimeType == "application/postscript" || mimeType == "image/tiff")
+ {
+ emit message(i18n("Skipping %1...").arg(m_files[0]));
+ m_filteredfiles.prepend(m_files[0]);
+ m_files.remove(m_files.begin());
+ filter();
+ }
+ else
+ {
+ QString tmp = locateLocal("tmp","kdeprintfax_") + kapp->randomString(8);
+ m_filteredfiles.prepend(tmp);
+ m_tempfiles.append(tmp);
+ m_process->clearArguments();
+ *m_process << locate("data","kdeprintfax/anytops") << "-m" << KProcess::quote(locate("data","kdeprintfax/faxfilters"))
+ << QString::fromLatin1("--mime=%1").arg(mimeType)
+ << "-p" << pageSize()
+ << KProcess::quote(m_files[0]) << KProcess::quote(tmp);
+ if (!m_process->start(KProcess::NotifyOnExit, KProcess::AllOutput))
+ emit faxSent(false);
+ else
+ emit message(i18n("Filtering %1...").arg(m_files[0]));
+ }
+ }
+ else
+ {
+ sendFax();
+ }
+}
+
+bool FaxCtrl::abort()
+{
+ if (m_process->isRunning())
+ return m_process->kill();
+ else
+ return false;
+}
+
+void FaxCtrl::viewLog(QWidget *)
+{
+ if (!m_logview)
+ {
+ QWidget *topView = new QWidget(0, "LogView", WType_TopLevel|WStyle_DialogBorder|WDestructiveClose);
+ m_logview = new KTextEdit(topView);
+ m_logview->setTextFormat( Qt::LogText );
+ m_logview->setWordWrap( QTextEdit::WidgetWidth );
+ m_logview->setPaper( Qt::white );
+ //m_logview->setReadOnly(true);
+ //m_logview->setWordWrap(QTextEdit::NoWrap);
+ QPushButton *m_clear = new KPushButton(KStdGuiItem::clear(), topView);
+ QPushButton *m_close = new KPushButton(KStdGuiItem::close(), topView);
+ QPushButton *m_print = new KPushButton( KStdGuiItem::print(), topView );
+ QPushButton *m_save = new KPushButton( KStdGuiItem::saveAs(), topView );
+ m_close->setDefault(true);
+ connect(m_clear, SIGNAL(clicked()), SLOT(slotClearLog()));
+ connect(m_close, SIGNAL(clicked()), SLOT(slotCloseLog()));
+ connect(m_logview, SIGNAL(destroyed()), SLOT(slotCloseLog()));
+ connect( m_print, SIGNAL( clicked() ), SLOT( slotPrintLog() ) );
+ connect( m_save, SIGNAL( clicked() ), SLOT( slotSaveLog() ) );
+
+ QVBoxLayout *l0 = new QVBoxLayout(topView, 10, 10);
+ l0->addWidget(m_logview);
+ QHBoxLayout *l1 = new QHBoxLayout(0, 0, 10);
+ l0->addLayout(l1);
+ l1->addStretch(1);
+ l1->addWidget( m_save );
+ l1->addWidget( m_print );
+ l1->addWidget(m_clear);
+ l1->addWidget(m_close);
+
+ m_logview->setText(m_log);
+
+ topView->resize(450, 350);
+ topView->show();
+ }
+ else
+ {
+ KWin::activateWindow(m_logview->parentWidget()->winId());
+ }
+}
+
+void FaxCtrl::addLogTitle( const QString& s )
+{
+ QString t( s );
+ t.prepend( '\n' ).append( '\n' );
+ addLog( t, true );
+}
+
+void FaxCtrl::addLog(const QString& s, bool isTitle)
+{
+ QString t = QStyleSheet::escape(s);
+ if ( isTitle )
+ t.prepend( "<font color=red><b>" ).append( "</b></font>" );
+ m_log.append( t + '\n' );
+ if (m_logview)
+ m_logview->append(t);
+}
+
+QString FaxCtrl::faxSystem()
+{
+ KConfig *conf = KGlobal::config();
+ conf->setGroup("System");
+ QString s = conf->readEntry("System", "efax");
+ s[0] = s[0].upper();
+ return s;
+}
+
+void FaxCtrl::cleanTempFiles()
+{
+ for (QStringList::ConstIterator it=m_tempfiles.begin(); it!=m_tempfiles.end(); ++it)
+ QFile::remove(*it);
+ m_tempfiles.clear();
+}
+
+void FaxCtrl::slotClearLog()
+{
+ m_log = QString::null;
+ if (m_logview)
+ m_logview->clear();
+}
+
+void FaxCtrl::slotCloseLog()
+{
+ const QObject *obj = sender();
+ if (m_logview)
+ {
+ QTextEdit *view = m_logview;
+ m_logview = 0;
+ if (obj && obj->inherits("QPushButton"))
+ delete view->parentWidget();
+kdDebug() << "slotClose()" << endl;
+ }
+}
+
+void FaxCtrl::slotPrintLog()
+{
+ if ( m_logview )
+ {
+ KPrinter printer;
+ printer.setDocName( i18n( "Fax log" ) );
+ printer.setDocFileName( "faxlog" );
+ if ( printer.setup( m_logview->topLevelWidget(), i18n( "Fax Log" ) ) )
+ {
+ QPainter painter( &printer );
+ QPaintDeviceMetrics metric( &printer );
+ QRect body( 0, 0, metric.width(), metric.height() ), view( body );
+ //QString txt = m_logview->text();
+ QString txt = m_log;
+
+ txt.replace( '\n', "<br>" );
+ txt.prepend( "<h2>" + i18n( "KDEPrint Fax Tool Log" ) + "</h2>" );
+
+ kdDebug() << "Log: " << txt << endl;
+ QSimpleRichText richText( txt, m_logview->font() );
+
+ richText.setWidth( &painter, body.width() );
+ do
+ {
+ richText.draw( &painter, body.left(), body.top(), view, m_logview->colorGroup() );
+ view.moveBy( 0, body.height() );
+ painter.translate( 0, -body.height() );
+ if ( view.top() >= richText.height() )
+ break;
+ printer.newPage();
+ } while ( true );
+ }
+ }
+}
+
+void FaxCtrl::slotSaveLog()
+{
+ if ( m_logview )
+ {
+ QString filename = KFileDialog::getSaveFileName( QString::null, QString::null, m_logview );
+ if ( !filename.isEmpty() )
+ {
+ QFile f( filename );
+ if ( f.open( IO_WriteOnly ) )
+ {
+ QTextStream t( &f );
+ t << i18n( "KDEPrint Fax Tool Log" ) << endl;
+ t << m_logview->text() << endl;
+ f.close();
+ }
+ else
+ KMessageBox::error( m_logview, i18n( "Cannot open file for writing." ) );
+ }
+ }
+}
+
+#include "faxctrl.moc"
diff --git a/kdeprint/kdeprintfax/faxctrl.h b/kdeprint/kdeprintfax/faxctrl.h
new file mode 100644
index 000000000..d3d8086a9
--- /dev/null
+++ b/kdeprint/kdeprintfax/faxctrl.h
@@ -0,0 +1,73 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef FAXCTRL_H
+#define FAXCTRL_H
+
+#include <qobject.h>
+#include <qstring.h>
+#include <qstringlist.h>
+
+#include "kdeprintfax.h"
+
+class KProcess;
+class QTextEdit;
+
+class FaxCtrl : public QObject
+{
+ Q_OBJECT
+public:
+ FaxCtrl(QWidget *parent = 0, const char *name = 0);
+ ~FaxCtrl();
+
+ bool send(KdeprintFax *f);
+ bool abort();
+ void viewLog(QWidget *parent = 0);
+ QString faxSystem();
+ QString faxCommand();
+
+signals:
+ void message(const QString&);
+ void faxSent(bool);
+
+protected slots:
+ void slotReceivedStdout(KProcess*, char*, int);
+ void slotProcessExited(KProcess*);
+ void cleanTempFiles();
+ void slotClearLog();
+ void slotCloseLog();
+ void slotPrintLog();
+ void slotSaveLog();
+
+protected:
+ void filter();
+ void sendFax();
+ void addLog(const QString&, bool = false);
+ void addLogTitle( const QString& );
+
+private:
+ KProcess *m_process;
+ QString m_log, m_command;
+ QStringList m_files, m_filteredfiles, m_tempfiles;
+ QTextEdit *m_logview;
+ KdeprintFax::FaxItemList m_faxlist;
+};
+
+#endif
diff --git a/kdeprint/kdeprintfax/faxfilters b/kdeprint/kdeprintfax/faxfilters
new file mode 100644
index 000000000..73e96a14e
--- /dev/null
+++ b/kdeprint/kdeprintfax/faxfilters
@@ -0,0 +1,3 @@
+text/* enscript -M %psu -E -p %out %in
+image/* imagetops -gray -noturn %in > %out
+*/* cat %in > %out
diff --git a/kdeprint/kdeprintfax/filterdlg.cpp b/kdeprint/kdeprintfax/filterdlg.cpp
new file mode 100644
index 000000000..563c37a7d
--- /dev/null
+++ b/kdeprint/kdeprintfax/filterdlg.cpp
@@ -0,0 +1,72 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "filterdlg.h"
+#include "filterdlg.moc"
+
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qlayout.h>
+
+#include <klocale.h>
+
+FilterDlg::FilterDlg(QWidget *parent, const char *name)
+: KDialogBase(parent, name, true, i18n("Filter Parameters"), Ok|Cancel, Ok)
+{
+ QWidget *w = new QWidget(this);
+
+ m_mime = new QLineEdit(w);
+ m_cmd = new QLineEdit(w);
+ QLabel *m_mimelabel = new QLabel(i18n("MIME type:"), w);
+ QLabel *m_cmdlabel = new QLabel(i18n("Command:"), w);
+
+ QGridLayout *l0 = new QGridLayout(w, 2, 2, 10, 5);
+ l0->setColStretch(1, 1);
+ l0->addWidget(m_mimelabel, 0, 0);
+ l0->addWidget(m_cmdlabel, 1, 0);
+ l0->addWidget(m_mime, 0, 1);
+ l0->addWidget(m_cmd, 1, 1);
+
+ setMainWidget(w);
+ m_mime->setFocus();
+ resize(300, 100);
+ connect(m_mime, SIGNAL(textChanged ( const QString & )),this, SLOT(slotTextFilterChanged()));
+ connect(m_cmd, SIGNAL(textChanged ( const QString & )),this, SLOT(slotTextFilterChanged()));
+ slotTextFilterChanged();
+}
+
+void FilterDlg::slotTextFilterChanged( )
+{
+ enableButtonOK(!m_mime->text().isEmpty() && !m_cmd->text().isEmpty());
+}
+
+bool FilterDlg::doIt(QWidget *parent, QString *mime, QString *cmd)
+{
+ FilterDlg dlg(parent);
+ if (mime) dlg.m_mime->setText(*mime);
+ if (cmd) dlg.m_cmd->setText(*cmd);
+ if (dlg.exec())
+ {
+ if (mime) *mime = dlg.m_mime->text();
+ if (cmd) *cmd = dlg.m_cmd->text();
+ return true;
+ }
+ return false;
+}
diff --git a/kdeprint/kdeprintfax/filterdlg.h b/kdeprint/kdeprintfax/filterdlg.h
new file mode 100644
index 000000000..f1010a2c6
--- /dev/null
+++ b/kdeprint/kdeprintfax/filterdlg.h
@@ -0,0 +1,41 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef FILTERDLG_H
+#define FILTERDLG_H
+
+#include <kdialogbase.h>
+
+class QLineEdit;
+
+class FilterDlg : public KDialogBase
+{
+ Q_OBJECT
+public:
+ FilterDlg(QWidget *parent = 0, const char *name = 0);
+
+ static bool doIt(QWidget *parent = 0, QString* mime = 0, QString *cmd = 0);
+protected slots:
+ void slotTextFilterChanged();
+private:
+ QLineEdit *m_mime, *m_cmd;
+};
+
+#endif
diff --git a/kdeprint/kdeprintfax/hi128-app-kdeprintfax.png b/kdeprint/kdeprintfax/hi128-app-kdeprintfax.png
new file mode 100644
index 000000000..ad29adba7
--- /dev/null
+++ b/kdeprint/kdeprintfax/hi128-app-kdeprintfax.png
Binary files differ
diff --git a/kdeprint/kdeprintfax/hi16-app-kdeprintfax.png b/kdeprint/kdeprintfax/hi16-app-kdeprintfax.png
new file mode 100644
index 000000000..bb676f8b7
--- /dev/null
+++ b/kdeprint/kdeprintfax/hi16-app-kdeprintfax.png
Binary files differ
diff --git a/kdeprint/kdeprintfax/hi22-app-kdeprintfax.png b/kdeprint/kdeprintfax/hi22-app-kdeprintfax.png
new file mode 100644
index 000000000..90fc64b0b
--- /dev/null
+++ b/kdeprint/kdeprintfax/hi22-app-kdeprintfax.png
Binary files differ
diff --git a/kdeprint/kdeprintfax/hi32-app-kdeprintfax.png b/kdeprint/kdeprintfax/hi32-app-kdeprintfax.png
new file mode 100644
index 000000000..7330eb41f
--- /dev/null
+++ b/kdeprint/kdeprintfax/hi32-app-kdeprintfax.png
Binary files differ
diff --git a/kdeprint/kdeprintfax/hi48-app-kdeprintfax.png b/kdeprint/kdeprintfax/hi48-app-kdeprintfax.png
new file mode 100644
index 000000000..3f58c3695
--- /dev/null
+++ b/kdeprint/kdeprintfax/hi48-app-kdeprintfax.png
Binary files differ
diff --git a/kdeprint/kdeprintfax/hi64-app-kdeprintfax.png b/kdeprint/kdeprintfax/hi64-app-kdeprintfax.png
new file mode 100644
index 000000000..47e156d5f
--- /dev/null
+++ b/kdeprint/kdeprintfax/hi64-app-kdeprintfax.png
Binary files differ
diff --git a/kdeprint/kdeprintfax/hisc-app-kdeprintfax.svgz b/kdeprint/kdeprintfax/hisc-app-kdeprintfax.svgz
new file mode 100644
index 000000000..f46fd4401
--- /dev/null
+++ b/kdeprint/kdeprintfax/hisc-app-kdeprintfax.svgz
Binary files differ
diff --git a/kdeprint/kdeprintfax/kdeprintfax.cpp b/kdeprint/kdeprintfax/kdeprintfax.cpp
new file mode 100644
index 000000000..e10416bef
--- /dev/null
+++ b/kdeprint/kdeprintfax/kdeprintfax.cpp
@@ -0,0 +1,607 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "kdeprintfax.h"
+#include "faxab.h"
+#include "faxctrl.h"
+#include "configdlg.h"
+
+#include <qcheckbox.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qtextedit.h>
+#include <qdatetimeedit.h>
+#include <qcombobox.h>
+#include <qtooltip.h>
+
+#include <kapplication.h>
+#include <kstdaction.h>
+#include <kmenubar.h>
+#include <ktoolbar.h>
+#include <kaction.h>
+#include <klistbox.h>
+#include <klistview.h>
+#include <qheader.h>
+#include <klocale.h>
+#include <kiconloader.h>
+#include <kio/netaccess.h>
+#include <kmessagebox.h>
+#include <kfiledialog.h>
+#include <kmimetype.h>
+#include <kseparator.h>
+#include <ksystemtray.h>
+#include <kstatusbar.h>
+#include <ksqueezedtextlabel.h>
+#include <krun.h>
+#include <kopenwith.h>
+#include <kpushbutton.h>
+#include <kurldrag.h>
+#include <kdebug.h>
+
+KdeprintFax::KdeprintFax(QWidget *parent, const char *name)
+: KMainWindow(parent, name)
+{
+ m_faxctrl = new FaxCtrl(this);
+ m_quitAfterSend = false;
+ connect(m_faxctrl, SIGNAL(message(const QString&)), SLOT(slotMessage(const QString&)));
+ connect(m_faxctrl, SIGNAL(faxSent(bool)), SLOT(slotFaxSent(bool)));
+
+ QWidget *mainw = new QWidget(this);
+ setCentralWidget(mainw);
+ m_files = new KListBox(mainw);
+ connect( m_files, SIGNAL( currentChanged( QListBoxItem* ) ), SLOT( slotCurrentChanged() ) );
+ m_upbtn = new KPushButton( mainw );
+ m_upbtn->setIconSet( SmallIconSet( "up" ) );
+ QToolTip::add( m_upbtn, i18n( "Move up" ) );
+ connect( m_upbtn, SIGNAL( clicked() ), SLOT( slotMoveUp() ) );
+ m_upbtn->setEnabled( false );
+ m_downbtn = new KPushButton( mainw );
+ m_downbtn->setIconSet( SmallIconSet( "down" ) );
+ QToolTip::add( m_downbtn, i18n( "Move down" ) );
+ connect( m_downbtn, SIGNAL( clicked() ), SLOT( slotMoveDown() ) );
+ m_downbtn->setEnabled( false );
+ QLabel *m_filelabel = new QLabel(i18n("F&iles:"), mainw);
+ m_filelabel->setBuddy(m_files);
+ KSeparator*m_line = new KSeparator( KSeparator::HLine, mainw);
+ KSeparator *m_line2 = new KSeparator( KSeparator::HLine, mainw );
+ m_numbers = new KListView( mainw );
+ m_numbers->addColumn( i18n("Fax Number") );
+ m_numbers->addColumn( i18n("Name") );
+ m_numbers->addColumn( i18n("Enterprise") );
+ m_numbers->header()->setStretchEnabled( true );
+ m_numbers->setSelectionMode( QListView::Extended );
+ connect( m_numbers, SIGNAL( selectionChanged() ), SLOT( slotFaxSelectionChanged() ) );
+ connect( m_numbers, SIGNAL( executed( QListViewItem* ) ), SLOT( slotFaxExecuted( QListViewItem* ) ) );
+ m_newbtn = new KPushButton( mainw );
+ m_newbtn->setPixmap( SmallIcon( "edit" ) );
+ QToolTip::add( m_newbtn, i18n( "Add fax number" ) );
+ connect( m_newbtn, SIGNAL( clicked() ), SLOT( slotFaxAdd() ) );
+ m_abbtn = new KPushButton( mainw );
+ m_abbtn->setPixmap( SmallIcon( "kaddressbook" ) );
+ QToolTip::add( m_abbtn, i18n( "Add fax number from addressbook" ) );
+ connect( m_abbtn, SIGNAL( clicked() ), SLOT( slotKab() ) );
+ m_delbtn = new KPushButton( mainw );
+ m_delbtn->setIconSet( SmallIconSet( "edittrash" ) );
+ QToolTip::add( m_delbtn, i18n( "Remove fax number" ) );
+ m_delbtn->setEnabled( false );
+ connect( m_delbtn, SIGNAL( clicked() ), SLOT( slotFaxRemove() ) );
+ QLabel *m_commentlabel = new QLabel(i18n("&Comment:"), mainw);
+ KSystemTray *m_tray = new KSystemTray(this);
+ m_tray->setPixmap(SmallIcon("kdeprintfax"));
+ m_tray->show();
+ m_comment = new QTextEdit(mainw);
+// I don't understand why anyone would want to turn off word wrap. It makes
+// the text hard to read and write. It provides no benefit. Therefore,
+// I commented out the next line. [Ray Lischner]
+// m_comment->setWordWrap(QTextEdit::NoWrap);
+ m_comment->setLineWidth(1);
+ m_commentlabel->setBuddy(m_comment);
+ QLabel *m_timelabel = new QLabel(i18n("Sched&ule:"), mainw);
+ m_timecombo = new QComboBox(mainw);
+ m_timecombo->insertItem(i18n("Now"));
+ m_timecombo->insertItem(i18n("At Specified Time"));
+ m_timecombo->setCurrentItem(0);
+ m_timelabel->setBuddy(m_timecombo);
+ m_time = new QTimeEdit(mainw);
+ m_time->setTime(QTime::currentTime());
+ m_time->setEnabled(false);
+ connect(m_timecombo, SIGNAL(activated(int)), SLOT(slotTimeComboActivated(int)));
+ m_cover = new QCheckBox(i18n("Send Co&ver Sheet"), mainw);
+ connect(m_cover, SIGNAL(toggled(bool)), SLOT(slotCoverToggled(bool)));
+ m_subject = new QLineEdit( mainw );
+ QLabel *m_subjectlabel = new QLabel( i18n( "Su&bject:" ), mainw );
+ m_subjectlabel->setBuddy( m_subject );
+
+ QGridLayout *l0 = new QGridLayout(mainw, 10, 2, 10, 5);
+ l0->setColStretch(1,1);
+ l0->addWidget(m_filelabel, 0, 0, Qt::AlignLeft|Qt::AlignTop);
+ QHBoxLayout *l2 = new QHBoxLayout( 0, 0, 10 );
+ QVBoxLayout *l3 = new QVBoxLayout( 0, 0, 5 );
+ l0->addLayout( l2, 0, 1 );
+ l2->addWidget( m_files );
+ l2->addLayout( l3 );
+ //l3->addStretch( 1 );
+ l3->addWidget( m_upbtn );
+ l3->addWidget( m_downbtn );
+ l3->addStretch( 1 );
+ l0->addMultiCellWidget(m_line, 1, 1, 0, 1);
+ l0->addRowSpacing(1, 10);
+ QHBoxLayout *l5 = new QHBoxLayout( 0, 0, 10 );
+ QVBoxLayout *l6 = new QVBoxLayout( 0, 0, 5 );
+ l0->addMultiCellLayout( l5, 2, 4, 0, 1 );
+ l5->addWidget( m_numbers );
+ l5->addLayout( l6 );
+ l6->addWidget( m_newbtn );
+ l6->addWidget( m_delbtn );
+ l6->addWidget( m_abbtn );
+ l6->addStretch( 1 );
+ l0->addMultiCellWidget( m_line2, 5, 5, 0, 1 );
+ l0->addRowSpacing( 5, 10 );
+ l0->addWidget( m_cover, 6, 1 );
+ l0->addWidget( m_subjectlabel, 7, 0 );
+ l0->addWidget( m_subject, 7, 1 );
+ l0->addWidget(m_commentlabel, 8, 0, Qt::AlignTop|Qt::AlignLeft);
+ l0->addWidget(m_comment, 8, 1);
+ l0->addWidget(m_timelabel, 9, 0);
+ QHBoxLayout *l1 = new QHBoxLayout(0, 0, 5);
+ l0->addLayout(l1, 9, 1);
+ l1->addWidget(m_timecombo, 1);
+ l1->addWidget(m_time, 0);
+
+ m_msglabel = new KSqueezedTextLabel(statusBar());
+ statusBar()->addWidget(m_msglabel, 1);
+ statusBar()->insertFixedItem(i18n("Processing..."), 1);
+ statusBar()->changeItem(i18n("Idle"), 1);
+ statusBar()->insertFixedItem("hylafax/efax", 2);
+ initActions();
+ setAcceptDrops(true);
+ setCaption(i18n("Send to Fax"));
+ updateState();
+
+ resize(550,500);
+ QWidget *d = kapp->desktop();
+ move((d->width()-width())/2, (d->height()-height())/2);
+}
+
+KdeprintFax::~KdeprintFax()
+{
+}
+
+void KdeprintFax::initActions()
+{
+ new KAction(i18n("&Add File..."), "filenew", Qt::Key_Insert, this, SLOT(slotAdd()), actionCollection(), "file_add");
+ new KAction(i18n("&Remove File"), "remove", Qt::Key_Delete, this, SLOT(slotRemove()), actionCollection(), "file_remove");
+ new KAction(i18n("&Send Fax"), "connect_established", Qt::Key_Return, this, SLOT(slotFax()), actionCollection(), "fax_send");
+ new KAction(i18n("A&bort"), "stop", Qt::Key_Escape, this, SLOT(slotAbort()), actionCollection(), "fax_stop");
+ new KAction(i18n("A&ddress Book"), "kaddressbook", Qt::CTRL+Qt::Key_A, this, SLOT(slotKab()), actionCollection(), "fax_ab");
+ new KAction(i18n("V&iew Log"), "contents", Qt::CTRL+Qt::Key_L, this, SLOT(slotViewLog()), actionCollection(), "fax_log");
+ new KAction(i18n("Vi&ew File"), "filefind", Qt::CTRL+Qt::Key_O, this, SLOT(slotView()), actionCollection(), "file_view");
+ new KAction( i18n( "&New Fax Recipient..." ), "edit", Qt::CTRL+Qt::Key_N, this, SLOT( slotFaxAdd() ), actionCollection(), "fax_add" );
+
+ KStdAction::quit(this, SLOT(slotQuit()), actionCollection());
+ setStandardToolBarMenuEnabled(true);
+ KStdAction::showMenubar(this, SLOT(slotToggleMenuBar()), actionCollection());
+ KStdAction::preferences(this, SLOT(slotConfigure()), actionCollection());
+ KStdAction::keyBindings(guiFactory(), SLOT(configureShortcuts()),
+actionCollection());
+ actionCollection()->action("fax_stop")->setEnabled(false);
+ connect(actionCollection()->action("file_remove"), SIGNAL(enabled(bool)), actionCollection()->action("file_view"), SLOT(setEnabled(bool)));
+ actionCollection()->action("file_remove")->setEnabled(false);
+
+ createGUI();
+}
+
+void KdeprintFax::slotToggleMenuBar()
+{
+ if (menuBar()->isVisible()) menuBar()->hide();
+ else menuBar()->show();
+}
+
+void KdeprintFax::slotAdd()
+{
+ KURL url = KFileDialog::getOpenURL(QString::null, QString::null, this);
+ if (!url.isEmpty())
+ addURL(url);
+}
+
+void KdeprintFax::slotRemove()
+{
+ if (m_files->currentItem() >= 0)
+ m_files->removeItem(m_files->currentItem());
+ if (m_files->count() == 0)
+ actionCollection()->action("file_remove")->setEnabled(false);
+}
+
+void KdeprintFax::slotView()
+{
+ if (m_files->currentItem() >= 0)
+ {
+ new KRun(KURL( m_files->currentText() ));
+ }
+}
+
+void KdeprintFax::slotFax()
+{
+ if (m_files->count() == 0)
+ KMessageBox::error(this, i18n("No file to fax."));
+ else if ( m_numbers->childCount() == 0 )
+ KMessageBox::error(this, i18n("No fax number specified."));
+ else if (m_faxctrl->send(this))
+ {
+ actionCollection()->action("fax_send")->setEnabled(false);
+ actionCollection()->action("fax_stop")->setEnabled(true);
+ statusBar()->changeItem(i18n("Processing..."), 1);
+ }
+ else
+ KMessageBox::error(this, i18n("Unable to start Fax process."));
+}
+
+void KdeprintFax::slotAbort()
+{
+ if (!m_faxctrl->abort())
+ KMessageBox::error(this, i18n("Unable to stop Fax process."));
+}
+
+void KdeprintFax::slotKab()
+{
+ QStringList number, name, enterprise;
+ if (FaxAB::getEntry(number, name, enterprise, this))
+ {
+ for ( unsigned int i = 0; i<number.count(); i++ )
+ new QListViewItem( m_numbers, number[ i ], name[ i ], enterprise[ i ] );
+ }
+}
+
+void KdeprintFax::addURL(KURL url)
+{
+ QString target;
+ if (KIO::NetAccess::download(url,target,this))
+ {
+ m_files->insertItem(KMimeType::pixmapForURL(url,0,KIcon::Small),target);
+ actionCollection()->action("file_remove")->setEnabled(true);
+ slotCurrentChanged();
+ }
+ else
+ KMessageBox::error(this, i18n("Unable to retrieve %1.").arg(url.prettyURL()));
+}
+
+void KdeprintFax::setPhone(QString phone)
+{
+ QString name, enterprise;
+ FaxAB::getEntryByNumber(phone, name, enterprise);
+ new QListViewItem( m_numbers, phone, name, enterprise );
+}
+
+void KdeprintFax::sendFax( bool quitAfterSend )
+{
+ slotFax();
+ m_quitAfterSend = quitAfterSend;
+}
+
+void KdeprintFax::dragEnterEvent(QDragEnterEvent *e)
+{
+ e->accept(KURLDrag::canDecode(e));
+}
+
+void KdeprintFax::dropEvent(QDropEvent *e)
+{
+ KURL::List l;
+ if (KURLDrag::decode(e, l))
+ {
+ for (KURL::List::ConstIterator it = l.begin(); it != l.end(); ++it)
+ addURL(*it);
+ }
+}
+
+QStringList KdeprintFax::files()
+{
+ QStringList l;
+ for (uint i=0; i<m_files->count(); i++)
+ l.append(m_files->text(i));
+ return l;
+}
+
+
+int KdeprintFax::faxCount() const
+{
+ return m_numbers->childCount();
+}
+
+/*
+QListViewItem* KdeprintFax::faxItem( int i ) const
+{
+ QListViewItem *item = m_numbers->firstChild();
+ while ( i && item && item->nextSibling() )
+ {
+ item = item->nextSibling();
+ i--;
+ }
+ if ( i || !item )
+ kdError() << "KdeprintFax::faxItem(" << i << ") => fax item index out of bound" << endl;
+ return item;
+}
+
+QString KdeprintFax::number( int i ) const
+{
+ QListViewItem *item = faxItem( i );
+ return ( item ? item->text( 0 ) : QString::null );
+}
+
+QString KdeprintFax::name( int i ) const
+{
+ QListViewItem *item = faxItem( i );
+ return ( item ? item->text( 1 ) : QString::null );
+}
+
+QString KdeprintFax::enterprise( int i ) const
+{
+ QListViewItem *item = faxItem( i );
+ return ( item ? item->text( 2 ) : QString::null );
+}
+*/
+
+KdeprintFax::FaxItemList KdeprintFax::faxList() const
+{
+ FaxItemList list;
+ QListViewItemIterator it( m_numbers );
+ while ( it.current() )
+ {
+ FaxItem item;
+ item.number = it.current()->text( 0 );
+ item.name = it.current()->text( 1 );
+ item.enterprise = it.current()->text( 2 );
+ list << item;
+ ++it;
+ }
+ return list;
+}
+
+QString KdeprintFax::comment() const
+{
+ return m_comment->text();
+}
+
+bool KdeprintFax::cover() const
+{
+ return m_cover->isChecked();
+}
+
+QString KdeprintFax::subject() const
+{
+ return m_subject->text();
+}
+
+void KdeprintFax::slotMessage(const QString& msg)
+{
+ m_msglabel->setText(msg);
+}
+
+void KdeprintFax::slotFaxSent(bool status)
+{
+ actionCollection()->action("fax_send")->setEnabled(true);
+ actionCollection()->action("fax_stop")->setEnabled(false);
+ statusBar()->changeItem(i18n("Idle"), 1);
+
+ if( m_quitAfterSend ) {
+ slotQuit();
+ }
+ else {
+ if (!status)
+ KMessageBox::error(this, i18n("Fax error: see log message for more information."));
+ slotMessage(QString::null);
+ }
+}
+
+void KdeprintFax::slotViewLog()
+{
+ m_faxctrl->viewLog(this);
+}
+
+void KdeprintFax::slotConfigure()
+{
+ if (ConfigDlg::configure(this))
+ updateState();
+}
+
+void KdeprintFax::updateState()
+{
+ QString cmd = m_faxctrl->faxCommand();
+ m_cover->setEnabled(cmd.find("%cover") != -1);
+ if ( !m_cover->isEnabled() )
+ m_cover->setChecked(false);
+ m_comment->setEnabled(cmd.find("%comment") != -1 && m_cover->isChecked());
+ //m_comment->setPaper(m_comment->isEnabled() ? colorGroup().brush(QColorGroup::Base) : colorGroup().brush(QColorGroup::Background));
+ if (!m_comment->isEnabled())
+ {
+ m_comment->setText("");
+ m_comment->setPaper( colorGroup().background() );
+ }
+ else
+ m_comment->setPaper( colorGroup().base() );
+ /*
+ m_enterprise->setEnabled(cmd.find("%enterprise") != -1);
+ if (!m_enterprise->isEnabled())
+ m_enterprise->setText("");
+ */
+ if (cmd.find("%time") == -1)
+ {
+ m_timecombo->setCurrentItem(0);
+ m_timecombo->setEnabled(false);
+ slotTimeComboActivated(0);
+ }
+ else
+ m_timecombo->setEnabled( true );
+ /*m_name->setEnabled( cmd.find( "%name" ) != -1 );*/
+ m_subject->setEnabled( cmd.find( "%subject" ) != -1 && m_cover->isChecked() );
+ statusBar()->changeItem(m_faxctrl->faxSystem(), 2);
+}
+
+void KdeprintFax::slotQuit()
+{
+ close(true);
+}
+
+void KdeprintFax::slotTimeComboActivated(int ID)
+{
+ m_time->setEnabled(ID == 1);
+}
+
+QString KdeprintFax::time() const
+{
+ if (!m_time->isEnabled())
+ return QString::null;
+ return m_time->time().toString("hh:mm");
+}
+
+void KdeprintFax::slotMoveUp()
+{
+ int index = m_files->currentItem();
+ if ( index > 0 )
+ {
+ QListBoxItem *item = m_files->item( index );
+ m_files->takeItem( item );
+ m_files->insertItem( item, index-1 );
+ m_files->setCurrentItem( index-1 );
+ }
+}
+
+void KdeprintFax::slotMoveDown()
+{
+ int index = m_files->currentItem();
+ if ( index >= 0 && index < ( int )m_files->count()-1 )
+ {
+ QListBoxItem *item = m_files->item( index );
+ m_files->takeItem( item );
+ m_files->insertItem( item, index+1 );
+ m_files->setCurrentItem( index+1 );
+ }
+}
+
+/** The user or program toggled the "Cover Sheet" check box.
+ * Update the state of the other controls to reflect the
+ * new status.
+ */
+void KdeprintFax::slotCoverToggled(bool)
+{
+ updateState();
+}
+
+void KdeprintFax::slotCurrentChanged()
+{
+ int index = m_files->currentItem();
+ m_upbtn->setEnabled( index > 0 );
+ m_downbtn->setEnabled( index >=0 && index < ( int )m_files->count()-1 );
+}
+
+void KdeprintFax::slotFaxSelectionChanged()
+{
+ QListViewItemIterator it( m_numbers, QListViewItemIterator::Selected );
+ m_delbtn->setEnabled( it.current() != NULL );
+}
+
+void KdeprintFax::slotFaxRemove()
+{
+ QListViewItemIterator it( m_numbers, QListViewItemIterator::Selected );
+ QPtrList<QListViewItem> items;
+ items.setAutoDelete( true );
+ while ( it.current() )
+ {
+ items.append( it.current() );
+ ++it;
+ }
+ items.clear();
+ /* force this slot to be called, to update buttons state */
+ slotFaxSelectionChanged();
+}
+
+void KdeprintFax::slotFaxAdd()
+{
+ QString number, name, enterprise;
+ if ( manualFaxDialog( number, name, enterprise ) )
+ {
+ new QListViewItem( m_numbers, number, name, enterprise );
+ }
+}
+
+void KdeprintFax::slotFaxExecuted( QListViewItem *item )
+{
+ if ( item )
+ {
+ QString number = item->text( 0 ), name = item->text( 1 ), enterprise = item->text( 2 );
+ if ( manualFaxDialog( number, name, enterprise ) )
+ {
+ item->setText( 0, number );
+ item->setText( 1, name );
+ item->setText( 2, enterprise );
+ }
+ }
+}
+
+bool KdeprintFax::manualFaxDialog( QString& number, QString& name, QString& enterprise )
+{
+ /* dialog construction */
+ KDialogBase dlg( this, "manualFaxDialog", true, i18n( "Fax Number" ), KDialogBase::Ok|KDialogBase::Cancel, KDialogBase::Ok, true );
+ QWidget *mainw = new QWidget( &dlg );
+ QLabel *lab0 = new QLabel( i18n( "Enter recipient fax properties." ), mainw );
+ QLabel *lab1 = new QLabel( i18n( "&Number:" ), mainw );
+ QLabel *lab2 = new QLabel( i18n( "N&ame:" ), mainw );
+ QLabel *lab3 = new QLabel( i18n( "&Enterprise:" ), mainw );
+ QLineEdit *edit_number = new QLineEdit( number, mainw );
+ QLineEdit *edit_name = new QLineEdit( name, mainw );
+ QLineEdit *edit_enterprise = new QLineEdit( enterprise, mainw );
+ lab1->setBuddy( edit_number );
+ lab2->setBuddy( edit_name );
+ lab3->setBuddy( edit_enterprise );
+ QGridLayout *l0 = new QGridLayout( mainw, 5, 2, 0, 5 );
+ l0->setColStretch( 1, 1 );
+ l0->addMultiCellWidget( lab0, 0, 0, 0, 1 );
+ l0->setRowSpacing( 1, 10 );
+ l0->addWidget( lab1, 2, 0 );
+ l0->addWidget( lab2, 3, 0 );
+ l0->addWidget( lab3, 4, 0 );
+ l0->addWidget( edit_number, 2, 1 );
+ l0->addWidget( edit_name, 3, 1 );
+ l0->addWidget( edit_enterprise, 4, 1 );
+ dlg.setMainWidget( mainw );
+ dlg.resize( 300, 10 );
+
+ /* dialog execution */
+ while ( 1 )
+ if ( dlg.exec() )
+ {
+ if ( edit_number->text().isEmpty() )
+ {
+ KMessageBox::error( this, i18n( "Invalid fax number." ) );
+ }
+ else
+ {
+ number = edit_number->text();
+ name = edit_name->text();
+ enterprise = edit_enterprise->text();
+ return true;
+ }
+ }
+ else
+ return false;
+}
+
+#include "kdeprintfax.moc"
diff --git a/kdeprint/kdeprintfax/kdeprintfax.desktop b/kdeprint/kdeprintfax/kdeprintfax.desktop
new file mode 100644
index 000000000..a33f9292f
--- /dev/null
+++ b/kdeprint/kdeprintfax/kdeprintfax.desktop
@@ -0,0 +1,97 @@
+[Desktop Entry]
+Name=KdeprintFax
+Name[cy]=KdeargraffuFfacs
+Name[eo]=Presfakso
+Name[hi]=केडीई-प्रिंट-फ़ैक्स
+Name[lo]=ອິນເຕີເນັດ
+Name[ne]=Kdeprint फ्याक्स
+Name[nso]=Fax ya kgatiso ya kde
+Name[pa]=Kde ਫੈਕਸ ਛਾਪਣ
+Name[rw]=Kde-gucapaFagisi
+Name[sv]=KDE:s skriv ut fax
+Name[ta]=Kdeஅச்சுபாக்ஸ்
+Name[th]=KDEprintFax
+Name[vi]=In và Fax của KDE
+GenericName=Fax Utility
+GenericName[af]=Faks Program
+GenericName[ar]=أداة الفاكس
+GenericName[be]=Праграма працы з факсам
+GenericName[bg]=Програма за факс
+GenericName[bn]=ফ্যাক্স টুল
+GenericName[br]=Maveg ar faks
+GenericName[bs]=Alat za faxove
+GenericName[ca]=Utilitat de fax
+GenericName[cs]=Faxový nástroj
+GenericName[csb]=Faks
+GenericName[cy]=Cyfleuster Ffacs
+GenericName[da]=FAX-værktøj
+GenericName[de]=Fax-Programm
+GenericName[el]=Εργαλείο φαξ
+GenericName[eo]=Faxutilaĵo
+GenericName[es]=Aplicación de fax
+GenericName[et]=Faksimise utiliit
+GenericName[eu]=Fax tresna
+GenericName[fa]=برنامۀ سودمند دورنگار
+GenericName[fi]=Faksityökalu
+GenericName[fr]=Outil de fax
+GenericName[fy]=Faksprogramma
+GenericName[ga]=Uirlis Facs
+GenericName[gl]=Utilidade de Fax
+GenericName[he]=כלי פקסים
+GenericName[hi]=फ़ैक्स यूटिलिटी
+GenericName[hr]=Alat za fakseve
+GenericName[hu]=Faxprogram
+GenericName[is]=Faxtól
+GenericName[it]=Fax
+GenericName[ja]=ファクスユーティリティ
+GenericName[ka]=ფაქსთან სამუშაო უტილიტა
+GenericName[kk]=Факс утилитасы
+GenericName[km]=ឧបករណ៍​ទូរសារ
+GenericName[lo]=ເຄື່ອງມືໂທລະສານ
+GenericName[lt]=Pagalbinė fakso programėlė
+GenericName[lv]=Faksa utilīta
+GenericName[mk]=Алатка за факс
+GenericName[mn]=Fax-програм
+GenericName[ms]=Kemudahan Faks
+GenericName[mt]=Għodda tal-faks
+GenericName[nb]=Faksverktøy
+GenericName[nds]=Faxwarktüüch
+GenericName[ne]=फ्याक्स युटिलिटी
+GenericName[nl]=Faxprogramma
+GenericName[nn]=Faksverktøy
+GenericName[nso]=Sebereka sa Fax
+GenericName[pa]=ਫੈਕਸ ਸਹੂਲਤ
+GenericName[pl]=Faks
+GenericName[pt]=Utilitário de Fax
+GenericName[pt_BR]=Utilitário de Fax
+GenericName[ro]=Utilitar pentru FAX
+GenericName[ru]=Утилита работы с факсами
+GenericName[rw]=Nkemurabibazo Fagisi
+GenericName[se]=Fáksenreaidu
+GenericName[sk]=Faxový nástroj
+GenericName[sl]=Pripomoček za faks
+GenericName[sr]=Факс програм
+GenericName[sr@Latn]=Faks program
+GenericName[sv]=Faxverktyg
+GenericName[ta]=தொலைநகலி கருவி
+GenericName[tg]=Обзори дурнамо
+GenericName[th]=เครื่องมือโทรสาร
+GenericName[tr]=Faks Görüntüleyici
+GenericName[tt]=Faks Qoralı
+GenericName[uk]=Утиліта факсу
+GenericName[uz]=Faks vositasi
+GenericName[uz@cyrillic]=Факс воситаси
+GenericName[ven]=Tshishumiswa tsha Fax
+GenericName[vi]=Các tiện ích Fax
+GenericName[wa]=Usteye di facs
+GenericName[xh]=Uncedo lwe Fax
+GenericName[zh_CN]=传真工具
+GenericName[zh_TW]=傳真工具
+GenericName[zu]=Isisebenzi se-Fax
+
+Type=Application
+Exec=kdeprintfax -caption "%c" %i %m %u
+Icon=kdeprintfax
+Terminal=false
+X-DCOP-ServiceType=Multi
+Categories=Qt;KDE;Utility;X-KDE-Utilities-Peripherals;
diff --git a/kdeprint/kdeprintfax/kdeprintfax.h b/kdeprint/kdeprintfax/kdeprintfax.h
new file mode 100644
index 000000000..795521e82
--- /dev/null
+++ b/kdeprint/kdeprintfax/kdeprintfax.h
@@ -0,0 +1,115 @@
+/*
+ * kdeprintfax - a small fax utility
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef KDEPRINTFAX_H
+#define KDEPRINTFAX_H
+
+#include <kmainwindow.h>
+#include <kurl.h>
+
+class KListBox;
+class KListView;
+class QLineEdit;
+class QTextEdit;
+class FaxCtrl;
+class QCheckBox;
+class QLabel;
+class QTimeEdit;
+class QComboBox;
+class QPushButton;
+class QListViewItem;
+
+class KdeprintFax : public KMainWindow
+{
+ Q_OBJECT
+public:
+ struct FaxItem
+ {
+ QString number;
+ QString name;
+ QString enterprise;
+ };
+ typedef QValueList<FaxItem> FaxItemList;
+ typedef QValueList<FaxItem>::ConstIterator FaxItemListIterator;
+
+ KdeprintFax(QWidget *parent = 0, const char *name = 0);
+ ~KdeprintFax();
+
+ void addURL(KURL url);
+ void setPhone(QString phone);
+ void sendFax( bool quitAfterSend );
+ QStringList files();
+ int faxCount() const;
+ //QString number( int i = 0 ) const;
+ //QString name( int i = 0 ) const;
+ //QString enterprise( int i = 0 ) const;
+ FaxItemList faxList() const;
+ QString comment() const;
+ QString time() const;
+ QString subject() const;
+ bool cover() const;
+
+protected slots:
+ void slotToggleMenuBar();
+ void slotKab();
+ void slotAdd();
+ void slotRemove();
+ void slotFax();
+ void slotAbort();
+ void slotMessage(const QString&);
+ void slotFaxSent(bool);
+ void slotViewLog();
+ void slotConfigure();
+ void slotQuit();
+ void slotView();
+ void slotTimeComboActivated(int);
+ void slotMoveUp();
+ void slotMoveDown();
+ void slotCurrentChanged();
+ void slotFaxSelectionChanged();
+ void slotFaxRemove();
+ void slotFaxAdd();
+ void slotFaxExecuted( QListViewItem* );
+ void slotCoverToggled(bool toggle);
+
+protected:
+ void initActions();
+ void dragEnterEvent(QDragEnterEvent*);
+ void dropEvent(QDropEvent*);
+ void updateState();
+ bool manualFaxDialog( QString& number, QString& name, QString& enterprise );
+ //QListViewItem* faxItem( int i = 0 ) const;
+
+private:
+ KListBox *m_files;
+ KListView *m_numbers;
+ QLineEdit *m_subject;
+ QTextEdit *m_comment;
+ FaxCtrl *m_faxctrl;
+ QCheckBox *m_cover;
+ QLabel *m_msglabel;
+ QTimeEdit *m_time;
+ QComboBox *m_timecombo;
+ QPushButton *m_upbtn, *m_downbtn;
+ QPushButton *m_newbtn, *m_abbtn, *m_delbtn;
+ bool m_quitAfterSend;
+};
+
+#endif
diff --git a/kdeprint/kdeprintfax/kdeprintfaxui.rc b/kdeprint/kdeprintfax/kdeprintfaxui.rc
new file mode 100644
index 000000000..09c2be6f2
--- /dev/null
+++ b/kdeprint/kdeprintfax/kdeprintfaxui.rc
@@ -0,0 +1,31 @@
+<!DOCTYPE kpartgui>
+<kpartgui name="kdeprintfax">
+<MenuBar>
+ <Menu name="file"><text>&amp;File</text>
+ <Action name="file_add" />
+ <Action name="file_remove" />
+ <Separator />
+ <Action name="file_view" />
+ </Menu>
+ <Menu name="fax"><text>Fa&amp;x</text>
+ <Action name="fax_send" />
+ <Action name="fax_stop" />
+ <Separator />
+ <Action name="fax_add" />
+ <Action name="fax_ab" />
+ <Separator />
+ <Action name="fax_log" />
+ </Menu>
+</MenuBar>
+<ToolBar name="mainToolBar">
+ <Action name="file_add" />
+ <Action name="file_remove" />
+ <Action name="file_view" />
+ <Separator />
+ <Action name="fax_send" />
+ <Action name="fax_stop" />
+ <Action name="fax_ab" />
+ <Separator />
+ <Action name="fax_log" />
+</ToolBar>
+</kpartgui>
diff --git a/kdeprint/kdeprintfax/main.cpp b/kdeprint/kdeprintfax/main.cpp
new file mode 100644
index 000000000..a4dd3030f
--- /dev/null
+++ b/kdeprint/kdeprintfax/main.cpp
@@ -0,0 +1,78 @@
+/*
+ * kdeprintfax - a interface to fax-packages
+ * Copyright (C) 2001 Michael Goffioul
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "kdeprintfax.h"
+
+#include <qfile.h>
+#include <kcmdlineargs.h>
+#include <kaboutdata.h>
+#include <klocale.h>
+#include <kapplication.h>
+
+QString debugFlag;
+int oneShotFlag = false;
+
+static const char description[] =
+ I18N_NOOP("A small fax utility to be used with kdeprint.");
+// INSERT A DESCRIPTION FOR YOUR APPLICATION HERE
+
+
+static KCmdLineOptions options[] =
+{
+ { "phone ", I18N_NOOP("Phone number to fax to"), 0 },
+ { "immediate", I18N_NOOP("Send fax immediately"), 0 },
+ { "batch", I18N_NOOP("Exit after sending"), 0 },
+ { "+[file]", I18N_NOOP("File to fax (added to the file list)"), 0 },
+ KCmdLineLastOption
+ // INSERT YOUR COMMANDLINE OPTIONS HERE
+};
+
+int main(int argc, char *argv[])
+{
+
+ KAboutData aboutData( "kdeprintfax", I18N_NOOP("KdeprintFax"),
+ "1.0", description, KAboutData::License_GPL,
+ "(c), 2001 Michael Goffioul", 0, "http://printing.kde.org");
+ aboutData.addAuthor("Michael Goffioul",0, "kdeprint@swing.be");
+ KCmdLineArgs::init( argc, argv, &aboutData );
+ KCmdLineArgs::addCmdLineOptions( options ); // Add our own options.
+ KApplication::addCmdLineOptions();
+
+ KApplication a;
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+
+ KdeprintFax *w = new KdeprintFax;
+ a.setMainWidget(w);
+ w->show();
+ for (int i=0;i<args->count();i++)
+ w->addURL(args->url(i));
+
+ QString phone = args->getOption( "phone" );
+ if( !phone.isEmpty() ) {
+ w->setPhone( phone );
+ }
+
+ if( args->isSet( "immediate" ) ) {
+ w->sendFax( args->isSet( "batch" ) );
+ }
+
+ args->clear();
+ return a.exec();
+}
diff --git a/kdeprint/kjobviewer/Makefile.am b/kdeprint/kjobviewer/Makefile.am
new file mode 100644
index 000000000..56be89334
--- /dev/null
+++ b/kdeprint/kjobviewer/Makefile.am
@@ -0,0 +1,24 @@
+AM_CPPFLAGS = -D_KDEPRINT_COMPILE
+
+INCLUDES = $(all_includes)
+
+bin_PROGRAMS=
+lib_LTLIBRARIES=
+kdeinit_LTLIBRARIES = kjobviewer.la
+
+kjobviewer_la_SOURCES = kjobviewer.cpp main.cpp
+kjobviewer_la_METASOURCES = AUTO
+kjobviewer_la_LIBADD = -lkdeprint_management $(LIB_KDEUI)
+kjobviewer_la_LDFLAGS = -module -avoid-version $(all_libraries) $(KDE_RPATH)
+
+noinst_HEADERS = kjobviewer.h
+
+KDE_ICON = kjobviewer
+
+rc_DATA = kjobviewerui.rc
+rcdir = $(kde_datadir)/kjobviewer
+
+xdg_apps_DATA = kjobviewer.desktop
+
+messages: rc.cpp
+ $(XGETTEXT) *.cpp -o $(podir)/kjobviewer.pot
diff --git a/kdeprint/kjobviewer/hi128-app-kjobviewer.png b/kdeprint/kjobviewer/hi128-app-kjobviewer.png
new file mode 100644
index 000000000..7db5f56b1
--- /dev/null
+++ b/kdeprint/kjobviewer/hi128-app-kjobviewer.png
Binary files differ
diff --git a/kdeprint/kjobviewer/hi16-app-kjobviewer.png b/kdeprint/kjobviewer/hi16-app-kjobviewer.png
new file mode 100644
index 000000000..d6defce21
--- /dev/null
+++ b/kdeprint/kjobviewer/hi16-app-kjobviewer.png
Binary files differ
diff --git a/kdeprint/kjobviewer/hi22-app-kjobviewer.png b/kdeprint/kjobviewer/hi22-app-kjobviewer.png
new file mode 100644
index 000000000..a71ee2817
--- /dev/null
+++ b/kdeprint/kjobviewer/hi22-app-kjobviewer.png
Binary files differ
diff --git a/kdeprint/kjobviewer/hi32-app-kjobviewer.png b/kdeprint/kjobviewer/hi32-app-kjobviewer.png
new file mode 100644
index 000000000..d554b554f
--- /dev/null
+++ b/kdeprint/kjobviewer/hi32-app-kjobviewer.png
Binary files differ
diff --git a/kdeprint/kjobviewer/hi48-app-kjobviewer.png b/kdeprint/kjobviewer/hi48-app-kjobviewer.png
new file mode 100644
index 000000000..13adbd006
--- /dev/null
+++ b/kdeprint/kjobviewer/hi48-app-kjobviewer.png
Binary files differ
diff --git a/kdeprint/kjobviewer/hi64-app-kjobviewer.png b/kdeprint/kjobviewer/hi64-app-kjobviewer.png
new file mode 100644
index 000000000..5d22d215e
--- /dev/null
+++ b/kdeprint/kjobviewer/hi64-app-kjobviewer.png
Binary files differ
diff --git a/kdeprint/kjobviewer/hisc-app-kjobviewer.svgz b/kdeprint/kjobviewer/hisc-app-kjobviewer.svgz
new file mode 100644
index 000000000..f40b4bdfa
--- /dev/null
+++ b/kdeprint/kjobviewer/hisc-app-kjobviewer.svgz
Binary files differ
diff --git a/kdeprint/kjobviewer/kjobviewer.cpp b/kdeprint/kjobviewer/kjobviewer.cpp
new file mode 100644
index 000000000..12a7aef1a
--- /dev/null
+++ b/kdeprint/kjobviewer/kjobviewer.cpp
@@ -0,0 +1,233 @@
+/*
+ * 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.
+ **/
+
+#include "kjobviewer.h"
+#include <kdeprint/kmjobviewer.h>
+#include <kdeprint/kmtimer.h>
+#include <kdeprint/kmmanager.h>
+
+#include <stdlib.h>
+#include <qpixmap.h>
+#include <kcmdlineargs.h>
+#include <kaboutdata.h>
+#include <kmessagebox.h>
+#include <klocale.h>
+#include <ksystemtray.h>
+#include <kdebug.h>
+#include <kiconloader.h>
+#include <kpopupmenu.h>
+#include <kwin.h>
+#include <kstartupinfo.h>
+
+class JobTray : public KSystemTray
+{
+public:
+ JobTray(KJobViewerApp *parent, const char *name = 0)
+ : KSystemTray(0, name), m_app(parent) { connect( this, SIGNAL( quitSelected() ), kapp, SLOT( quit() ) ); }
+protected:
+ void mousePressEvent(QMouseEvent*);
+private:
+ KJobViewerApp *m_app;
+};
+
+void JobTray::mousePressEvent(QMouseEvent *e)
+{
+ if (e->button() == Qt::RightButton)
+ KSystemTray::mousePressEvent(e);
+ else if (m_app->m_views.count() > 0)
+ {
+ KPopupMenu menu;
+ QDictIterator<KMJobViewer> it(m_app->m_views);
+ QPtrList<KMJobViewer> list;
+ list.setAutoDelete(false);
+ for (; it.current(); ++it)
+ {
+ menu.insertItem(KWin::icon(it.current()->winId(), 16, 16), it.currentKey(), list.count());
+ if (it.current()->isVisible())
+ menu.setItemChecked(list.count(), true);
+ list.append(it.current());
+ }
+
+ if (list.count() == 1)
+ {
+ // special case, old behavior
+ if (list.first()->isVisible())
+ list.first()->hide();
+ else
+ list.first()->show();
+ }
+ else
+ {
+ int choice = menu.exec(mapToGlobal(e->pos()));
+ if (choice != -1)
+ {
+ KMJobViewer *view = list.at(choice);
+ if (view->isVisible())
+ KWin::activateWindow(view->winId());
+ else
+ view->show();
+ }
+ }
+ }
+}
+
+//-------------------------------------------------------------
+
+KJobViewerApp::KJobViewerApp() : KUniqueApplication()
+{
+ m_views.setAutoDelete(true);
+ m_tray = 0;
+ m_timer = 0;
+}
+
+KJobViewerApp::~KJobViewerApp()
+{
+}
+
+int KJobViewerApp::newInstance()
+{
+ initialize();
+ return 0;
+}
+
+void KJobViewerApp::initialize()
+{
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+ bool showIt = args->isSet("show");
+ bool all = args->isSet("all");
+ QString prname = args->getOption("d");
+ KMJobViewer *view(0);
+
+ if (!m_timer)
+ {
+ m_timer = KMTimer::self();
+ connect(m_timer,SIGNAL(timeout()),SLOT(slotTimer()));
+ }
+
+ if (prname.isEmpty() && all)
+ prname = i18n("All Printers");
+
+ if (prname.isEmpty()) {
+ KMPrinter *prt = KMManager::self()->defaultPrinter();
+ if (prt)
+ prname = prt->printerName();
+ else {
+ KMessageBox::error(0, i18n("There is no default printer. Start with --all to see all printers."), i18n("Print Error"));
+ exit(1);
+ return;
+ }
+ }
+
+ if (!m_tray)
+ {
+ m_tray = new JobTray(this);
+ m_tray->setPixmap(m_tray->loadIcon("fileprint"));
+
+ }
+
+ view = m_views.find(prname);
+ if (!view)
+ {
+ kdDebug() << "creating new view: " << prname << endl;
+ view = new KMJobViewer();
+ connect(view, SIGNAL(jobsShown(KMJobViewer*,bool)), SLOT(slotJobsShown(KMJobViewer*,bool)));
+ connect(view, SIGNAL(printerChanged(KMJobViewer*,const QString&)), SLOT(slotPrinterChanged(KMJobViewer*,const QString&)));
+ connect(view, SIGNAL(refreshClicked()), SLOT(slotTimer()));
+ connect(view, SIGNAL(viewerDestroyed(KMJobViewer*)), SLOT(slotViewerDestroyed(KMJobViewer*)));
+ m_views.insert(prname, view);
+ }
+
+ if (showIt)
+ {
+ view->show();
+ m_tray->show();
+ }
+ view->setPrinter(prname);
+
+ //m_timer->release(true);
+ m_timer->delay(10);
+}
+
+void KJobViewerApp::slotJobsShown(KMJobViewer *view, bool hasJobs)
+{
+ if (!hasJobs && !view->isVisible() && !view->isSticky())
+ {
+ kdDebug() << "removing view: " << view->printer() << endl;
+ // the window is hidden and doesn't have any job shown -> destroy it
+ // closing won't have any effect as the KMJobViewer overload closeEvent()
+ m_views.remove(view->printer());
+ }
+
+ if (m_views.count() > 0)
+ {
+ if (!m_tray->isVisible())
+ m_tray->show();
+ }
+ else {
+ KStartupInfo::appStarted();
+ kapp->quit();
+ }
+}
+
+void KJobViewerApp::slotTimer()
+{
+ // Update printer list
+ KMManager::self()->printerList(true);
+
+ // Refresh views. The first time, job list is reloaded,
+ // other views will simply use reloaded job list
+ bool trigger(true);
+ QDictIterator<KMJobViewer> it(m_views);
+ for (; it.current(); ++it, trigger=false)
+ it.current()->refresh(trigger);
+}
+
+void KJobViewerApp::slotPrinterChanged(KMJobViewer *view, const QString& prname)
+{
+ KMJobViewer *other = m_views.find(prname);
+ if (other)
+ {
+ if (other->isVisible())
+ KWin::activateWindow(other->winId());
+ else
+ other->show();
+ }
+ else
+ {
+ m_views.take(view->printer());
+ m_views.insert(prname, view);
+ view->setPrinter(prname);
+ }
+}
+
+void KJobViewerApp::reload()
+{
+ // trigger delayed refresh in all views
+ m_timer->delay(10);
+}
+
+void KJobViewerApp::slotViewerDestroyed(KMJobViewer *view)
+{
+ if (view)
+ m_views.take(view->printer());
+ if (m_views.count() == 0)
+ kapp->quit();
+}
+
+#include "kjobviewer.moc"
diff --git a/kdeprint/kjobviewer/kjobviewer.desktop b/kdeprint/kjobviewer/kjobviewer.desktop
new file mode 100644
index 000000000..965ed49bf
--- /dev/null
+++ b/kdeprint/kjobviewer/kjobviewer.desktop
@@ -0,0 +1,92 @@
+[Desktop Entry]
+Exec=kjobviewer --all --show %i %m
+Icon=kjobviewer
+Terminal=false
+Type=Application
+X-KDE-StartupNotify=true
+
+Name=KJobViewer
+Name[bn]=কে-জব-ভিউয়ার
+Name[csb]=Przezérnik pòlétów drëkera
+Name[cy]=KGwelyddSwyddi
+Name[ja]=K ジョブビューア
+Name[nds]=Opgavenkieker
+Name[ne]=KJob दर्शक
+Name[pl]=Przeglądarka zadań drukowania
+Name[pt_BR]=Trabalhos de Impressão
+Name[ro]=Vizualizor lucrări de tipărit
+Name[rw]=K-IkigaragazaUmurimo
+Name[sk]=Prehliadač úloh
+Name[sv]=K-jobbvisare
+Name[ta]=கேபணி காட்சியாளன்
+Name[tg]=Намоишгари корҳо
+Name[vi]=Trình theo dõi Tác vụ In ấn
+GenericName=Print Jobs
+GenericName[af]=Drukker Werke
+GenericName[be]=Заданні друку
+GenericName[bg]=Задания за печат
+GenericName[bn]=মুদ্রণ তালিকা
+GenericName[bs]=Zadaci štampe
+GenericName[ca]=Treballs d'impressió
+GenericName[cs]=Tiskové úlohy
+GenericName[csb]=Pòlétë drëkera
+GenericName[cy]=Swyddi Argraffu
+GenericName[da]=Udskriv job
+GenericName[de]=Druckaufträge
+GenericName[el]=Εργασίες εκτύπωσης
+GenericName[eo]=Printtaskoj
+GenericName[es]=Trabajos de impresión
+GenericName[et]=Printeri tööd
+GenericName[eu]=Inprimaketa lanak
+GenericName[fa]=چاپ کارها
+GenericName[fi]=Tulostustyöt
+GenericName[fr]=Tâches d'impressions
+GenericName[fy]=printtaken
+GenericName[ga]=Jabanna Priontála
+GenericName[gl]=Traballos de Impresión
+GenericName[he]=עבודות הדפסה
+GenericName[hr]=Zadaci ispisivanja
+GenericName[hu]=Nyomtatási feladatok
+GenericName[is]=Prentverk
+GenericName[it]=Lavori di stampa
+GenericName[ja]=印刷ジョブ
+GenericName[ka]=ბეჭდვის დავალება
+GenericName[kk]=Басып шығару тапсырмалары
+GenericName[km]=ការងារ​បោះពុម្ព
+GenericName[lt]=Spausdinimo užduotys
+GenericName[mk]=Задачи за печатење
+GenericName[ms]=Cetak Kerja
+GenericName[nb]=Utskriftsjobber
+GenericName[nds]=Druckopgaven
+GenericName[ne]=मुद्रण कार्य
+GenericName[nl]=Afdruktaken
+GenericName[nn]=Utskriftsjobbar
+GenericName[pa]=ਛਪਾਈ ਕੰਮ
+GenericName[pl]=Zadania drukowania
+GenericName[pt]=Tarefas de Impressão
+GenericName[pt_BR]=Tarefas de Impressão
+GenericName[ro]=Lucrări de tipărit
+GenericName[ru]=Задания печати
+GenericName[rw]=Gucapa Imirimo
+GenericName[se]=Čálihanbarggut
+GenericName[sk]=Tlačové úlohy
+GenericName[sl]=Tiskalniška opravila
+GenericName[sr]=Послови штампе
+GenericName[sr@Latn]=Poslovi štampe
+GenericName[sv]=Skrivarjobb
+GenericName[ta]=அச்சுப் பணிகள்
+GenericName[te]=ప్రచురణ పనులు
+GenericName[tg]=Корҳои чопгар
+GenericName[th]=งานพิมพ์
+GenericName[tr]=Yazdırma Görevleri
+GenericName[tt]=Bastıru Eşläre
+GenericName[uk]=Задачі друку
+GenericName[uz]=Bosib chiqarish vazifalari
+GenericName[uz@cyrillic]=Босиб чиқариш вазифалари
+GenericName[vi]=Tác vụ In ấn
+GenericName[wa]=Bouyes d' imprimaedje
+GenericName[zh_CN]=打印任务
+GenericName[zh_TW]=列印工作
+
+X-DCOP-ServiceType=Unique
+Categories=Qt;KDE;Utility;X-KDE-Utilities-Peripherals;
diff --git a/kdeprint/kjobviewer/kjobviewer.h b/kdeprint/kjobviewer/kjobviewer.h
new file mode 100644
index 000000000..389f160a4
--- /dev/null
+++ b/kdeprint/kjobviewer/kjobviewer.h
@@ -0,0 +1,57 @@
+/*
+ * 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 KJOBVIEWER_H
+#define KJOBVIEWER_H
+
+#include <kuniqueapplication.h>
+#include <kdeprint/kpreloadobject.h>
+#include <qdict.h>
+
+class KMJobViewer;
+class KMTimer;
+class JobTray;
+
+class KJobViewerApp : public KUniqueApplication, public KPReloadObject
+{
+ Q_OBJECT
+ friend class JobTray;
+public:
+ KJobViewerApp();
+ virtual ~KJobViewerApp();
+
+ virtual int newInstance();
+
+protected:
+ void initialize();
+ void reload();
+
+protected slots:
+ void slotJobsShown(KMJobViewer*, bool);
+ void slotTimer();
+ void slotPrinterChanged(KMJobViewer*, const QString&);
+ void slotViewerDestroyed(KMJobViewer*);
+
+private:
+ QDict<KMJobViewer> m_views;
+ JobTray *m_tray;
+ KMTimer *m_timer;
+};
+
+#endif
diff --git a/kdeprint/kjobviewer/kjobviewerui.rc b/kdeprint/kjobviewer/kjobviewerui.rc
new file mode 100644
index 000000000..83592dfc6
--- /dev/null
+++ b/kdeprint/kjobviewer/kjobviewerui.rc
@@ -0,0 +1,35 @@
+<!DOCTYPE kpartgui>
+<kpartgui name="kjobviewer">
+<MenuBar>
+ <Menu name="jobs"><text>&amp;Jobs</text>
+ <Action name="job_hold" />
+ <Action name="job_resume" />
+ <Separator />
+ <Action name="job_remove" />
+ <Action name="job_move" />
+ <Separator />
+ <Action name="job_restart" />
+ </Menu>
+ <Menu name="filter"><text>F&amp;ilter</text>
+ <Action name="filter_modify" />
+ <Action name="view_completed" />
+ <Action name="view_user_jobs" />
+ </Menu>
+</MenuBar>
+<ToolBar name="mainToolBar">
+ <Action name="job_hold" />
+ <Action name="job_resume" />
+ <Separator />
+ <Action name="job_remove" />
+ <Action name="job_move" />
+ <Separator />
+ <Action name="job_restart" />
+ <Separator />
+ <Action name="filter_modify" />
+ <Action name="view_completed" />
+ <Action name="view_user_jobs" />
+ <Action name="view_username" />
+ <Separator />
+ <Action name="refresh" />
+</ToolBar>
+</kpartgui>
diff --git a/kdeprint/kjobviewer/main.cpp b/kdeprint/kjobviewer/main.cpp
new file mode 100644
index 000000000..47176d743
--- /dev/null
+++ b/kdeprint/kjobviewer/main.cpp
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ **/
+
+#include <kapplication.h>
+#include <kcmdlineargs.h>
+#include <kaboutdata.h>
+
+#include "kjobviewer.h"
+#include <klocale.h>
+#include <stdlib.h>
+
+static KCmdLineOptions options[] = {
+ { "d <printer-name>", I18N_NOOP("The printer for which jobs are requested"), 0 },
+ { "noshow", I18N_NOOP("Show job viewer at startup"), 0},
+ { "all", I18N_NOOP("Show jobs for all printers"), 0},
+ KCmdLineLastOption
+};
+
+
+extern "C" int KDE_EXPORT kdemain(int argc, char *argv[])
+{
+ KAboutData aboutData("kjobviewer",I18N_NOOP("KJobViewer"),"0.1",I18N_NOOP("A print job viewer"),KAboutData::License_GPL,"(c) 2001, Michael Goffioul", 0, "http://printing.kde.org");
+ aboutData.addAuthor("Michael Goffioul",0,"kdeprint@swing.be");
+ KCmdLineArgs::init(argc,argv,&aboutData);
+ KCmdLineArgs::addCmdLineOptions(options);
+ KJobViewerApp::addCmdLineOptions();
+
+ if (!KJobViewerApp::start())
+ exit(0);
+
+ KJobViewerApp a;
+ return a.exec();
+}
diff --git a/kdeprint/kprinter/Makefile.am b/kdeprint/kprinter/Makefile.am
new file mode 100644
index 000000000..83c78cb91
--- /dev/null
+++ b/kdeprint/kprinter/Makefile.am
@@ -0,0 +1,18 @@
+AM_CPPFLAGS = -D_KDEPRINT_COMPILE
+
+INCLUDES = $(all_includes)
+
+bin_PROGRAMS =
+lib_LTLIBRARIES =
+kdeinit_LTLIBRARIES = kprinter.la
+
+kprinter_la_SOURCES = main.cpp printwrapper.cpp
+kprinter_la_LIBADD = -lkdeprint
+kprinter_la_LDFLAGS = -module -avoid-version $(all_libraries) $(KDE_RPATH)
+kprinter_la_METASOURCES = AUTO
+
+noinst_HEADERS = printwrapper.h
+
+messages:
+ $(XGETTEXT) *.cpp -o $(podir)/kprinter.pot
+
diff --git a/kdeprint/kprinter/configure.in.in b/kdeprint/kprinter/configure.in.in
new file mode 100644
index 000000000..dd0767216
--- /dev/null
+++ b/kdeprint/kprinter/configure.in.in
@@ -0,0 +1 @@
+AC_CHECK_FUNCS(sigset sigaction)
diff --git a/kdeprint/kprinter/kprinter.desktop b/kdeprint/kprinter/kprinter.desktop
new file mode 100644
index 000000000..cd4a823e5
--- /dev/null
+++ b/kdeprint/kprinter/kprinter.desktop
@@ -0,0 +1,107 @@
+[Desktop Entry]
+Exec=kprinter
+Icon=kjobviewer
+Terminal=false
+Type=Application
+DocPath=kdeprint/index.html
+X-KDE-StartupNotify=true
+Name=KPrinter
+Name[af]=KDrukker
+Name[cy]=KArgraffydd
+Name[eo]=KPrintilo
+Name[fy]=Kprinter
+Name[hi]=केप्रिंटर
+Name[ka]=პრინტერი
+Name[lo]=ເຄື່ອງພິມ - K
+Name[ne]=K मुद्रक
+Name[nl]=Kprinter
+Name[nso]=KSegatisi
+Name[pa]=ਕੇ-ਪਰਿੰਟਰ
+Name[ru]=Принтер
+Name[rw]=K-Mucapyi
+Name[sv]=Kskrivare
+Name[ta]=Kஅச்சியந்திரம்
+Name[te]=కెప్రింటర్
+Name[tg]=KЧопгар
+Name[th]=เครื่องพิมพ์ K
+Name[tr]=KYazıcı
+Name[ven]=Phirinthara ya K
+Name[vi]=In ấn KDE
+Name[wa]=KScrirece (KPrinter)
+GenericName=Printing Tool
+GenericName[af]=Drukker Program
+GenericName[ar]=أداة الطباعة
+GenericName[be]=Інструмент друку
+GenericName[bg]=Инструмент за печат
+GenericName[bn]=মুদ্রণ টুল
+GenericName[br]=Ostilh moulañ
+GenericName[bs]=Alat za štampu
+GenericName[ca]=Eina per a imprimir
+GenericName[cs]=Tiskový nástroj
+GenericName[csb]=Nôrzãdze do sprôwianiô wëdrëkama
+GenericName[cy]=Erfyn Argraffu
+GenericName[da]=Udskriftsværktøj
+GenericName[de]=Druckprogramm
+GenericName[el]=Εργαλείο εκτύπωσης
+GenericName[eo]=Ilo por printado
+GenericName[es]=Herramienta de impresión
+GenericName[et]=Trükkimise rakendus
+GenericName[eu]=Imprimatzeko tresna
+GenericName[fa]=ابزار چاپ
+GenericName[fi]=Tulostustyökalu
+GenericName[fr]=Outil d'impression
+GenericName[fy]=printprogramma
+GenericName[ga]=Uirlis Priontála
+GenericName[gl]=Ferramenta de Impresión
+GenericName[he]=כלי הדפסה
+GenericName[hi]=प्रिंटर औज़ार
+GenericName[hr]=Alata za ispisivanje
+GenericName[hu]=Nyomtatáskezelő
+GenericName[is]=Prentunartól
+GenericName[it]=Strumento di stampa
+GenericName[ja]=印刷ツール
+GenericName[ka]=საბეჭდი უტილიტა
+GenericName[kk]=Басып шығару құралы
+GenericName[km]=ឧបករណ៍​បោះពុម្ព
+GenericName[lo]=ເຄື່ອງມືລະບົບການພິມ์
+GenericName[lt]=Spausdinimo priemonė
+GenericName[lv]=Drukāšanas Rīks
+GenericName[mk]=Печатарска алатка
+GenericName[mn]=Хэвлэх програм
+GenericName[ms]=Alat Pencetakan
+GenericName[mt]=Għodda tal-ipprintjar
+GenericName[nb]=Verktøy for skriverbehandling
+GenericName[nds]=Druckwarktüüch
+GenericName[ne]=मुद्रण उपकरण
+GenericName[nl]=Afdrukprogramma
+GenericName[nn]=Utskriftsverktøy
+GenericName[nso]=Sebereka sa Kgatiso
+GenericName[pa]=ਛਪਾਈ (ਪਰਿੰਟਿੰਗ) ਸੰਦ
+GenericName[pl]=Narzędzie do zarządzania wydrukiem
+GenericName[pt]=Ferramenta de Impressão
+GenericName[pt_BR]=Ferramenta de Impressão
+GenericName[ro]=Utilitar de tipărire
+GenericName[ru]=Утилита печати
+GenericName[rw]=Igikoresho cyo Gucapa
+GenericName[se]=Čálihanreaidu
+GenericName[sk]=Tlačový nástroj
+GenericName[sl]=Orodje za tiskanje
+GenericName[sr]=Алат за штампу
+GenericName[sr@Latn]=Alat za štampu
+GenericName[sv]=Skrivarverktyg
+GenericName[ta]=அச்சசியந்திர கருவி
+GenericName[tg]=Обзори Чоп
+GenericName[th]=เครื่องมือระบบการพิมพ์
+GenericName[tr]=Yazdırma Aracı
+GenericName[tt]=Bastıru Qoralı
+GenericName[uk]=Засіб друку
+GenericName[uz]=Bosib chiqarish vositasi
+GenericName[uz@cyrillic]=Босиб чиқариш воситаси
+GenericName[ven]=Tshishumiswa tshau phirintha
+GenericName[vi]=Công cụ In ấn
+GenericName[wa]=Usteye d' imprimaedje
+GenericName[xh]=Isixhobo Sokushicilela
+GenericName[zh_CN]=打印工具
+GenericName[zh_TW]=列印工具
+GenericName[zu]=Ithuluzi Lokushicelela
+
diff --git a/kdeprint/kprinter/main.cpp b/kdeprint/kprinter/main.cpp
new file mode 100644
index 000000000..1d88ace83
--- /dev/null
+++ b/kdeprint/kprinter/main.cpp
@@ -0,0 +1,58 @@
+/*
+ * 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.
+ **/
+
+#include "printwrapper.h"
+
+#include <qtimer.h>
+#include <kapplication.h>
+#include <kcmdlineargs.h>
+#include <klocale.h>
+
+static KCmdLineOptions options[] =
+{
+ { "c", I18N_NOOP("Make an internal copy of the files to print"), 0},
+ { "P", 0, 0 },
+ { "d <printer>", I18N_NOOP("Printer/destination to print on"), 0},
+ { "J", 0, 0 },
+ { "t <title>", I18N_NOOP("Title/Name for the print job" ), 0},
+ { "#", 0, 0 },
+ { "n <number>", I18N_NOOP("Number of copies"), 0 },
+ { "o <option=value>", I18N_NOOP("Printer option" ), 0},
+ { "j <mode>", I18N_NOOP("Job output mode (gui, console, none)" ), "gui"},
+ { "system <printsys>",I18N_NOOP("Print system to use (lpd, cups)" ), 0},
+ { "stdin", I18N_NOOP("Allow printing from STDIN" ), 0},
+ { "nodialog", I18N_NOOP("Do not show the print dialog (print directly)"), 0},
+ { "+file(s)", I18N_NOOP("Files to load" ), 0},
+ KCmdLineLastOption
+};
+
+extern "C" int KDE_EXPORT kdemain(int argc, char *argv[])
+{
+ KCmdLineArgs::init(argc,argv,"kprinter",I18N_NOOP("KPrinter"),I18N_NOOP("A printer tool for KDE" ),"0.0.1");
+ KCmdLineArgs::addCmdLineOptions(options);
+ KApplication app;
+ PrintWrapper *wrap = new PrintWrapper;
+ app.setMainWidget(wrap);
+ QTimer::singleShot(10,wrap,SLOT(slotPrint()));
+
+ int result = app.exec();
+ delete wrap;
+
+ return result;
+}
diff --git a/kdeprint/kprinter/printwrapper.cpp b/kdeprint/kprinter/printwrapper.cpp
new file mode 100644
index 000000000..a9f566c72
--- /dev/null
+++ b/kdeprint/kprinter/printwrapper.cpp
@@ -0,0 +1,403 @@
+/*
+ * 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.
+ **/
+
+#include "printwrapper.h"
+
+#include <unistd.h>
+#include <signal.h>
+#include <sys/time.h>
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <stdlib.h>
+#include <kmessagebox.h>
+#include <qfile.h>
+#include <qtimer.h>
+#include <qregexp.h>
+#include <qsocketnotifier.h>
+
+#include <kapplication.h>
+#include <kcmdlineargs.h>
+#include <klocale.h>
+#include <kstandarddirs.h>
+#include <kio/netaccess.h>
+#include <kurl.h>
+#include <kdebug.h>
+#include <ktempfile.h>
+
+#include <kprinter.h>
+#include <kdeprint/kmmanager.h>
+#include <kdeprint/kmprinter.h>
+#include <kdeprint/kprintdialog.h>
+
+void signal_handler(int);
+QString tempFile;
+bool fromStdin = false;
+char job_output = 0; // 0: dialog, 1: console, 2: none
+char readchar = '\0';
+bool dataread = false;
+bool docopy = false;
+
+void showmsgdialog(const QString& msg, int type = 0)
+{
+ switch (type)
+ {
+ case 0: KMessageBox::information(NULL,msg,i18n("Print Information")); break;
+ case 1: KMessageBox::sorry(NULL,msg,i18n("Print Warning")); break;
+ case 2: KMessageBox::error(NULL,msg,i18n("Print Error")); break;
+ }
+}
+
+void showmsgconsole(const QString& msg, int type = 0)
+{
+ QString errmsg = QString::fromLatin1("%1 : ").arg((type == 0 ? i18n("Print info") : (type == 1 ? i18n("Print warning") : i18n("Print error"))));
+ kdDebug() << errmsg << msg << endl;
+}
+
+void showmsg(const QString& msg, int type = 0)
+{
+ switch (job_output) {
+ case 0: showmsgdialog(msg,type); break;
+ case 1: showmsgconsole(msg,type); break;
+ default: break;
+ }
+}
+
+void errormsg(const QString& msg)
+{
+ showmsg(msg,2);
+ exit(1);
+}
+
+void signal_handler(int s)
+{
+ QFile::remove(tempFile);
+ exit(s);
+}
+
+QString copyfile( const QString& filename )
+{
+ kdDebug( 500 ) << "Copying file " << filename << endl;
+ QString result;
+ QFile f( filename );
+ if ( f.open( IO_ReadOnly ) )
+ {
+ KTempFile temp;
+ temp.setAutoDelete( false );
+ QFile *tf = temp.file();
+ if ( tf )
+ {
+ char buffer[ 0xFFFF ];
+ int b = 0;
+ while ( ( b = f.readBlock( buffer, 0xFFFF ) ) > 0 )
+ {
+ if ( tf->writeBlock( buffer, b ) != b )
+ break;
+ }
+ tf->close();
+ if ( b > 0 )
+ temp.setAutoDelete( true );
+ else
+ {
+ kdDebug( 500 ) << "File copied to " << temp.name() << endl;
+ result = temp.name();
+ }
+ }
+ else
+ temp.setAutoDelete( true );
+ f.close();
+ }
+ return result;
+}
+
+//******************************************************************************************************
+
+PrintWrapper::PrintWrapper()
+: QWidget(), force_stdin(false), check_stdin(true)
+{
+}
+
+void PrintWrapper::slotPrint()
+{
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+
+#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
+ struct sigaction action;
+#endif /* HAVE_SIGACTION && !HAVE_SIGSET*/
+
+ // read variables from command line
+ QString printer = args->getOption("d");
+ QString title = args->getOption("t");
+ int ncopies = QString(args->getOption("n")).toInt();
+ QString job_mode = args->getOption("j");
+ QString system = args->getOption("system");
+ QCStringList optlist = args->getOptionList("o");
+ QMap<QString,QString> opts;
+ KURL::List files;
+ QStringList filestoprint;
+ force_stdin = args->isSet("stdin");
+ docopy = args->isSet( "c" );
+ bool nodialog = !(args->isSet("dialog"));
+
+ if( isatty( 0 ))
+ {
+ kdDebug( 500 ) << "stdin is a terminal, disabling it" << endl;
+ check_stdin = false;
+ }
+
+ // parse options
+ for (QCStringList::ConstIterator it=optlist.begin(); it!=optlist.end(); ++it)
+ {
+ QStringList l = QStringList::split('=',QString(*it),false);
+ if (l.count() >= 1) opts[l[0]] = (l.count() == 2 ? l[1] : QString::null);
+ }
+
+ // read file list
+ for (int i=0; i<args->count(); i++)
+ files.append(args->url(i));
+
+ // some clean-up
+ args->clear();
+
+ // set default values if necessary
+ if (job_mode == "console") job_output = 1;
+ else if (job_mode == "none") job_output = 2;
+ else job_output = 0;
+
+ // some checking
+ if ( files.count() > 0)
+ {
+ check_stdin = false;
+
+ if( force_stdin )
+ {
+ showmsg(i18n("A file has been specified on the command line. Printing from STDIN will be disabled."), 1);
+ force_stdin = false;
+ }
+ }
+ if (nodialog && files.count() == 0 &&!force_stdin && !check_stdin )
+ {
+ errormsg(i18n("When using '--nodialog', you must at least specify one file to print or use the '--stdin' flag."));
+ }
+
+ if( check_stdin )
+ { // check if there's any input on stdin
+ fd_set in;
+ struct timeval tm;
+ tm.tv_sec = 0;
+ tm.tv_usec = 0;
+ FD_ZERO( &in );
+ FD_SET( 0, &in );
+ if( select( 1, &in, NULL, NULL, &tm ) )
+ { // we have data on stdin
+ if ( read( 0, &readchar, 1 ) > 0 )
+ {
+ force_stdin = true;
+ check_stdin = false;
+ dataread = true;
+ kdDebug( 500 ) << "input detected on stdin" << endl;
+ }
+ else
+ {
+ force_stdin = check_stdin = false;
+ kdDebug( 500 ) << "stdin closed and empty" << endl;
+ }
+ }
+ else
+ kdDebug( 500 ) << "no input on stdin at startup" << endl;
+ }
+
+ // force_stdin ? or also check_stdin ?
+ KPrinter::ApplicationType dialog_mode = (force_stdin || nodialog ? KPrinter::StandAlone : KPrinter::StandAlonePersistent);
+ KPrinter::setApplicationType(dialog_mode);
+ if (!force_stdin)
+ KPrinter::addStandardPage(KPrinter::FilesPage);
+
+ KPrinter kprinter;
+ if (nodialog)
+ {
+ KMPrinter *prt(0);
+ KMManager *mgr = KMManager::self();
+
+ mgr->printerList(false);
+ if (!printer.isEmpty())
+ prt = mgr->findPrinter(printer);
+ else
+ prt = mgr->defaultPrinter();
+
+ if (prt == 0)
+ errormsg(i18n("The specified printer or the default printer could not be found."));
+ else if (!prt->autoConfigure(&kprinter))
+ errormsg(i18n("Operation aborted."));
+ }
+ else if (!printer.isEmpty())
+ kprinter.setSearchName(printer);
+ kprinter.setDocName(title);
+ kprinter.initOptions(opts);
+ kprinter.setOption("kde-filelist", files.toStringList().join("@@"));
+ kdDebug( 500 ) << kprinter.option( "kde-filelist" ) << endl;
+ if (ncopies > 0)
+ kprinter.setNumCopies(ncopies);
+
+ if (nodialog)
+ slotPrintRequested(&kprinter);
+ else
+ {
+ dlg = KPrintDialog::printerDialog(&kprinter, 0);
+ if (dlg)
+ {
+ connect(dlg, SIGNAL(printRequested(KPrinter*)), SLOT(slotPrintRequested(KPrinter*)));
+ if( check_stdin )
+ {
+ notif = new QSocketNotifier( 0, QSocketNotifier::Read, this );
+ connect( notif, SIGNAL( activated( int )), this, SLOT( slotGotStdin()));
+ kdDebug( 500 ) << "waiting for input on stdin" << endl;
+ }
+ dlg->exec();
+ delete dlg;
+ }
+ else
+ errormsg(i18n("Unable to construct the print dialog."));
+ }
+
+ QTimer::singleShot(10,kapp,SLOT(quit()));
+}
+
+void hack( KPrintDialog* dlg );
+
+void PrintWrapper::slotGotStdin()
+{
+ delete notif;
+ if ( read( 0, &readchar, 1 ) > 0 )
+ {
+ force_stdin = true;
+ check_stdin = false;
+ dataread = true;
+ dlg->enableDialogPage( 0, false );
+ kdDebug( 500 ) << "got delayed input on stdin" << endl;
+ }
+}
+
+void PrintWrapper::slotPrintRequested(KPrinter *kprinter)
+{
+ // re-initialize docName
+ kprinter->setDocName(QString::null);
+
+ // download files if needed
+ QStringList files = QStringList::split("@@", kprinter->option("kde-filelist"), false), filestoprint;
+ for (QStringList::ConstIterator it=files.begin(); it!=files.end(); ++it)
+ {
+ QString tmpFile;
+ KURL url = KURL::fromPathOrURL(*it);
+ kdDebug( 500 ) << url.url() << endl;
+ if (KIO::NetAccess::download(url, tmpFile, this))
+ {
+ filestoprint << tmpFile;
+ kprinter->setDocName(url.fileName());
+ }
+ }
+
+ if (filestoprint.count() > 1)
+ kprinter->setDocName(i18n("Multiple files (%1)").arg(filestoprint.count()));
+ else if (kprinter->docName().isEmpty())
+ kprinter->setDocName(force_stdin ? "<STDIN>" : "KPrinter");
+ if (filestoprint.count() == 0)
+ {
+ // At this point force_stdin should be true
+ if (!force_stdin)
+ errormsg(i18n("Nothing to print."));
+
+ // print from stdin
+
+# if defined(HAVE_SIGSET)
+ sigset(SIGHUP, signal_handler);
+ sigset(SIGINT, signal_handler);
+ sigset(SIGTERM, signal_handler);
+# elif defined(HAVE_SIGACTION)
+ memset(&action, 0, sizeof(action));
+ action.sa_handler = signal_handler;
+
+ sigaction(SIGHUP, &action, NULL);
+ sigaction(SIGINT, &action, NULL);
+ sigaction(SIGTERM, &action, NULL);
+# else
+ signal(SIGHUP, signal_handler);
+ signal(SIGINT, signal_handler);
+ signal(SIGTERM, signal_handler);
+# endif
+
+ tempFile = locateLocal("tmp","kprinter_")+QString::number(getpid());
+ filestoprint.append(tempFile);
+ fromStdin = true;
+ FILE *fout = fopen(QFile::encodeName(filestoprint[0]),"w");
+ if (!fout) errormsg(i18n("Unable to open temporary file."));
+ char buffer[8192];
+ int s;
+
+ // check for previously read data
+ if ( dataread )
+ fwrite( &readchar, 1, 1, fout );
+ // read stdin and write to temporary file
+ while ((s=fread(buffer,1,sizeof(buffer),stdin)) > 0)
+ fwrite(buffer,1,s,fout);
+
+ s = ftell(fout);
+ fclose(fout);
+ if (s <= 0)
+ {
+ showmsg(i18n("Stdin is empty, no job sent."), 2);
+ QFile::remove(filestoprint[0]);
+ return;
+ }
+ }
+ else if ( docopy )
+ {
+ for ( QStringList::Iterator it=filestoprint.begin(); it!=filestoprint.end(); ++it )
+ {
+ QString tmp = copyfile( *it );
+ if ( tmp.isEmpty() )
+ {
+ errormsg( i18n( "Unable to copy file %1." ).arg( *it ) );
+ return;
+ }
+ *it = tmp;
+ }
+ fromStdin = true;
+ }
+ else
+ fromStdin = false;
+
+ // print all files. Remove it after if printing from
+ // stdin. "kprinter" shouldn't remove temp file itself,
+ // otherwise the temp file might get removed before the
+ // print process finishes.
+ bool ok = kprinter->printFiles(filestoprint, fromStdin);
+
+ if (!ok)
+ showmsg(i18n("Error while printing files"), 2);
+ // Do not show this dialog anymore. Code sould be removed definitively
+ // if nobody complains.
+ /*else
+ {
+ QString msg = i18n("<nobr>File(s) sent to printer <b>%1</b>.</nobr>").arg(kprinter->printerName());
+ showmsg(msg,0);
+ }*/
+}
+
+#include "printwrapper.moc"
diff --git a/kdeprint/kprinter/printwrapper.h b/kdeprint/kprinter/printwrapper.h
new file mode 100644
index 000000000..6c4eed45d
--- /dev/null
+++ b/kdeprint/kprinter/printwrapper.h
@@ -0,0 +1,49 @@
+/*
+ * 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 PRINTWRAPPER_H
+#define PRINTWRAPPER_H
+
+#include <qwidget.h>
+
+class KPrinter;
+class KPrintDialog;
+class QSocketNotifier;
+
+class PrintWrapper : public QWidget
+{
+ Q_OBJECT
+public:
+ PrintWrapper();
+
+public slots:
+ void slotPrint();
+ void slotPrintRequested(KPrinter*);
+
+private slots:
+ void slotGotStdin();
+
+private:
+ bool force_stdin;
+ bool check_stdin;
+ KPrintDialog* dlg;
+ QSocketNotifier* notif;
+};
+
+#endif
diff --git a/kdeprint/printmgr/Makefile.am b/kdeprint/printmgr/Makefile.am
new file mode 100644
index 000000000..b10f8359e
--- /dev/null
+++ b/kdeprint/printmgr/Makefile.am
@@ -0,0 +1,18 @@
+AM_CPPFLAGS = -D_KDEPRINT_COMPILE
+
+INCLUDES = $(all_includes)
+
+kde_module_LTLIBRARIES = kcm_printmgr.la
+
+kcm_printmgr_la_SOURCES = kcmprintmgr.cpp
+kcm_printmgr_la_LDFLAGS = $(all_libraries) -module -avoid-version -no-undefined
+kcm_printmgr_la_LIBADD = -lkdeprint_management
+
+noinst_HEADERS = kcmprintmgr.h
+
+KDE_ICON = printmgr
+
+xdg_apps_DATA = printers.desktop
+
+messages: rc.cpp
+ $(XGETTEXT) *.cpp -o $(podir)/kcmprintmgr.pot
diff --git a/kdeprint/printmgr/hi128-app-printmgr.png b/kdeprint/printmgr/hi128-app-printmgr.png
new file mode 100644
index 000000000..7db5f56b1
--- /dev/null
+++ b/kdeprint/printmgr/hi128-app-printmgr.png
Binary files differ
diff --git a/kdeprint/printmgr/hi16-app-printmgr.png b/kdeprint/printmgr/hi16-app-printmgr.png
new file mode 100644
index 000000000..d6defce21
--- /dev/null
+++ b/kdeprint/printmgr/hi16-app-printmgr.png
Binary files differ
diff --git a/kdeprint/printmgr/hi22-app-printmgr.png b/kdeprint/printmgr/hi22-app-printmgr.png
new file mode 100644
index 000000000..a71ee2817
--- /dev/null
+++ b/kdeprint/printmgr/hi22-app-printmgr.png
Binary files differ
diff --git a/kdeprint/printmgr/hi32-app-printmgr.png b/kdeprint/printmgr/hi32-app-printmgr.png
new file mode 100644
index 000000000..d554b554f
--- /dev/null
+++ b/kdeprint/printmgr/hi32-app-printmgr.png
Binary files differ
diff --git a/kdeprint/printmgr/hi48-app-printmgr.png b/kdeprint/printmgr/hi48-app-printmgr.png
new file mode 100644
index 000000000..13adbd006
--- /dev/null
+++ b/kdeprint/printmgr/hi48-app-printmgr.png
Binary files differ
diff --git a/kdeprint/printmgr/hi64-app-printmgr.png b/kdeprint/printmgr/hi64-app-printmgr.png
new file mode 100644
index 000000000..5d22d215e
--- /dev/null
+++ b/kdeprint/printmgr/hi64-app-printmgr.png
Binary files differ
diff --git a/kdeprint/printmgr/hisc-app-printmgr.svgz b/kdeprint/printmgr/hisc-app-printmgr.svgz
new file mode 100644
index 000000000..f40b4bdfa
--- /dev/null
+++ b/kdeprint/printmgr/hisc-app-printmgr.svgz
Binary files differ
diff --git a/kdeprint/printmgr/kcmprintmgr.cpp b/kdeprint/printmgr/kcmprintmgr.cpp
new file mode 100644
index 000000000..0ffe98ecc
--- /dev/null
+++ b/kdeprint/printmgr/kcmprintmgr.cpp
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ **/
+
+#include "kcmprintmgr.h"
+#include "kdeprint/kmmainview.h"
+
+#include <qlayout.h>
+
+#include <kgenericfactory.h>
+#include <kaboutdata.h>
+#include <kdebug.h>
+#include <klocale.h>
+
+typedef KGenericFactory<KCMPrintMgr, QWidget> KPrintMgrFactory;
+K_EXPORT_COMPONENT_FACTORY( kcm_printmgr, KPrintMgrFactory("kcmprintmgr") )
+
+KCMPrintMgr::KCMPrintMgr(QWidget *parent, const char *name, const QStringList &)
+: KCModule(KPrintMgrFactory::instance(),parent,name)
+{
+ setButtons(KCModule::Ok);
+ setRootOnlyMsg( i18n(
+ "Print management as normal user\n"
+ "Some print management operations may need administrator privileges. Use the\n"
+ "\"Administrator Mode\" button below to start this print management tool with\n"
+ "administrator privileges.") );
+ setUseRootOnlyMsg(false);
+
+ m_mainview = new KMMainView(this,"MainView");
+
+ QVBoxLayout *main_ = new QVBoxLayout(this, 0, 0);
+ main_->addWidget(m_mainview);
+ main_->activate();
+
+ KAboutData *about =
+ new KAboutData(I18N_NOOP("kcmprintmgr"), I18N_NOOP("KDE Printing Management"),
+ 0, 0, KAboutData::License_GPL,
+ I18N_NOOP("(c) 2000 - 2002 Michael Goffioul"));
+ about->addAuthor("Michael Goffioul", 0, "kdeprint@swing.be");
+ setAboutData(about);
+}
+
+QString KCMPrintMgr::quickHelp() const
+{
+ return i18n("<h1>Printers</h1>The KDE printing manager is part of KDEPrint which "
+ "is the interface to the real print subsystem of your Operating System (OS). "
+ "Although it does add some additional functionality of its own to those subsystems, "
+ "KDEPrint depends on them for its functionality. Spooling and filtering tasks, especially, "
+ "are still done by your print subsystem, or the administrative tasks (adding or "
+ "modifying printers, setting access rights, etc.)<br/> "
+ "What print features KDEPrint supports is therefore heavily dependent on your chosen print "
+ "subsystem. For the best support in modern printing, the KDE Printing Team recommends "
+ "a CUPS based printing system.");
+}
+
+KCMPrintMgr::~KCMPrintMgr()
+{
+}
diff --git a/kdeprint/printmgr/kcmprintmgr.h b/kdeprint/printmgr/kcmprintmgr.h
new file mode 100644
index 000000000..7aa43ef58
--- /dev/null
+++ b/kdeprint/printmgr/kcmprintmgr.h
@@ -0,0 +1,39 @@
+/*
+ * 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 KCMPRINTMGR_H
+#define KCMPRINTMGR_H
+
+#include <kcmodule.h>
+
+class KMMainView;
+
+class KCMPrintMgr : public KCModule
+{
+public:
+ KCMPrintMgr(QWidget *parent, const char *name, const QStringList &);
+ ~KCMPrintMgr();
+
+ QString quickHelp() const;
+
+private:
+ KMMainView *m_mainview;
+};
+
+#endif
diff --git a/kdeprint/printmgr/printers.desktop b/kdeprint/printmgr/printers.desktop
new file mode 100644
index 000000000..0b5d605e9
--- /dev/null
+++ b/kdeprint/printmgr/printers.desktop
@@ -0,0 +1,235 @@
+[Desktop Entry]
+Exec=kcmshell printers
+Icon=printmgr
+Type=Application
+DocPath=kdeprint/index.html
+MimeType=print/manager;
+
+X-KDE-ModuleType=Library
+X-KDE-Library=printmgr
+X-KDE-RootOnly=true
+X-KDE-HasReadOnlyMode=true
+
+Name=Printers
+Name[af]=Drukkers
+Name[ar]=الطابعات
+Name[be]=Друкаркі
+Name[bg]=Принтери
+Name[bn]=মুদ্রণ
+Name[br]=Moullerezioù
+Name[bs]=Štampači
+Name[ca]=Impressores
+Name[cs]=Tiskárny
+Name[csb]=Drëkerë
+Name[cy]=Argraffyddion
+Name[da]=Printere
+Name[de]=Drucker
+Name[el]=Εκτυπωτές
+Name[eo]=Printiloj
+Name[es]=Impresoras
+Name[et]=Printerid
+Name[eu]=Inprimagailuak
+Name[fa]=چاپگرها
+Name[fi]=Tulostimet
+Name[fr]=Imprimantes
+Name[ga]=Printéirí
+Name[gl]=Impresoras
+Name[he]=מדפסות
+Name[hi]=प्रिंटर
+Name[hr]=Pisači
+Name[hu]=Nyomtató
+Name[is]=Prentarar
+Name[it]=Stampanti
+Name[ja]=プリンタ
+Name[ka]=პრინტერები
+Name[kk]=Принтерлер
+Name[km]=ម៉ាស៊ីន​បោះពុម្ព
+Name[lo]=ເຄື່ອງພິມ - K
+Name[lt]=Spausdintuvai
+Name[lv]=Printeri
+Name[mk]=Печатачи
+Name[mn]=Хэвлэгч
+Name[ms]=Pencetak
+Name[nb]=Skrivere
+Name[nds]=Druckers
+Name[ne]=मुद्रक
+Name[nn]=Skrivarar
+Name[nso]=Digatisi
+Name[pa]=ਪਰਿੰਟਰ
+Name[pl]=Drukarki
+Name[pt]=Impressoras
+Name[pt_BR]=Impressoras
+Name[ro]=Imprimante
+Name[ru]=Принтеры
+Name[rw]=Mucapyi
+Name[se]=Čálánat
+Name[sk]=Tlačiarne
+Name[sl]=Tiskalniki
+Name[sr]=Штампачи
+Name[sr@Latn]=Štampači
+Name[ss]=Tishiceleli
+Name[sv]=Skrivare
+Name[ta]=அச்சியந்திரம்
+Name[te]=ప్రింటర్లు
+Name[tg]=Чопгарҳо
+Name[th]=เครื่องพิมพ์
+Name[tr]=Yazıcılar
+Name[tt]=Basaqlar
+Name[uk]=Принтери
+Name[uz]=Printerlar
+Name[uz@cyrillic]=Принтерлар
+Name[ven]=Dziphirinthara
+Name[vi]=Máy in
+Name[wa]=Sicrireces
+Name[xh]=Abashicileli
+Name[zh_CN]=打印机
+Name[zh_TW]=印表機
+Name[zu]=Abashicileli
+
+Comment=Printing system configuration (printers, jobs, classes, ...)
+Comment[af]=Drukker substelsel opstelling (drukkers, werke, klasse, ...)
+Comment[ar]=إعداد نظام الطباعة (الطابعات, المهمات, الفئات ...)
+Comment[az]=Çap Etmə sistemi quraşdırması (çap edicilər, vəzifələr, siniflər, ...)
+Comment[be]=Настаўленні сістэмы друку (друкаркі, заданні, класы, ...)
+Comment[bg]=Настройване на системата за печат
+Comment[bn]=মুদ্রণব্যবস্থার কনফিগারেশন (printers, jobs, classes, ...)
+Comment[bs]=Podešavanje sistema štampe (štampači, zadaci, klase, ...)
+Comment[ca]=Configuració del sistema d'impressió (impressores, tasques, classes...)
+Comment[cs]=Nastavení tiskového systému (tiskárny, úlohy, třídy, ...)
+Comment[csb]=Kònfigùracëjô systemë drëkòwaniô (drëkrë, pòlétë, klasë, ...)
+Comment[cy]=Ffurfweddu cysawd argraffu (argraffyddion, swyddi, dosbarthidau, ...)
+Comment[da]=Printersystemindstilling (printere, job, klasser, ...)
+Comment[de]=Einrichtung des Drucksystems (Drucker, Aufträge, Klassen ...)
+Comment[el]=Ρύθμιση συστήματος εκτύπωσης (εκτυπωτές, εργασίες, κλάσεις, ...)
+Comment[eo]=Agordo de printiloj, taskoj, klasoj,...
+Comment[es]=Configuración del sistema de impresión (impresoras, trabajos, clases...)
+Comment[et]=Trükkimissüsteemi seadistamine (printerid, tööd, klassid...)
+Comment[eu]=Inprimaketa sistemaren konfigurazioa (inprimagailuak, lanak, claseak, ...)
+Comment[fa]=پیکربندی سیستم چاپ )چاپگرها، کارها، رده‌ها و ...(
+Comment[fi]=Tulostusjärjestelmän asetukset (tulostimet, työt, luokat, ...)
+Comment[fr]=Configuration du système d'impression (imprimantes, travaux d'impression, classes...)
+Comment[fy]=Ynstellings fan it printsysteem (printers, taken, klassen, ...)
+Comment[gl]=Configuración do sistema de Impresión (impresoras, traballos, clases, ...)
+Comment[he]=שינוי הגדרות מערכת ההדפסה (מדפסות, עבודות, מחלקות...)
+Comment[hi]=प्रिंटर तंत्र कॉन्फ़िगरेशन (प्रिंटर,कार्य,क्लासेस...)
+Comment[hr]=Konfiguriranje ispisnog sustava (pisači, zadaci, klase...)
+Comment[hu]=A nyomtatási rendszer beállításai
+Comment[is]=Stillingar prentkerfis KDE forrita (prentara, verk, flokka,...)
+Comment[it]=Configurazione del sistema di stampa (stampanti, lavori, classi, ...)
+Comment[ja]=印刷システムの設定 (プリンタ、ジョブ、クラスなど)
+Comment[ka]=ბეჭდვის სისტემის კონფიგურაცია (პრინტერები, დავალებები, კლასები,...)
+Comment[kk]=Басып шығару жүйесін баптау (принтерлер, тапсырмалар, кластар, ...)
+Comment[km]=ការ​កំណត់​រចនាសម្ព័ន្ធ​ប្រព័ន្ធ​បោះពុម្ព (ម៉ាស៊ីន​បោះពុម្ព ការងារ សន្ដាន...)
+Comment[lo]=ປັບແຕ່ງລະບົບການພິມ (ເຄື່ອງພິມ,ງານພິມ,ຄລາສ, ...)
+Comment[lt]=Spausdinimo sistemos konfigūravimas (spausdintuvai, užduotys, klasės, ...)
+Comment[lv]=Drukas sistēmas konfigurācija (drukas iekārtas, darbi, klases, ...)
+Comment[mk]=Конфигурација на печатарскиот систем (печатачи, задачи, класи, ...)
+Comment[mn]=Хэвлэх системийн тохируулга(Хэвлэгч,Даалгавар, Ангиуд...)
+Comment[ms]=Konfigurasi sistem pencetakan [pencetak, kerja, kelas, ...)
+Comment[mt]=Konfigurazzjoni tas-sistema tal-ipprintjar (printers, xogħol, klassijiet, ...)
+Comment[nb]=Tilpass utskriftssystemet (skrivere, jobber, klasser …)
+Comment[nds]=Instellen för dat Drucksysteem (Druckers, Opgaven, Klassen, ...)
+Comment[ne]=मुद्रण प्रणाली कन्फिगरेसन (मुद्रक, कार्य, बग, ...)
+Comment[nl]=Configuratie van het afdruksysteem (printers, taken, klassen, ...)
+Comment[nn]=Oppsett av utskriftssystem (skrivarar, jobbar, klassar, …)
+Comment[nso]=Peakanyo ya system ya kgatiso (digatisi, mesomo, maemo,...)
+Comment[pa]=ਪਰਿੰਟਿੰਗ ਸਿਸਟਮ ਸੰਰਚਨਾ (ਪਰਿੰਟਰ, ਕੰਮ, ਕਲਾਸ, ...)
+Comment[pl]=Konfiguracja systemu drukowania (drukarki, zadania, klasy, ...)
+Comment[pt]=Configuração do sistema de impressão (impressoras, tarefas, classes, ...)
+Comment[pt_BR]=Configuração do sistema de impressão (impressoras, trabalhos, classes, ...)
+Comment[ro]=Configurează sistemul de tipărire (imprimante, lucrări, clase)
+Comment[ru]=Настройки системы печати (принтеры, задания, классы...)
+Comment[rw]=Iboneza rya sisitemu y'icapa (Mucapyi,imirimo,inzego,..)
+Comment[se]=Heivet čálihanvuogádaga (čálániid, barggut, luohkkát, …)
+Comment[sk]=Nastavenie systému tlače (tlačiarne, úlohy, triedy, ...)
+Comment[sl]=Nastavitev sistema tiskanja (tiskalniki, opravila, razredi ...)
+Comment[sr]=Подешавање система за штампање (штампачи, послови, класе, ...)
+Comment[sr@Latn]=Podešavanje sistema za štampanje (štampači, poslovi, klase, ...)
+Comment[sv]=Anpassa skrivarsystem (skrivare, jobb, klasser...)
+Comment[ta]=அச்சியந்திர சாதன வடிவமைப்பு (அச்சியந்திரங்கள், வேலைகள், பிரிவுகள், ...)
+Comment[tg]= Танзимоти системаи чоп (чопгарҳо, корҳо, синфҳо ва ғайра)
+Comment[th]=ปรับแต่งระบบการพิมพ์ (เครื่องพิมพ์, งานพิมพ์, คลาส, ...)
+Comment[tr]=Yazdırma sistemi kurulumu (yazıcılar, işler, sınıflar, ...)
+Comment[tt]=Bastıru sistemeneñ caylawı: basaqlar, eşlär, törlär kebek närsä
+Comment[uk]=Налаштування системи друку (принтери, задачі, класи, ...)
+Comment[uz]=Bosib chiqarish tizimini moslash (printerlar, vazifalar, sinflar...)
+Comment[uz@cyrillic]=Босиб чиқариш тизимини мослаш (принтерлар, вазифалар, синфлар...)
+Comment[ven]=Nzudzanyo ya maitele au phirintha (Dziphirinthara, mishumo, dzikilasi,...)
+Comment[vi]=Cấu hình hệ thống in ấn (máy in, tác vụ in, lớp, ...)
+Comment[wa]=Apontiaedje do sistinme d' imprimaedje (sicrireces, bouyes, classes...)
+Comment[xh]=Uqwalaselo lwendlela yoshicilelo (abashicileli, imisebenzi, iintlobo, ...)
+Comment[zh_CN]=打印系统配置(打印机、任务、类等等)
+Comment[zh_TW]=列印系統設定 (印表機、工作、類別等等)
+Comment[zu]=Inhlanganiselo yesistimu yokushicilelo (abashicileli, imisebenzi, amakilasi, ...)
+
+Keywords=print,printer,printing management
+Keywords[af]=print,printer,printing bestuuring
+Keywords[ar]=طبع, طباعة, ادارة الطابعات
+Keywords[az]=çap et,çap edici,çap etmə idarəsi
+Keywords[be]=Друк,Друкаваць,Друкарка,Кіраванне друкам,print,printer,printing management
+Keywords[bg]=печат, принтер, отпечатване, управление, система, print, printer, printing management
+Keywords[ca]=imprimir,impressora,gestió de la impressió
+Keywords[cs]=tisk,tiskárna,správa tisku
+Keywords[csb]=drëkùjë,drëker,sprôwianié wëdrëkama
+Keywords[cy]=argraffu,argraffydd,rheoli argraffu
+Keywords[da]=udskriv,printer,printerhåndtering
+Keywords[de]=Druck,Druckaufträge,Druckerverwaltung
+Keywords[el]=εκτύπωση,εκτυπωτής,διαχείριση εκτυπώσεων
+Keywords[eo]=printo,printado,presado,presilo,presadminsitrado
+Keywords[es]=imprimir,impresora,gestión de impresión
+Keywords[et]=trükkimine,printer,trükkimise haldamine
+Keywords[eu]=inprimatu,inprimagailua,inprimaketa kudeaketa
+Keywords[fa]=چاپ، چاپگر، مدیریت چاپ
+Keywords[fi]=tulostus,tulostin,tulostuksenhallinta
+Keywords[fr]=impression,imprimante,système d'impression
+Keywords[fy]=print,printer,printing management,printbehear,printsje
+Keywords[ga]=priontáil,printéir,bainisteoireacht priontála
+Keywords[gl]=imprimir,impresora,xestión de impresión
+Keywords[he]=הדפסה,מדפסת,ניהול הדפסה, print,printer,printing management
+Keywords[hi]=छापा,प्रिंटर,छपाई प्रबंधन
+Keywords[hr]=print,printer,printing management,ispis,pisač,upravljanje ispisivanjem
+Keywords[hu]=nyomtatás,nyomtató,nyomtatáskezelés
+Keywords[is]=prentun,prentari,prentstjórnun
+Keywords[it]=stampa,stampante,gestione stampa
+Keywords[ja]=印刷, プリンタ, 印刷管理
+Keywords[km]=បោះពុម្ព,ម៉ាស៊ីន​បោះពុម្ព,គ្រប់គ្រង​ការ​បោះពុម្ព
+Keywords[lo]=ພິມ,ເຄື່ອງພິມ,ຈັດການພິມ
+Keywords[lt]=print,printer,printing management,spausdinti,spausdintuvas,spausdinimo tvarkymas
+Keywords[lv]=druka,drukas iekārta,drukāšanas menedžments
+Keywords[mk]=print,printer,printing management,печати,печатач,менаџмент на печатење
+Keywords[mn]=Хэвлэх,Хэвлэгч,Хэвлэгчийн удирдлага
+Keywords[ms]=cetak, pencetak, pengurusan pencetakan
+Keywords[mt]=print,printer,printing management,stampar,printja,stampa,ipprintja
+Keywords[nb]=utskrift,skriver,utskriftskontroll
+Keywords[nds]=drucken,Drucker,Opgaav,Opgaven,Druckopgaav,Druckopgaven,Opdrag,Druckopdrag,Opdrääg,Druckopdrääg
+Keywords[ne]=मुद्रण, मुद्रक, मुद्रण व्यवस्थापन
+Keywords[nl]=print,printer,printing management,afdrukbeheer,afdrukken
+Keywords[nn]=utskrift,skrivar,utskriftshandsaming
+Keywords[nso]=taolo ya kgatiso,segatisi,kgatiso
+Keywords[pa]=ਛਾਪਣ,ਪਰਿੰਟਰ,ਪਰਿੰਟ,ਪਰਿੰਟ ਮੈਨੇਜਰ
+Keywords[pl]=drukuj,drukarka,zarządzanie drukowaniem
+Keywords[pt]=imprimir,impressora,gestão de impressão
+Keywords[pt_BR]=imprimir,impressora,gerenciamento de impressão
+Keywords[ro]=tipărire,printare,imprimantă,administrare tipărire
+Keywords[rw]=gucapa,mucapyi,igenzura ry'icapa
+Keywords[se]=čáliheapmi,čálán,čálihangieđahalli
+Keywords[sk]=tlač,tlačiareň,správa tlače
+Keywords[sl]=tiskanje,tiskalnik,upravljanje tiskanja
+Keywords[sr]=print,printer,printing management,штампање,штампач,управљање штампом
+Keywords[sr@Latn]=print,printer,printing management,štampanje,štampač,upravljanje štampom
+Keywords[sv]=skriv ut,skrivare,skrivarhantering
+Keywords[ta]=அச்சு, அச்சியந்திரம்,அச்சு மேலாளர்
+Keywords[th]=พิมพ์,เครื่องพิมพ์,จัดการการพิมพ์
+Keywords[tr]=yazdır,yazıcı,yazıcı yönetimi
+Keywords[uk]=друк,принтер,керування друком
+Keywords[uz]=printer,bosib chiqarish,bosib chiqarishni boshqarish
+Keywords[uz@cyrillic]=принтер,босиб чиқариш,босиб чиқаришни бошқариш
+Keywords[ven]=u phirintha,phirinthara,vhulanguli ha phirinthara
+Keywords[vi]=in ấn,máy in,quản lí in ấn
+Keywords[wa]=rexhe,sicrirece,manaedjmint di l' imprimaedje,imprimaedje
+Keywords[xh]=shicilela,umshicileli,uphatho lokushicilela
+Keywords[zh_CN]=print,printer,printing management,打印,打印机,打印管理
+Keywords[zh_TW]=print,printer,printing management,列印,印表機,列印管理
+Keywords[zu]=shicilela,umshicileli,abaphathi boshicilelo
+
+Categories=Qt;KDE;X-KDE-settings-hardware;Settings;
diff --git a/kdeprint/slave/Makefile.am b/kdeprint/slave/Makefile.am
new file mode 100644
index 000000000..b4352d4d8
--- /dev/null
+++ b/kdeprint/slave/Makefile.am
@@ -0,0 +1,22 @@
+AM_CPPFLAGS = -D_KDEPRINT_COMPILE
+
+SUBDIRS = mimetypes templates
+
+INCLUDES= $(all_includes)
+
+kde_module_LTLIBRARIES = kio_print.la
+
+kio_print_la_SOURCES = kio_print.cpp
+kio_print_la_LIBADD = $(LIB_KIO) -lkdeprint
+kio_print_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
+
+METASOURCES = AUTO
+
+noinst_HEADERS = kio_print.h
+
+# Services
+servicesdir = $(kde_servicesdir)
+services_DATA = print.protocol printdb.protocol
+
+messages: rc.cpp
+ $(XGETTEXT) *.cpp -o $(podir)/kio_print.pot
diff --git a/kdeprint/slave/kio_print.cpp b/kdeprint/slave/kio_print.cpp
new file mode 100644
index 000000000..6857ef2e6
--- /dev/null
+++ b/kdeprint/slave/kio_print.cpp
@@ -0,0 +1,920 @@
+/*
+ * 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.
+ **/
+
+#include "kio_print.h"
+#include <kdeprint/kmprinter.h>
+#include <kdeprint/kmmanager.h>
+#include <kdeprint/kmjobmanager.h>
+#include <kdeprint/kmjob.h>
+#include <kdeprint/driver.h>
+
+#include <qfile.h>
+#include <qtextstream.h>
+#include <klocale.h>
+#include <kdebug.h>
+#include <kinstance.h>
+#include <kio/global.h>
+#include <kstandarddirs.h>
+#include <kiconloader.h>
+#include <kmimetype.h>
+#include <kio/job.h>
+#include <kapplication.h>
+#include <kcmdlineargs.h>
+#include <kaboutdata.h>
+#include <kprocess.h>
+#include <ktempfile.h>
+#include <qfile.h>
+#include <qdom.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+
+#define PRINT_DEBUG kdDebug(7019) << "kio_print: "
+
+extern "C"
+{
+ int KDE_EXPORT kdemain(int argc, char **argv);
+}
+
+void addAtom(KIO::UDSEntry& entry, unsigned int ID, long l, const QString& s = QString::null)
+{
+ KIO::UDSAtom atom;
+ atom.m_uds = ID;
+ atom.m_long = l;
+ atom.m_str = s;
+ entry.append(atom);
+}
+
+static void createDirEntry(KIO::UDSEntry& entry, const QString& name, const QString& url, const QString& mime)
+{
+ entry.clear();
+ addAtom(entry, KIO::UDS_NAME, 0, name);
+ addAtom(entry, KIO::UDS_FILE_TYPE, S_IFDIR);
+ addAtom(entry, KIO::UDS_ACCESS, 0500);
+ addAtom(entry, KIO::UDS_MIME_TYPE, 0, mime);
+ addAtom(entry, KIO::UDS_URL, 0, url);
+ PRINT_DEBUG << "creating dir entry url=" << url << " mimetype=" << mime << endl;
+ addAtom(entry, KIO::UDS_SIZE, 0);
+ //addAtom(entry, KIO::UDS_GUESSED_MIME_TYPE, 0, "application/octet-stream");
+}
+
+static void createFileEntry(KIO::UDSEntry& entry, const QString& name, const QString& url, const QString& mime)
+{
+ entry.clear();
+ addAtom(entry, KIO::UDS_NAME, 0, name);
+ addAtom(entry, KIO::UDS_FILE_TYPE, S_IFREG);
+ addAtom(entry, KIO::UDS_URL, 0, url);
+ addAtom(entry, KIO::UDS_ACCESS, 0400);
+ addAtom(entry, KIO::UDS_MIME_TYPE, 0, mime);
+ addAtom(entry, KIO::UDS_SIZE, 0);
+ addAtom(entry, KIO::UDS_GUESSED_MIME_TYPE, 0, "application/octet-stream");
+}
+
+QString buildMenu(const QStringList& items, const QStringList& links, int active)
+{
+ if (items.count() == 0 || items.count() != links.count())
+ return QString("<td height=20 class=\"menu\">&nbsp;</td>");
+
+ QString s;
+ int index = 0;
+ for (QStringList::ConstIterator it1=items.begin(), it2=links.begin(); it1!=items.end() && it2!=links.end(); ++it1, ++it2, index++)
+ {
+ if (index == active)
+ s.append("<td height=20 class=\"menuactive\">&nbsp; ").append(*it1).append("&nbsp;</td>");
+ else
+ s.append("<td height=20 class=\"menu\">&nbsp; <a class=\"menu\" href=\"").append(*it2).append("\">").append(*it1).append("</a>&nbsp;</td>");
+ if ((unsigned int)index < items.count()-1)
+ s.append("<td height=20 class=\"menu\">|</td>");
+ }
+ return s;
+}
+
+QString buildOptionRow(DrBase *opt, bool f)
+{
+ QString s("<tr class=\"%1\"><td width=\"41%\">%1</td><td width=\"59%\">%1</td></tr>\n");
+ s = s.arg(f ? "contentwhite" : "contentyellow").arg(opt->get("text")).arg(opt->prettyText());
+ return s;
+}
+
+QString buildGroupTable(DrGroup *grp, bool showHeader = true)
+{
+ QString s("<tr class=\"top\"><td colspan=\"2\">%1</td></tr>\n");
+ if (showHeader)
+ s = s.arg(grp->get("text"));
+ else
+ s = QString::null;
+
+ QPtrListIterator<DrBase> oit(grp->options());
+ bool f(false);
+ for (; oit.current(); ++oit, f = !f)
+ s.append(buildOptionRow(oit.current(), f));
+
+ QPtrListIterator<DrGroup> git(grp->groups());
+ for (; git.current(); ++git)
+ s.append(buildGroupTable(git.current()));
+
+ return s;
+}
+
+int kdemain(int argc, char **argv)
+{
+ KInstance instance("kio_print");
+
+ PRINT_DEBUG << "starting ioslave" << endl;
+ if (argc != 4)
+ {
+ fprintf(stderr, "Usage: kio_print protocol domain-socket1 domain-socket2\n");
+ exit(-1);
+ }
+
+ /* create fake KApplicatiom object, needed for job stuffs */
+ KAboutData about( "kio_print", "kio_print", "fake_version",
+ "KDEPrint IO slave", KAboutData::License_GPL, "(c) 2003, Michael Goffioul" );
+ KCmdLineArgs::init( &about );
+ KApplication app;
+
+ KIO_Print slave(argv[2], argv[3]);
+ slave.dispatchLoop();
+
+ PRINT_DEBUG << "done" << endl;
+ return 0;
+}
+
+KIO_Print::KIO_Print(const QCString& pool, const QCString& app)
+: KIO::SlaveBase("print", pool, app)
+{
+}
+
+void KIO_Print::listDir(const KURL& url)
+{
+ if ( url.protocol() == "printdb" )
+ {
+ listDirDB( url );
+ return;
+ }
+
+ QStringList path = QStringList::split('/', url.path(), false);
+
+ PRINT_DEBUG << "listing " << url.path() << endl;
+ QString group = path[0].lower();
+ if (path.count() == 0)
+ listRoot();
+ else if (path.count() == 1 && group != "manager" && group != "jobs")
+ {
+ PRINT_DEBUG << "listing group " << path[0] << endl;
+
+ int mask;
+ QString mimeType;
+ KIO::UDSEntry entry;
+
+ if (group == "printers")
+ {
+ mask = KMPrinter::Printer;
+ mimeType = "print/printer";
+ }
+ else if (group == "classes")
+ {
+ mask = KMPrinter::Class | KMPrinter::Implicit;
+ mimeType = "print/class";
+ }
+ else if (group == "specials")
+ {
+ mask = KMPrinter::Special;
+ mimeType = "print/printer";
+ }
+ else
+ {
+ error(KIO::ERR_DOES_NOT_EXIST, url.url());
+ return;
+ }
+
+ QPtrListIterator<KMPrinter> it(*(KMManager::self()->printerList()));
+ for (;it.current();++it)
+ {
+ if (!(it.current()->type() & mask) || !it.current()->instanceName().isEmpty())
+ {
+ PRINT_DEBUG << "rejecting " << it.current()->name() << endl;
+ continue;
+ }
+
+ //createFileEntry(entry, it.current()->name(), ("print:/"+path[0]+"/"+it.current()->name()), mimeType, "text/html", S_IFDIR);
+ createDirEntry(entry, it.current()->name(), ("print:/"+group+"/"+KURL::encode_string_no_slash(it.current()->name())), mimeType);
+ PRINT_DEBUG << "accepting " << it.current()->name() << endl;
+ listEntry(entry, false);
+ }
+
+ listEntry(KIO::UDSEntry(), true);
+ finished();
+ }
+ else
+ {
+ //error(KIO::ERR_UNSUPPORTED_ACTION, i18n("Unsupported path %1").arg(url.path()));
+ // better do nothing
+ listEntry(KIO::UDSEntry(), true);
+ totalSize(0);
+ finished();
+ }
+}
+
+void KIO_Print::listRoot()
+{
+ PRINT_DEBUG << "listing root entry" << endl;
+
+ KIO::UDSEntry entry;
+
+ // Classes entry
+ createDirEntry(entry, i18n("Classes"), "print:/classes", "print/folder");
+ listEntry(entry, false);
+
+ // Printers entry
+ createDirEntry(entry, i18n("Printers"), "print:/printers", "print/folder");
+ listEntry(entry, false);
+
+ // Specials entry
+ createDirEntry(entry, i18n("Specials"), "print:/specials", "print/folder");
+ listEntry(entry, false);
+
+ // Management entry
+ //createFileEntry(entry, i18n("Manager"), "print:/manager", "print/manager", QString::null, S_IFDIR);
+ createDirEntry(entry, i18n("Manager"), "print:/manager", "print/manager");
+ listEntry(entry, false);
+
+ // Jobs entry
+ createDirEntry(entry, i18n("Jobs"), "print:/jobs", "print/jobs");
+ listEntry(entry, false);
+
+ // finish
+ totalSize(4);
+ listEntry(entry, true);
+ finished();
+}
+
+void KIO_Print::listDirDB( const KURL& url )
+{
+ PRINT_DEBUG << "listDirDB: " << url << endl;
+
+ QStringList pathComps = QStringList::split( '/', url.path(), false );
+ KURL remUrl;
+
+ remUrl.setProtocol( "http" );
+ remUrl.setHost( url.host() );
+ remUrl.setPort( url.port() );
+ remUrl.setPath( "/list-data.cgi" );
+ switch ( pathComps.size() )
+ {
+ case 0: /* list manufacturers */
+ remUrl.addQueryItem( "type", "makes" );
+ break;
+ case 1: /* list printers for the given manufacturer */
+ remUrl.addQueryItem( "type", "printers" );
+ remUrl.addQueryItem( "make", pathComps[ 0 ] );
+ break;
+ case 2: /* list drivers for given printer */
+ remUrl.addQueryItem( "type", "drivers" );
+ remUrl.addQueryItem( "printer", pathComps[ 1 ] );
+ break;
+ default:
+ error( KIO::ERR_UNSUPPORTED_ACTION, "Not implemented" );
+ return;
+ }
+ remUrl.addQueryItem( "format", "xml" );
+
+ if ( getDBFile( remUrl ) )
+ {
+ QDomDocument doc;
+ if ( doc.setContent( &m_httpBuffer, false ) )
+ {
+ QDomNodeList l;
+ KIO::UDSEntry entry;
+ switch ( pathComps.size() )
+ {
+ case 0:
+ l = doc.documentElement().elementsByTagName( "make" );
+ for ( unsigned int i=0; i<l.count(); i++ )
+ {
+ QString make = l.item( i ).toElement().text();
+ KURL makeUrl = url;
+ makeUrl.addPath( "/" + make );
+ createDirEntry( entry, make, makeUrl.url(), "print/folder" );
+ listEntry( entry, false );
+ PRINT_DEBUG << "make: " << make << endl;
+ }
+ break;
+ case 1:
+ l = doc.documentElement().elementsByTagName( "printer" );
+ for ( unsigned int i=0; i<l.count(); i++ )
+ {
+ QString ID, name;
+ for ( QDomNode n=l.item( i ).firstChild(); !n.isNull(); n=n.nextSibling() )
+ {
+ QDomElement e = n.toElement();
+ if ( e.tagName() == "id" )
+ ID = e.text();
+ else if ( e.tagName() == "model" )
+ name = e.text();
+ }
+ if ( !ID.isEmpty() && !name.isEmpty() )
+ {
+ KURL printerUrl = url;
+ printerUrl.addPath( "/" + ID );
+ createDirEntry( entry, name, printerUrl.url(), "print/printermodel" );
+ listEntry( entry, false );
+ PRINT_DEBUG << "printer: " << ID << endl;
+ }
+ }
+ break;
+ case 2:
+ l = doc.documentElement().elementsByTagName( "driver" );
+ for ( unsigned int i=0; i<l.count(); i++ )
+ {
+ QString driver = l.item( i ).toElement().text();
+ KURL driverUrl = url;
+ driverUrl.addPath( "/" + driver );
+ createFileEntry( entry, driver, driverUrl.url(), "print/driver" );
+ listEntry( entry, false );
+ PRINT_DEBUG << "driver: " << driver << endl;
+ }
+ break;
+ default:
+ error( KIO::ERR_UNSUPPORTED_ACTION, "Not implemented" );
+ return;
+ }
+ listEntry( KIO::UDSEntry(), true );
+ finished();
+ }
+ else
+ {
+ if ( m_httpBuffer.buffer().size() == 0 )
+ error( KIO::ERR_INTERNAL, i18n( "Empty data received (%1)." ).arg( url.host() ) );
+ else
+ error( KIO::ERR_INTERNAL, i18n( "Corrupted/incomplete data or server error (%1)." ).arg( url.host() ) );
+ }
+ }
+ /*
+ * If error occured while downloading, error has been called by
+ * getDBFile. No need for a "else" statement.
+ */
+}
+
+void KIO_Print::stat(const KURL& url)
+{
+ if ( url.protocol() == "printdb" )
+ {
+ statDB( url );
+ return;
+ }
+
+ PRINT_DEBUG << "stat: " << url.url() << endl;
+ QStringList path = QStringList::split('/', url.encodedPathAndQuery(-1), false);
+ KIO::UDSEntry entry;
+ QString mime;
+ bool err(false);
+
+ PRINT_DEBUG << "path components: " << path.join(", ") << endl;
+
+ switch (path.count())
+ {
+ case 0:
+ createDirEntry(entry, i18n("Print System"), "print:/", "print/folder");
+ break;
+ case 1:
+ if (path[0].lower() == "classes")
+ createDirEntry(entry, i18n("Classes"), "print:/classes", "print/folder");
+ else if (path[0].lower() == "printers")
+ createDirEntry(entry, i18n("Printers"), "print:/printers", "print/folder");
+ else if (path[0].lower() == "specials")
+ createDirEntry(entry, i18n("Specials"), "print:/specials", "print/folder");
+ else if (path[0].lower() == "manager")
+ createDirEntry(entry, i18n("Manager"), "print:/manager", "print/manager");
+ else if (path[0].lower().startsWith("jobs"))
+ createFileEntry(entry, i18n("Jobs"), url.url(), "text/html");
+ else
+ err = true;
+ break;
+ case 2:
+ if (path[0].lower() == "printers")
+ mime = "print/printer";
+ else if (path[0].lower() == "classes")
+ mime = "print/class";
+ else if (path[0].lower() == "specials")
+ mime = "print/printer";
+ else
+ err = true;
+ createFileEntry(entry, path[1], "print:/"+path[0]+"/"+path[1], "text/html");
+ break;
+ }
+
+ if (!err)
+ {
+ statEntry(entry);
+ finished();
+ }
+ else
+ error(KIO::ERR_DOES_NOT_EXIST, url.path());
+}
+
+void KIO_Print::statDB( const KURL& url )
+{
+ PRINT_DEBUG << "statDB: " << url << endl;
+ KIO::UDSEntry entry;
+ QStringList pathComps = QStringList::split( '/', url.path(), false );
+ if ( pathComps.size() == 3 )
+ createFileEntry( entry, i18n( "Printer driver" ), url.url(), "print/driver" );
+ else
+ createDirEntry( entry, i18n( "On-line printer driver database" ), url.url(), "inode/directory" );
+ statEntry( entry );
+ finished();
+}
+
+bool KIO_Print::getDBFile( const KURL& src )
+{
+ PRINT_DEBUG << "downloading " << src.url() << endl;
+
+ /* re-initialize the internal buffer */
+ if ( m_httpBuffer.isOpen() )
+ m_httpBuffer.close();
+ m_httpError = 0;
+ m_httpBuffer.open( IO_WriteOnly|IO_Truncate ); // be sure to erase the existing data
+
+ /* start the transfer job */
+ KIO::TransferJob *job = KIO::get( src, false, false );
+ connect( job, SIGNAL( result( KIO::Job* ) ), SLOT( slotResult( KIO::Job* ) ) );
+ connect( job, SIGNAL( data( KIO::Job*, const QByteArray& ) ), SLOT( slotData( KIO::Job*, const QByteArray& ) ) );
+ connect( job, SIGNAL( totalSize( KIO::Job*, KIO::filesize_t ) ), SLOT( slotTotalSize( KIO::Job*, KIO::filesize_t ) ) );
+ connect( job, SIGNAL( processedSize( KIO::Job*, KIO::filesize_t ) ), SLOT( slotProcessedSize( KIO::Job*, KIO::filesize_t ) ) );
+ kapp->enter_loop();
+ m_httpBuffer.close();
+
+ /* return the result */
+ if ( m_httpError != 0 )
+ error( m_httpError, m_httpErrorTxt );
+ return ( m_httpError == 0 );
+}
+
+void KIO_Print::getDB( const KURL& url )
+{
+ PRINT_DEBUG << "downloading PPD file for " << url.url() << endl;
+
+ QStringList pathComps = QStringList::split( '/', url.path(), false );
+ if ( pathComps.size() != 3 )
+ error( KIO::ERR_MALFORMED_URL, url.url() );
+ else
+ {
+ KURL remUrl;
+
+ remUrl.setProtocol( "http" );
+ remUrl.setHost( url.host() );
+ remUrl.setPath( "/ppd-o-matic.cgi" );
+ remUrl.addQueryItem( "driver", pathComps[ 2 ] );
+ remUrl.addQueryItem( "printer", pathComps[ 1 ] );
+
+ if ( getDBFile( remUrl ) )
+ {
+ mimeType( "text/plain" );
+ data( m_httpBuffer.buffer() );
+ finished();
+ }
+ /*
+ * no "else" statement needed, the error has
+ * already been emitted by the getDBFile function
+ */
+ }
+}
+
+void KIO_Print::slotResult( KIO::Job *j )
+{
+ /*
+ * store slave results for later user (job gets deleted
+ * after this function). Store only if no other error
+ * occured previously (when writing to the buffer).
+ */
+ if ( m_httpError == 0 )
+ {
+ m_httpError = j->error();
+ m_httpErrorTxt = j->errorText();
+ }
+ kapp->exit_loop();
+}
+
+void KIO_Print::slotData( KIO::Job *j, const QByteArray& d )
+{
+ PRINT_DEBUG << "HTTP data received (size=" << d.size() << ")" << endl;
+ if ( d.size() > 0 )
+ {
+ int len = m_httpBuffer.writeBlock( d );
+ if ( len == -1 || len != ( int )d.size() )
+ {
+ m_httpError = KIO::ERR_INTERNAL;
+ m_httpErrorTxt = "Unable to write to the internal buffer.";
+ j->kill( false );
+ }
+ }
+}
+
+void KIO_Print::slotTotalSize( KIO::Job*, KIO::filesize_t sz )
+{
+ totalSize( sz );
+}
+
+void KIO_Print::slotProcessedSize( KIO::Job*, KIO::filesize_t sz )
+{
+ processedSize( sz );
+}
+
+void KIO_Print::get(const KURL& url)
+{
+ if ( url.protocol() == "printdb" )
+ {
+ getDB( url );
+ return;
+ }
+
+ QStringList elems = QStringList::split('/', url.encodedPathAndQuery(), false);
+ QString group(elems[0].lower()), printer(KURL::decode_string(elems[1])), path, query;
+ KMPrinter *mprinter(0);
+
+ if (group == "manager")
+ {
+ PRINT_DEBUG << "opening print management part" << endl;
+
+ mimeType("print/manager");
+ finished();
+ return;
+ }
+
+ PRINT_DEBUG << "getting " << url.url() << endl;
+
+ if (group.startsWith("jobs"))
+ {
+ int p = group.find('?');
+ if (p != -1)
+ query = group.mid(p+1);
+ if (!query.isEmpty() && query != "jobs" && query != "completed_jobs")
+ {
+ error(KIO::ERR_MALFORMED_URL, QString::null);
+ return;
+ }
+ PRINT_DEBUG << "listing jobs for all printers" << endl;
+ showJobs(0, query == "completed_jobs");
+ return;
+ }
+
+ int p = printer.find('?');
+ if (p != -1)
+ {
+ query = printer.mid(p+1);
+ printer = printer.left(p);
+ }
+
+ PRINT_DEBUG << "opening " << url.url() << endl;
+ PRINT_DEBUG << "extracted printer name = " << printer << endl;
+
+ KMManager::self()->printerList(false);
+ mprinter = KMManager::self()->findPrinter(printer);
+ if (!mprinter)
+ path = locateData(printer.isEmpty() ? group : printer);
+
+ if (elems.count() > 2 || (path.isEmpty() && group != "printers" && group != "classes" && group != "specials")
+ || (mprinter == 0 && path.isEmpty()))
+ {
+ error(KIO::ERR_DOES_NOT_EXIST, url.path());
+ return;
+ }
+
+ if (mprinter != 0)
+ {
+ if (!query.isEmpty() && query != "general")
+ {
+ if (query == "jobs")
+ showJobs(mprinter, false);
+ else if (query == "completed_jobs")
+ showJobs(mprinter, true);
+ else if (query == "driver")
+ showDriver(mprinter);
+ else
+ error(KIO::ERR_MALFORMED_URL, KURL::decode_string(elems[1]));
+ }
+ else if (group == "printers" && mprinter->isPrinter())
+ showPrinterInfo(mprinter);
+ else if (group == "classes" && mprinter->isClass(true))
+ showClassInfo(mprinter);
+ else if (group == "specials" && mprinter->isSpecial())
+ showSpecialInfo(mprinter);
+ else
+ error(KIO::ERR_INTERNAL, i18n("Unable to determine object type for %1.").arg(printer));
+ }
+ else if (!path.isEmpty())
+ showData(path);
+ else
+ error(KIO::ERR_INTERNAL, i18n("Unable to determine source type for %1.").arg(printer));
+}
+
+void KIO_Print::showPrinterInfo(KMPrinter *printer)
+{
+ if (!KMManager::self()->completePrinter(printer))
+ error(KIO::ERR_INTERNAL, i18n("Unable to retrieve printer information for %1.").arg(printer->name()));
+ else
+ {
+ mimeType("text/html");
+
+ QString content;
+ if (!loadTemplate(QString::fromLatin1("printer.template"), content))
+ {
+ error(KIO::ERR_INTERNAL, i18n("Unable to load template %1").arg("printer.template"));
+ return;
+ }
+
+ content = content
+ .arg(i18n("Properties of %1").arg(printer->printerName()))
+ .arg(i18n("Properties of %1").arg(printer->printerName()))
+ .arg(buildMenu(QStringList::split('|', i18n("General|Driver|Active jobs|Completed jobs"), false),
+ QStringList::split('|', "?general|?driver|?jobs|?completed_jobs", true),
+ 0))
+ .arg(QString::null)
+ .arg(printer->pixmap())
+ .arg(printer->name())
+ .arg(i18n("General Properties"))
+ .arg(i18n("Type")).arg(printer->isRemote() ? i18n("Remote") : i18n("Local"))
+ .arg(i18n("State")).arg(printer->stateString())
+ .arg(i18n("Location")).arg(printer->location())
+ .arg(i18n("Description")).arg(printer->description())
+ .arg(i18n("URI")).arg(printer->uri().prettyURL())
+ .arg(i18n("Interface (Backend)")).arg(printer->device())
+ .arg(i18n("Driver"))
+ .arg(i18n("Manufacturer")).arg(printer->manufacturer())
+ .arg(i18n("Model")).arg(printer->model())
+ .arg(i18n("Driver Information")).arg(printer->driverInfo());
+
+ data(content.local8Bit());
+ finished();
+ }
+}
+
+void KIO_Print::showClassInfo(KMPrinter *printer)
+{
+ if (!KMManager::self()->completePrinter(printer))
+ error(KIO::ERR_INTERNAL, i18n("Unable to retrieve class information for %1.").arg(printer->name()));
+ else
+ {
+ mimeType("text/html");
+
+ QString content;
+ if (!loadTemplate(QString::fromLatin1("class.template"), content))
+ {
+ error(KIO::ERR_INTERNAL, i18n("Unable to load template %1").arg("class.template"));
+ return;
+ }
+
+ QString memberContent("<ul>\n");
+ QStringList members(printer->members());
+ for (QStringList::ConstIterator it=members.begin(); it!=members.end(); ++it)
+ {
+ memberContent.append(QString::fromLatin1("<li><a href=\"print:/printers/%1\">%2</a></li>\n").arg(*it).arg(*it));
+ }
+ memberContent.append("</ul>\n");
+
+ QString typeContent = (printer->isImplicit() ? i18n("Implicit") : (printer->isRemote() ? i18n("Remote") : i18n("Local")));
+
+ content = content
+ .arg(i18n("Properties of %1").arg(printer->printerName()))
+ .arg(i18n("Properties of %1").arg(printer->printerName()))
+ .arg(buildMenu(QStringList::split('|', i18n("General|Active jobs|Completed jobs"), false),
+ QStringList::split('|', "?general|?jobs|?completed_jobs", true),
+ 0))
+ .arg(QString::null)
+ .arg(printer->pixmap())
+ .arg(printer->name())
+ .arg(i18n("General Properties"))
+ .arg(i18n("Type")).arg(typeContent)
+ .arg(i18n("State")).arg(printer->stateString())
+ .arg(i18n("Location")).arg(printer->location())
+ .arg(i18n("Description")).arg(printer->description())
+ .arg(i18n("URI")).arg(printer->uri().prettyURL())
+ .arg(i18n("Members")).arg(memberContent);
+
+ data(content.local8Bit());
+ finished();
+ }
+}
+
+void KIO_Print::showSpecialInfo(KMPrinter *printer)
+{
+ mimeType("text/html");
+
+ QString content;
+ if (!loadTemplate(QString::fromLatin1("pseudo.template"), content))
+ {
+ error(KIO::ERR_INTERNAL, i18n("Unable to load template %1").arg("pseudo.template"));
+ return;
+ }
+
+ QString reqContent("<ul>\n");
+ QStringList requirements = QStringList::split(",", printer->option("kde-special-require"), false);
+ for (QStringList::ConstIterator it=requirements.begin(); it!=requirements.end(); ++it)
+ reqContent += ("<li>" + (*it) + "</li>\n");
+ reqContent.append("</ul>\n");
+
+ content = content
+ .arg(i18n("Properties of %1").arg(printer->printerName()))
+ .arg(i18n("Properties of %1").arg(printer->printerName()))
+ .arg(buildMenu(QStringList::split('|', i18n("General"), false),
+ QStringList::split('|', "?general", true),
+ 0))
+ .arg(QString::null)
+ .arg(printer->pixmap())
+ .arg(printer->name())
+ .arg(i18n("General Properties"))
+ .arg(i18n("Location")).arg(printer->location())
+ .arg(i18n("Description")).arg(printer->description())
+ .arg(i18n("Requirements")).arg(reqContent)
+ .arg(i18n("Command Properties"))
+ .arg(i18n("Command")).arg("<tt>"+printer->option("kde-special-command")+"</tt>")
+ .arg(i18n("Use Output File")).arg(printer->option("kde-special-file") == "1" ? i18n("Yes") : i18n("No"))
+ .arg(i18n("Default Extension")).arg(printer->option("kde-special-extension"));
+
+ data(content.local8Bit());
+ finished();
+}
+
+bool KIO_Print::loadTemplate(const QString& filename, QString& buffer)
+{
+ QFile f(locate("data", QString::fromLatin1("kdeprint/template/")+filename));
+ if (f.exists() && f.open(IO_ReadOnly))
+ {
+ QTextStream t(&f);
+ buffer = t.read();
+ return true;
+ }
+ else
+ {
+ buffer = QString::null;
+ return false;
+ }
+}
+
+void KIO_Print::showData(const QString& pathname)
+{
+ PRINT_DEBUG << "sending data: " << pathname << endl;
+ QFile f(pathname);
+ if (f.exists() && f.open(IO_ReadOnly))
+ {
+ QByteArray arr(f.readAll());
+ mimeType(KMimeType::findByURL(KURL(pathname), 0, true, true)->name());
+ data(arr);
+ finished();
+ }
+ else
+ {
+ PRINT_DEBUG << "file not found" << endl;
+ error(KIO::ERR_DOES_NOT_EXIST, pathname);
+ }
+}
+
+/**
+ * Locate a data in this order:
+ * - $KDEDIR/share/apps/kdeprint/template/
+ * - as a desktop icon
+ */
+QString KIO_Print::locateData(const QString& item)
+{
+ QString path = locate("data", "kdeprint/template/"+item);
+ if (path.isEmpty())
+ path = KGlobal::iconLoader()->iconPath(item, KIcon::Desktop, true);
+ return path;
+}
+
+void KIO_Print::showJobs(KMPrinter *prt, bool completed)
+{
+ mimeType("text/html");
+
+ // Add the printer to the current list in the job manager
+ KMJobManager::JobType type = (completed ? KMJobManager::CompletedJobs : KMJobManager::ActiveJobs);
+ KMJobManager *mgr = KMJobManager::self();
+ if (prt)
+ mgr->addPrinter(prt->printerName(), type);
+ else
+ {
+ QPtrListIterator<KMPrinter> pit(*(KMManager::self()->printerList()));
+ for (; pit.current(); ++pit)
+ if (pit.current()->isVirtual() || pit.current()->isSpecial())
+ continue;
+ else
+ mgr->addPrinter(pit.current()->printerName(), type);
+ }
+
+ QString content;
+ if (!loadTemplate(QString::fromLatin1("jobs.template"), content))
+ {
+ error(KIO::ERR_INTERNAL, i18n("Unable to load template %1").arg("pseudo.template"));
+ return;
+ }
+
+ if (prt)
+ {
+ content = content
+ .arg(i18n("Jobs of %1").arg(prt->printerName()))
+ .arg(i18n("Jobs of %1").arg(prt->printerName()))
+ .arg(prt->isClass () ?
+ buildMenu(QStringList::split('|', i18n("General|Active jobs|Completed jobs"), false),
+ QStringList::split('|', "?general|?jobs|?completed_jobs", true),
+ (completed ? 2 : 1)) :
+ buildMenu(QStringList::split('|', i18n("General|Driver|Active jobs|Completed jobs"), false),
+ QStringList::split('|', "?general|?driver|?jobs|?completed_jobs", true),
+ (completed ? 3 : 2)))
+ .arg(QString::null)
+ .arg(prt->pixmap())
+ .arg(prt->printerName());
+ }
+ else
+ {
+ content = content
+ .arg(i18n("All jobs"))
+ .arg(buildMenu(QStringList::split('|', i18n("Active jobs|Completed jobs"), false),
+ QStringList::split('|', "?jobs|?completed_jobs", true),
+ (completed ? 1 : 0)))
+ .arg("fileprint")
+ .arg(i18n("All jobs"));
+ }
+ content = content.arg(i18n("ID")).arg(i18n("Owner")).arg(i18n("Printer")).arg(i18n("Name")).arg(i18n("State"));
+
+ QString jobContent, cellContent("<td>%1</td>\n");
+ QPtrListIterator<KMJob> it(mgr->jobList());
+ bool flag(true);
+ for (; it.current(); ++it, flag = !flag)
+ {
+ jobContent.append("<tr class=\"").append(flag ? "contentyellow" : "contentwhite").append("\">\n");
+ jobContent.append(cellContent.arg(it.current()->id()));
+ jobContent.append(cellContent.arg(it.current()->owner()));
+ jobContent.append(cellContent.arg(it.current()->printer()));
+ jobContent.append(cellContent.arg(it.current()->name()));
+ jobContent.append(cellContent.arg(it.current()->stateString()));
+ jobContent.append("</tr>\n");
+ }
+ content = content.arg(jobContent);
+
+ // remove the current printer to the current list in the job manager
+ if (prt)
+ mgr->removePrinter(prt->printerName(), type);
+ else
+ {
+ QPtrListIterator<KMPrinter> pit(*(KMManager::self()->printerList()));
+ for (; pit.current(); ++pit)
+ if (pit.current()->isVirtual() || pit.current()->isSpecial())
+ continue;
+ else
+ mgr->removePrinter(pit.current()->printerName(), type);
+ }
+
+ data(content.local8Bit());
+ finished();
+}
+
+void KIO_Print::showDriver(KMPrinter *prt)
+{
+ mimeType("text/html");
+
+ QString content;
+ if (!loadTemplate(QString::fromLatin1("driver.template"), content))
+ {
+ error(KIO::ERR_INTERNAL, i18n("Unable to load template %1").arg("pseudo.template"));
+ return;
+ }
+
+ DrMain *driver = KMManager::self()->loadPrinterDriver(prt, true);
+ content = content
+ .arg(i18n("Driver of %1").arg(prt->printerName()))
+ .arg(i18n("Driver of %1").arg(prt->printerName()))
+ .arg(buildMenu(QStringList::split('|', i18n("General|Driver|Active jobs|Completed jobs"), false),
+ QStringList::split('|', "?general|?driver|?jobs|?completed_jobs", true),
+ 1))
+ .arg(QString::null)
+ .arg(prt->pixmap())
+ .arg(prt->printerName() + "&nbsp;(" + (driver ? driver->get("text") : i18n("No driver found")) + ")");
+
+ if (driver)
+ content = content.arg(buildGroupTable(driver, false));
+ else
+ content = content.arg(QString::null);
+
+ data(content.local8Bit());
+ finished();
+}
+
+#include "kio_print.moc"
diff --git a/kdeprint/slave/kio_print.h b/kdeprint/slave/kio_print.h
new file mode 100644
index 000000000..3fa20bbf1
--- /dev/null
+++ b/kdeprint/slave/kio_print.h
@@ -0,0 +1,70 @@
+/*
+ * 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 KIO_PRINT_H
+#define KIO_PRINT_H
+
+#include <kio/slavebase.h>
+#include <kio/global.h>
+#include <qstring.h>
+#include <qbuffer.h>
+
+class KMPrinter;
+namespace KIO {
+ class Job;
+}
+
+class KIO_Print : public QObject, public KIO::SlaveBase
+{
+ Q_OBJECT
+public:
+ KIO_Print(const QCString& pool, const QCString& app);
+
+ void listDir(const KURL& url);
+ void get(const KURL& url);
+ void stat(const KURL& url);
+
+protected slots:
+ void slotResult( KIO::Job* );
+ void slotData( KIO::Job*, const QByteArray& );
+ void slotTotalSize( KIO::Job*, KIO::filesize_t );
+ void slotProcessedSize( KIO::Job*, KIO::filesize_t );
+
+private:
+ void listRoot();
+ void listDirDB( const KURL& );
+ void statDB( const KURL& );
+ bool getDBFile( const KURL& );
+ void getDB( const KURL& );
+ void showClassInfo(KMPrinter*);
+ void showPrinterInfo(KMPrinter*);
+ void showSpecialInfo(KMPrinter*);
+ void showData(const QString&);
+ QString locateData(const QString&);
+ void showJobs(KMPrinter *p = 0, bool completed = false);
+ void showDriver(KMPrinter*);
+
+ bool loadTemplate(const QString& filename, QString& buffer);
+
+ QBuffer m_httpBuffer;
+ int m_httpError;
+ QString m_httpErrorTxt;
+};
+
+#endif
diff --git a/kdeprint/slave/mimetypes/Makefile.am b/kdeprint/slave/mimetypes/Makefile.am
new file mode 100644
index 000000000..9992389fe
--- /dev/null
+++ b/kdeprint/slave/mimetypes/Makefile.am
@@ -0,0 +1,3 @@
+mimetype_DATA = folder.desktop printer.desktop class.desktop manager.desktop jobs.desktop \
+ driver.desktop printermodel.desktop
+mimetypedir = $(kde_mimedir)/print
diff --git a/kdeprint/slave/mimetypes/class.desktop b/kdeprint/slave/mimetypes/class.desktop
new file mode 100644
index 000000000..f73b3262d
--- /dev/null
+++ b/kdeprint/slave/mimetypes/class.desktop
@@ -0,0 +1,75 @@
+[Desktop Entry]
+Comment=Class of Printers
+Comment[af]=Klas van Drukkers
+Comment[ar]=فئة الطابعات
+Comment[be]=Клас друкарак
+Comment[bg]=Клас принтери
+Comment[bn]=প্রিন্টার-এর ক্লাস (Class)
+Comment[bs]=Klasa štampača
+Comment[ca]=Classes d'impressores
+Comment[cs]=Třída tiskáren
+Comment[csb]=Klasë drëkerów
+Comment[da]=Klasse af printere
+Comment[de]=Druckerklasse
+Comment[el]=Κλάση εκτυπωτών
+Comment[eo]=Printiloklaso
+Comment[es]=Clase de impresoras
+Comment[et]=Printerite klass
+Comment[eu]=Inprimagailu klasea
+Comment[fa]=ردۀ چاپگرها
+Comment[fi]=Tulostinten luokka
+Comment[fr]=Classe d'imprimantes
+Comment[fy]=Printerklassen
+Comment[ga]=Aicme Printéirí
+Comment[gl]=Clase de impresoras
+Comment[he]=מחלקת מדפסות
+Comment[hi]=प्रिंटर के वर्ग
+Comment[hr]=Klase pisača
+Comment[hu]=Nyomtatóosztály
+Comment[is]=Flokkur prentara
+Comment[it]=Classe di stampanti
+Comment[ja]=プリンタクラス
+Comment[ka]=პრინტერთა კლასი
+Comment[kk]=Принтерлер класы
+Comment[km]=សន្ដាន​ម៉ាស៊ីន​បោះពុម្ព
+Comment[lt]=Spausdintuvų klasė
+Comment[lv]=Drukas iekārtu klase
+Comment[mk]=Класа на печатачи
+Comment[ms]=Kelas Pencetak
+Comment[mt]=Klassi ta' printers
+Comment[nb]=Skriverklasse
+Comment[nds]=Klass vun Druckers
+Comment[ne]=मुद्रकको वर्ग
+Comment[nl]=Printerklassen
+Comment[nn]=Skrivarklasse
+Comment[pa]=ਪਰਿੰਟਰਾਂ ਦਾ ਵਰਗ
+Comment[pl]=Klasa drukarek
+Comment[pt]=Classe de Impressoras
+Comment[pt_BR]=Classes de Impressoras
+Comment[ro]=Clase de imprimante
+Comment[ru]=Класс принтеров
+Comment[rw]=Urwego rwa Mucapyi
+Comment[se]=Čálánluohkát
+Comment[sk]=Trieda tlačiarní
+Comment[sl]=Razred tiskalnikov
+Comment[sr]=Класе штампача
+Comment[sr@Latn]=Klase štampača
+Comment[sv]=Klass av skrivare
+Comment[ta]=அச்சியந்திரங்களின் வகை
+Comment[tg]=Дараҷаи чопгарҳо
+Comment[th]=คลาสของเครื่องพิมพ์
+Comment[tr]=Yazıcı Sınıfı
+Comment[tt]=Basaqlar Törläre
+Comment[uk]=Клас принтерів
+Comment[uz]=Printerlar sinfi
+Comment[uz@cyrillic]=Принтерлар синфи
+Comment[vi]=Lớp Máy in
+Comment[wa]=Classe des scrireces
+Comment[zh_CN]=打印机类
+Comment[zh_TW]=印表機類別
+Icon=print_class
+Type=MimeType
+MimeType=print/class
+Patterns=
+
+X-KDE-AutoEmbed=true
diff --git a/kdeprint/slave/mimetypes/driver.desktop b/kdeprint/slave/mimetypes/driver.desktop
new file mode 100644
index 000000000..36cd08288
--- /dev/null
+++ b/kdeprint/slave/mimetypes/driver.desktop
@@ -0,0 +1,76 @@
+[Desktop Entry]
+Comment=Printer Driver
+Comment[af]=Drukker Aandrywer
+Comment[ar]=سائق الطابعة
+Comment[be]=Драйвер друкаркі
+Comment[bg]=Драйвер за принтер
+Comment[bn]=প্রিন্টার ড্রাইভার
+Comment[br]=Sturier ar voullerez
+Comment[bs]=Drajver štampača
+Comment[ca]=Control·lador d'impressora
+Comment[cs]=Ovladač tiskárny
+Comment[csb]=Czérownik drëkera
+Comment[da]=Printerdriver
+Comment[de]=Druckertreiber
+Comment[el]=Οδηγός εκτυπωτή
+Comment[eo]=Printila pelilo
+Comment[es]=Controlador de impresora
+Comment[et]=Printeri draiver
+Comment[eu]=Inprimagailuaren driverra
+Comment[fa]=گردانندۀ چاپگر
+Comment[fi]=Tulostinajuri
+Comment[fr]=Pilote d'imprimante
+Comment[fy]=Printerstjoerprogramma
+Comment[ga]=Tiománaí Printéara
+Comment[gl]=Controlador da Impresora
+Comment[he]=מנהל התקן המדפסת
+Comment[hi]=प्रिंटर ड्राइवर
+Comment[hr]=Upravljački program pisača
+Comment[hu]=Nyomtatómeghajtó
+Comment[is]=Prentrekill
+Comment[it]=Driver stampante
+Comment[ja]=プリンタドライバ
+Comment[ka]=პრინტერის დრაივერი
+Comment[kk]=Принтердің драйвері
+Comment[km]=កម្មវិធី​បញ្ជា​ម៉ាស៊ីន​បោះពុម្ព
+Comment[lt]=Spausdintuvo tvarkyklė
+Comment[lv]=Printera draiveris
+Comment[mk]=Управувач за печатач
+Comment[ms]=Pemacu Pencetak
+Comment[mt]=Driver tal-printer
+Comment[nb]=Skriverdriver
+Comment[nds]=Druckerdriever
+Comment[ne]=मुद्रक यन्त्र
+Comment[nl]=Printerstuurprogramma
+Comment[nn]=Skrivardrivar
+Comment[pa]=ਪਰਿੰਟਰ ਡਰਾਇਵਰ
+Comment[pl]=Sterownik drukarki
+Comment[pt]=Controlador de Impressora
+Comment[pt_BR]=Driver da Impressora
+Comment[ro]=Driver de imprimantă
+Comment[ru]=Драйвер принтера
+Comment[rw]=Musomyi ya Mucapyi
+Comment[se]=Čálánstivrran
+Comment[sk]=Ovládač tlačiarne
+Comment[sl]=Tiskalniški gonilnik
+Comment[sr]=Управљачки програм за штампач
+Comment[sr@Latn]=Upravljački program za štampač
+Comment[sv]=Skrivardrivrutin
+Comment[ta]=அச்சியந்திர இயக்கி
+Comment[tg]=Драйвери чопгар
+Comment[th]=ไดรเวอร์เครื่องพิมพ์
+Comment[tr]=Yazıcı Sürücüsü
+Comment[tt]=Basaq öçen Driver
+Comment[uk]=Драйвер принтера
+Comment[uz]=Printerning drayveri
+Comment[uz@cyrillic]=Принтернинг драйвери
+Comment[vi]=Trình điều khiển Máy in
+Comment[wa]=Moenneu di scrirece
+Comment[zh_CN]=打印机驱动程序
+Comment[zh_TW]=印表機驅動程式
+Icon=postscript
+Type=MimeType
+MimeType=print/driver
+Patterns=
+
+X-KDE-AutoEmbed=true
diff --git a/kdeprint/slave/mimetypes/folder.desktop b/kdeprint/slave/mimetypes/folder.desktop
new file mode 100644
index 000000000..312c863a3
--- /dev/null
+++ b/kdeprint/slave/mimetypes/folder.desktop
@@ -0,0 +1,76 @@
+[Desktop Entry]
+Comment=Print Folder
+Comment[af]=Drukker Gids
+Comment[ar]=مجلد الطباعة
+Comment[be]=Тэчка друку
+Comment[bg]=Директория на печата
+Comment[bn]=মুদ্রণ ফোল্ডার
+Comment[br]=Renkell moulañ
+Comment[bs]=Direktorij za štampu
+Comment[ca]=Carpeta d'impressió
+Comment[cs]=Složka tisku
+Comment[csb]=Katalog drëkòwaniô
+Comment[cy]=Dogfen argraffu
+Comment[da]=Udskriftsmappe
+Comment[de]=Druckordner
+Comment[el]=Φάκελος εκτυπώσεων
+Comment[eo]=Printa dosierujo
+Comment[es]=Carpeta de impresión
+Comment[et]=Trükkimise kataloog
+Comment[eu]=Inprimaketa karpeta
+Comment[fa]=پوشۀ چاپ
+Comment[fi]=Tulostuskansio
+Comment[fr]=Dossier d'impression
+Comment[fy]=printmap
+Comment[ga]=Fillteán Priontála
+Comment[gl]=Cartafol de Impresión
+Comment[he]=תיקיית הדפסה
+Comment[hr]=Mapa pisača
+Comment[hu]=Nyomtatáskezelő-mappa
+Comment[is]=Prentmappa
+Comment[it]=Cartella di stampa
+Comment[ja]=印刷フォルダ
+Comment[ka]=საბეჭდი საქაღალდე
+Comment[kk]=Басып шығару қапшығы
+Comment[km]=ថត​បោះពុម្ព
+Comment[ko]=홈 폴더
+Comment[lt]=Spausdinimo aplankas
+Comment[mk]=Папка за печатење
+Comment[ms]=Cetak Folder
+Comment[nb]=Skrivermappe
+Comment[nds]=Druckorner
+Comment[ne]=मुद्रण फोल्डर
+Comment[nl]=Afdrukmap
+Comment[nn]=Skrivarmappe
+Comment[pa]=ਛਪਾਈ ਫੋਲਡਰ
+Comment[pl]=Folder drukowania
+Comment[pt]=Pasta de Impressão
+Comment[pt_BR]=Pasta de Impressão
+Comment[ro]=Folder de tipărire
+Comment[ru]=Папка печати
+Comment[rw]=Gucapa Ububiko
+Comment[se]=Čálihanmáhppa
+Comment[sk]=Priečinok tlače
+Comment[sl]=Tiskalniška mapa
+Comment[sr]=Фасцикла за штампање
+Comment[sr@Latn]=Fascikla za štampanje
+Comment[sv]=Skrivarkatalog
+Comment[ta]=அச்சிடும் அடைவு
+Comment[tg]=Феҳристи чоп
+Comment[th]=โฟลเดอร์งานพิมพ์
+Comment[tr]=Yazdırma dizinidizini
+Comment[tt]=Bastıru Törgäge
+Comment[uk]=Тека друку
+Comment[uz]=Bosib chiqarish jildi
+Comment[uz@cyrillic]=Босиб чиқариш жилди
+Comment[vi]=Thư mục In ấn
+Comment[wa]=Ridant d' imprimaedje
+Comment[zh_CN]=打印文件夹
+Comment[zh_TW]=列印資料夾
+Icon=folder_print
+Type=MimeType
+MimeType=print/folder
+Patterns=
+
+X-KDE-AutoEmbed=true
+X-KDE-IsAlso=inode/directory
diff --git a/kdeprint/slave/mimetypes/jobs.desktop b/kdeprint/slave/mimetypes/jobs.desktop
new file mode 100644
index 000000000..5a92ceaa5
--- /dev/null
+++ b/kdeprint/slave/mimetypes/jobs.desktop
@@ -0,0 +1,85 @@
+[Desktop Entry]
+Comment=Print Jobs
+Comment[af]=Drukker Werke
+Comment[ar]=مهمات الطباعة
+Comment[be]=Заданні друку
+Comment[bg]=Задания за печат
+Comment[bn]=মুদ্রণ তালিকা
+Comment[bs]=Zadaci štampe
+Comment[ca]=Tasques d'impressió
+Comment[cs]=Tiskové úlohy
+Comment[csb]=Pòlétë drëkòwaniô
+Comment[cy]=Swyddi Argraffu
+Comment[da]=Udskriftsjob
+Comment[de]=Druckaufträge
+Comment[el]=Εργασίες εκτύπωσης
+Comment[eo]=Printaj taskoj
+Comment[es]=Trabajos de impresión
+Comment[et]=Trükitööd
+Comment[eu]=Inprimatze lanak
+Comment[fa]=چاپ کارها
+Comment[fi]=Tulostustyöt
+Comment[fr]=Tâches d'impression
+Comment[fy]=Printtaken
+Comment[ga]=Jabanna Priontála
+Comment[gl]=Traballos de Impresión
+Comment[he]=עבודות הדפסה
+Comment[hi]=प्रिंट कार्य
+Comment[hr]=Zadaci ispisivanja
+Comment[hu]=Nyomtatási feladatok
+Comment[is]=Prentverk
+Comment[it]=Lavori di stampa
+Comment[ja]=印刷ジョブ
+Comment[ka]=ბეჭდვის დავალებები
+Comment[kk]=Басу тапсырмалары
+Comment[km]=ការងារ​បោះពុម្ព
+Comment[lo]=ໂຟນເດີງານພິມ
+Comment[lt]=Spausdinimo užduotys
+Comment[lv]=Drukas darbi
+Comment[mk]=Печатарски задачи
+Comment[mn]=Хэвлэх даалгавар
+Comment[ms]=Cetak Kerja
+Comment[mt]=Xogħlijiet ta' pprintjar
+Comment[nb]=Skriverjobber
+Comment[nds]=Druckopgaven
+Comment[ne]=मुद्रण कार्य
+Comment[nl]=Afdruktaken
+Comment[nn]=Utskriftsjobbar
+Comment[nso]=Mesomo ya Kgatiso
+Comment[pa]=ਪਰਿੰਟ ਕੰਮ
+Comment[pl]=Zadania drukowania
+Comment[pt]=Tarefas de Impressão
+Comment[pt_BR]=Imprimir trabalhos
+Comment[ro]=Lucrări de tipărit
+Comment[ru]=Задания печати
+Comment[rw]=Gucapa Imirimo
+Comment[se]=Čálihanbarggut
+Comment[sk]=Tlačové úlohy
+Comment[sl]=Tiskalna opravila
+Comment[sr]=Послови штампе
+Comment[sr@Latn]=Poslovi štampe
+Comment[sv]=Skrivarjobb
+Comment[ta]=அச்சு வேலைகள்
+Comment[te]=ప్రచురణ పనులు
+Comment[tg]=Чопҳо
+Comment[th]=งานพิมพ์
+Comment[tr]=Yazdırma işleri
+Comment[tt]=Bastıru Eşläre
+Comment[uk]=Завдання друку
+Comment[uz]=Bosib chiqarish vazifalari
+Comment[uz@cyrillic]=Босиб чиқариш вазифалари
+Comment[ven]=Mishumo yau phirintha
+Comment[vi]=Tác vụ In ấn
+Comment[wa]=Bouyes d' imprimaedje
+Comment[xh]=Imisebenzi Yoshicilelo
+Comment[zh_CN]=打印任务
+Comment[zh_TW]=列印工作
+Comment[zu]=Imisebenzi Yokushicilela
+Icon=fileprint
+Type=MimeType
+MimeType=print/jobs
+Patterns=
+
+X-KDE-AutoEmbed=true
+X-KDE-IsAlso=inode/directory
+
diff --git a/kdeprint/slave/mimetypes/manager.desktop b/kdeprint/slave/mimetypes/manager.desktop
new file mode 100644
index 000000000..7b8cd0671
--- /dev/null
+++ b/kdeprint/slave/mimetypes/manager.desktop
@@ -0,0 +1,87 @@
+[Desktop Entry]
+Comment=Print Management Tool
+Comment[af]=Drukker Bestuur Program
+Comment[ar]=أداة إدارة الطباعة
+Comment[az]=Çap Edici İdarə Vasitəsi
+Comment[be]=Кіраўнік друку
+Comment[bg]=Програма за управление на печата
+Comment[bn]=মুদ্রণ ম্যানেজমেন্ট টুল
+Comment[br]=Ostilh mererezh moulañ
+Comment[bs]=Alat za upravljanje štampanjem
+Comment[ca]=Eina per a la gestió de la impressió
+Comment[cs]=Nástroj pro správu tiskáren
+Comment[csb]=Sprôwianié wëdrëkama
+Comment[cy]=Erfyn rheoli argraffu
+Comment[da]=Udskriftshåndteringsværktøj
+Comment[de]=Dienstprogramm zur Druckerverwaltung
+Comment[el]=Εργαλείο διαχείρισης εκτυπώσεων
+Comment[eo]=Administrilo por printado
+Comment[es]=Herramienta de gestión de la impresión
+Comment[et]=Trükkimise haldur
+Comment[eu]=Inprimaketak kudeatzeko tresna
+Comment[fa]=ابزار مدیریت چاپ
+Comment[fi]=Tulostuksenhallinta
+Comment[fr]=Gestionnaire d'impression
+Comment[fy]=Helpprogramma foar printerbehear
+Comment[ga]=Uirlis Bhainisteoireacht Priontála
+Comment[gl]=Ferramenta de Xestión das Impresións
+Comment[he]=כלי ניהול הדפסה
+Comment[hi]=छापा प्रबंधन औज़ार
+Comment[hr]=Alat za upravljanje ispisivanjem
+Comment[hu]=Nyomtatáskezelő segédprogram
+Comment[is]=Prentunartól
+Comment[it]=Strumento per la gestione della stampa
+Comment[ja]=印刷マネージメントツール
+Comment[ka]=ბეჭდვის მართვის ხელსაწყო
+Comment[kk]=Басып шығаруды басқару құралы
+Comment[km]=ឧបករណ៍​គ្រប់គ្រង​ការ​បោះពុម្ព
+Comment[ko]=휴대폰 관리 도구
+Comment[lo]=ເຄື່ອງມືຈັດການການພິມ
+Comment[lt]=Spausdinimo valdymo įrankis
+Comment[lv]=Drukas Menedžmenta Rīks
+Comment[mk]=Алатка за менаџмент на печатење
+Comment[mn]=Хэвлэгчийн удирдлагын програм
+Comment[ms]=Cetak Alat Pengurusan
+Comment[mt]=Għodda għall-immaniġġjar tal-ipprintjar
+Comment[nb]=Verktøy for skriverbehandling
+Comment[nds]=Druckpleeg-Warktüüch
+Comment[ne]=मुद्रण प्रबन्धक उपकरण
+Comment[nl]=Hulpprogramma voor printerbeheer
+Comment[nn]=Verktøy for utskriftshandsaming
+Comment[nso]=Sebereka sa Taolo ya Kgatiso
+Comment[pa]=ਪਰਿੰਟ ਪਰਬੰਧਨ ਸੰਦ
+Comment[pl]=Zarządzanie wydrukiem
+Comment[pt]=Ferramenta de gestão de impressão
+Comment[pt_BR]=Ferramenta de Gerenciamento de Impressão
+Comment[ro]=Utilitar de administrare a tipăririi
+Comment[ru]=Утилита управления печатью
+Comment[rw]=Igikoresho Ubuyobozi Gucapa
+Comment[se]=Reaiddut čáliheami várás
+Comment[sk]=Nástroj na správu tlače
+Comment[sl]=Orodje za upravljanje tiskanja
+Comment[sr]=Алат за управљање штампом
+Comment[sr@Latn]=Alat za upravljanje štampom
+Comment[sv]=Verktyg för att hantera utskrifter
+Comment[ta]=அச்சு மேலாண்மை கருவி
+Comment[tg]=Обзори мудирияти чоп
+Comment[th]=เครื่องมือจัดการการพิมพ์
+Comment[tr]=Yazdırma Yönetim Aracı
+Comment[tt]=Bastıru İdäneñ Qoralı
+Comment[uk]=Засіб керування друком
+Comment[uz]=Bosib chiqarishni boshqarish vositasi
+Comment[uz@cyrillic]=Босиб чиқаришни бошқариш воситаси
+Comment[ven]=Tshishumiswa tsha vhulanguli hau phirintha
+Comment[vi]=Công cụ Quản lí In ấn
+Comment[wa]=Usteye po manaedjî l' imprimaedje
+Comment[xh]=Isixhobo Sophatho Sokushicilela
+Comment[zh_CN]=打印管理工具
+Comment[zh_TW]=列印管理工具
+Comment[zu]=Ithuluzi Lokuphatha Ushicilelo
+Icon=wizard
+Type=MimeType
+MimeType=print/manager
+Patterns=
+
+X-KDE-AutoEmbed=true
+X-KDE-IsAlso=inode/directory
+
diff --git a/kdeprint/slave/mimetypes/printer.desktop b/kdeprint/slave/mimetypes/printer.desktop
new file mode 100644
index 000000000..905a08d34
--- /dev/null
+++ b/kdeprint/slave/mimetypes/printer.desktop
@@ -0,0 +1,79 @@
+[Desktop Entry]
+Comment=Printer
+Comment[af]=Drukker
+Comment[ar]=الطابعة
+Comment[az]=Çap Edici
+Comment[be]=Друкарка
+Comment[bg]=Принтер
+Comment[bn]=প্রিন্টার
+Comment[br]=Moulañ
+Comment[bs]=Štampač
+Comment[ca]=Impressora
+Comment[cs]=Tiskárna
+Comment[csb]=Drëker
+Comment[cy]=Argraffydd
+Comment[de]=Drucker
+Comment[el]=Εκτυπωτής
+Comment[eo]=Printilo
+Comment[es]=Impresora
+Comment[eu]=Inprimagailua
+Comment[fa]=چاپگر
+Comment[fi]=Tulostin
+Comment[fr]=Imprimante
+Comment[ga]=Printéir
+Comment[gl]=Impresora
+Comment[he]=מדפסת
+Comment[hi]=प्रिंटर
+Comment[hr]=Pisač
+Comment[hu]=Nyomtató
+Comment[is]=Prentari
+Comment[it]=Stampante
+Comment[ja]=プリンタ
+Comment[ka]=პრინტერი
+Comment[kk]=Принтер
+Comment[km]=ម៉ាស៊ីន​បោះពុម្ព
+Comment[lo]=ເຄື່ອງພິມ
+Comment[lt]=Spausdintuvas
+Comment[lv]=Drukas Iekārta
+Comment[mk]=Печатач
+Comment[mn]=Хэвлэгч
+Comment[ms]=Pencetak
+Comment[nb]=Skriver
+Comment[nds]=Drucker
+Comment[ne]=मुद्रक
+Comment[nn]=Skrivar
+Comment[nso]=Segatisi
+Comment[pa]=ਪਰਿੰਟਰ
+Comment[pl]=Drukarka
+Comment[pt]=Impressora
+Comment[pt_BR]=Impressora
+Comment[ro]=Imprimantă
+Comment[ru]=Принтер
+Comment[rw]=Mucapyi
+Comment[se]=Čálán
+Comment[sk]=Tlačiareň
+Comment[sl]=Tiskalnik
+Comment[sr]=Штампач
+Comment[sr@Latn]=Štampač
+Comment[sv]=Skrivare
+Comment[ta]=அச்சியந்திரம்
+Comment[te]=ప్రింటర్
+Comment[tg]=Чопгар
+Comment[th]=เครื่องพิมพ์
+Comment[tr]=Yazıcı
+Comment[tt]=Basaq
+Comment[uk]=Принтер
+Comment[uz@cyrillic]=Принтер
+Comment[ven]=phirinthara
+Comment[vi]=Máy in
+Comment[wa]=Sicrirece
+Comment[xh]=Umshicileli
+Comment[zh_CN]=打印机
+Comment[zh_TW]=印表機
+Comment[zu]=Umshicileli
+Icon=printer1
+Type=MimeType
+MimeType=print/printer
+Patterns=
+
+X-KDE-AutoEmbed=true
diff --git a/kdeprint/slave/mimetypes/printermodel.desktop b/kdeprint/slave/mimetypes/printermodel.desktop
new file mode 100644
index 000000000..f6a471e41
--- /dev/null
+++ b/kdeprint/slave/mimetypes/printermodel.desktop
@@ -0,0 +1,78 @@
+[Desktop Entry]
+Comment=Printer Model
+Comment[af]=Drukker Model
+Comment[ar]=طراز الطابعة
+Comment[be]=Мадэль друкаркі
+Comment[bg]=Модел принтер
+Comment[bn]=প্রিন্টার মডেল
+Comment[br]=Gobari ar voullerez
+Comment[bs]=Model štampača
+Comment[ca]=Model d'impressora
+Comment[cs]=Model tiskárny
+Comment[csb]=Ôrt drëkera
+Comment[cy]=Model Argraffydd
+Comment[da]=Printermodel
+Comment[de]=Druckermodell
+Comment[el]=Μοντέλο εκτυπωτή
+Comment[eo]=Printila modelo
+Comment[es]=Modelo de impresora
+Comment[et]=Printeri mudel
+Comment[eu]=Inprimagailuaren modeloa
+Comment[fa]=مدل چاپگر
+Comment[fi]=Tulostinmalli
+Comment[fr]=Modèle d'imprimante
+Comment[fy]=Printermodel
+Comment[ga]=Déanamh an Phrintéara
+Comment[gl]=Modelo da Impresora
+Comment[he]=דגם המדפסת
+Comment[hi]=प्रिंटर मॉडल
+Comment[hr]=Model pisača
+Comment[hu]=Nyomtatótípus
+Comment[is]=Prentaragerð
+Comment[it]=Modello stampante
+Comment[ja]=プリンタモデル
+Comment[ka]=პრინტერის მოდელი
+Comment[kk]=Принтер үлгісі
+Comment[km]=ម៉ូដែលម៉ាស៊ីន​បោះពុម្ព
+Comment[ko]=제어판 모듈
+Comment[lt]=Spausdintuvo modelis
+Comment[lv]=Drukas Iekārtas modelis
+Comment[mk]=Модел на печатач
+Comment[ms]=Model Pencetak
+Comment[mt]=Mudell tal-printer
+Comment[nb]=Skrivermodell
+Comment[nds]=Druckermodell
+Comment[ne]=मुद्रक नमूना
+Comment[nl]=Printermodel
+Comment[nn]=Skrivarmodell
+Comment[pa]=ਪਰਿੰਟਰ ਮਾਡਲ
+Comment[pl]=Model drukarki
+Comment[pt]=Modelo de Impressora
+Comment[pt_BR]=Modelo de Impressora
+Comment[ro]=Model de imprimantă
+Comment[ru]=Модель принтера
+Comment[rw]=Moderi Mucapyi
+Comment[se]=Čálánmálle
+Comment[sk]=Model tlačiarne
+Comment[sl]=Model tiskalnika
+Comment[sr]=Модел штампача
+Comment[sr@Latn]=Model štampača
+Comment[sv]=Skrivarmodell
+Comment[ta]=அச்சியந்திர மாதிரி
+Comment[tg]=Намунаи чопгар
+Comment[th]=รุ่นของเครื่องพิมพ์
+Comment[tr]=Yazıcı Modeli
+Comment[tt]=Basaq Töre
+Comment[uk]=Модель принтера
+Comment[uz]=Printerning modeli
+Comment[uz@cyrillic]=Принтернинг модели
+Comment[vi]=Loại Máy in
+Comment[wa]=Modele del sicrirece
+Comment[zh_CN]=打印机型号
+Comment[zh_TW]=印表機型號
+Icon=printer1
+Type=MimeType
+MimeType=print/printermodel
+Patterns=
+
+X-KDE-AutoEmbed=true
diff --git a/kdeprint/slave/print.protocol b/kdeprint/slave/print.protocol
new file mode 100644
index 000000000..38989160b
--- /dev/null
+++ b/kdeprint/slave/print.protocol
@@ -0,0 +1,15 @@
+[Protocol]
+exec=kio_print
+protocol=print
+input=none
+output=filesystem
+listing=Name,Type,Access
+reading=true
+writing=false
+makedir=false
+deleting=false
+moving=false
+linking=false
+Icon=postscript
+DocPath=kioslave/print.html
+defaultMimetype=application/octet-stream
diff --git a/kdeprint/slave/printdb.protocol b/kdeprint/slave/printdb.protocol
new file mode 100644
index 000000000..539edd596
--- /dev/null
+++ b/kdeprint/slave/printdb.protocol
@@ -0,0 +1,14 @@
+[Protocol]
+exec=kio_print
+protocol=printdb
+input=none
+output=filesystem
+listing=Name,Type,Access
+reading=true
+writing=false
+makedir=false
+deleting=false
+moving=false
+linking=false
+Icon=postscript
+defaultMimetype=application/octet-stream
diff --git a/kdeprint/slave/templates/Makefile.am b/kdeprint/slave/templates/Makefile.am
new file mode 100644
index 000000000..7fde236a2
--- /dev/null
+++ b/kdeprint/slave/templates/Makefile.am
@@ -0,0 +1,31 @@
+template_DATA = class.template \
+ printer.template \
+ pseudo.template \
+ jobs.template \
+ driver.template \
+ bar-bottom-left.png \
+ bar-top-middle.png \
+ box-bottom-middle.png \
+ box-top-middle.png \
+ bar-bottom-middle.png \
+ bar-top-right.png \
+ box-bottom-right.png \
+ box-top-right.png \
+ bar-bottom-right.png \
+ bottom-left.png \
+ box-centre-kdeprint.png \
+ top-left.png \
+ bar-middle-left.png \
+ bottom-middle.png \
+ box-middle-left.png \
+ top-middle.png \
+ bar-middle-right.png \
+ bottom-right.png \
+ box-middle-right.png \
+ top-right-kdeprint.png \
+ bar-top-left.png \
+ box-bottom-left.png \
+ box-top-left.png \
+ htmlstyles.css
+
+templatedir = $(kde_datadir)/kdeprint/template
diff --git a/kdeprint/slave/templates/bar-bottom-left.png b/kdeprint/slave/templates/bar-bottom-left.png
new file mode 100644
index 000000000..30a323592
--- /dev/null
+++ b/kdeprint/slave/templates/bar-bottom-left.png
Binary files differ
diff --git a/kdeprint/slave/templates/bar-bottom-middle.png b/kdeprint/slave/templates/bar-bottom-middle.png
new file mode 100644
index 000000000..b2ebbbed5
--- /dev/null
+++ b/kdeprint/slave/templates/bar-bottom-middle.png
Binary files differ
diff --git a/kdeprint/slave/templates/bar-bottom-right.png b/kdeprint/slave/templates/bar-bottom-right.png
new file mode 100644
index 000000000..e664e1511
--- /dev/null
+++ b/kdeprint/slave/templates/bar-bottom-right.png
Binary files differ
diff --git a/kdeprint/slave/templates/bar-middle-left.png b/kdeprint/slave/templates/bar-middle-left.png
new file mode 100644
index 000000000..72fda9ec2
--- /dev/null
+++ b/kdeprint/slave/templates/bar-middle-left.png
Binary files differ
diff --git a/kdeprint/slave/templates/bar-middle-right.png b/kdeprint/slave/templates/bar-middle-right.png
new file mode 100644
index 000000000..eb8d3201c
--- /dev/null
+++ b/kdeprint/slave/templates/bar-middle-right.png
Binary files differ
diff --git a/kdeprint/slave/templates/bar-top-left.png b/kdeprint/slave/templates/bar-top-left.png
new file mode 100644
index 000000000..b05fd216c
--- /dev/null
+++ b/kdeprint/slave/templates/bar-top-left.png
Binary files differ
diff --git a/kdeprint/slave/templates/bar-top-middle.png b/kdeprint/slave/templates/bar-top-middle.png
new file mode 100644
index 000000000..387f81017
--- /dev/null
+++ b/kdeprint/slave/templates/bar-top-middle.png
Binary files differ
diff --git a/kdeprint/slave/templates/bar-top-right.png b/kdeprint/slave/templates/bar-top-right.png
new file mode 100644
index 000000000..a552ff91d
--- /dev/null
+++ b/kdeprint/slave/templates/bar-top-right.png
Binary files differ
diff --git a/kdeprint/slave/templates/bottom-left.png b/kdeprint/slave/templates/bottom-left.png
new file mode 100644
index 000000000..78c9fece3
--- /dev/null
+++ b/kdeprint/slave/templates/bottom-left.png
Binary files differ
diff --git a/kdeprint/slave/templates/bottom-middle.png b/kdeprint/slave/templates/bottom-middle.png
new file mode 100644
index 000000000..41e52dd8a
--- /dev/null
+++ b/kdeprint/slave/templates/bottom-middle.png
Binary files differ
diff --git a/kdeprint/slave/templates/bottom-right.png b/kdeprint/slave/templates/bottom-right.png
new file mode 100644
index 000000000..ef81b04a8
--- /dev/null
+++ b/kdeprint/slave/templates/bottom-right.png
Binary files differ
diff --git a/kdeprint/slave/templates/box-bottom-left.png b/kdeprint/slave/templates/box-bottom-left.png
new file mode 100644
index 000000000..650fa5743
--- /dev/null
+++ b/kdeprint/slave/templates/box-bottom-left.png
Binary files differ
diff --git a/kdeprint/slave/templates/box-bottom-middle.png b/kdeprint/slave/templates/box-bottom-middle.png
new file mode 100644
index 000000000..2bcd3ea03
--- /dev/null
+++ b/kdeprint/slave/templates/box-bottom-middle.png
Binary files differ
diff --git a/kdeprint/slave/templates/box-bottom-right.png b/kdeprint/slave/templates/box-bottom-right.png
new file mode 100644
index 000000000..975aaeed7
--- /dev/null
+++ b/kdeprint/slave/templates/box-bottom-right.png
Binary files differ
diff --git a/kdeprint/slave/templates/box-centre-kdeprint.png b/kdeprint/slave/templates/box-centre-kdeprint.png
new file mode 100644
index 000000000..97da1910e
--- /dev/null
+++ b/kdeprint/slave/templates/box-centre-kdeprint.png
Binary files differ
diff --git a/kdeprint/slave/templates/box-middle-left.png b/kdeprint/slave/templates/box-middle-left.png
new file mode 100644
index 000000000..62a720178
--- /dev/null
+++ b/kdeprint/slave/templates/box-middle-left.png
Binary files differ
diff --git a/kdeprint/slave/templates/box-middle-right.png b/kdeprint/slave/templates/box-middle-right.png
new file mode 100644
index 000000000..aa94c0c90
--- /dev/null
+++ b/kdeprint/slave/templates/box-middle-right.png
Binary files differ
diff --git a/kdeprint/slave/templates/box-top-left.png b/kdeprint/slave/templates/box-top-left.png
new file mode 100644
index 000000000..34aba9195
--- /dev/null
+++ b/kdeprint/slave/templates/box-top-left.png
Binary files differ
diff --git a/kdeprint/slave/templates/box-top-middle.png b/kdeprint/slave/templates/box-top-middle.png
new file mode 100644
index 000000000..7ee2a0738
--- /dev/null
+++ b/kdeprint/slave/templates/box-top-middle.png
Binary files differ
diff --git a/kdeprint/slave/templates/box-top-right.png b/kdeprint/slave/templates/box-top-right.png
new file mode 100644
index 000000000..26d16d313
--- /dev/null
+++ b/kdeprint/slave/templates/box-top-right.png
Binary files differ
diff --git a/kdeprint/slave/templates/class.template b/kdeprint/slave/templates/class.template
new file mode 100644
index 000000000..4cbc075ab
--- /dev/null
+++ b/kdeprint/slave/templates/class.template
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 1st August 2004), see www.w3.org" />
+
+ <title>%1</title>
+<style type="text/css">
+/*<![CDATA[*/
+img {margin: 0px; padding: 0px}
+body {margin: 0px; padding: 0px; background-color: #418ade;}
+.bar_text a {color: #008;};
+/*]]>*/
+</style>
+<link rel="stylesheet" href="htmlstyles.css" type="text/css" />
+</head>
+
+<body>
+ <div style=
+ "background-image: url(top-middle.png); width: 100%; height: 131px;">
+ <div style="position: absolute; right: 0px;">
+ <img src="top-right-kdeprint.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="position: absolute; left: 0px;">
+ <img src="top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style=
+ "position: absolute; top: 25px; right: 100px; text-align: right; font-size: xx-large; font-weight: bold; text-shadow: #fff 0px 0px 5px; color: #444">
+ %1 <!-- Konqueror -->
+ </div>
+
+ <div style=
+ "position: absolute; top: 70px; right: 100px; text-align: right; font-size: large; font-weight: bold; text-shadow: #fff 0px 0px 5px; color: #444">
+ %1 <!-- Conquer your Desktop -->
+ </div>
+ </div><!-- the bar -->
+
+ <div style=
+ "width: 100%; background-image: url(bar-middle-right.png); background-repeat: repeat-y; background-position: right; background-color: #57a1d8;">
+ <div style=
+ "width: 100%; height: 19px; background-image: url(bar-top-middle.png);">
+ <div style="width: 22px; height: 19px; float: left;">
+ <img src="bar-top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 22px; height: 19px; float: right;">
+ <img src="bar-top-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; background-image: url(bar-middle-left.png); background-repeat: repeat-y; text-align: center; color: white;"
+ class="bar_text">
+ %1 <!-- Menu -->
+ </div>
+
+ <div style=
+ "width: 100%; height: 25px; background-image: url(bar-bottom-middle.png);">
+ <div style="width: 22px; height: 25px; float: left;">
+ <img src="bar-bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 22px; height: 25px; float: right;">
+ <img src="bar-bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+ </div><!-- the main text box -->
+
+ <div align="center">
+ <div style=
+ "width: 90%; background-image: url(box-middle-right.png); background-repeat: repeat-y; background-position: right;">
+ <div style=
+ "width: 100%; height: 35px; background-image: url(box-top-middle.png);">
+ <div style="width: 20px; height: 35px; float: left;">
+ <img src="box-top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 20px; height: 35px; float: right;">
+ <img src="box-top-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; background-image: url(box-middle-left.png); background-repeat: repeat-y; text-align: center">
+ <div style=
+ "background-image: url(box-centre-kdeprint.png); background-repeat: no-repeat; background-color: #dfe7f3; background-position: top right; margin-left: 20px; margin-right: 20px;">
+ <h2 style="margin-top: 0px;"><img src="%1" width="32" height="32"/>&nbsp;%1<!--Title--></h2>
+
+ <table border="1" cellspacing="0" cellpadding="1" width="100%">
+ <tr class="top" align="left" valign="middle">
+ <td>&nbsp;%1
+ <!-- Printer Name --> </td>
+ </tr>
+
+ <tr>
+ <td>
+ <table border="1" cellspacing="0" cellpadding="2" width="100%">
+ <tr class="contentyellow">
+ <td width="40%">%1 </td>
+
+ <td width="58%">%1 <!--Type--></td>
+ </tr>
+
+ <tr class="contentwhite">
+ <td>%1 </td>
+
+ <td>%1 <!-- State--></td>
+ </tr>
+
+ <tr class="contentyellow">
+ <td>%1 </td>
+
+ <td>%1 <!-- Location --></td>
+ </tr>
+
+ <tr class="contentwhite">
+ <td>%1 </td>
+
+ <td>%1 <!-- Description --></td>
+ </tr>
+
+ <tr class="contentyellow">
+ <td>%1 </td>
+
+ <td>%1 <!-- URI --></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ </p>
+
+ <p>
+
+ <table border="1" cellspacing="0" cellpadding="2" width="100%">
+ <tr class="top" align="left" valign="middle">
+ <td>&nbsp;%1
+ <!-- Members --></td>
+ </tr>
+
+ <tr>
+ <td>
+ <table border="1" cellspacing="0" cellpadding="2" width="100%">
+ <tr class="contentyellow">
+ <td width="100%">%1</td>
+
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; height: 22px; background-image: url(box-bottom-middle.png);">
+ <div style="width: 25px; height: 22px; float: left;">
+ <img src="box-bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 25px; height: 22px; float: right;">
+ <img src="box-bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div style=
+ "background-image: url(bottom-middle.png); width: 100%; height: 100px;">
+ <div style="position: absolute; right: 0px;">
+ <img src="bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="position: absolute; left: 0px;">
+ <img src="bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+</body>
+</html>
diff --git a/kdeprint/slave/templates/driver.template b/kdeprint/slave/templates/driver.template
new file mode 100644
index 000000000..d5c8af111
--- /dev/null
+++ b/kdeprint/slave/templates/driver.template
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 1st August 2004), see www.w3.org" />
+
+ <title>%1</title>
+<style type="text/css">
+/*<![CDATA[*/
+img {margin: 0px; padding: 0px}
+body {margin: 0px; padding: 0px; background-color: #418ade;}
+.bar_text a {color: #008;};
+/*]]>*/
+</style>
+<link rel="stylesheet" href="htmlstyles.css" type="text/css" />
+</head>
+
+<body>
+ <div style=
+ "background-image: url(top-middle.png); width: 100%; height: 131px;">
+ <div style="position: absolute; right: 0px;">
+ <img src="top-right-kdeprint.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="position: absolute; left: 0px;">
+ <img src="top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style=
+ "position: absolute; top: 25px; right: 100px; text-align: right; font-size: xx-large; font-weight: bold; text-shadow: #fff 0px 0px 5px; color: #444">
+ %1 <!-- Konqueror -->
+ </div>
+
+ <div style=
+ "position: absolute; top: 70px; right: 100px; text-align: right; font-size: large; font-weight: bold; text-shadow: #fff 0px 0px 5px; color: #444">
+ %1 <!-- Conquer your Desktop -->
+ </div>
+ </div><!-- the bar -->
+
+ <div style=
+ "width: 100%; background-image: url(bar-middle-right.png); background-repeat: repeat-y; background-position: right; background-color: #57a1d8;">
+ <div style=
+ "width: 100%; height: 19px; background-image: url(bar-top-middle.png);">
+ <div style="width: 22px; height: 19px; float: left;">
+ <img src="bar-top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 22px; height: 19px; float: right;">
+ <img src="bar-top-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; background-image: url(bar-middle-left.png); background-repeat: repeat-y; text-align: center; color: white;"
+ class="bar_text">
+ %1 <!-- Menu -->
+ </div>
+
+ <div style=
+ "width: 100%; height: 25px; background-image: url(bar-bottom-middle.png);">
+ <div style="width: 22px; height: 25px; float: left;">
+ <img src="bar-bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 22px; height: 25px; float: right;">
+ <img src="bar-bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+ </div><!-- the main text box -->
+
+ <div align="center">
+ <div style=
+ "width: 90%; background-image: url(box-middle-right.png); background-repeat: repeat-y; background-position: right;">
+ <div style=
+ "width: 100%; height: 35px; background-image: url(box-top-middle.png);">
+ <div style="width: 20px; height: 35px; float: left;">
+ <img src="box-top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 20px; height: 35px; float: right;">
+ <img src="box-top-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; background-image: url(box-middle-left.png); background-repeat: repeat-y; text-align: center">
+ <div style=
+ "background-image: url(box-centre-kdeprint.png); background-repeat: no-repeat; background-color: #dfe7f3; background-position: top right; margin-left: 20px; margin-right: 20px;">
+ <h2 style="margin-top: 0px;"><img src="%1" width="32" height="32"/>&nbsp;%1<!--Title--></h2>
+
+ <table border="1" cellspacing="0" cellpadding="1" width="100%">
+ <tr>
+ <td>
+ <table border="1" cellspacing="0" cellpadding="2" width="100%">
+
+ %1
+
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; height: 22px; background-image: url(box-bottom-middle.png);">
+ <div style="width: 25px; height: 22px; float: left;">
+ <img src="box-bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 25px; height: 22px; float: right;">
+ <img src="box-bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div style=
+ "background-image: url(bottom-middle.png); width: 100%; height: 100px;">
+ <div style="position: absolute; right: 0px;">
+ <img src="bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="position: absolute; left: 0px;">
+ <img src="bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+</body>
+</html>
diff --git a/kdeprint/slave/templates/htmlstyles.css b/kdeprint/slave/templates/htmlstyles.css
new file mode 100644
index 000000000..650ed76db
--- /dev/null
+++ b/kdeprint/slave/templates/htmlstyles.css
@@ -0,0 +1,38 @@
+td.main { background-color: #505050;}
+td.logo { background-color: #DDDDDD;}
+td.lines { background-color: #DDDDDD;
+ background-image: url(lines.png);}
+td.trans { background-repeat: no-repeat;}
+td.end { background-image: url(lines2.png);
+ background-repeat: x-repeat;}
+td.shadow1 { background-image: url(shadow1.png);
+ background-repeat: x-repeat;}
+tr.top { font-family: sans-serif;
+ color: #ffffff;
+ background-color: #505050}
+tr.contentyellow { font-family: sans-serif;
+ color: #000000;
+ background-color: #fff4c9}
+tr.contentwhite { font-family: sans-serif;
+ color: #000000;
+ background-color: #FFFFFF}
+tr.menurow {background-color: #505050;
+ color: #000000;
+ vertical-align: middle;}
+td.deco {color: #ffffff;
+ background-color: #505050;
+ font-family: sans-serif;
+ font-size: small;}
+td.menuactive {color: #ffcc00;
+ background-color: #777777;
+ font-family: sans-serif;
+ font-size: small;}
+td.menu {color: #ffffff;
+ background-color: #505050;
+ font-family: sans-serif;}
+a.menu {color: #eeeeee;
+ font-family: sans-serif;
+ font-size: small;}
+a.menu:hover {color: #ffffff;
+ text-decoration: none;}
+
diff --git a/kdeprint/slave/templates/jobs.template b/kdeprint/slave/templates/jobs.template
new file mode 100644
index 000000000..6c326feec
--- /dev/null
+++ b/kdeprint/slave/templates/jobs.template
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 1st August 2004), see www.w3.org" />
+
+ <title>%1</title>
+<style type="text/css">
+/*<![CDATA[*/
+img {margin: 0px; padding: 0px}
+body {margin: 0px; padding: 0px; background-color: #418ade;}
+.bar_text a {color: #008;};
+/*]]>*/
+</style>
+<link rel="stylesheet" href="htmlstyles.css" type="text/css" />
+</head>
+
+<body>
+ <div style=
+ "background-image: url(top-middle.png); width: 100%; height: 131px;">
+ <div style="position: absolute; right: 0px;">
+ <img src="top-right-kdeprint.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="position: absolute; left: 0px;">
+ <img src="top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style=
+ "position: absolute; top: 25px; right: 100px; text-align: right; font-size: xx-large; font-weight: bold; text-shadow: #fff 0px 0px 5px; color: #444">
+ %1 <!-- Konqueror -->
+ </div>
+
+ <div style=
+ "position: absolute; top: 70px; right: 100px; text-align: right; font-size: large; font-weight: bold; text-shadow: #fff 0px 0px 5px; color: #444">
+ %1 <!-- Conquer your Desktop -->
+ </div>
+ </div><!-- the bar -->
+
+ <div style=
+ "width: 100%; background-image: url(bar-middle-right.png); background-repeat: repeat-y; background-position: right; background-color: #57a1d8;">
+ <div style=
+ "width: 100%; height: 19px; background-image: url(bar-top-middle.png);">
+ <div style="width: 22px; height: 19px; float: left;">
+ <img src="bar-top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 22px; height: 19px; float: right;">
+ <img src="bar-top-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; background-image: url(bar-middle-left.png); background-repeat: repeat-y; text-align: center; color: white;"
+ class="bar_text">
+ %1 <!-- Menu -->
+ </div>
+
+ <div style=
+ "width: 100%; height: 25px; background-image: url(bar-bottom-middle.png);">
+ <div style="width: 22px; height: 25px; float: left;">
+ <img src="bar-bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 22px; height: 25px; float: right;">
+ <img src="bar-bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+ </div><!-- the main text box -->
+
+ <div align="center">
+ <div style=
+ "width: 90%; background-image: url(box-middle-right.png); background-repeat: repeat-y; background-position: right;">
+ <div style=
+ "width: 100%; height: 35px; background-image: url(box-top-middle.png);">
+ <div style="width: 20px; height: 35px; float: left;">
+ <img src="box-top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 20px; height: 35px; float: right;">
+ <img src="box-top-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; background-image: url(box-middle-left.png); background-repeat: repeat-y; text-align: center">
+ <div style=
+ "background-image: url(box-centre-kdeprint.png); background-repeat: no-repeat; background-color: #dfe7f3; background-position: top right; margin-left: 20px; margin-right: 20px;">
+ <h2 style="margin-top: 0px;"><img src="%1" width="32" height="32"/>&nbsp;%1<!--Title--></h2>
+
+ <table border="1" cellspacing="0" cellpadding="1" width="100%">
+ <tr>
+ <td>
+ <table border="1" cellspacing="0" cellpadding="2" width="100%">
+ <tr class="top">
+ <td width="10%">%1</td>
+ <td width="15%">%1</td>
+ <td width="20%">%1</td>
+ <td width="40%">%1</td>
+ <td width="15%">%1</td>
+ </tr>
+
+ %1
+
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; height: 22px; background-image: url(box-bottom-middle.png);">
+ <div style="width: 25px; height: 22px; float: left;">
+ <img src="box-bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 25px; height: 22px; float: right;">
+ <img src="box-bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div style=
+ "background-image: url(bottom-middle.png); width: 100%; height: 100px;">
+ <div style="position: absolute; right: 0px;">
+ <img src="bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="position: absolute; left: 0px;">
+ <img src="bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+</body>
+</html>
diff --git a/kdeprint/slave/templates/printer.template b/kdeprint/slave/templates/printer.template
new file mode 100644
index 000000000..44d6ba82b
--- /dev/null
+++ b/kdeprint/slave/templates/printer.template
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 1st August 2004), see www.w3.org" />
+
+ <title>%1</title>
+<style type="text/css">
+/*<![CDATA[*/
+img {margin: 0px; padding: 0px}
+body {margin: 0px; padding: 0px; background-color: #418ade;}
+.bar_text a {color: #008;};
+/*]]>*/
+</style>
+<link rel="stylesheet" href="htmlstyles.css" type="text/css" />
+</head>
+
+<body>
+ <div style=
+ "background-image: url(top-middle.png); width: 100%; height: 131px;">
+ <div style="position: absolute; right: 0px;">
+ <img src="top-right-kdeprint.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="position: absolute; left: 0px;">
+ <img src="top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style=
+ "position: absolute; top: 25px; right: 100px; text-align: right; font-size: xx-large; font-weight: bold; text-shadow: #fff 0px 0px 5px; color: #444">
+ %1 <!-- Konqueror -->
+ </div>
+
+ <div style=
+ "position: absolute; top: 70px; right: 100px; text-align: right; font-size: large; font-weight: bold; text-shadow: #fff 0px 0px 5px; color: #444">
+ %1 <!-- Conquer your Desktop -->
+ </div>
+ </div><!-- the bar -->
+
+ <div style=
+ "width: 100%; background-image: url(bar-middle-right.png); background-repeat: repeat-y; background-position: right; background-color: #57a1d8;">
+ <div style=
+ "width: 100%; height: 19px; background-image: url(bar-top-middle.png);">
+ <div style="width: 22px; height: 19px; float: left;">
+ <img src="bar-top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 22px; height: 19px; float: right;">
+ <img src="bar-top-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; background-image: url(bar-middle-left.png); background-repeat: repeat-y; text-align: center; color: white;"
+ class="bar_text">
+ %1 <!-- Menu -->
+ </div>
+
+ <div style=
+ "width: 100%; height: 25px; background-image: url(bar-bottom-middle.png);">
+ <div style="width: 22px; height: 25px; float: left;">
+ <img src="bar-bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 22px; height: 25px; float: right;">
+ <img src="bar-bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+ </div><!-- the main text box -->
+
+ <div align="center">
+ <div style=
+ "width: 90%; background-image: url(box-middle-right.png); background-repeat: repeat-y; background-position: right;">
+ <div style=
+ "width: 100%; height: 35px; background-image: url(box-top-middle.png);">
+ <div style="width: 20px; height: 35px; float: left;">
+ <img src="box-top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 20px; height: 35px; float: right;">
+ <img src="box-top-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; background-image: url(box-middle-left.png); background-repeat: repeat-y; text-align: center">
+ <div style=
+ "background-image: url(box-centre-kdeprint.png); background-repeat: no-repeat; background-color: #dfe7f3; background-position: top right; margin-left: 20px; margin-right: 20px;">
+ <h2 style="margin-top: 0px;"><img src="%1" width="32" height="32"/>&nbsp;%1<!--Title--></h2>
+
+ <table border="1" cellspacing="0" cellpadding="1" width="100%">
+ <tr class="top" align="left" valign="middle">
+ <td>&nbsp;%1
+ <!-- Printer Name --> </td>
+ </tr>
+
+ <tr>
+ <td>
+ <table border="1" cellspacing="0" cellpadding="2" width="100%">
+ <tr class="contentyellow">
+ <td width="41%">%1 </td>
+
+ <td width="59%">%1 <!--Type--></td>
+ </tr>
+
+ <tr class="contentwhite">
+ <td>%1 </td>
+
+ <td>%1 <!-- State--></td>
+ </tr>
+
+ <tr class="contentyellow">
+ <td>%1 </td>
+
+ <td>%1 <!-- Location --></td>
+ </tr>
+
+ <tr class="contentwhite">
+ <td>%1 </td>
+
+ <td>%1 <!-- Description --></td>
+ </tr>
+
+ <tr class="contentyellow">
+ <td>%1 </td>
+
+ <td>%1 <!-- URI --></td>
+ </tr>
+
+ <tr class="contentwhite">
+ <td>%1 </td>
+
+ <td>%1 <!-- Interface --></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ </p>
+
+ <p>
+
+ <table border="1" cellspacing="0" cellpadding="2" width="100%">
+ <tr class="top" align="left" valign="middle">
+ <td>&nbsp;%1 <!-- Driver --></td>
+ </tr>
+
+ <tr>
+ <td>
+ <table border="1" cellspacing="0" cellpadding="2" width="100%">
+ <tr class="contentyellow">
+ <td width="41%">%1 </td>
+
+ <td width="59%">%1
+ <!--Manufacturer--></td>
+ </tr>
+
+ <tr class="contentwhite">
+ <td>%1 </td>
+
+ <td>%1 <!-- Model--></td>
+ </tr>
+
+ <tr class="contentyellow">
+ <td>%1 </td>
+
+ <td>%1 <!-- Driver Informaton --></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; height: 22px; background-image: url(box-bottom-middle.png);">
+ <div style="width: 25px; height: 22px; float: left;">
+ <img src="box-bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 25px; height: 22px; float: right;">
+ <img src="box-bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div style=
+ "background-image: url(bottom-middle.png); width: 100%; height: 100px;">
+ <div style="position: absolute; right: 0px;">
+ <img src="bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="position: absolute; left: 0px;">
+ <img src="bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+</body>
+</html>
diff --git a/kdeprint/slave/templates/pseudo.template b/kdeprint/slave/templates/pseudo.template
new file mode 100644
index 000000000..d6dec46df
--- /dev/null
+++ b/kdeprint/slave/templates/pseudo.template
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 1st August 2004), see www.w3.org" />
+
+ <title>%1</title>
+<style type="text/css">
+/*<![CDATA[*/
+img {margin: 0px; padding: 0px}
+body {margin: 0px; padding: 0px; background-color: #418ade;}
+.bar_text a {color: #008;};
+/*]]>*/
+</style>
+<link rel="stylesheet" href="htmlstyles.css" type="text/css" />
+</head>
+
+<body>
+ <div style=
+ "background-image: url(top-middle.png); width: 100%; height: 131px;">
+ <div style="position: absolute; right: 0px;">
+ <img src="top-right-kdeprint.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="position: absolute; left: 0px;">
+ <img src="top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style=
+ "position: absolute; top: 25px; right: 100px; text-align: right; font-size: xx-large; font-weight: bold; text-shadow: #fff 0px 0px 5px; color: #444">
+ %1 <!-- Konqueror -->
+ </div>
+
+ <div style=
+ "position: absolute; top: 70px; right: 100px; text-align: right; font-size: large; font-weight: bold; text-shadow: #fff 0px 0px 5px; color: #444">
+ %1 <!-- Conquer your Desktop -->
+ </div>
+ </div><!-- the bar -->
+
+ <div style=
+ "width: 100%; background-image: url(bar-middle-right.png); background-repeat: repeat-y; background-position: right; background-color: #57a1d8;">
+ <div style=
+ "width: 100%; height: 19px; background-image: url(bar-top-middle.png);">
+ <div style="width: 22px; height: 19px; float: left;">
+ <img src="bar-top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 22px; height: 19px; float: right;">
+ <img src="bar-top-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; background-image: url(bar-middle-left.png); background-repeat: repeat-y; text-align: center; color: white;"
+ class="bar_text">
+ %1 <!-- Menu -->
+ </div>
+
+ <div style=
+ "width: 100%; height: 25px; background-image: url(bar-bottom-middle.png);">
+ <div style="width: 22px; height: 25px; float: left;">
+ <img src="bar-bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 22px; height: 25px; float: right;">
+ <img src="bar-bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+ </div><!-- the main text box -->
+
+ <div align="center">
+ <div style=
+ "width: 90%; background-image: url(box-middle-right.png); background-repeat: repeat-y; background-position: right;">
+ <div style=
+ "width: 100%; height: 35px; background-image: url(box-top-middle.png);">
+ <div style="width: 20px; height: 35px; float: left;">
+ <img src="box-top-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 20px; height: 35px; float: right;">
+ <img src="box-top-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; background-image: url(box-middle-left.png); background-repeat: repeat-y; text-align: center">
+ <div style=
+ "background-image: url(box-centre-kdeprint.png); background-repeat: no-repeat; background-color: #dfe7f3; background-position: top right; margin-left: 20px; margin-right: 20px;">
+ <h2 style="margin-top: 0px;"><img src="%1" width="32" height="32"/>&nbsp;%1<!--Title--></h2>
+
+ <table border="1" cellspacing="0" cellpadding="1" width="100%">
+ <tr class="top" align="left" valign="middle">
+ <td>&nbsp;%1
+ <!-- Printer Name --> </td>
+ </tr>
+
+ <tr>
+ <td>
+ <table border="1" cellspacing="0" cellpadding="2" width="100%">
+ <tr class="contentyellow">
+ <td width="41%">%1 </td>
+
+ <td width="59%">%1 <!--Type--></td>
+ </tr>
+
+ <tr class="contentwhite">
+ <td>%1 </td>
+
+ <td>%1 <!-- State--></td>
+ </tr>
+
+ <tr class="contentyellow">
+ <td>%1 </td>
+
+ <td>%1 <!-- Location --></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ </p>
+
+ <p>
+
+ <table border="1" cellspacing="0" cellpadding="2" width="100%">
+ <tr class="top" align="left" valign="middle">
+ <td>&nbsp;%1 <!-- Command Properties --></td>
+ </tr>
+
+ <tr>
+ <td>
+ <table border="1" cellspacing="0" cellpadding="2" width="100%">
+ <tr class="contentyellow">
+ <td width="40%">%1 </td>
+
+ <td width="58%">%1
+ <!--Command--></td>
+ </tr>
+
+ <tr class="contentwhite">
+ <td>%1 </td>
+
+ <td>%1 <!-- Use Output File --></td>
+ </tr>
+
+ <tr class="contentyellow">
+ <td>%1 </td>
+
+ <td>%1 <!-- Default Extension --></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ </div>
+ </div>
+
+ <div style=
+ "width: 100%; height: 22px; background-image: url(box-bottom-middle.png);">
+ <div style="width: 25px; height: 22px; float: left;">
+ <img src="box-bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="width: 25px; height: 22px; float: right;">
+ <img src="box-bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div style=
+ "background-image: url(bottom-middle.png); width: 100%; height: 100px;">
+ <div style="position: absolute; right: 0px;">
+ <img src="bottom-right.png" style="margin: 0px" alt="" />
+ </div>
+
+ <div style="position: absolute; left: 0px;">
+ <img src="bottom-left.png" style="margin: 0px" alt="" />
+ </div>
+ </div>
+</body>
+</html>
diff --git a/kdeprint/slave/templates/top-left.png b/kdeprint/slave/templates/top-left.png
new file mode 100644
index 000000000..d7551c0d5
--- /dev/null
+++ b/kdeprint/slave/templates/top-left.png
Binary files differ
diff --git a/kdeprint/slave/templates/top-middle.png b/kdeprint/slave/templates/top-middle.png
new file mode 100644
index 000000000..bb3fe7428
--- /dev/null
+++ b/kdeprint/slave/templates/top-middle.png
Binary files differ
diff --git a/kdeprint/slave/templates/top-right-kdeprint.png b/kdeprint/slave/templates/top-right-kdeprint.png
new file mode 100644
index 000000000..56717342c
--- /dev/null
+++ b/kdeprint/slave/templates/top-right-kdeprint.png
Binary files differ