Blame ibus/attribute.py

Packit Service 1d8f1c
# vim:set et sts=4 sw=4:
Packit Service 1d8f1c
#
Packit Service 1d8f1c
# ibus - The Input Bus
Packit Service 1d8f1c
#
Packit Service 1d8f1c
# Copyright (c) 2007-2010 Peng Huang <shawn.p.huang@gmail.com>
Packit Service 1d8f1c
# Copyright (c) 2007-2010 Red Hat, Inc.
Packit Service 1d8f1c
#
Packit Service 1d8f1c
# This library is free software; you can redistribute it and/or
Packit Service 1d8f1c
# modify it under the terms of the GNU Lesser General Public
Packit Service 1d8f1c
# License as published by the Free Software Foundation; either
Packit Service 1d8f1c
# version 2.1 of the License, or (at your option) any later version.
Packit Service 1d8f1c
#
Packit Service 1d8f1c
# This library is distributed in the hope that it will be useful,
Packit Service 1d8f1c
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 1d8f1c
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 1d8f1c
# Lesser General Public License for more details.
Packit Service 1d8f1c
#
Packit Service 1d8f1c
# You should have received a copy of the GNU Lesser General Public
Packit Service 1d8f1c
# License along with this library; if not, write to the Free Software
Packit Service 1d8f1c
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
Packit Service 1d8f1c
# USA
Packit Service 1d8f1c
Packit Service 1d8f1c
__all__ = (
Packit Service 1d8f1c
        "ATTR_TYPE_UNDERLINE",
Packit Service 1d8f1c
        "ATTR_TYPE_FOREGROUND",
Packit Service 1d8f1c
        "ATTR_TYPE_BACKGROUND",
Packit Service 1d8f1c
        "ATTR_UNDERLINE_NONE",
Packit Service 1d8f1c
        "ATTR_UNDERLINE_SINGLE",
Packit Service 1d8f1c
        "ATTR_UNDERLINE_DOUBLE",
Packit Service 1d8f1c
        "ATTR_UNDERLINE_LOW",
Packit Service 1d8f1c
        "ATTR_UNDERLINE_ERROR",
Packit Service 1d8f1c
        "Attribute",
Packit Service 1d8f1c
        "AttributeUnderline",
Packit Service 1d8f1c
        "AttributeForeground",
Packit Service 1d8f1c
        "AttributeBackground",
Packit Service 1d8f1c
        "AttrList",
Packit Service 1d8f1c
        "ARGB", "RGB"
Packit Service 1d8f1c
    )
Packit Service 1d8f1c
Packit Service 1d8f1c
import dbus
Packit Service 1d8f1c
from exception import IBusException
Packit Service 1d8f1c
from serializable import *
Packit Service 1d8f1c
Packit Service 1d8f1c
ATTR_TYPE_UNDERLINE = 1
Packit Service 1d8f1c
ATTR_TYPE_FOREGROUND = 2
Packit Service 1d8f1c
ATTR_TYPE_BACKGROUND = 3
Packit Service 1d8f1c
Packit Service 1d8f1c
ATTR_UNDERLINE_NONE = 0
Packit Service 1d8f1c
ATTR_UNDERLINE_SINGLE = 1
Packit Service 1d8f1c
ATTR_UNDERLINE_DOUBLE = 2
Packit Service 1d8f1c
ATTR_UNDERLINE_LOW = 3
Packit Service 1d8f1c
ATTR_UNDERLINE_ERROR = 4
Packit Service 1d8f1c
Packit Service 1d8f1c
class Attribute(Serializable):
Packit Service 1d8f1c
    __gtype_name__ = "PYIBusAttribute"
Packit Service 1d8f1c
    __NAME__ = "IBusAttribute"
Packit Service 1d8f1c
    def __init__ (self, type=0, value=0, start_index=0, end_index=0):
Packit Service 1d8f1c
        super(Attribute, self).__init__()
Packit Service 1d8f1c
        self.__type = type
Packit Service 1d8f1c
        self.__value = value
Packit Service 1d8f1c
        self.__start_index = start_index
Packit Service 1d8f1c
        self.__end_index = end_index
Packit Service 1d8f1c
Packit Service 1d8f1c
    def get_type(self):
Packit Service 1d8f1c
        return self.__type
Packit Service 1d8f1c
Packit Service 1d8f1c
    def get_value(self):
Packit Service 1d8f1c
        return self.__value
Packit Service 1d8f1c
Packit Service 1d8f1c
    def get_start_index(self):
Packit Service 1d8f1c
        return self.__start_index
Packit Service 1d8f1c
Packit Service 1d8f1c
    def get_end_index(self):
Packit Service 1d8f1c
        return self.__end_index
Packit Service 1d8f1c
Packit Service 1d8f1c
    type        = property(get_type)
Packit Service 1d8f1c
    value       = property(get_value)
Packit Service 1d8f1c
    start_index = property(get_start_index)
Packit Service 1d8f1c
    end_index   = property(get_end_index)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def serialize(self, struct):
Packit Service 1d8f1c
        super(Attribute, self).serialize(struct)
Packit Service 1d8f1c
        struct.append (dbus.UInt32(self.__type))
Packit Service 1d8f1c
        struct.append (dbus.UInt32(self.__value))
Packit Service 1d8f1c
        struct.append (dbus.UInt32(self.__start_index))
Packit Service 1d8f1c
        struct.append (dbus.UInt32(self.__end_index))
Packit Service 1d8f1c
Packit Service 1d8f1c
    def deserialize(self, struct):
Packit Service 1d8f1c
        super(Attribute, self).deserialize(struct)
Packit Service 1d8f1c
        if len(struct) < 4:
Packit Service 1d8f1c
            raise IBusException ("Can not deserialize IBusAttribute")
Packit Service 1d8f1c
Packit Service 1d8f1c
        self.__type = struct.pop(0)
Packit Service 1d8f1c
        self.__value = struct.pop(0)
Packit Service 1d8f1c
        self.__start_index = struct.pop(0)
Packit Service 1d8f1c
        self.__end_index = struct.pop(0)
Packit Service 1d8f1c
Packit Service 1d8f1c
class AttributeUnderline (Attribute):
Packit Service 1d8f1c
    def __init__(self, value, start_index, end_index):
Packit Service 1d8f1c
        Attribute.__init__ (self, ATTR_TYPE_UNDERLINE, value, start_index, end_index)
Packit Service 1d8f1c
Packit Service 1d8f1c
class AttributeForeground (Attribute):
Packit Service 1d8f1c
    def __init__(self, value, start_index, end_index):
Packit Service 1d8f1c
        Attribute.__init__ (self, ATTR_TYPE_FOREGROUND, value, start_index, end_index)
Packit Service 1d8f1c
Packit Service 1d8f1c
class AttributeBackground (Attribute):
Packit Service 1d8f1c
    def __init__(self, value, start_index, end_index):
Packit Service 1d8f1c
        Attribute.__init__ (self, ATTR_TYPE_BACKGROUND, value, start_index, end_index)
Packit Service 1d8f1c
Packit Service 1d8f1c
def ARGB (a, r, g, b):
Packit Service 1d8f1c
    return ((a & 0xff)<<24) + ((r & 0xff) << 16) + ((g & 0xff) << 8) + (b & 0xff)
Packit Service 1d8f1c
Packit Service 1d8f1c
def RGB (r, g, b):
Packit Service 1d8f1c
    return ARGB (255, r, g, b)
Packit Service 1d8f1c
Packit Service 1d8f1c
class AttrList(Serializable):
Packit Service 1d8f1c
    __gtype_name__ = "PYIBusAttrList"
Packit Service 1d8f1c
    __NAME__ = "IBusAttrList"
Packit Service 1d8f1c
    def __init__ (self, attrs = []):
Packit Service 1d8f1c
        super(AttrList, self).__init__()
Packit Service 1d8f1c
        self._attrs = []
Packit Service 1d8f1c
        for attr in attrs:
Packit Service 1d8f1c
            self.append (attr)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def append (self, attr):
Packit Service 1d8f1c
        assert isinstance (attr, Attribute)
Packit Service 1d8f1c
        self._attrs.append (attr)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def serialize (self, struct):
Packit Service 1d8f1c
        super(AttrList, self).serialize (struct)
Packit Service 1d8f1c
        array = map (lambda a: serialize_object(a), self._attrs)
Packit Service 1d8f1c
        array = dbus.Array (array, signature = "v")
Packit Service 1d8f1c
        struct.append(array)
Packit Service 1d8f1c
Packit Service 1d8f1c
    def deserialize (self, struct):
Packit Service 1d8f1c
        super(AttrList, self).deserialize(struct)
Packit Service 1d8f1c
        attrs = map(lambda v: deserialize_object(v), struct.pop(0))
Packit Service 1d8f1c
        self._attrs = attrs
Packit Service 1d8f1c
Packit Service 1d8f1c
    def __iter__ (self):
Packit Service 1d8f1c
        return self._attrs.__iter__ ()
Packit Service 1d8f1c
Packit Service 1d8f1c
def test():
Packit Service 1d8f1c
    attr_list = AttrList()
Packit Service 1d8f1c
    attr_list.append (Attribute())
Packit Service 1d8f1c
    attr_list.append (Attribute())
Packit Service 1d8f1c
    attr_list.append (Attribute())
Packit Service 1d8f1c
    attr_list.append (Attribute())
Packit Service 1d8f1c
    attr_list.append (Attribute())
Packit Service 1d8f1c
    value = serialize_object(attr_list)
Packit Service 1d8f1c
    attr_list = deserialize_object(value)
Packit Service 1d8f1c
Packit Service 1d8f1c
if __name__ == "__main__":
Packit Service 1d8f1c
    test()