/* * Copyright (C) 2002-2006 Sergey V. Udaltsov * * 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 library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef __XKL_CONFIG_ITEM_H__ #define __XKL_CONFIG_ITEM_H__ #include /* * Maximum name length, including '\'0' character */ #define XKL_MAX_CI_NAME_LENGTH 32 /* * Maximum short description length, including '\\0' character * (this length is in bytes, so for UTF-8 encoding in * XML file the actual maximum length can be smaller) */ #define XKL_MAX_CI_SHORT_DESC_LENGTH 10 /* * Maximum description length, including '\\0' character * (this length is in bytes, so for UTF-8 encoding in * XML file the actual maximum length can be smaller) */ #define XKL_MAX_CI_DESC_LENGTH 192 #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef struct _XklConfigItem XklConfigItem; typedef struct _XklConfigItemClass XklConfigItemClass; #define XKL_TYPE_CONFIG_ITEM (xkl_config_item_get_type ()) #define XKL_CONFIG_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), XKL_TYPE_CONFIG_ITEM, XklConfigItem)) #define XKL_CONFIG_ITEM_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), XKL_CONFIG_ITEM, XklConfigItemClass)) #define XKL_IS_CONFIG_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XKL_TYPE_CONFIG_ITEM)) #define XKL_IS_CONFIG_ITEM_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((obj), XKL_TYPE_CONFIG_ITEM)) #define XKL_CONFIG_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), XKL_TYPE_CONFIG_ITEM, XklConfigItemClass)) /** * _XklConfigItem: * @parent: The superclass object * @name: The configuration item name. Corresponds to XML element "name". * @short_description: The configuration item short description. Corresponds to XML element "shortDescription". * @description: The configuration item description. Corresponds to XML element "description". * * The configuration item. Corresponds to XML element "configItem". */ struct _XklConfigItem { GObject parent; gchar name[XKL_MAX_CI_NAME_LENGTH]; gchar short_description[XKL_MAX_CI_DESC_LENGTH]; gchar description[XKL_MAX_CI_DESC_LENGTH]; }; /** * XCI_PROP_ALLOW_MULTIPLE_SELECTION: * Extra property for the XklConfigItem, defining whether the group allows multiple selection */ #define XCI_PROP_ALLOW_MULTIPLE_SELECTION "allowMultipleSelection" /** * XCI_PROP_VENDOR: * Extra property for the XklConfigItem, defining the vendor (used for models) */ #define XCI_PROP_VENDOR "vendor" /** * XCI_PROP_COUNTRY_LIST: * Extra property for the XklConfigItem, defining the list of countries (used for layouts/variants) */ #define XCI_PROP_COUNTRY_LIST "countryList" /** * XCI_PROP_LANGUAGE_LIST: * Extra property for the XklConfigItem, defining the list of languages (used for layouts/variants) */ #define XCI_PROP_LANGUAGE_LIST "languageList" /** * XCI_PROP_EXTRA_ITEM: * Extra property for the XklConfigItem, defining whether that item is exotic(extra) */ #define XCI_PROP_EXTRA_ITEM "extraItem" /** * _XklConfigItemClass: * @parent_class: The superclass * The XklConfigItem class, derived from GObject */ struct _XklConfigItemClass { GObjectClass parent_class; }; /** * xkl_config_item_get_type: * * Get type info for XklConfigItem * * Returns: GType for XklConfigItem */ extern GType xkl_config_item_get_type(void); /** * xkl_config_item_new: * * Create new XklConfigItem * * Returns: new instance */ extern XklConfigItem *xkl_config_item_new(void); /** * xkl_config_item_get_name: * @item: the XklConfigItem object * * Returns: The @name field of a XklConfigItem. This is mostly useful for * language bindings, in C you can manipulate the member directly. */ extern const gchar * xkl_config_item_get_name(XklConfigItem * item); /** * xkl_config_item_set_name: * @item: the XklConfigItem object to be changed * @name: (transfer none) (allow-none): Name (max. 32 characters); can be NULL. * * Change the @name field of a XklConfigItem. This is mostly useful for * language bindings, in C you can manipulate the member directly. */ extern void xkl_config_item_set_name(XklConfigItem * item, const gchar * name); /** * xkl_config_item_get_short_description: * @item: the XklConfigItem object * * Returns: The @short_description field of a XklConfigItem. This is mostly useful for * language bindings, in C you can manipulate the member directly. */ extern const gchar * xkl_config_item_get_short_description(XklConfigItem * item); /** * xkl_config_item_set_short_description: * @item: the XklConfigItem object to be changed * @short_description: (transfer none) (allow-none): Short Description (max. 10 * characters); can be NULL. * * Change the @short_description field of a XklConfigItem. This is mostly useful for * language bindings, in C you can manipulate the member directly. */ extern void xkl_config_item_set_short_description(XklConfigItem * item, const gchar * short_description); /** * xkl_config_item_get_description: * @item: the XklConfigItem object * * Returns: The @description field of a XklConfigItem. This is mostly useful for * language bindings, in C you can manipulate the member directly. */ extern const gchar * xkl_config_item_get_description(XklConfigItem * item); /** * xkl_config_item_set_description: * @item: the XklConfigItem object to be changed * @description: (transfer none) (allow-none): Description (max. 192 * characters); can be NULL. * * Change the @description field of a XklConfigItem. This is mostly useful for * language bindings, in C you can manipulate the member directly. */ extern void xkl_config_item_set_description(XklConfigItem * item, const gchar * description); /** * xkl_get_country_name: * @code: ISO 3166 Alpha 2 code: 2 chars, uppercase (US, RU, FR, ...) * * Get localized country name, from ISO code * * Returns: localized country name (USA, Russia, France, ... translated) */ extern const gchar * xkl_get_country_name(const gchar * code); /** * xkl_get_language_name: * @code: ISO 639 2B or 2T code: 3 chars, lowercase (eng, rus, fra, ...) * * Get localized language name, from ISO code * * Returns: localized country name (English, Russiam, French, ... translated) */ extern const gchar * xkl_get_language_name(const gchar * code); #ifdef __cplusplus } #endif /* __cplusplus */ #endif