diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 4aed2c8219774f5d797760606b8489a92ddc5163 (patch) | |
tree | 3f8c130f7d269626bf6a9447407ef6c35954426a /kdeprint | |
download | tdebase-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')
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 Binary files differnew file mode 100644 index 000000000..b6b1011f3 --- /dev/null +++ b/kdeprint/kdeprintfax/cr16-action-abentry.png 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 Binary files differnew file mode 100644 index 000000000..ad29adba7 --- /dev/null +++ b/kdeprint/kdeprintfax/hi128-app-kdeprintfax.png diff --git a/kdeprint/kdeprintfax/hi16-app-kdeprintfax.png b/kdeprint/kdeprintfax/hi16-app-kdeprintfax.png Binary files differnew file mode 100644 index 000000000..bb676f8b7 --- /dev/null +++ b/kdeprint/kdeprintfax/hi16-app-kdeprintfax.png diff --git a/kdeprint/kdeprintfax/hi22-app-kdeprintfax.png b/kdeprint/kdeprintfax/hi22-app-kdeprintfax.png Binary files differnew file mode 100644 index 000000000..90fc64b0b --- /dev/null +++ b/kdeprint/kdeprintfax/hi22-app-kdeprintfax.png diff --git a/kdeprint/kdeprintfax/hi32-app-kdeprintfax.png b/kdeprint/kdeprintfax/hi32-app-kdeprintfax.png Binary files differnew file mode 100644 index 000000000..7330eb41f --- /dev/null +++ b/kdeprint/kdeprintfax/hi32-app-kdeprintfax.png diff --git a/kdeprint/kdeprintfax/hi48-app-kdeprintfax.png b/kdeprint/kdeprintfax/hi48-app-kdeprintfax.png Binary files differnew file mode 100644 index 000000000..3f58c3695 --- /dev/null +++ b/kdeprint/kdeprintfax/hi48-app-kdeprintfax.png diff --git a/kdeprint/kdeprintfax/hi64-app-kdeprintfax.png b/kdeprint/kdeprintfax/hi64-app-kdeprintfax.png Binary files differnew file mode 100644 index 000000000..47e156d5f --- /dev/null +++ b/kdeprint/kdeprintfax/hi64-app-kdeprintfax.png diff --git a/kdeprint/kdeprintfax/hisc-app-kdeprintfax.svgz b/kdeprint/kdeprintfax/hisc-app-kdeprintfax.svgz Binary files differnew file mode 100644 index 000000000..f46fd4401 --- /dev/null +++ b/kdeprint/kdeprintfax/hisc-app-kdeprintfax.svgz 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>&File</text> + <Action name="file_add" /> + <Action name="file_remove" /> + <Separator /> + <Action name="file_view" /> + </Menu> + <Menu name="fax"><text>Fa&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 Binary files differnew file mode 100644 index 000000000..7db5f56b1 --- /dev/null +++ b/kdeprint/kjobviewer/hi128-app-kjobviewer.png diff --git a/kdeprint/kjobviewer/hi16-app-kjobviewer.png b/kdeprint/kjobviewer/hi16-app-kjobviewer.png Binary files differnew file mode 100644 index 000000000..d6defce21 --- /dev/null +++ b/kdeprint/kjobviewer/hi16-app-kjobviewer.png diff --git a/kdeprint/kjobviewer/hi22-app-kjobviewer.png b/kdeprint/kjobviewer/hi22-app-kjobviewer.png Binary files differnew file mode 100644 index 000000000..a71ee2817 --- /dev/null +++ b/kdeprint/kjobviewer/hi22-app-kjobviewer.png diff --git a/kdeprint/kjobviewer/hi32-app-kjobviewer.png b/kdeprint/kjobviewer/hi32-app-kjobviewer.png Binary files differnew file mode 100644 index 000000000..d554b554f --- /dev/null +++ b/kdeprint/kjobviewer/hi32-app-kjobviewer.png diff --git a/kdeprint/kjobviewer/hi48-app-kjobviewer.png b/kdeprint/kjobviewer/hi48-app-kjobviewer.png Binary files differnew file mode 100644 index 000000000..13adbd006 --- /dev/null +++ b/kdeprint/kjobviewer/hi48-app-kjobviewer.png diff --git a/kdeprint/kjobviewer/hi64-app-kjobviewer.png b/kdeprint/kjobviewer/hi64-app-kjobviewer.png Binary files differnew file mode 100644 index 000000000..5d22d215e --- /dev/null +++ b/kdeprint/kjobviewer/hi64-app-kjobviewer.png diff --git a/kdeprint/kjobviewer/hisc-app-kjobviewer.svgz b/kdeprint/kjobviewer/hisc-app-kjobviewer.svgz Binary files differnew file mode 100644 index 000000000..f40b4bdfa --- /dev/null +++ b/kdeprint/kjobviewer/hisc-app-kjobviewer.svgz 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>&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&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 Binary files differnew file mode 100644 index 000000000..7db5f56b1 --- /dev/null +++ b/kdeprint/printmgr/hi128-app-printmgr.png diff --git a/kdeprint/printmgr/hi16-app-printmgr.png b/kdeprint/printmgr/hi16-app-printmgr.png Binary files differnew file mode 100644 index 000000000..d6defce21 --- /dev/null +++ b/kdeprint/printmgr/hi16-app-printmgr.png diff --git a/kdeprint/printmgr/hi22-app-printmgr.png b/kdeprint/printmgr/hi22-app-printmgr.png Binary files differnew file mode 100644 index 000000000..a71ee2817 --- /dev/null +++ b/kdeprint/printmgr/hi22-app-printmgr.png diff --git a/kdeprint/printmgr/hi32-app-printmgr.png b/kdeprint/printmgr/hi32-app-printmgr.png Binary files differnew file mode 100644 index 000000000..d554b554f --- /dev/null +++ b/kdeprint/printmgr/hi32-app-printmgr.png diff --git a/kdeprint/printmgr/hi48-app-printmgr.png b/kdeprint/printmgr/hi48-app-printmgr.png Binary files differnew file mode 100644 index 000000000..13adbd006 --- /dev/null +++ b/kdeprint/printmgr/hi48-app-printmgr.png diff --git a/kdeprint/printmgr/hi64-app-printmgr.png b/kdeprint/printmgr/hi64-app-printmgr.png Binary files differnew file mode 100644 index 000000000..5d22d215e --- /dev/null +++ b/kdeprint/printmgr/hi64-app-printmgr.png diff --git a/kdeprint/printmgr/hisc-app-printmgr.svgz b/kdeprint/printmgr/hisc-app-printmgr.svgz Binary files differnew file mode 100644 index 000000000..f40b4bdfa --- /dev/null +++ b/kdeprint/printmgr/hisc-app-printmgr.svgz 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\"> </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\"> ").append(*it1).append(" </td>"); + else + s.append("<td height=20 class=\"menu\"> <a class=\"menu\" href=\"").append(*it2).append("\">").append(*it1).append("</a> </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() + " (" + (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 Binary files differnew file mode 100644 index 000000000..30a323592 --- /dev/null +++ b/kdeprint/slave/templates/bar-bottom-left.png diff --git a/kdeprint/slave/templates/bar-bottom-middle.png b/kdeprint/slave/templates/bar-bottom-middle.png Binary files differnew file mode 100644 index 000000000..b2ebbbed5 --- /dev/null +++ b/kdeprint/slave/templates/bar-bottom-middle.png diff --git a/kdeprint/slave/templates/bar-bottom-right.png b/kdeprint/slave/templates/bar-bottom-right.png Binary files differnew file mode 100644 index 000000000..e664e1511 --- /dev/null +++ b/kdeprint/slave/templates/bar-bottom-right.png diff --git a/kdeprint/slave/templates/bar-middle-left.png b/kdeprint/slave/templates/bar-middle-left.png Binary files differnew file mode 100644 index 000000000..72fda9ec2 --- /dev/null +++ b/kdeprint/slave/templates/bar-middle-left.png diff --git a/kdeprint/slave/templates/bar-middle-right.png b/kdeprint/slave/templates/bar-middle-right.png Binary files differnew file mode 100644 index 000000000..eb8d3201c --- /dev/null +++ b/kdeprint/slave/templates/bar-middle-right.png diff --git a/kdeprint/slave/templates/bar-top-left.png b/kdeprint/slave/templates/bar-top-left.png Binary files differnew file mode 100644 index 000000000..b05fd216c --- /dev/null +++ b/kdeprint/slave/templates/bar-top-left.png diff --git a/kdeprint/slave/templates/bar-top-middle.png b/kdeprint/slave/templates/bar-top-middle.png Binary files differnew file mode 100644 index 000000000..387f81017 --- /dev/null +++ b/kdeprint/slave/templates/bar-top-middle.png diff --git a/kdeprint/slave/templates/bar-top-right.png b/kdeprint/slave/templates/bar-top-right.png Binary files differnew file mode 100644 index 000000000..a552ff91d --- /dev/null +++ b/kdeprint/slave/templates/bar-top-right.png diff --git a/kdeprint/slave/templates/bottom-left.png b/kdeprint/slave/templates/bottom-left.png Binary files differnew file mode 100644 index 000000000..78c9fece3 --- /dev/null +++ b/kdeprint/slave/templates/bottom-left.png diff --git a/kdeprint/slave/templates/bottom-middle.png b/kdeprint/slave/templates/bottom-middle.png Binary files differnew file mode 100644 index 000000000..41e52dd8a --- /dev/null +++ b/kdeprint/slave/templates/bottom-middle.png diff --git a/kdeprint/slave/templates/bottom-right.png b/kdeprint/slave/templates/bottom-right.png Binary files differnew file mode 100644 index 000000000..ef81b04a8 --- /dev/null +++ b/kdeprint/slave/templates/bottom-right.png diff --git a/kdeprint/slave/templates/box-bottom-left.png b/kdeprint/slave/templates/box-bottom-left.png Binary files differnew file mode 100644 index 000000000..650fa5743 --- /dev/null +++ b/kdeprint/slave/templates/box-bottom-left.png diff --git a/kdeprint/slave/templates/box-bottom-middle.png b/kdeprint/slave/templates/box-bottom-middle.png Binary files differnew file mode 100644 index 000000000..2bcd3ea03 --- /dev/null +++ b/kdeprint/slave/templates/box-bottom-middle.png diff --git a/kdeprint/slave/templates/box-bottom-right.png b/kdeprint/slave/templates/box-bottom-right.png Binary files differnew file mode 100644 index 000000000..975aaeed7 --- /dev/null +++ b/kdeprint/slave/templates/box-bottom-right.png diff --git a/kdeprint/slave/templates/box-centre-kdeprint.png b/kdeprint/slave/templates/box-centre-kdeprint.png Binary files differnew file mode 100644 index 000000000..97da1910e --- /dev/null +++ b/kdeprint/slave/templates/box-centre-kdeprint.png diff --git a/kdeprint/slave/templates/box-middle-left.png b/kdeprint/slave/templates/box-middle-left.png Binary files differnew file mode 100644 index 000000000..62a720178 --- /dev/null +++ b/kdeprint/slave/templates/box-middle-left.png diff --git a/kdeprint/slave/templates/box-middle-right.png b/kdeprint/slave/templates/box-middle-right.png Binary files differnew file mode 100644 index 000000000..aa94c0c90 --- /dev/null +++ b/kdeprint/slave/templates/box-middle-right.png diff --git a/kdeprint/slave/templates/box-top-left.png b/kdeprint/slave/templates/box-top-left.png Binary files differnew file mode 100644 index 000000000..34aba9195 --- /dev/null +++ b/kdeprint/slave/templates/box-top-left.png diff --git a/kdeprint/slave/templates/box-top-middle.png b/kdeprint/slave/templates/box-top-middle.png Binary files differnew file mode 100644 index 000000000..7ee2a0738 --- /dev/null +++ b/kdeprint/slave/templates/box-top-middle.png diff --git a/kdeprint/slave/templates/box-top-right.png b/kdeprint/slave/templates/box-top-right.png Binary files differnew file mode 100644 index 000000000..26d16d313 --- /dev/null +++ b/kdeprint/slave/templates/box-top-right.png 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"/> %1<!--Title--></h2> + + <table border="1" cellspacing="0" cellpadding="1" width="100%"> + <tr class="top" align="left" valign="middle"> + <td> %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> %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"/> %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"/> %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"/> %1<!--Title--></h2> + + <table border="1" cellspacing="0" cellpadding="1" width="100%"> + <tr class="top" align="left" valign="middle"> + <td> %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> %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"/> %1<!--Title--></h2> + + <table border="1" cellspacing="0" cellpadding="1" width="100%"> + <tr class="top" align="left" valign="middle"> + <td> %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> %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 Binary files differnew file mode 100644 index 000000000..d7551c0d5 --- /dev/null +++ b/kdeprint/slave/templates/top-left.png diff --git a/kdeprint/slave/templates/top-middle.png b/kdeprint/slave/templates/top-middle.png Binary files differnew file mode 100644 index 000000000..bb3fe7428 --- /dev/null +++ b/kdeprint/slave/templates/top-middle.png diff --git a/kdeprint/slave/templates/top-right-kdeprint.png b/kdeprint/slave/templates/top-right-kdeprint.png Binary files differnew file mode 100644 index 000000000..56717342c --- /dev/null +++ b/kdeprint/slave/templates/top-right-kdeprint.png |