parameters: (values, label=None, default=None,
               nrows=None, ncols=None, width=None, buttons=False,
               button_classes=None)
return_statement: return control(
              control_type        = 'selector',
              opts                = opts,
              repr                = "Selector labeled %r with values %s"%(label, values),
              convert_from_client = lambda n : vals[int(n)],
              convert_to_client   = lambda x : vals.index(x)
          )
docstring: A drop down menu or a button bar for use in conjunction with
          the :func:`interact` command.  We use the same command to
          create either a drop down menu or selector bar of buttons,
          since conceptually the two controls do exactly the same thing
          - they only look different.  If either ``nrows`` or ``ncols``
          is given, then you get a buttons instead of a drop down menu.
  
          INPUT:
  
          - ``values`` - either (1) a list [val0, val1, val2, ...] or (2)
            a list of pairs [(val0, lbl0), (val1,lbl1), ...] in which case
            all labels must be given -- use None to auto-compute a given label.
          - ``label`` - a string (default: None); if given, this label
            is placed to the left of the entire button group
          - ``default`` - an object (default: first); default value in values list
          - ``nrows`` - an integer (default: None); if given determines
            the number of rows of buttons; if given, buttons=True
          - ``ncols`` - an integer (default: None); if given determines
            the number of columns of buttons; if given, buttons=True
          - ``width`` - an integer or string (default: None); if given,
            all buttons are this width.  If an integer, the default units
            are 'ex'.  A string that specifies any valid HTML units (e.g., '100px', '3em')
            is also allowed [SALVUS only].
          - ``buttons`` - a bool (default: False, except as noted
            above); if True, use buttons
          - ``button_classes`` - [SALVUS only] None, a string, or list of strings
            of the of same length as values, whose entries are a whitespace-separated
            string of CSS classes, e.g., Bootstrap CSS classes such as:
                btn-primary, btn-info, btn-success, btn-warning, btn-danger,
                btn-link, btn-large, btn-small, btn-mini.
            See http://twitter.github.com/bootstrap/base-css.html#buttons
            If button_classes a single string, that class is applied to all buttons.
docstring_summary: A drop down menu or a button bar for use in conjunction with
          the :func:`interact` command.  We use the same command to
          create either a drop down menu or selector bar of buttons,
          since conceptually the two controls do exactly the same thing
          - they only look different.  If either ``nrows`` or ``ncols``
          is given, then you get a buttons instead of a drop down menu.
docstring_tokens: A drop down menu or a button bar for use in conjunction with the : func : interact command . We use the same command to create either a drop down menu or selector bar of buttons since conceptually the two controls do exactly the same thing - they only look different . If either nrows or ncols is given then you get a buttons instead of a drop down menu .
function: def selector(values, label=None, default=None,
               nrows=None, ncols=None, width=None, buttons=False,
               button_classes=None):
      """
          A drop down menu or a button bar for use in conjunction with
          the :func:`interact` command.  We use the same command to
          create either a drop down menu or selector bar of buttons,
          since conceptually the two controls do exactly the same thing
          - they only look different.  If either ``nrows`` or ``ncols``
          is given, then you get a buttons instead of a drop down menu.
  
          INPUT:
  
          - ``values`` - either (1) a list [val0, val1, val2, ...] or (2)
            a list of pairs [(val0, lbl0), (val1,lbl1), ...] in which case
            all labels must be given -- use None to auto-compute a given label.
          - ``label`` - a string (default: None); if given, this label
            is placed to the left of the entire button group
          - ``default`` - an object (default: first); default value in values list
          - ``nrows`` - an integer (default: None); if given determines
            the number of rows of buttons; if given, buttons=True
          - ``ncols`` - an integer (default: None); if given determines
            the number of columns of buttons; if given, buttons=True
          - ``width`` - an integer or string (default: None); if given,
            all buttons are this width.  If an integer, the default units
            are 'ex'.  A string that specifies any valid HTML units (e.g., '100px', '3em')
            is also allowed [SALVUS only].
          - ``buttons`` - a bool (default: False, except as noted
            above); if True, use buttons
          - ``button_classes`` - [SALVUS only] None, a string, or list of strings
            of the of same length as values, whose entries are a whitespace-separated
            string of CSS classes, e.g., Bootstrap CSS classes such as:
                btn-primary, btn-info, btn-success, btn-warning, btn-danger,
                btn-link, btn-large, btn-small, btn-mini.
            See http://twitter.github.com/bootstrap/base-css.html#buttons
            If button_classes a single string, that class is applied to all buttons.
      """
      if (len(values) > 0 and isinstance(values[0], tuple) and len(values[0]) == 2):
          vals = [z[0] for z in values]
          lbls = [str(z[1]) if z[1] is not None else None for z in values]
      else:
          vals = values
          lbls = [None] * len(vals)
  
      for i in range(len(vals)):
          if lbls[i] is None:
              v = vals[i]
              lbls[i] = v if isinstance(v, str) else str(v)
  
      if default is None:
          default = 0
      else:
          try:
              default = vals.index(default)
          except IndexError:
              default = 0
  
      opts = dict(locals())
      for k in ['vals', 'values', 'i', 'v', 'z']:
          if k in opts:
              del opts[k]  # these could have a big jsonable repr
  
      opts['lbls'] = lbls
      return control(
              control_type        = 'selector',
              opts                = opts,
              repr                = "Selector labeled %r with values %s"%(label, values),
              convert_from_client = lambda n : vals[int(n)],
              convert_to_client   = lambda x : vals.index(x)
          )
function_tokens: def selector ( values , label = None , default = None , nrows = None , ncols = None , width = None , buttons = False , button_classes = None ) : if ( len ( values ) > 0 and isinstance ( values [ 0 ] , tuple ) and len ( values [ 0 ] ) == 2 ) : vals = [ z [ 0 ] for z in values ] lbls = [ str ( z [ 1 ] ) if z [ 1 ] is not None else None for z in values ] else : vals = values lbls = [ None ] * len ( vals ) for i in range ( len ( vals ) ) : if lbls [ i ] is None : v = vals [ i ] lbls [ i ] = v if isinstance ( v , str ) else str ( v ) if default is None : default = 0 else : try : default = vals . index ( default ) except IndexError : default = 0 opts = dict ( locals ( ) ) for k in [ 'vals' , 'values' , 'i' , 'v' , 'z' ] : if k in opts : del opts [ k ] # these could have a big jsonable repr opts [ 'lbls' ] = lbls return control ( control_type = 'selector' , opts = opts , repr = "Selector labeled %r with values %s" % ( label , values ) , convert_from_client = lambda n : vals [ int ( n ) ] , convert_to_client = lambda x : vals . index ( x ) )