Class wibox.layout.flex

    Usage:
    wibox.widget {
    generic_widget( 'first'  ),
    generic_widget( 'second' ),
    generic_widget( 'third'  ),
    layout  = wibox.layout.flex.horizontal
}
    
    Info:
    
        - Copyright: 2010 Uli Schlachter
- Author: Uli Schlachter
	
	| wibox.layout.flex:set (index, widget2) | Set a widget at a specific index, replace the current one. | 
	
	| wibox.layout.flex:replace_widget (widget, widget2[, recursive=false]) | Replace the first instance of widget in the layout with widget2. | 
	
	| wibox.layout.flex:swap (index1, index2) | Swap 2 widgets in a layout. | 
	
	| wibox.layout.flex:swap_widgets (widget1, widget2[, recursive=false]) | Swap 2 widgets in a layout. | 
	
	| wibox.layout.flex:reset (layout) | Reset a ratio layout. | 
	
	| wibox.layout.flex:set_children (children) | Replace the layout children | 
	
	| wibox.layout.flex:add (layout, ...) | Add some widgets to the given fixed layout | 
	
	| wibox.layout.flex:remove (The) | Remove a widget from the layout | 
	
	| wibox.layout.flex:remove_widgets (widget) | Remove one or more widgets from the layout
 The last parameter can be a boolean, forcing a recursive seach of the
 widget(s) to remove. | 
	
	| wibox.layout.flex:insert (index, widget) | Insert a new widget in the layout at position index | 
	
	| wibox.layout.flex:index (widget[, recursive[, ...]]) | Get a widex index. | 
	
	| wibox.layout.flex:get_all_children () | Get all direct and indirect children widgets. | 
	
	| wibox.layout.flex:setup (args) | Set a declarative widget hierarchy description. | 
	
	| wibox.layout.flex:buttons (_buttons) | Set/get a widget's buttons. | 
	
	| wibox.layout.flex:emit_signal_recursive (signal_name, ...) | Emit a signal and ensure all parent widgets in the hierarchies also
 forward the signal. | 
	
	| wibox.layout.flex:disconnect_signal (name, func) | Disconnect to a signal. | 
	
	| wibox.layout.flex:emit_signal (name, ...) | Emit a signal. | 
	
	| wibox.layout.flex:connect_signal (name, func) | Connect to a signal. | 
	
	| wibox.layout.flex:weak_connect_signal (name, func) | Connect to a signal weakly. | 
    
    Methods
    
    - 
    
    wibox.layout.flex.horizontal (...)
    
- 
    Returns a new horizontal flex layout.  A flex layout shares the available space
 equally among all widgets. Widgets can be added via :add(widget).
    
        - ...
            widget
         Widgets that should be added to the layout.
        
 
- 
    
    wibox.layout.flex.vertical (...)
    
- 
    Returns a new vertical flex layout.  A flex layout shares the available space
 equally among all widgets. Widgets can be added via :add(widget).
    
        - ...
            widget
         Widgets that should be added to the layout.
        
 
    - 
    
    wibox.layout.flex.children
    
- 
    Get all direct children of this layout.
    Type:
        - layout
         The layout you are modifying.
        
 
- 
    
    wibox.layout.flex.max_widget_size
    
- 
    Set the maximum size the widgets in this layout will take.
That is, maximum width for horizontal and maximum height for vertical.
    Type:
- 
    
    wibox.layout.flex.forced_height
    
- 
    Force a widget height.
    Type:
        - height
            number or nil
         The height (nilfor automatic)
 
- 
    
    wibox.layout.flex.forced_width
    
- 
    Force a widget width.
    Type:
        - width
            number or nil
         The width (nilfor automatic)
 
- 
    
    wibox.layout.flex.opacity
    
- 
    The widget opacity (transparency).
    Type:
        - opacity
            number
         The opacity (between 0 and 1)
         (default 1)
        
 
- 
    
    wibox.layout.flex.visible
    
- 
    The widget visibility.
    Type:
    - 
    
    widget::layout_changed
    
- 
    When the layout (size) change.
 This signal is emitted when the previous results of :layout()and:fit()are no longer valid.  Unless this signal is emitted,:layout()and:fit()must return the same result when called with the same arguments.See also:
- 
    
    widget::redraw_needed
    
- 
    When the widget content changed.
 This signal is emitted when the content of the widget changes. The widget will
 be redrawn, it is not re-layouted. Put differently, it is assumed that
 :layout()and:fit()would still return the same results as before.See also:
- 
    
    button::press
    
- 
    When a mouse button is pressed over the widget.
    Arguments:
        - lx
            number
         The horizontal position relative to the (0,0) position in
 the widget.
        
- ly
            number
         The vertical position relative to the (0,0) position in the
 widget.
        
- button
            number
         The button number.
        
- mods
            table
         The modifiers (mod4, mod1 (alt), Control, Shift)
        
- find_widgets_result The entry from the result of
 wibox.drawable:find_widgets for the position that the mouse hit.
        
        - drawable
            wibox.drawable
         The drawable containing
 the widget.
        
- widget
            widget
         The widget being displayed.
        
- hierarchy
            wibox.hierarchy
         The hierarchy
 managing the widget's geometry.
        
- x
            number
         An approximation of the X position that
 the widget is visible at on the surface.
        
- y
            number
         An approximation of the Y position that
 the widget is visible at on the surface.
        
- width
            number
         An approximation of the width that
 the widget is visible at on the surface.
        
- height
            number
         An approximation of the height that
 the widget is visible at on the surface.
        
- widget_width
            number
         The exact width of the widget
 in its local coordinate system.
        
- widget_height
            number
         The exact height of the widget
 in its local coordinate system.
        
 
 See also:
- 
    
    button::release
    
- 
    When a mouse button is released over the widget.
    Arguments:
        - lx
            number
         The horizontal position relative to the (0,0) position in
 the widget.
        
- ly
            number
         The vertical position relative to the (0,0) position in the
 widget.
        
- button
            number
         The button number.
        
- mods
            table
         The modifiers (mod4, mod1 (alt), Control, Shift)
        
- find_widgets_result The entry from the result of
 wibox.drawable:find_widgets for the position that the mouse hit.
        
        - drawable
            wibox.drawable
         The drawable containing
 the widget.
        
- widget
            widget
         The widget being displayed.
        
- hierarchy
            wibox.hierarchy
         The hierarchy
 managing the widget's geometry.
        
- x
            number
         An approximation of the X position that
 the widget is visible at on the surface.
        
- y
            number
         An approximation of the Y position that
 the widget is visible at on the surface.
        
- width
            number
         An approximation of the width that
 the widget is visible at on the surface.
        
- height
            number
         An approximation of the height that
 the widget is visible at on the surface.
        
- widget_width
            number
         The exact width of the widget
 in its local coordinate system.
        
- widget_height
            number
         The exact height of the widget
 in its local coordinate system.
        
 
 See also:
- 
    
    mouse::enter
    
- 
    When the mouse enter a widget.
    Arguments:
        - find_widgets_result The entry from the result of
 wibox.drawable:find_widgets for the position that the mouse hit.
        
        - drawable
            wibox.drawable
         The drawable containing
 the widget.
        
- widget
            widget
         The widget being displayed.
        
- hierarchy
            wibox.hierarchy
         The hierarchy
 managing the widget's geometry.
        
- x
            number
         An approximation of the X position that
 the widget is visible at on the surface.
        
- y
            number
         An approximation of the Y position that
 the widget is visible at on the surface.
        
- width
            number
         An approximation of the width that
 the widget is visible at on the surface.
        
- height
            number
         An approximation of the height that
 the widget is visible at on the surface.
        
- widget_width
            number
         The exact width of the widget
 in its local coordinate system.
        
- widget_height
            number
         The exact height of the widget
 in its local coordinate system.
        
 
 See also:
- 
    
    mouse::leave
    
- 
    When the mouse leave a widget.
    Arguments:
        - find_widgets_result The entry from the result of
 wibox.drawable:find_widgets for the position that the mouse hit.
        
        - drawable
            wibox.drawable
         The drawable containing
 the widget.
        
- widget
            widget
         The widget being displayed.
        
- hierarchy
            wibox.hierarchy
         The hierarchy
 managing the widget's geometry.
        
- x
            number
         An approximation of the X position that
 the widget is visible at on the surface.
        
- y
            number
         An approximation of the Y position that
 the widget is visible at on the surface.
        
- width
            number
         An approximation of the width that
 the widget is visible at on the surface.
        
- height
            number
         An approximation of the height that
 the widget is visible at on the surface.
        
- widget_width
            number
         The exact width of the widget
 in its local coordinate system.
        
- widget_height
            number
         The exact height of the widget
 in its local coordinate system.
        
 
 See also:
    - 
    
    wibox.layout.flex:set (index, widget2)
    
- 
    Set a widget at a specific index, replace the current one.
 Signal: widget::replaced The argument is the new widget and the old one
 and the index.
    
        - index
            number
         A widget or a widget index
        
- widget2
         The widget to take the place of the first one
        
 Returns:
           boolean
        If the operation is successful
     
- 
    
    wibox.layout.flex:replace_widget (widget, widget2[, recursive=false])
    
- 
    Replace the first instance of widget in the layout with widget2.
 Signal: widget::replaced The argument is the new widget and the old one
 and the index.
        - widget
         The widget to replace
        
- widget2
         The widget to replace widget with
        
- recursive
            boolean
         Digg in all compatible layouts to find the widget.
         (default false)
        
 Returns:
           boolean
        If the operation is successful
     
- 
    
    wibox.layout.flex:swap (index1, index2)
    
- 
    Swap 2 widgets in a layout.
 Signal: widget::swapped The arguments are both widgets and both (new) indexes.
    
        - index1
            number
         The first widget index
        
- index2
            number
         The second widget index
        
 Returns:
           boolean
        If the operation is successful
     
- 
    
    wibox.layout.flex:swap_widgets (widget1, widget2[, recursive=false])
    
- 
    Swap 2 widgets in a layout.
 If widget1 is present multiple time, only the first instance is swapped
 Signal: widget::swapped The arguments are both widgets and both (new) indexes.
 if the layouts not the same, then only widget::replacedwill be emitted.
        - widget1
         The first widget
        
- widget2
         The second widget
        
- recursive
            boolean
         Digg in all compatible layouts to find the widget.
         (default false)
        
 Returns:
           boolean
        If the operation is successful
     
- 
    
    wibox.layout.flex:reset (layout)
    
- 
    Reset a ratio layout.  This removes all widgets from the layout.
 Signal: widget::reset
    
        - layout
         The layout you are modifying.
        
 
- 
    
    wibox.layout.flex:set_children (children)
    
- 
    Replace the layout children
    
        - children
            table
         A table composed of valid widgets
        
 
- 
    
    wibox.layout.flex:add (layout, ...)
    
- 
    Add some widgets to the given fixed layout
    
        - layout
         The layout you are modifying.
        
- ...
            widget
         Widgets that should be added (must at least be one)
        
 
- 
    
    wibox.layout.flex:remove (The)
    
- 
    Remove a widget from the layout
    
        - The
            index
         widget index to remove
        
 Returns:
           boolean
        index If the operation is successful
     
- 
    
    wibox.layout.flex:remove_widgets (widget)
    
- 
    Remove one or more widgets from the layout
 The last parameter can be a boolean, forcing a recursive seach of the
 widget(s) to remove.
    
        - widget
         ... Widgets that should be removed (must at least be one)
        
 Returns:
           boolean
        If the operation is successful
     
- 
    
    wibox.layout.flex:insert (index, widget)
    
- 
    Insert a new widget in the layout at position index
    
        - index
            number
         The position
        
- widget
         The widget
        
 Returns:
           boolean
        If the operation is successful
     
- 
    
    wibox.layout.flex:index (widget[, recursive[, ...]])
    
- 
    Get a widex index.
    
        - widget
         The widget to look for
        
- recursive
         Also check sub-widgets
         (optional)
        
- ...
         Aditional widgets to add at the end of the \"path\"
         (optional)
        
 Returns:
        - 
        The index
- 
        The parent layout
- 
        The path between \"self\" and \"widget\"
 
- 
    
    wibox.layout.flex:get_all_children ()
    
- 
    Get all direct and indirect children widgets.
 This will scan all containers recursively to find widgets
 Warning: This method it prone to stack overflow id the widget, or any of its
 children, contain (directly or indirectly) itself.
    Returns:
           table
        The children
     
- 
    
    wibox.layout.flex:setup (args)
    
- 
    Set a declarative widget hierarchy description.
 See The declarative layout system
    
        - args
         An array containing the widgets disposition
        
 
- 
    
    wibox.layout.flex:buttons (_buttons)
    
- 
    Set/get a widget's buttons.
    
        - _buttons
         The table of buttons that should bind to the widget.
        
 
- 
    
    wibox.layout.flex:emit_signal_recursive (signal_name, ...)
    
- 
    Emit a signal and ensure all parent widgets in the hierarchies also
 forward the signal.  This is useful to track signals when there is a dynamic
 set of containers and layouts wrapping the widget.
    
        - signal_name
            string
        
- ...
         Other arguments
        
 
- 
    
    wibox.layout.flex:disconnect_signal (name, func)
    
- 
    Disconnect to a signal.
    
        - name
            string
         The name of the signal
        
- func
            function
         The callback that should be disconnected
        
 
- 
    
    wibox.layout.flex:emit_signal (name, ...)
    
- 
    Emit a signal.
    
        - name
            string
         The name of the signal
        
- ...
         Extra arguments for the callback functions. Each connected
   function receives the object as first argument and then any extra arguments
   that are given to emit_signal()
        
 
- 
    
    wibox.layout.flex:connect_signal (name, func)
    
- 
    Connect to a signal.
    
        - name
            string
         The name of the signal
        
- func
            function
         The callback to call when the signal is emitted
        
 
- 
    
    wibox.layout.flex:weak_connect_signal (name, func)
    
- 
    Connect to a signal weakly.  This allows the callback function to be garbage
 collected and automatically disconnects the signal when that happens.
 Warning:
 Only use this function if you really, really, really know what you
 are doing.
     
        - name
            string
         The name of the signal
        
- func
            function
         The callback to call when the signal is emitted