2
# -*- coding: utf-8 -*-
6
__authors__ = ["Jan Jokela <janjokela@gmail.com>"]
7
__licenses__ = ["LICENSE.LGPL"]
8
__description__ = "Widget styles"
15
class Style(gobject.GObject):
17
A style object for widgets in their various states.
19
Styles are described in JSON (Java Script Object Notation, a subset of the
24
def __init__(self, **kwargs):
27
kwargs -- dict(**) A dictionary of properties
31
super(Style, self).__init__()
35
for key, value in kwargs.iteritems():
36
setattr(self, key, value)
38
def __setattr__(self, key, value):
39
""" Sets a property """
41
key = key.replace('-', '_')
42
super(Style, self).__setattr__(key, value)
44
if not key.startswith('_'):
45
key = key.replace('_', '-')
46
self._properties[key] = value
49
""" Iter properties """
51
return self._properties.iteritems()
53
def merge(self, style):
54
""" Merges current style with given style by overwriting current
55
properties with properties from the given style, case different, and
56
adds new properties from it.
58
style -- (Style) Style to be merged
61
new_style = Style(**self._properties)
62
for key, value in style:
63
setattr(new_style, key, value)
67
def get_properties(self):
68
""" Retrieve the property dictionary """
70
return self._properties