Class gears.object
The object oriented programming base class used by various Awesome widgets and components.
It provide basic observer pattern, signaling and dynamic properties.
Info:
- Copyright: 2010 Uli Schlachter
- Author: Uli Schlachter
Functions
| gears.object ([args={}]) | Returns a new object. | 
Methods
| gears.object:connect_signal (name, func) | Connect to a signal. | 
| gears.object:weak_connect_signal (name, func) | Connect to a signal weakly. | 
| gears.object:disconnect_signal (name, func) | Disonnect to a signal. | 
| gears.object:emit_signal (name, ...) | Emit a signal. | 
| gears.object:modulename ([level=2]) | Helper function to get the module name out of debug.getinfo. | 
lib.gears.object.properties Functions
| gears.object.properties.capi_index_fallback (class[, args={}]) | Add the missing properties handler to a CAPI object such as client/tag/screen. | 
Functions
Methods- gears.object ([args={}])
- 
Returns a new object. You can call :emit_signal(),:disconnect_signal()and:connect_signal()on the resulting object.Note that args.enable_auto_signalsis only supported whenargs.enable_propertiesis true.Usage example output: In get foo bar bar In set foo 42 In get foo 42 42 In a method 1 2 3 nil In the connection handler! a cow a cow- args The arguments
        - enable_properties boolean Automatically call getters and setters (default false)
- enable_auto_signals boolean Generate "property::xxxx" signals when an unknown property is set. (default false)
- class table (default nil)
 
 Returns:- 
           table
        A new object
    
 Usage:-- Create a class for this object. It will be used as a backup source for -- methods and accessors. It is also possible to set them directly on the -- object. local class = {} function class:get_foo() print('In get foo', self._foo or 'bar') return self._foo or 'bar' end function class:set_foo(value) print('In set foo', value) -- In case it is necessary to bypass the object property system, use -- rawset rawset(self, '_foo', value) -- When using custom accessors, the signals need to be handled manually self:emit_signal('property::foo', value) end function class:method(a, b, c) print('In a method', a, b, c) end local o = gears.object { class = class, enable_properties = true, enable_auto_signals = true, } print(o.foo) o.foo = 42 print(o.foo) o:method(1, 2, 3) -- Random properties can also be added, the signal will be emitted automatically. o:connect_signal('property::something', function(obj, value) assert(obj == o) print('In the connection handler!', value) end) print(o.something) o.something = 'a cow' print(o.something) 
- args The arguments
        
Methods
- gears.object:connect_signal (name, func)
- 
Connect to a signal. Usage example output: In slot [obj] nil nil nil In slot [obj] foo bar 42- name string The name of the signal
- func function The callback to call when the signal is emitted
 Usage:local o = gears.object{} -- Function can be attached to signals local function slot(obj, a, b, c) print('In slot', obj, a, b, c) end o:connect_signal('my_signal', slot) -- Emitting can be done without arguments. In that case, the object will be -- implicitly added as an argument. o:emit_signal 'my_signal' -- It is also possible to add as many random arguments are required. o:emit_signal('my_signal', 'foo', 'bar', 42) -- Finally, to allow the object to be garbage collected (the memory freed), it -- is necessary to disconnect the signal or use weak_connect_signal o:disconnect_signal('my_signal', slot) -- This time, the slotwont be called as it is no longer connected. o:emit_signal 'my_signal'
- gears.object: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.
    - name string The name of the signal
- func function The callback to call when the signal is emitted
 
- gears.object:disconnect_signal (name, func)
- 
    Disonnect to a signal.
    - name string The name of the signal
- func function The callback that should be disconnected
 
- gears.object: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()
 
- gears.object:modulename ([level=2])
- 
    Helper function to get the module name out of debug.getinfo.- level
            integer
         Level for debug.getinfo(level, "S"). Typically 2 or 3. (default 2)
 Returns:- 
           string
        The module name, e.g. "wibox.container.background".
    
 Usage:local mt = {} mt.__tostring = function(o) return require("gears.object").modulename(2) end return setmetatable(ret, mt) 
- level
            integer
         Level for 
lib.gears.object.properties Functions
- gears.object.properties.capi_index_fallback (class[, args={}])
- 
Add the missing properties handler to a CAPI object such as client/tag/screen. Valid args: - getter: A smart getter (handle property getter itself)
- getter_fallback: A dumb getter method (don't handle individual property getter)
- getter_class: A module with individual property getter/setter
- getter_prefix: A special getter prefix (like "get" or "get_" (default))
- setter: A smart setter (handle property setter itself)
- setter_fallback: A dumb setter method (don't handle individual property setter)
- setter_class: A module with individual property getter/setter
- setter_prefix: A special setter prefix (like "set" or "set_" (default))
- auto_emit: Emit "property::__" automatically (default: false). This is ignored when setterfallback is set or a setter is found
 - class A standard luaobject derived object
- args table A set of accessors configuration parameters (default {})