Blame libxklavier/xkl_config_registry.h

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