DrMain* KMLpdManager::loadPrinterDriver(KMPrinter *printer, bool config) { PrintcapEntry *entry = findPrintcapEntry(printer->name()); if (!entry) return NULL; // check for printtool driver (only for configuration) QString sd = entry->arg("sd"), dr(entry->comment(7)); if (QFile::exists(sd+"/postscript.cfg") && config && !dr.isEmpty()) { QMap<QString,QString> map = loadPrinttoolCfgFile(sd+"/postscript.cfg"); PrinttoolEntry *ptentry = findPrinttoolEntry(dr); if (!ptentry) return NULL; DrMain *dr = ptentry->createDriver(); dr->setOptions(map); map = loadPrinttoolCfgFile(sd+"/general.cfg"); dr->setOptions(map); map = loadPrinttoolCfgFile(sd+"/textonly.cfg"); dr->setOptions(map); return dr; } // default if (entry->m_comment.startsWith("##PRINTTOOL3##")) setErrorMsg(i18n("No driver found (raw printer)")); else setErrorMsg(i18n("Printer type not recognized.")); return NULL; }
DrMain* LPRngToolHandler::loadDriver(KMPrinter *prt, PrintcapEntry *entry, bool config) { if (entry->field("lprngtooloptions").isEmpty()) { manager()->setErrorMsg(i18n("No driver defined for that printer. It might be a raw printer.")); return NULL; } DrMain* driver = loadToolDriver(locate("data", "kdeprint/lprngtooldriver1")); if (driver) { QString model = prt->option("driverID"); driver->set("text", i18n("LPRngTool Common Driver (%1)").arg((model.isEmpty() ? i18n("unknown") : model))); if (!model.isEmpty()) driver->set("driverID", model); QMap<QString,QString> opts = parseZOptions(entry->field("prefix_z")); opts["lpr"] = entry->field("lpr"); driver->setOptions(opts); // if not configuring, don't show the "lpr" options if (!config) driver->removeOptionGlobally("lpr"); } return driver; }
DrMain* ApsHandler::loadDriver(KMPrinter *prt, PrintcapEntry *entry, bool config) { DrMain *driver = loadApsDriver(config); if (driver /* && config */ ) // Load resources in all case, to get the correct page size { TQMap<TQString,TQString> opts = loadResources(entry); if ( !config && opts.contains( "PAPERSIZE" ) ) { // this is needed to keep applications informed // about the current selected page size opts[ "PageSize" ] = opts[ "PAPERSIZE" ]; // default page size needs to be set to the actual // value of the printer driver, otherwise it's blocked // to A4 DrBase *opt = driver->findOption( "PageSize" ); if ( opt ) opt->set( "default", opts[ "PageSize" ] ); } driver->setOptions(opts); driver->set("gsdriver", opts["PRINTER"]); } return driver; }