Example #1
0
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;
}
Example #2
0
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();
}