diff options
Diffstat (limited to 'kdeprint/lpd/lpdtools.cpp')
-rw-r--r-- | kdeprint/lpd/lpdtools.cpp | 417 |
1 files changed, 0 insertions, 417 deletions
diff --git a/kdeprint/lpd/lpdtools.cpp b/kdeprint/lpd/lpdtools.cpp deleted file mode 100644 index 610e8ead5..000000000 --- a/kdeprint/lpd/lpdtools.cpp +++ /dev/null @@ -1,417 +0,0 @@ -/* - * This file is part of the KDE libraries - * Copyright (c) 2001 Michael Goffioul <tdeprint@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 "lpdtools.h" -#include "driver.h" -#include "kmprinter.h" - -#include <tqfile.h> -#include <klocale.h> - -static const char *pt_pagesize[] = { - "ledger", I18N_NOOP("Ledger"), - "legal", I18N_NOOP("US Legal"), - "letter", I18N_NOOP("US Letter"), - "a4", I18N_NOOP("A4"), - "a3", I18N_NOOP("A3"), - "b4", I18N_NOOP("B4"), - "b5", I18N_NOOP("B5"), - 0 -}; -static int pt_nup[] = { 1, 2, 4, 8, -1 }; -static const char *pt_bool[] = { - "YES", I18N_NOOP("Enabled"), - "NO", I18N_NOOP("Disabled"), - 0 -}; - -void setupBooleanOption(DrBooleanOption *opt) -{ - int i(0); - while (pt_bool[i]) - { - DrBase *ch = new DrBase(); - ch->setName(pt_bool[i++]); - ch->set("text",pt_bool[i++]); - opt->addChoice(ch); - } -} - -TQString nextWord(const TQString& s, int& pos) -{ - int p1(pos), p2(0); - while (s[p1].isSpace() && p1 < (int)s.length()) p1++; - if (s[p1] == '{') - { - p1++; - p2 = s.find('}',p1); - } - else - { - p2 = p1; - while (!s[p2].isSpace() && p2 < (int)s.length()) p2++; - } - pos = (p2+1); - return s.mid(p1,p2-p1); -} - -//************************************************************************************************ - -bool PrintcapEntry::readLine(const TQString& line) -{ - QStringList l = TQStringList::split(':',line,false); - if (l.count() > 0) - { - m_name = l[0]; - int p(-1); - // discard aliases - if ((p=m_name.find('|')) != -1) - m_name = m_name.left(p); - m_args.clear(); - for (uint i=1; i<l.count(); i++) - { - int p = l[i].find('='); - if (p == -1) p = 2; - QString key = l[i].left(p); - QString value = l[i].right(l[i].length()-(l[i][p] == '=' ? p+1 : p)); - m_args[key] = value; - } - return true; - } - return false; -} - -void PrintcapEntry::writeEntry(TQTextStream& t) -{ - if (m_comment.isEmpty()) t << "# Entry for printer " << m_name << endl; - else t << m_comment << endl; - t << m_name << ":"; - for (TQMap<TQString,TQString>::ConstIterator it=m_args.begin(); it!=m_args.end(); ++it) - { - t << "\\\n\t:" << it.key(); - if (!it.data().isEmpty()) - t << ((*it)[0] == '#' ? "" : "=") << *it; - t << ":"; - } - t << endl << endl; -} - -TQString PrintcapEntry::comment(int index) -{ - QString w; - if (m_comment.startsWith("##PRINTTOOL3##")) - { - int p(0); - for (int i=0;i<index;i++) - w = nextWord(m_comment,p); - } - return w; -} - -KMPrinter* PrintcapEntry::createPrinter() -{ - KMPrinter *printer = new KMPrinter(); - printer->setName(m_name); - printer->setPrinterName(m_name); - printer->setInstanceName(TQString::null); - printer->setState(KMPrinter::Idle); - printer->setType(KMPrinter::Printer); - return printer; -} - -//************************************************************************************************ - -TQStringList splitPrinttoolLine(const TQString& line) -{ - QStringList l; - int p = line.find(':'); - if (p != -1) - { - l.append(line.left(p)); - p = line.find('{',p); - if (p == -1) - l.append(line.right(line.length()-l[0].length()-1).stripWhiteSpace()); - else - { - while (p != -1) - { - int q = line.find('}',p); - if (q != -1) - { - l.append(line.mid(p+1,q-p-1)); - p = line.find('{',q); - } - else break; - } - } - } - return l; -} - -bool PrinttoolEntry::readEntry(TQTextStream& t) -{ - QString line; - QStringList args; - - m_resolutions.setAutoDelete(true); - m_depths.setAutoDelete(true); - m_resolutions.clear(); - m_depths.clear(); - while (!t.eof()) - { - line = getPrintcapLine(t); - if (line.isEmpty()) - break; - if (line == "EndEntry") - return !m_name.isEmpty(); - QStringList l = splitPrinttoolLine(line); - if (l.count() > 1) - { - if (l[0] == "StartEntry") m_name = l[1]; - else if (l[0] == "GSDriver") m_gsdriver = l[1]; - else if (l[0] == "About") m_about = l[1]; - else if (l[0] == "Description") m_description = l[1]; - else if (l[0] == "Resolution" && l.count() > 2) - { - Resolution *resol = new Resolution; - bool ok(false); - resol->xdpi = l[1].toInt(&ok); - if (ok) resol->ydpi = l[2].toInt(&ok); - if (l.count() > 3) - resol->comment = l[3]; - if (ok) m_resolutions.append(resol); - else delete resol; - } - else if (l[0] == "BitsPerPixel" && l.count() > 1) - { - BitsPerPixel *dpth = new BitsPerPixel; - dpth->bpp = l[1]; - if (l.count() > 2) - dpth->comment = l[2]; - m_depths.append(dpth); - } - } - } - return false; -} - -DrMain* PrinttoolEntry::createDriver() -{ - // create driver - DrMain *dr = new DrMain(); - dr->setName(m_name); - dr->set("description",m_description); - dr->set("text",m_description); - dr->set("drtype","printtool"); - - DrGroup *gr(0); - DrListOption *lopt(0); - DrStringOption *sopt(0); - DrBooleanOption *bopt(0); - DrBase *ch(0); - - if (m_gsdriver != "TEXT") - { - // create GS group - gr = new DrGroup(); - gr->set("text",i18n("GhostScript settings")); - dr->addGroup(gr); - - // Pseudo option to have access to GS driver - lopt = new DrListOption(); - lopt->setName("GSDEVICE"); - lopt->set("text",i18n("Driver")); - lopt->set("default",m_gsdriver); - gr->addOption(lopt); - ch = new DrBase(); - ch->setName(m_gsdriver); - ch->set("text",m_gsdriver); - lopt->addChoice(ch); - lopt->setValueText(m_gsdriver); - - - // Resolutions - if (m_resolutions.count() > 0) - { - lopt = new DrListOption(); - lopt->setName("RESOLUTION"); - lopt->set("text",i18n("Resolution")); - gr->addOption(lopt); - TQPtrListIterator<Resolution> it(m_resolutions); - for (int i=0;it.current();++it,i++) - { - ch = new DrBase; - ch->setName(TQString::tqfromLatin1("%1x%2").arg(it.current()->xdpi).arg(it.current()->ydpi)); - if (it.current()->comment.isEmpty()) - ch->set("text",TQString::tqfromLatin1("%1x%2 DPI").arg(it.current()->xdpi).arg(it.current()->ydpi)); - else - ch->set("text",TQString::tqfromLatin1("%2x%3 DPI (%1)").arg(it.current()->comment).arg(it.current()->xdpi).arg(it.current()->ydpi)); - lopt->addChoice(ch); - } - QString defval = lopt->choices()->first()->name(); - lopt->set("default",defval); - lopt->setValueText(defval); - } - - // BitsPerPixels - if (m_depths.count() > 0) - { - lopt = new DrListOption(); - lopt->setName("COLOR"); - lopt->set("text",i18n("Color depth")); - gr->addOption(lopt); - TQPtrListIterator<BitsPerPixel> it(m_depths); - for (int i=0;it.current();++it,i++) - { - ch = new DrBase; - if (m_gsdriver != "uniprint") - ch->setName(TQString::tqfromLatin1("-dBitsPerPixel=%1").arg(it.current()->bpp)); - else - ch->setName(it.current()->bpp); - if (it.current()->comment.isEmpty()) - ch->set("text",it.current()->bpp); - else - ch->set("text",TQString::tqfromLatin1("%1 - %2").arg(it.current()->bpp).arg(it.current()->comment)); - lopt->addChoice(ch); - } - QString defval = lopt->choices()->first()->name(); - lopt->set("default",defval); - lopt->setValueText(defval); - } - - // additional GS options - sopt = new DrStringOption; - sopt->setName("EXTRA_GS_OPTIONS"); - sopt->set("text",i18n("Additional GS options")); - gr->addOption(sopt); - } - - // General group - gr = new DrGroup(); - gr->set("text",i18n("General")); - dr->addGroup(gr); - - // Page size - lopt = new DrListOption(); - lopt->setName("PAPERSIZE"); - lopt->set("text",i18n("Page size")); - lopt->set("default","letter"); - gr->addOption(lopt); - int i(0); - while (pt_pagesize[i]) - { - ch = new DrBase(); - ch->setName(pt_pagesize[i++]); - ch->set("text",i18n(pt_pagesize[i++])); - lopt->addChoice(ch); - } - lopt->setValueText("letter"); - - // Nup - lopt = new DrListOption(); - lopt->setName("NUP"); - lopt->set("text",i18n("Pages per sheet")); - lopt->set("default","1"); - gr->addOption(lopt); - i = 0; - while (pt_nup[i] != -1) - { - ch = new DrBase(); - ch->setName(TQString::number(pt_nup[i++])); - ch->set("text",ch->name()); - lopt->addChoice(ch); - } - lopt->setValueText("1"); - - // Margins - sopt = new DrStringOption(); - sopt->setName("RTLFTMAR"); - sopt->set("text",i18n("Left/right margin (1/72 in)")); - sopt->setValueText("18"); - gr->addOption(sopt); - sopt = new DrStringOption(); - sopt->setName("TOPBOTMAR"); - sopt->set("text",i18n("Top/bottom margin (1/72 in)")); - sopt->setValueText("18"); - gr->addOption(sopt); - - // Text group - gr = new DrGroup(); - gr->set("text",i18n("Text options")); - dr->addGroup(gr); - - // Send EOF - bopt = new DrBooleanOption(); - bopt->setName("TEXT_SEND_EOF"); - bopt->set("text",i18n("Send EOF after job to eject page")); - gr->addOption(bopt); - setupBooleanOption(bopt); - bopt->setValueText("NO"); - - // Fix stair-stepping - bopt = new DrBooleanOption(); - bopt->setName("CRLFTRANS"); - bopt->set("text",i18n("Fix stair-stepping text")); - gr->addOption(bopt); - setupBooleanOption(bopt); - bopt->choices()->first()->setName("1"); - bopt->choices()->last()->setName("0"); - bopt->setValueText("0"); - - if (m_gsdriver != "POSTSCRIPT") - { - // Fast text printing - bopt = new DrBooleanOption(); - bopt->setName("ASCII_TO_PS"); - bopt->set("text",i18n("Fast text printing (non-PS printers only)")); - gr->addOption(bopt); - setupBooleanOption(bopt); - bopt->choices()->first()->setName("NO"); - bopt->choices()->last()->setName("YES"); - bopt->setValueText("NO"); - } - - return dr; -} - -//************************************************************************************************ - -TQString getPrintcapLine(TQTextStream& t, TQString *lastcomment) -{ - QString line, buffer, comm; - while (!t.eof()) - { - buffer = t.readLine().stripWhiteSpace(); - if (buffer.isEmpty() || buffer[0] == '#') - { - comm = buffer; - continue; - } - line.append(buffer); - if (line.right(1) == "\\") - { - line.truncate(line.length()-1); - line = line.stripWhiteSpace(); - } - else break; - } - if (lastcomment) - *lastcomment = comm; - return line; -} |