# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2009 Huang Peng # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, write to the # Free Software Foundation, Inc., 59 Temple Place, Suite 330, # Boston, MA 02111-1307 USA __all__ = ( "Component", ) import dbus from exception import IBusException from serializable import * from enginedesc import * from observedpath import * class Component(Serializable): __NAME__ = "IBusComponent" def __init__ (self, name="", description="", version="", license="", author="", homepage="", _exec="", textdomain=""): super(Component, self).__init__() self.__name = name self.__description = description self.__version = version self.__license = license self.__author = author self.__homepage = homepage self.__exec = _exec self.__textdomain = textdomain self.__observed_paths = [] self.__engines = [] def get_name(self): return self.__name def get_description(self): return self.__description def get_version(self): return self.__version def get_license(self): return self.__license def get_author(self): return self.__author def get_homepage(self): return self.__homepage def get_exec(self): return self.__exec def get_textdomain(self): return self.__textdomain def get_observed_paths(self): return self.__observed_paths[:] def get_engines(self): return self.__engines[:] name = property(get_name) description = property(get_description) version = property(get_version) license = property(get_license) author = property(get_author) homepage = property(get_homepage) _exec = property(get_exec) textdomain = property(get_textdomain) observed_paths = property(get_observed_paths) engines = property(get_engines) def add_observed_path(self, path): self.__observed_paths.append(ObservedPath(path)) def add_engine(self, name="", longname="", description="", language="", license="", author="", icon="", layout=""): engine = EngineDesc(name, longname, description, language, license, author, icon, layout) self.__engines.append(engine) def serialize(self, struct): super(Component, self).serialize(struct) struct.append (dbus.String(self.__name)) struct.append (dbus.String(self.__description)) struct.append (dbus.String(self.__version)) struct.append (dbus.String(self.__license)) struct.append (dbus.String(self.__author)) struct.append (dbus.String(self.__homepage)) struct.append (dbus.String(self.__exec)) struct.append (dbus.String(self.__textdomain)) struct.append (dbus.Array(map(serialize_object,self.__observed_paths), signature="v")) struct.append (dbus.Array(map(serialize_object,self.__engines), signature="v")) def deserialize(self, struct): super(Component, self).deserialize(struct) self.__name = struct.pop(0) self.__description = struct.pop(0) self.__version = struct.pop(0) self.__license = struct.pop(0) self.__author = struct.pop(0) self.__homepage = struct.pop(0) self.__exec = struct.pop(0) self.__textdomain = struct.pop(0) self.__observed_paths = map(deserialize_object, struct.pop(0)) self.__engines = map(deserialize_object, struct.pop(0)) serializable_register(Component) def test(): text = Component("Hello", "", "", "", "", "", "", "") value = serialize_object(text) text= deserialize_object(value) if __name__ == "__main__": test()