diff --git a/avogadro/qtgui/jsonwidget.cpp b/avogadro/qtgui/jsonwidget.cpp index 78abdb1303..d65ec3cdbf 100644 --- a/avogadro/qtgui/jsonwidget.cpp +++ b/avogadro/qtgui/jsonwidget.cpp @@ -347,6 +347,8 @@ QWidget* JsonWidget::createOptionWidget(const QJsonValue& option) return createFloatWidget(obj); else if (type == QLatin1String("boolean")) return createBooleanWidget(obj); + else if (type == QLatin1String("text")) + return createTextWidget(obj); qDebug() << "Unrecognized option type:" << type; return nullptr; @@ -398,6 +400,19 @@ QWidget* JsonWidget::createStringWidget(const QJsonObject& obj) return edit; } +QWidget* JsonWidget::createTextWidget(const QJsonObject& obj) +{ + auto* text = new QLabel(this); + text->setWordWrap(true); + + if (obj.contains(QStringLiteral("toolTip")) && + obj.value(QStringLiteral("toolTip")).isString()) { + text->setToolTip(obj[QStringLiteral("toolTip")].toString()); + } + + return text; +} + QWidget* JsonWidget::createFilePathWidget(const QJsonObject& obj) { auto* fileBrowse = new QtGui::FileBrowseWidget(this); @@ -551,6 +566,8 @@ void JsonWidget::setOption(const QString& name, const QJsonValue& defaultValue) return setFloatOption(name, defaultValue); else if (type == QLatin1String("boolean")) return setBooleanOption(name, defaultValue); + else if (type == QLatin1String("text")) + return setTextOption(name, defaultValue); qWarning() << tr("Unrecognized option type '%1' for option '%2'.").arg(type).arg(name); @@ -614,6 +631,27 @@ void JsonWidget::setStringOption(const QString& name, const QJsonValue& value) lineEdit->setText(value.toString()); } +void JsonWidget::setTextOption(const QString& name, const QJsonValue& value) +{ + auto* text = qobject_cast(m_widgets.value(name, nullptr)); + if (text == nullptr) { + qWarning() << tr("Error setting default for option '%1'. " + "Bad widget type.") + .arg(name); + return; + } + + if (!value.isString()) { + qWarning() << tr("Error setting default for option '%1'. " + "Bad default value:") + .arg(name) + << value; + return; + } + + text->setText(value.toString()); +} + void JsonWidget::setFilePathOption(const QString& name, const QJsonValue& value) { auto* fileBrowse = diff --git a/avogadro/qtgui/jsonwidget.h b/avogadro/qtgui/jsonwidget.h index f182ea7675..653a376303 100644 --- a/avogadro/qtgui/jsonwidget.h +++ b/avogadro/qtgui/jsonwidget.h @@ -92,6 +92,7 @@ class AVOGADROQTGUI_EXPORT JsonWidget : public QWidget QWidget* createIntegerWidget(const QJsonObject& obj); QWidget* createFloatWidget(const QJsonObject& obj); QWidget* createBooleanWidget(const QJsonObject& obj); + QWidget* createTextWidget(const QJsonObject& obj); /**@}*/ /** @@ -106,6 +107,7 @@ class AVOGADROQTGUI_EXPORT JsonWidget : public QWidget void setIntegerOption(const QString& name, const QJsonValue& value); void setFloatOption(const QString& name, const QJsonValue& value); void setBooleanOption(const QString& name, const QJsonValue& value); + void setTextOption(const QString& name, const QJsonValue& value); /**@}*/ /**