/*
* Copyright (C) 2002-2006 Sergey V. Udaltsov <svu@gnome.org>
*
* 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 <glib-object.h>
/*
* 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