class EngineDesc(Serializable):
__gtype_name__ = "PYIBusEngineDesc"
__NAME__ = "IBusEngineDesc"
- def __init__(self, name="", longname="", description="", language="", license="", author="", icon="", layout="", hotkeys="", rank=0):
+ def __init__(self, name="", longname="", description="", language="", license="", author="", icon="", layout="", hotkeys="", rank=0, symbol=""):
super(EngineDesc, self).__init__()
self.__name = name
self.__longname = longname
self.__layout = layout
self.__rank = rank
self.__hotkeys = hotkeys
+ self.__symbol = symbol
def get_name(self):
return self.__name
def get_hotkeys(self):
return self.__hotkeys
+ def get_symbol(self):
+ return self.__symbol
+
name = property(get_name)
longname = property(get_longname)
description = property(get_description)
layout = property(get_layout)
rank = property(get_rank)
hotkeys = property(get_hotkeys)
+ symbol = property(get_symbol)
def serialize(self, struct):
super(EngineDesc, self).serialize(struct)
struct.append(dbus.String(self.__layout))
struct.append(dbus.UInt32(self.__rank))
struct.append(dbus.String(self.__hotkeys))
- # New properties of EngineDesc will use dict for serialize
- struct.append(dbus.Array({}, signature=None))
+ struct.append(dbus.String(self.__symbol))
def deserialize(self, struct):
super(EngineDesc, self).deserialize(struct)
self.__layout = struct.pop(0)
self.__rank = struct.pop(0)
self.__hotkeys = struct.pop(0)
- # New properties of EngineDesc will use dict for serialize
- #value = struct.pop(0)
+ self.__symbol = struct.pop(0)
def test():
- engine = EngineDesc("Hello", "", "", "", "", "", "", "", "")
+ engine = EngineDesc("Hello", "", "", "", "", "", "", "", "", 0, "")
value = serialize_object(engine)
engine = deserialize_object(value)
PROP_LAYOUT,
PROP_RANK,
PROP_HOTKEYS,
+ PROP_SYMBOL,
};
gchar *layout;
guint rank;
gchar *hotkeys;
+ gchar *symbol;
};
#define IBUS_ENGINE_DESC_GET_PRIVATE(o) \
"The hotkeys of engine description",
"",
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+ /**
+ * IBusEngineDesc:symbol:
+ *
+ * The symbol chars of engine description instead of icon image
+ */
+ g_object_class_install_property (gobject_class,
+ PROP_SYMBOL,
+ g_param_spec_string ("symbol",
+ "description symbol",
+ "The icon symbol chars of engine description",
+ "",
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
}
static void
desc->priv->layout = NULL;
desc->priv->rank = 0;
desc->priv->hotkeys = NULL;
+ desc->priv->symbol = NULL;
}
static void
g_free (desc->priv->icon);
g_free (desc->priv->layout);
g_free (desc->priv->hotkeys);
+ g_free (desc->priv->symbol);
IBUS_OBJECT_CLASS (ibus_engine_desc_parent_class)->destroy (IBUS_OBJECT (desc));
}
g_assert (desc->priv->hotkeys == NULL);
desc->priv->hotkeys = g_value_dup_string (value);
break;
+ case PROP_SYMBOL:
+ g_assert (desc->priv->symbol == NULL);
+ desc->priv->symbol = g_value_dup_string (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (desc, prop_id, pspec);
}
case PROP_HOTKEYS:
g_value_set_string (value, ibus_engine_desc_get_hotkeys (desc));
break;
+ case PROP_SYMBOL:
+ g_value_set_string (value, ibus_engine_desc_get_symbol (desc));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (desc, prop_id, pspec);
}
/* End dict iter */
#define NOTNULL(s) ((s) != NULL ? (s) : "")
+ /* If you will add a new property, you can append it at the end and
+ * you should not change the serialized order of name, longname,
+ * description, ... because the order is also used in other applications
+ * likes ibus-qt. */
g_variant_builder_add (builder, "s", NOTNULL (desc->priv->name));
g_variant_builder_add (builder, "s", NOTNULL (desc->priv->longname));
g_variant_builder_add (builder, "s", NOTNULL (desc->priv->description));
g_variant_builder_add (builder, "s", NOTNULL (desc->priv->layout));
g_variant_builder_add (builder, "u", desc->priv->rank);
g_variant_builder_add (builder, "s", NOTNULL (desc->priv->hotkeys));
+ g_variant_builder_add (builder, "s", NOTNULL (desc->priv->symbol));
#undef NOTNULL
+
return TRUE;
}
retval = IBUS_SERIALIZABLE_CLASS (ibus_engine_desc_parent_class)->deserialize ((IBusSerializable *)desc, variant);
g_return_val_if_fail (retval, 0);
+ /* If you will add a new property, you can append it at the end and
+ * you should not change the serialized order of name, longname,
+ * description, ... because the order is also used in other applications
+ * likes ibus-qt. */
g_variant_get_child (variant, retval++, "s", &desc->priv->name);
g_variant_get_child (variant, retval++, "s", &desc->priv->longname);
g_variant_get_child (variant, retval++, "s", &desc->priv->description);
g_variant_get_child (variant, retval++, "s", &desc->priv->layout);
g_variant_get_child (variant, retval++, "u", &desc->priv->rank);
g_variant_get_child (variant, retval++, "s", &desc->priv->hotkeys);
+ g_variant_get_child (variant, retval++, "s", &desc->priv->symbol);
return retval;
}
dest->priv->layout = g_strdup (src->priv->layout);
dest->priv->rank = src->priv->rank;
dest->priv->hotkeys = g_strdup (src->priv->hotkeys);
+ dest->priv->symbol = g_strdup (src->priv->symbol);
return TRUE;
}
OUTPUT_ENTRY_1(icon);
OUTPUT_ENTRY_1(layout);
OUTPUT_ENTRY_1(hotkeys);
+ OUTPUT_ENTRY_1(symbol);
g_string_append_indent (output, indent + 1);
g_string_append_printf (output, "<rank>%u</rank>\n", desc->priv->rank);
#undef OUTPUT_ENTRY
PARSE_ENTRY_1(icon);
PARSE_ENTRY_1(layout);
PARSE_ENTRY_1(hotkeys);
+ PARSE_ENTRY_1(symbol);
#undef PARSE_ENTRY
#undef PARSE_ENTRY_1
if (g_strcmp0 (sub_node->name , "rank") == 0) {
IBUS_ENGINE_DESC_GET_PROPERTY (layout, const gchar *)
IBUS_ENGINE_DESC_GET_PROPERTY (rank, guint)
IBUS_ENGINE_DESC_GET_PROPERTY (hotkeys, const gchar *)
+IBUS_ENGINE_DESC_GET_PROPERTY (symbol, const gchar *)
#undef IBUS_ENGINE_DESC_GET_PROPERTY
IBusEngineDesc *
g_assert (desc->priv->icon);
g_assert (desc->priv->layout);
g_assert (desc->priv->hotkeys);
+ g_assert (desc->priv->symbol);
return desc;
}