+static bool
+isVariantStringArray(const QVariant &var)
+{
+ if (var.isNull() || var.userType() != QMetaType::type("ApiArray"))
+ return false;
+
+ ApiArray array = var.value<ApiArray>();
+ QVector<QVariant> origValues = array.values();
+ if (origValues.isEmpty() ||
+ origValues.first().userType() != QVariant::String)
+ return false;
+
+ return true;
+}
+
+
+
+void setArgumentsItemEditorFactory ()
+{
+ QItemEditorCreatorBase *booleanComboBoxEditorCreator =
+ new QStandardItemEditorCreator<BooleanComboBoxEditorCreator>();
+ QItemEditorCreatorBase *uIntEditorCreator =
+ new QStandardItemEditorCreator<UIntEditorCreator>();
+ QItemEditorCreatorBase *intEditorCreator =
+ new QStandardItemEditorCreator<IntEditorCreator>();
+ QItemEditorCreatorBase *uLongLongEditorCreator =
+ new QStandardItemEditorCreator<ULongLongEditorCreator>();
+ QItemEditorCreatorBase *longLongEditorCreator =
+ new QStandardItemEditorCreator<LongLongEditorCreator>();
+ QItemEditorCreatorBase *pixmapEditorCreator =
+ new QStandardItemEditorCreator<PixmapEditorCreator>();
+ QItemEditorCreatorBase *floatEditorCreator =
+ new QStandardItemEditorCreator<FloatEditorCreator>();
+ QItemEditorCreatorBase *doubleEditorCreator =
+ new QStandardItemEditorCreator<DoubleEditorCreator>();
+ QItemEditorCreatorBase *invalidEditorCreator =
+ new QStandardItemEditorCreator<InvalidEditorCreator>();
+
+ QItemEditorFactory *factory =
+ new QItemEditorFactory();
+
+ QVariant::Type typeFloat = static_cast<QVariant::Type> (qMetaTypeId<float>());
+
+ factory->registerEditor(QVariant::Bool, booleanComboBoxEditorCreator);
+ factory->registerEditor(QVariant::UInt, uIntEditorCreator);
+ factory->registerEditor(QVariant::Int, intEditorCreator);
+ factory->registerEditor(QVariant::ULongLong, uLongLongEditorCreator);
+ factory->registerEditor(QVariant::LongLong, longLongEditorCreator);
+ factory->registerEditor(QVariant::Pixmap, pixmapEditorCreator);
+ factory->registerEditor(typeFloat, floatEditorCreator);
+ factory->registerEditor(QVariant::Double, doubleEditorCreator);
+ factory->registerEditor(QVariant::Invalid, invalidEditorCreator);
+
+ QItemEditorFactory::setDefaultFactory(factory);
+}
+
+BooleanComboBox::BooleanComboBox(QWidget *parent)
+ : QComboBox(parent)
+{
+ addItem(tr("False"));
+ addItem(tr("True"));
+}
+
+void BooleanComboBox::setValue(bool value)
+{
+ setCurrentIndex(value ? 1 : 0);
+}
+
+bool BooleanComboBox::value() const
+{
+ return (currentIndex() == 1);
+}
+