QWidget * ExtArgNumber::createEditor(QWidget * parent) { textBox = (QLineEdit *)ExtArgText::createEditor(parent); textBox->disconnect(SIGNAL(textChanged(QString))); if ( _argument->arg_type == EXTCAP_ARG_INTEGER || _argument->arg_type == EXTCAP_ARG_UNSIGNED ) { QIntValidator * textValidator = new QIntValidator(parent); if ( _argument->range_start != NULL ) textValidator->setBottom(extcap_complex_get_int(_argument->range_start)); if ( _argument->arg_type == EXTCAP_ARG_UNSIGNED && textValidator->bottom() < 0 ) textValidator->setBottom(0); if ( _argument->range_end != NULL ) textValidator->setTop(extcap_complex_get_int(_argument->range_end)); textBox->setValidator(textValidator); } else if ( _argument->arg_type == EXTCAP_ARG_DOUBLE ) { QDoubleValidator * textValidator = new QDoubleValidator(parent); if ( _argument->range_start != NULL ) textValidator->setBottom(extcap_complex_get_double(_argument->range_start)); if ( _argument->range_end != NULL ) textValidator->setTop(extcap_complex_get_double(_argument->range_end)); textBox->setValidator(textValidator); } textBox->setText(defaultValue()); connect(textBox, SIGNAL(textChanged(QString)), SLOT(onStringChanged(QString))); return textBox; }
gboolean extcap_compare_is_default(extcap_arg *element, extcap_complex *test) { gboolean result = FALSE; if (element->default_complex == NULL) return result; switch (element->arg_type) { case EXTCAP_ARG_INTEGER: if (extcap_complex_get_int(test) == extcap_complex_get_int(element->default_complex)) result = TRUE; break; case EXTCAP_ARG_UNSIGNED: if (extcap_complex_get_uint(test) == extcap_complex_get_uint(element->default_complex)) result = TRUE; break; case EXTCAP_ARG_LONG: if (extcap_complex_get_long(test) == extcap_complex_get_long(element->default_complex)) result = TRUE; break; case EXTCAP_ARG_DOUBLE: if (extcap_complex_get_double(test) == extcap_complex_get_double(element->default_complex)) result = TRUE; break; case EXTCAP_ARG_BOOLEAN: case EXTCAP_ARG_BOOLFLAG: if (extcap_complex_get_bool(test) == extcap_complex_get_bool(element->default_complex)) result = TRUE; break; case EXTCAP_ARG_STRING: if (strcmp(extcap_complex_get_string(test), extcap_complex_get_string(element->default_complex)) == 0) result = TRUE; break; default: break; } return result; }
QString ExtArgNumber::defaultValue() { QString result; if ( _argument != 0 && _argument->default_complex != NULL ) { if ( _argument->arg_type == EXTCAP_ARG_DOUBLE ) result = QString::number(extcap_complex_get_double(_argument->default_complex)); else if ( _argument->arg_type == EXTCAP_ARG_INTEGER ) result = QString::number(extcap_complex_get_int(_argument->default_complex)); else if ( _argument->arg_type == EXTCAP_ARG_UNSIGNED ) result = QString::number(extcap_complex_get_uint(_argument->default_complex)); else if ( _argument->arg_type == EXTCAP_ARG_LONG ) result = QString::number(extcap_complex_get_long(_argument->default_complex)); else result = QString(); } return result; }
QString ExtArgNumber::defaultValue() { QString result; if ( _argument != 0 ) { if ( _argument->arg_type == EXTCAP_ARG_DOUBLE ) result = QString::number(extcap_complex_get_double(_argument->default_complex)); else if ( _argument->arg_type == EXTCAP_ARG_INTEGER ) result = QString::number(extcap_complex_get_int(_argument->default_complex)); else if ( _argument->arg_type == EXTCAP_ARG_UNSIGNED ) result = QString::number(extcap_complex_get_uint(_argument->default_complex)); else if ( _argument->arg_type == EXTCAP_ARG_LONG ) result = QString::number(extcap_complex_get_long(_argument->default_complex)); else { QString defValue = ExtcapArgument::defaultValue(); result = defValue.length() > 0 ? defValue : QString(); } } return result; }
QWidget * ExtArgNumber::createEditor(QWidget * parent) { QString storeValue; QString text = defaultValue(); if ( _argument->storeval ) { QString storeValue = _argument->storeval; if ( storeValue.length() > 0 && storeValue.compare(text) != 0 ) text = storeValue; } textBox = (QLineEdit *)ExtArgText::createEditor(parent); textBox->disconnect(SIGNAL(textChanged(QString))); if ( _argument->arg_type == EXTCAP_ARG_INTEGER || _argument->arg_type == EXTCAP_ARG_UNSIGNED ) { QIntValidator * textValidator = new QIntValidator(parent); if ( _argument->range_start != NULL ) { int val = 0; if ( _argument->arg_type == EXTCAP_ARG_INTEGER ) val = extcap_complex_get_int(_argument->range_start); else if ( _argument->arg_type == EXTCAP_ARG_UNSIGNED ) { guint tmp = extcap_complex_get_uint(_argument->range_start); if ( tmp > G_MAXINT ) { g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_DEBUG, "Defined value for range_start of %s exceeds valid integer range", _argument->call ); val = G_MAXINT; } else val = (gint)tmp; } textValidator->setBottom(val); } if ( _argument->arg_type == EXTCAP_ARG_UNSIGNED && textValidator->bottom() < 0 ) { g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_DEBUG, "%s sets negative bottom range for unsigned value, setting to 0", _argument->call ); textValidator->setBottom(0); } if ( _argument->range_end != NULL ) { int val = 0; if ( _argument->arg_type == EXTCAP_ARG_INTEGER ) val = extcap_complex_get_int(_argument->range_end); else if ( _argument->arg_type == EXTCAP_ARG_UNSIGNED ) { guint tmp = extcap_complex_get_uint(_argument->range_end); if ( tmp > G_MAXINT ) { g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_DEBUG, "Defined value for range_end of %s exceeds valid integer range", _argument->call ); val = G_MAXINT; } else val = (gint)tmp; } textValidator->setTop(val); } textBox->setValidator(textValidator); } else if ( _argument->arg_type == EXTCAP_ARG_DOUBLE ) { QDoubleValidator * textValidator = new QDoubleValidator(parent); if ( _argument->range_start != NULL ) textValidator->setBottom(extcap_complex_get_double(_argument->range_start)); if ( _argument->range_end != NULL ) textValidator->setTop(extcap_complex_get_double(_argument->range_end)); textBox->setValidator(textValidator); } textBox->setText(text.trimmed()); connect(textBox, SIGNAL(textChanged(QString)), SLOT(onStringChanged(QString))); return textBox; }