Blame libxklavier/xkl_config_registry.h

Packit Service 93d855
/*
Packit Service 93d855
 * Copyright (C) 2002-2006 Sergey V. Udaltsov <svu@gnome.org>
Packit Service 93d855
 *
Packit Service 93d855
 * This library is free software; you can redistribute it and/or
Packit Service 93d855
 * modify it under the terms of the GNU Lesser General Public
Packit Service 93d855
 * License as published by the Free Software Foundation; either
Packit Service 93d855
 * version 2 of the License, or (at your option) any later version.
Packit Service 93d855
 *
Packit Service 93d855
 * This library is distributed in the hope that it will be useful,
Packit Service 93d855
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 93d855
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 93d855
 * Lesser General Public License for more details.
Packit Service 93d855
 *
Packit Service 93d855
 * You should have received a copy of the GNU Lesser General Public
Packit Service 93d855
 * License along with this library; if not, write to the
Packit Service 93d855
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Packit Service 93d855
 * Boston, MA 02111-1307, USA.
Packit Service 93d855
 */
Packit Service 93d855
Packit Service 93d855
#ifndef __XKL_CONFIG_REGISTRY_H__
Packit Service 93d855
#define __XKL_CONFIG_REGISTRY_H__
Packit Service 93d855
Packit Service 93d855
#include <glib-object.h>
Packit Service 93d855
#include <libxklavier/xkl_engine.h>
Packit Service 93d855
#include <libxklavier/xkl_config_item.h>
Packit Service 93d855
Packit Service 93d855
#ifdef __cplusplus
Packit Service 93d855
extern "C" {
Packit Service 93d855
#endif				/* __cplusplus */
Packit Service 93d855
Packit Service 93d855
	typedef struct _XklConfigRegistry XklConfigRegistry;
Packit Service 93d855
	typedef struct _XklConfigRegistryPrivate XklConfigRegistryPrivate;
Packit Service 93d855
	typedef struct _XklConfigRegistryClass XklConfigRegistryClass;
Packit Service 93d855
Packit Service 93d855
#define XKL_TYPE_CONFIG_REGISTRY             (xkl_config_registry_get_type ())
Packit Service 93d855
#define XKL_CONFIG_REGISTRY(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), XKL_TYPE_CONFIG_REGISTRY, XklConfigRegistry))
Packit Service 93d855
#define XKL_CONFIG_REGISTRY_CLASS(obj)       (G_TYPE_CHECK_CLASS_CAST ((obj), XKL_TYPE_CONFIG_REGISTRY,  XklConfigRegistryClass))
Packit Service 93d855
#define XKL_IS_CONFIG_REGISTRY(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XKL_TYPE_CONFIG_REGISTRY))
Packit Service 93d855
#define XKL_IS_CONFIG_REGISTRY_CLASS(obj)    (G_TYPE_CHECK_CLASS_TYPE ((obj), XKL_TYPE_CONFIG_REGISTRY))
Packit Service 93d855
#define XKL_CONFIG_REGISTRY_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), XKL_TYPE_CONFIG_REGISTRY, XklConfigRegistryClass))
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * _XklConfigRegistry:
Packit Service 93d855
 * @parent: The superclass object
Packit Service 93d855
 *
Packit Service 93d855
 * The configuration manager. Corresponds to XML element "configItem".
Packit Service 93d855
 */
Packit Service 93d855
	struct _XklConfigRegistry {
Packit Service 93d855
		GObject parent;
Packit Service 93d855
		/*< private >*/
Packit Service 93d855
		XklConfigRegistryPrivate *priv;
Packit Service 93d855
	};
Packit Service 93d855
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * _XklConfigRegistryClass:
Packit Service 93d855
 * @parent_class: The superclass
Packit Service 93d855
 *
Packit Service 93d855
 * The XklConfigRegistry class, derived from GObject
Packit Service 93d855
 */
Packit Service 93d855
	struct _XklConfigRegistryClass {
Packit Service 93d855
		GObjectClass parent_class;
Packit Service 93d855
	};
Packit Service 93d855
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_get_type:
Packit Service 93d855
 *
Packit Service 93d855
 * Get type info for XklConfigRegistry
Packit Service 93d855
 *
Packit Service 93d855
 * Returns: GType for XklConfigRegistry
Packit Service 93d855
 */
Packit Service 93d855
	extern GType xkl_config_registry_get_type(void);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_get_instance:
Packit Service 93d855
 * @engine: the engine to use for accessing X in all the operations
Packit Service 93d855
 * (like accessing root window properties etc)
Packit Service 93d855
 *
Packit Service 93d855
 * Create new XklConfig
Packit Service 93d855
 *
Packit Service 93d855
 * Returns: (transfer none): new instance
Packit Service 93d855
 */
Packit Service 93d855
	extern XklConfigRegistry
Packit Service 93d855
	    * xkl_config_registry_get_instance(XklEngine * engine);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_load:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @if_extras_needed: whether exotic materials (layouts, options) 
Packit Service 93d855
 * should be loaded as well
Packit Service 93d855
 *
Packit Service 93d855
 * Loads XML configuration registry. The name is taken from X server
Packit Service 93d855
 * (for XKB/libxkbfile, from the root window property)
Packit Service 93d855
 *
Packit Service 93d855
 * Returns: TRUE on success
Packit Service 93d855
 */
Packit Service 93d855
	extern gboolean xkl_config_registry_load(XklConfigRegistry *
Packit Service 93d855
						 config,
Packit Service 93d855
						 gboolean
Packit Service 93d855
						 if_extras_needed);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * XklConfigItemProcessFunc:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @item: the item from registry
Packit Service 93d855
 * @data: anything which can be stored into the pointer
Packit Service 93d855
 *
Packit Service 93d855
 * Callback type used for enumerating keyboard models, layouts, variants, options
Packit Service 93d855
 */
Packit Service 93d855
	typedef void (*XklConfigItemProcessFunc) (XklConfigRegistry * config,
Packit Service 93d855
						  const XklConfigItem * item,
Packit Service 93d855
						  gpointer data);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * XklTwoConfigItemsProcessFunc:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @item: the item from registry
Packit Service 93d855
 * @subitem: the item from registry
Packit Service 93d855
 * @data: anything which can be stored into the pointer
Packit Service 93d855
 *
Packit Service 93d855
 * Callback type used for enumerating layouts/variants for countries/languages
Packit Service 93d855
 */
Packit Service 93d855
	typedef void (*XklTwoConfigItemsProcessFunc) (XklConfigRegistry *
Packit Service 93d855
					      config,
Packit Service 93d855
						      const XklConfigItem *
Packit Service 93d855
						      item,
Packit Service 93d855
						      const XklConfigItem *
Packit Service 93d855
						      subitem, gpointer data);
Packit Service 93d855
Packit Service 93d855
/* provide the old names for backwards compatibility */
Packit Service 93d855
	typedef XklConfigItemProcessFunc ConfigItemProcessFunc;
Packit Service 93d855
	typedef XklTwoConfigItemsProcessFunc TwoConfigItemsProcessFunc;
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_foreach_model:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @func: (scope call): callback to call for every model
Packit Service 93d855
 * @data: anything which can be stored into the pointer
Packit Service 93d855
 *
Packit Service 93d855
 * Enumerates keyboard models from the XML configuration registry
Packit Service 93d855
 */
Packit Service 93d855
	extern void xkl_config_registry_foreach_model(XklConfigRegistry *
Packit Service 93d855
						      config,
Packit Service 93d855
						      XklConfigItemProcessFunc
Packit Service 93d855
						      func, gpointer data);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_foreach_layout:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @func: (scope call): callback to call for every layout
Packit Service 93d855
 * @data: anything which can be stored into the pointer
Packit Service 93d855
 *
Packit Service 93d855
 * Enumerates keyboard layouts from the XML configuration registry
Packit Service 93d855
 */
Packit Service 93d855
	extern void xkl_config_registry_foreach_layout(XklConfigRegistry *
Packit Service 93d855
						       config,
Packit Service 93d855
						       XklConfigItemProcessFunc
Packit Service 93d855
						       func,
Packit Service 93d855
						       gpointer data);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_foreach_layout_variant:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @layout_name: layout name for which variants will be listed
Packit Service 93d855
 * @func: (scope call): callback to call for every layout variant
Packit Service 93d855
 * @data: anything which can be stored into the pointer
Packit Service 93d855
 *
Packit Service 93d855
 * Enumerates keyboard layout variants from the XML configuration registry
Packit Service 93d855
 */
Packit Service 93d855
	extern void
Packit Service 93d855
	 xkl_config_registry_foreach_layout_variant(XklConfigRegistry *
Packit Service 93d855
						    config,
Packit Service 93d855
						    const gchar *
Packit Service 93d855
						    layout_name,
Packit Service 93d855
						    XklConfigItemProcessFunc
Packit Service 93d855
						    func, gpointer data);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_foreach_option_group:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @func: (scope call): callback to call for every option group
Packit Service 93d855
 * @data: anything which can be stored into the pointer
Packit Service 93d855
 *
Packit Service 93d855
 * Enumerates keyboard option groups from the XML configuration registry
Packit Service 93d855
 */
Packit Service 93d855
	extern void
Packit Service 93d855
	 xkl_config_registry_foreach_option_group(XklConfigRegistry *
Packit Service 93d855
						  config,
Packit Service 93d855
						  XklConfigItemProcessFunc
Packit Service 93d855
						  func, gpointer data);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_foreach_option:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @option_group_name: option group name for which variants 
Packit Service 93d855
 * will be listed
Packit Service 93d855
 * @func: (scope call): callback to call for every option
Packit Service 93d855
 * @data: anything which can be stored into the pointer
Packit Service 93d855
 *
Packit Service 93d855
 * Enumerates keyboard options from the XML configuration registry
Packit Service 93d855
 */
Packit Service 93d855
	extern void xkl_config_registry_foreach_option(XklConfigRegistry *
Packit Service 93d855
						       config,
Packit Service 93d855
						       const gchar *
Packit Service 93d855
						       option_group_name,
Packit Service 93d855
						       XklConfigItemProcessFunc
Packit Service 93d855
						       func,
Packit Service 93d855
						       gpointer data);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_find_model:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @item: pointer to a XklConfigItem containing the name of the
Packit Service 93d855
 * keyboard model. On successfull return, the descriptions are filled.
Packit Service 93d855
 *
Packit Service 93d855
 * Loads a keyboard model information from the XML configuration registry.
Packit Service 93d855
 *
Packit Service 93d855
 * Returns: TRUE if appropriate element was found and loaded
Packit Service 93d855
 */
Packit Service 93d855
	extern gboolean xkl_config_registry_find_model(XklConfigRegistry *
Packit Service 93d855
						       config,
Packit Service 93d855
						       XklConfigItem *
Packit Service 93d855
						       item);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_find_layout:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @item: pointer to a XklConfigItem containing the name of the
Packit Service 93d855
 * keyboard layout. On successfull return, the descriptions are filled.
Packit Service 93d855
 *
Packit Service 93d855
 * Loads a keyboard layout information from the XML configuration registry.
Packit Service 93d855
 *
Packit Service 93d855
 * Returns: TRUE if appropriate element was found and loaded
Packit Service 93d855
 */
Packit Service 93d855
	extern gboolean xkl_config_registry_find_layout(XklConfigRegistry *
Packit Service 93d855
							config,
Packit Service 93d855
							XklConfigItem *
Packit Service 93d855
							item);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_find_variant:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @layout_name: name of the parent layout
Packit Service 93d855
 * @item: pointer to a XklConfigItem containing the name of the
Packit Service 93d855
 * keyboard layout variant. On successfull return, the descriptions are filled.
Packit Service 93d855
 *
Packit Service 93d855
 * Loads a keyboard layout variant information from the XML configuration 
Packit Service 93d855
 * registry.
Packit Service 93d855
 *
Packit Service 93d855
 * Returns: TRUE if appropriate element was found and loaded
Packit Service 93d855
 */
Packit Service 93d855
	extern gboolean xkl_config_registry_find_variant(XklConfigRegistry
Packit Service 93d855
							 * config,
Packit Service 93d855
							 const char
Packit Service 93d855
							 *layout_name,
Packit Service 93d855
							 XklConfigItem *
Packit Service 93d855
							 item);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_find_option_group:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @item: pointer to a XklConfigItem containing the name of the
Packit Service 93d855
 * keyboard option group. On successfull return, the descriptions are filled.
Packit Service 93d855
 *
Packit Service 93d855
 * Loads a keyboard option group information from the XML configuration 
Packit Service 93d855
 * registry.
Packit Service 93d855
 *
Packit Service 93d855
 * Returns: TRUE if appropriate element was found and loaded
Packit Service 93d855
 */
Packit Service 93d855
	extern gboolean
Packit Service 93d855
	    xkl_config_registry_find_option_group(XklConfigRegistry *
Packit Service 93d855
						  config,
Packit Service 93d855
						  XklConfigItem * item);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_find_option:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @option_group_name: name of the option group
Packit Service 93d855
 * @item: pointer to a XklConfigItem containing the name of the
Packit Service 93d855
 * keyboard option. On successfull return, the descriptions are filled.
Packit Service 93d855
 *
Packit Service 93d855
 * Loads a keyboard option information from the XML configuration 
Packit Service 93d855
 * registry.
Packit Service 93d855
 *
Packit Service 93d855
 * Returns: TRUE if appropriate element was found and loaded
Packit Service 93d855
 */
Packit Service 93d855
	extern gboolean xkl_config_registry_find_option(XklConfigRegistry *
Packit Service 93d855
							config,
Packit Service 93d855
							const gchar *
Packit Service 93d855
							option_group_name,
Packit Service 93d855
							XklConfigItem *
Packit Service 93d855
							item);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_foreach_country:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @func: (scope call): callback to call for every ISO 3166 country code
Packit Service 93d855
 * @data: anything which can be stored into the pointer
Packit Service 93d855
 *
Packit Service 93d855
 * Enumerates countries for which layouts are available,
Packit Service 93d855
 * from the XML configuration registry
Packit Service 93d855
 */
Packit Service 93d855
	extern void xkl_config_registry_foreach_country(XklConfigRegistry *
Packit Service 93d855
							config,
Packit Service 93d855
							XklConfigItemProcessFunc
Packit Service 93d855
							func,
Packit Service 93d855
							gpointer data);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_foreach_country_variant:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @country_code: country ISO code for which variants will be listed
Packit Service 93d855
 * @func: (scope call): callback to call for every country variant
Packit Service 93d855
 * @data: anything which can be stored into the pointer
Packit Service 93d855
 *
Packit Service 93d855
 * Enumerates keyboard layout variants for the country,
Packit Service 93d855
 * from the XML configuration registry
Packit Service 93d855
 */
Packit Service 93d855
	extern void
Packit Service 93d855
	 xkl_config_registry_foreach_country_variant(XklConfigRegistry *
Packit Service 93d855
						     config,
Packit Service 93d855
						     const gchar *
Packit Service 93d855
						     country_code,
Packit Service 93d855
						     XklTwoConfigItemsProcessFunc
Packit Service 93d855
						     func, gpointer data);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_foreach_language:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @func: (scope call): callback to call for every ISO 639-2 country code
Packit Service 93d855
 * @data: anything which can be stored into the pointer
Packit Service 93d855
 *
Packit Service 93d855
 * Enumerates languages for which layouts are available,
Packit Service 93d855
 * from the XML configuration registry
Packit Service 93d855
 */
Packit Service 93d855
	extern void xkl_config_registry_foreach_language(XklConfigRegistry
Packit Service 93d855
							 * config,
Packit Service 93d855
							 XklConfigItemProcessFunc
Packit Service 93d855
							 func,
Packit Service 93d855
							 gpointer data);
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_foreach_language_variant:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @language_code: language ISO code for which variants will be listed
Packit Service 93d855
 * @func: (scope call): callback to call for every country variant
Packit Service 93d855
 * @data: anything which can be stored into the pointer
Packit Service 93d855
 *
Packit Service 93d855
 * Enumerates keyboard layout variants for the language,
Packit Service 93d855
 * from the XML configuration registry
Packit Service 93d855
 */
Packit Service 93d855
	extern void
Packit Service 93d855
	 xkl_config_registry_foreach_language_variant(XklConfigRegistry *
Packit Service 93d855
						      config,
Packit Service 93d855
						      const gchar *
Packit Service 93d855
						      language_code,
Packit Service 93d855
						      XklTwoConfigItemsProcessFunc
Packit Service 93d855
						      func, gpointer data);
Packit Service 93d855
Packit Service 93d855
Packit Service 93d855
/**
Packit Service 93d855
 * xkl_config_registry_search_by_pattern:
Packit Service 93d855
 * @config: the config registry
Packit Service 93d855
 * @pattern: pattern to search for (NULL means "all")
Packit Service 93d855
 * @func: (scope call): callback to call for every matching layout/variant
Packit Service 93d855
 * @data: anything which can be stored into the pointer
Packit Service 93d855
 *
Packit Service 93d855
 * Enumerates keyboard layout/variants that match the pattern.
Packit Service 93d855
 * The layout/variant is considered as matching if one of the following
Packit Service 93d855
 * is true:
Packit Service 93d855
 * 1. Country description (from the country list or name) contains pattern as substring
Packit Service 93d855
 * 2. Language description (from the language list or name) contains pattern as substring
Packit Service 93d855
 */
Packit Service 93d855
	extern void
Packit Service 93d855
	 xkl_config_registry_search_by_pattern(XklConfigRegistry * config,
Packit Service 93d855
					       const gchar * pattern,
Packit Service 93d855
					       XklTwoConfigItemsProcessFunc
Packit Service 93d855
					       func, gpointer data);
Packit Service 93d855
Packit Service 93d855
#ifdef __cplusplus
Packit Service 93d855
}
Packit Service 93d855
#endif				/* __cplusplus */
Packit Service 93d855
#endif