Example #1
0
EnumWidget::EnumWidget(TypeDescriptor_ptr reflective,
        QWidget * parent) :
    QComboBox(parent), ReflectiveWidgetBase(reflective)
{
    assert(reflective->is_enum());

    unsigned int count = reflective->get_children_count();

    for (unsigned int i = 0; i < count; i++) 
    {
        addItem(reflective->get_child_name(i));
    }
}
Example #2
0
UnionWidget::UnionWidget(
        TypeDescriptor_ptr reflective,
        WidgetFactory_t factory,
        QWidget * parent) :
    QWidget(parent), ReflectiveWidgetBase(reflective)
{
    assert(reflective->get_type() == core::TYPE_UNION);

    QGridLayout * layout = new QGridLayout(this);

    unsigned int count = reflective->get_children_count();

    m_widgets.resize(count, NULL);

    // discriminator
    {
        const char * child_name = reflective->get_child_name(0);

        core::reflective_base const * child = reflective->get_child(0);

        QWidget * child_widget = factory(child, this);
        
        child_widget->setObjectName(child_name);

        m_widgets[0] = 
            dynamic_cast< ReflectiveWidgetBase* >(child_widget);

        child_widget->setObjectName(child_name);

        layout->addWidget(new QLabel(child_name), 0, 0);
        layout->addWidget(child_widget, 0, 1);

        if (qobject_cast< QComboBox * >(child_widget))
        {
            connect(child_widget, 
                    SIGNAL(currentIndexChanged(int)),
                    this,
                    SLOT(discriminatorChanged()));
        }
        else if (qobject_cast< QSpinBox * >(child_widget))
        {
            connect(child_widget, 
                    SIGNAL(valueChanged(int)),
                    this,
                    SLOT(discriminatorChanged()));
        }
        else if (qobject_cast< QDoubleSpinBox * >(child_widget))
Example #3
0
StructWidget::StructWidget(
        TypeDescriptor_ptr reflective,
        WidgetFactory_t factory,
        QWidget * parent) :
    qt::FormWidget(parent), ReflectiveWidgetBase(reflective)
{
    assert(reflective->get_type() == core::TYPE_STRUCT);

    unsigned int count = reflective->get_children_count();

    m_widgets.resize(count, NULL);

    for (unsigned int i = 0; i < count; i++) 
    {
        core::reflective_base const * child = 
            reflective->get_child(i);

        const char * child_name = reflective->get_child_name(i);

        QWidget * child_widget = factory(child, this);

        m_widgets[i] = dynamic_cast< ReflectiveWidgetBase* >(
                child_widget);

        child_widget->setObjectName(child_name);

        if (child->is_primitive() || child->is_enum())
        {
            addField(child_name, child_widget);
        }
        else
        {
            addBigField(child_name, child_widget);
        }
    }
}