bool KstPluginDialogI::saveOutputs(KstPluginPtr plugin, KstSharedPtr<Plugin> p) { const QValueList<Plugin::Data::IOValue>& otable = p->data()._outputs; for (QValueList<Plugin::Data::IOValue>::ConstIterator it = otable.begin(); it != otable.end(); ++it) { QObject *field = _frameWidget->child((*it)._name.latin1(), "QLineEdit"); assert(field); QLineEdit *li = static_cast<QLineEdit*>(field); if (li->text().isEmpty()) { QString tagName = Select->currentText(); if (tagName.endsWith(newPluginString)) { tagName = plugin->tagName(); } li->setText(tagName+"-"+(*it)._name); } QString nt = li->text(); if ((*it)._type == Plugin::Data::IOValue::TableType) { if (!KST::vectorTagNameNotUnique(nt, false)) { plugin->outputVectors()[(*it)._name]->setTagName(nt); } else if (plugin->outputVectors()[(*it)._name]->tagName() != nt) { while (KST::vectorTagNameNotUnique(nt, false)) { nt += "'"; } plugin->outputVectors()[(*it)._name]->setTagName(nt); } } else if ((*it)._type == Plugin::Data::IOValue::FloatType) { if (!KST::vectorTagNameNotUnique(nt, false)) { plugin->outputScalars()[(*it)._name]->setTagName(nt); } else if (plugin->outputScalars()[(*it)._name]->tagName() != nt) { while (KST::vectorTagNameNotUnique(nt, false)) { nt += "'"; } plugin->outputScalars()[(*it)._name]->setTagName(nt); } } } return true; }
void KstPluginDialogI::edit_I() { int index = Select->currentItem(); if (Select->count() == 0 || index < 0) { new_I(); return; } QString tagName = Select->currentText(); KstPluginList pl = kstObjectSubList<KstDataObject, KstPlugin>(KST::dataObjectList); KstPluginPtr plugin = pl[index]; if (!plugin.data()) { new_I(); return; } int pitem = PluginCombo->currentItem(); if (tagName.endsWith(newPluginString)) { QString tmpTagName; int i = 0; do { tmpTagName = i18n("P%1-%2").arg(++i).arg(_pluginList[pitem]); } while (KST::dataTagNameNotUnique(tmpTagName, false)); tagName = tmpTagName; } //kdDebug() << "Apply as edit [" << tagName << "]" << endl; if (tagName != plugin->tagName()) { if (KST::dataTagNameNotUnique(tagName, true, this)) { Select->setFocus(); return; } } plugin->setTagName(tagName); plugin->inputVectors().clear(); plugin->inputScalars().clear(); KstSharedPtr<Plugin> pPtr = PluginCollection::self()->plugin(_pluginList[pitem]); // Save the vectors and scalars if (!saveInputs(plugin, pPtr)) { return; } if (pitem >= 0 && PluginCombo->count() > 0) { plugin->setPlugin(pPtr); } if (!saveOutputs(plugin, pPtr)) { return; } if (!plugin->isValid()) { KMessageBox::sorry(this, i18n("There is an error in the plugin you entered. Please fix it.")); return; } plugin = 0L; // release pl.clear(); // release emit modified(); }