def create_layout_panel(lh, name, vertical, elems, **kwargs):
    pkw = dict()
    pkw.update(labelAlign=kwargs.pop('label_align', 'top'))
    pkw.update(hideCheckBoxLabels=kwargs.pop('hideCheckBoxLabels', True))
    pkw.update(label=kwargs.pop('label', None))
    pkw.update(width=kwargs.pop('width', None))
    pkw.update(height=kwargs.pop('height', None))
    # pkw.update(help_text=kwargs.pop('help_text', None))
    v = kwargs.pop('required_roles', NOT_PROVIDED)
    if v is not NOT_PROVIDED:
        pkw.update(required_roles=v)
    if kwargs:
        raise Exception("Unknown panel attributes %r for %s" % (kwargs, lh))
    if name == 'main':
        if isinstance(lh.layout, ColumnsLayout):
            e = GridElement(
                lh, name, lh.layout._datasource, *elems, **pkw)
        elif isinstance(lh.layout, ActionParamsLayout):
            e = ActionParamsPanel(lh, name, vertical, *elems, **pkw)
        elif isinstance(lh.layout, ParamsLayout):
            e = ParamsPanel(lh, name, vertical, *elems, **pkw)
        elif isinstance(lh.layout, FormLayout):
            if len(elems) == 1 or vertical:
                e = DetailMainPanel(
                    lh, name, vertical, *elems, **pkw)
            else:
                e = TabPanel(lh, name, *elems, **pkw)
        else:
            raise Exception("No element class for layout %r" % lh.layout)
        return e
    return Panel(lh, name, vertical, *elems, **pkw)
Load list of orthologous genes into sqlite3 database
dataset/ETHPy150Open lsaffre/lino/lino/modlib/extjs/elems.py/create_layout_panel--crossover with--dataset/ETHPy150Open CGATOxford/cgat/obsolete/pipeline_species_conservation.py/loadTripleOrthologs