From 63e68391426f895330576da6b90d43e9208ef204 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 12 Sep 2014 22:24:35 +0200 Subject: [PATCH] combo boxes ported to new form code --- .../scripting/WindowScriptingInterface.cpp | 19 +++++++++++++++++++ .../src/scripting/WindowScriptingInterface.h | 1 + 2 files changed, 20 insertions(+) diff --git a/interface/src/scripting/WindowScriptingInterface.cpp b/interface/src/scripting/WindowScriptingInterface.cpp index 031899689c..6b339c49fd 100644 --- a/interface/src/scripting/WindowScriptingInterface.cpp +++ b/interface/src/scripting/WindowScriptingInterface.cpp @@ -220,6 +220,7 @@ QScriptValue WindowScriptingInterface::doGetNonBlockingFormResult(QScriptValue a if (_formResult == QDialog::Accepted) { int e = -1; int d = -1; + int c = -1; for (int i = 0; i < _form.property("length").toInt32(); ++i) { QScriptValue item = _form.property(i); QScriptValue value = item.property("value"); @@ -235,6 +236,10 @@ QScriptValue WindowScriptingInterface::doGetNonBlockingFormResult(QScriptValue a value = _directories.at(d)->property("path").toString(); item.setProperty("directory", value); _form.setProperty(i, item); + } else if (item.property("options").isArray()) { + c += 1; + item.setProperty("value", _combos.at(c)->currentText()); + _form.setProperty(i, item); } else { e += 1; bool ok = true; @@ -288,6 +293,7 @@ QScriptValue WindowScriptingInterface::showForm(const QString& title, QScriptVal if (result == QDialog::Accepted) { int e = -1; int d = -1; + int c = -1; for (int i = 0; i < form.property("length").toInt32(); ++i) { QScriptValue item = form.property(i); QScriptValue value = item.property("value"); @@ -303,6 +309,10 @@ QScriptValue WindowScriptingInterface::showForm(const QString& title, QScriptVal value = _directories.at(d)->property("path").toString(); item.setProperty("directory", value); form.setProperty(i, item); + } else if (item.property("options").isArray()) { + c += 1; + item.setProperty("value", _combos.at(c)->currentText()); + _form.setProperty(i, item); } else { e += 1; bool ok = true; @@ -405,6 +415,15 @@ QDialog* WindowScriptingInterface::createForm(const QString& title, QScriptValue } else if (item.property("type").toString() == "header") { formLayout->addRow(new QLabel(item.property("label").toString())); + } else if (item.property("options").isArray()) { + QComboBox* combo = new QComboBox(); + combo->setMinimumWidth(200); + QStringList options = item.property("options").toVariant().toStringList(); + for (QStringList::const_iterator it = options.begin(); it != options.end(); it += 1) { + combo->addItem(*it); + } + _combos.push_back(combo); + formLayout->addRow(new QLabel(item.property("label").toString()), combo); } else { QLineEdit* edit = new QLineEdit(item.property("value").toString()); edit->setMinimumWidth(200); diff --git a/interface/src/scripting/WindowScriptingInterface.h b/interface/src/scripting/WindowScriptingInterface.h index 84f6da287c..3324cd2ab6 100644 --- a/interface/src/scripting/WindowScriptingInterface.h +++ b/interface/src/scripting/WindowScriptingInterface.h @@ -71,6 +71,7 @@ private: QScriptValue _form; bool _nonBlockingFormActive; int _formResult; + QVector _combos; QVector _edits; QVector _directories; };