|
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()
|