class EngineDesc(Serializable):
__gtype_name__ = "PYIBusEngineDesc"
__NAME__ = "IBusEngineDesc"
- def __init__ (self, name="", longname="", description="", language="", license="", author="", icon="", layout=""):
+ def __init__ (self, name="", longname="", description="", language="", license="", author="", icon="", layout="", rank=0):
super(EngineDesc, self).__init__()
self.__name = name
self.__longname = longname
self.__author = author
self.__icon = icon
self.__layout = layout
+ self.__rank = rank;
def get_name(self):
return self.__name
def get_layout(self):
return self.__layout
+ def get_rank(self):
+ return self.__rank
+
name = property(get_name)
longname = property(get_longname)
description = property(get_description)
author = property(get_author)
icon = property(get_icon)
layout = property(get_layout)
+ rank = property(get_rank)
def serialize(self, struct):
super(EngineDesc, self).serialize(struct)
struct.append (dbus.String(self.__author))
struct.append (dbus.String(self.__icon))
struct.append (dbus.String(self.__layout))
+ struct.append (dbus.UInt(self.__rank))
def deserialize(self, struct):
super(EngineDesc, self).deserialize(struct)
self.__author = struct.pop(0)
self.__icon = struct.pop(0)
self.__layout = struct.pop(0)
+ self.__rank = struct.pop(0)
def test():
engine = EngineDesc("Hello", "", "", "", "", "", "", "")
for l in keys:
iter1 = self.__model.append(None)
self.__model.set(iter1, 0, l)
+ def cmp_engine(a, b):
+ if a.rank == b.rank:
+ return cmp(a.longname, b.longname)
+ return int(-a.rank + b.rank)
+ lang[l].sort(cmp_engine)
for e in lang[l]:
iter2 = self.__model.append(iter1)
self.__model.set(iter2, 0, e)
serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_engine_desc_deserialize;
serializable_class->copy = (IBusSerializableCopyFunc) ibus_engine_desc_copy;
- g_string_append (serializable_class->signature, "ssssssss");
+ g_string_append (serializable_class->signature, "ssssssssu");
}
static void
retval = ibus_message_iter_append (iter, G_TYPE_STRING, &desc->layout);
g_return_val_if_fail (retval, FALSE);
+ retval = ibus_message_iter_append (iter, G_TYPE_UINT, &desc->rank);
+ g_return_val_if_fail (retval, FALSE);
+
return TRUE;
}
ibus_message_iter_next (iter);
desc->layout = g_strdup (str);
+ retval = ibus_message_iter_get (iter, G_TYPE_UINT, &desc->rank);
+ g_return_val_if_fail (retval, FALSE);
+ ibus_message_iter_next (iter);
+
return TRUE;
}