void KXmlCommandAdvancedDlg::parseXmlCommand(KXmlCommand *xmlcmd) { m_view->clear(); TQListViewItem *root = new TQListViewItem(m_view, xmlcmd->name(), xmlcmd->name()); DrMain *driver = xmlcmd->driver(); root->setPixmap(0, SmallIcon("fileprint")); root->setOpen(true); if (driver) { DrMain *clone = driver->cloneDriver(); if (!clone->get("text").isEmpty()) root->setText(0, clone->get("text")); root->setText(1, "__root__"); clone->setName("__root__"); m_opts["__root__"] = clone; parseGroupItem(clone, root); clone->flatten(); } m_command->setText(xmlcmd->command()); m_inputfile->setText(xmlcmd->io(true, false)); m_inputpipe->setText(xmlcmd->io(true, true)); m_outputfile->setText(xmlcmd->io(false, false)); m_outputpipe->setText(xmlcmd->io(false, true)); m_comment->setText( xmlcmd->comment() ); viewItem(0); }
bool KXmlCommandAdvancedDlg::editCommand(KXmlCommand *xmlcmd, TQWidget *parent) { if (!xmlcmd) return false; KDialogBase dlg(parent, 0, true, i18n("Command Edit for %1").arg(xmlcmd->name()), KDialogBase::Ok|KDialogBase::Cancel, KDialogBase::Ok, false); KXmlCommandAdvancedDlg *xmldlg = new KXmlCommandAdvancedDlg(&dlg); dlg.setMainWidget(xmldlg); //dlg.enableButton(KDialogBase::Ok, false); xmldlg->setCommand(xmlcmd); if (dlg.exec()) { xmlcmd->setCommand(xmldlg->m_command->text()); xmlcmd->setIo(xmldlg->m_inputfile->text(), true, false); xmlcmd->setIo(xmldlg->m_inputpipe->text(), true, true); xmlcmd->setIo(xmldlg->m_outputfile->text(), false, false); xmlcmd->setIo(xmldlg->m_outputpipe->text(), false, true); xmlcmd->setComment( xmldlg->m_comment->text().replace( TQRegExp( "\n" ), " " ) ); // need to recreate the driver tree structure DrMain *driver = (xmldlg->m_opts.contains("__root__") ? static_cast<DrMain*>(xmldlg->m_opts["__root__"]) : 0); if (!driver && xmldlg->m_opts.count() > 0) { kdDebug() << "KXmlCommandAdvancedDlg: driver structure not found, creating one" << endl; driver = new DrMain; driver->setName(xmlcmd->name()); } xmldlg->recreateGroup(xmldlg->m_view->firstChild(), driver); xmldlg->m_opts.remove("__root__"); xmlcmd->setDriver(driver); // remaining options will be removed in destructor return true; } 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); QPtrListIterator< Resolution > it(m_resolutions); for(int i = 0; it.current(); ++it, i++) { ch = new DrBase; ch->setName(QString::fromLatin1("%1x%2").arg(it.current()->xdpi).arg(it.current()->ydpi)); if(it.current()->comment.isEmpty()) ch->set("text", QString::fromLatin1("%1x%2 DPI").arg(it.current()->xdpi).arg(it.current()->ydpi)); else ch->set("text", QString::fromLatin1("%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); QPtrListIterator< BitsPerPixel > it(m_depths); for(int i = 0; it.current(); ++it, i++) { ch = new DrBase; if(m_gsdriver != "uniprint") ch->setName(QString::fromLatin1("-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", QString::fromLatin1("%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(QString::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; }