QScriptValue UniversalInputDialogScript::add(const QScriptValue& def, const QScriptValue& description, const QScriptValue& id){ QWidget* w = 0; if (def.isArray()) { QStringList options; QScriptValueIterator it(def); while (it.hasNext()) { it.next(); if (it.flags() & QScriptValue::SkipInEnumeration) continue; if (it.value().isString() || it.value().isNumber()) options << it.value().toString(); else engine->currentContext()->throwError("Invalid default value in array (must be string or number): "+it.value().toString()); } w = addComboBox(ManagedProperty::fromValue(options), description.toString()); } else if (def.isBool()) { w = addCheckBox(ManagedProperty::fromValue(def.toBool()), description.toString()); } else if (def.isNumber()) { w = addDoubleSpinBox(ManagedProperty::fromValue(def.toNumber()), description.toString()); } else if (def.isString()) { w = addLineEdit(ManagedProperty::fromValue(def.toString()), description.toString()); } else { engine->currentContext()->throwError(tr("Invalid default value: %1").arg(def.toString())); return QScriptValue(); } if (id.isValid()) properties.last().name = id.toString(); return engine->newQObject(w); }
QWidget* GUIBuilder::buildGUI(model::gui::Element* root, QWidget *parent ) { QWidget* widget = NULL; if( widget == NULL ) { model::gui::TabLayout* tab_layout = dynamic_cast<model::gui::TabLayout*>( root ); if( tab_layout != NULL ) { widget = addTabLayout( tab_layout, parent ); } } if( widget == NULL ) { model::gui::Grid* grid = dynamic_cast<model::gui::Grid*>( root ); if( grid != NULL ) { widget = addGrid( grid, parent ); } } if( widget == NULL ) { model::gui::TextInput* text_input = dynamic_cast<model::gui::TextInput*>( root ); if( text_input != NULL ) { widget = new QLineEdit( parent ); new StringController( widget, m_model, text_input->key(), true ); } } if( widget == NULL ) { model::gui::Canvas* canvas = dynamic_cast<model::gui::Canvas*>( root ); if( canvas != NULL ) { widget = addCanvas( canvas, parent ); } } if( widget == NULL ) { model::gui::Label* label = dynamic_cast<model::gui::Label*>( root ); if( label != NULL ) { widget = new QLabel( parent ); new StringController( widget, m_model, label->key(), label->showValue() ); } } if( widget == NULL ) { model::gui::ComboBox* combobox = dynamic_cast<model::gui::ComboBox*>( root ); if( combobox != NULL ) { widget = addCombobox( combobox, parent); } } if( widget == NULL ) { model::gui::ElementGroup* element_group = dynamic_cast<model::gui::ElementGroup*>( root ); if( element_group != NULL ) { widget = addElementGroup( element_group, parent); } } if( widget == NULL ) { model::gui::RadioButtons* radio_buttons = dynamic_cast<model::gui::RadioButtons*>( root ); if( radio_buttons != NULL ) { widget = addRadiobuttons( radio_buttons, parent); } } if( widget == NULL ) { model::gui::SpinBox* spin_box = dynamic_cast<model::gui::SpinBox*>( root ); if( spin_box != NULL ) { widget = addSpinBox( spin_box, parent); } } if( widget == NULL ) { model::gui::CheckBox* check_box = dynamic_cast<model::gui::CheckBox*>( root ); if( check_box != NULL ) { widget = addCheckBox( check_box, parent); } } if( widget == NULL ) { model::gui::Button* button = dynamic_cast<model::gui::Button*>( root ); if( button != NULL ) { widget = addButton( button, parent); } } if( widget == NULL ) { model::gui::HorizontalSlider* horizontal_slider = dynamic_cast<model::gui::HorizontalSlider*>( root ); if( horizontal_slider != NULL ) { widget = addHorizontalSlider( horizontal_slider, parent); } } if( widget == NULL ) { model::gui::HorizontalLayout* horizontal_layout = dynamic_cast<model::gui::HorizontalLayout*>( root ); if( horizontal_layout != NULL ) { widget = addHorizontalLayout( horizontal_layout, parent); } } if( widget == NULL ) { model::gui::VerticalLayout* vertical_layout = dynamic_cast<model::gui::VerticalLayout*>( root ); if( vertical_layout != NULL ) { widget = addVerticalLayout( vertical_layout, parent); } } if( widget == NULL ) { model::gui::DoubleSpinBox* double_spinbox = dynamic_cast<model::gui::DoubleSpinBox*>( root ); if( double_spinbox != NULL ) { widget = addDoubleSpinBox( double_spinbox, parent); } } if( widget == NULL ) { model::gui::PopupButton* popup_button = dynamic_cast<model::gui::PopupButton*>( root ); if( popup_button != NULL ) { widget = addPopupButton( popup_button, parent ); } } if(widget == NULL ) { model::gui::FileDialogButton* file_dialog_button = dynamic_cast<model::gui::FileDialogButton*>( root ); if(file_dialog_button != NULL) { widget = addFileDialogButton(file_dialog_button, parent); } } if( widget != NULL ) { if( !root->visibilityKey().empty() ) { new VisibilityController( widget, m_model, root->visibilityKey(), root->visibilityInverted() ); } if( !root->enabledKey().empty() ) { new EnabledController( widget, m_model, root->enabledKey(), root->enabledInverted() ); } } return widget; }