Exemple #1
0
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);
}
Exemple #2
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;
}
Exemple #3
0
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;
}