Blame src/ibuscomponent.h

Packit Service 1d8f1c
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
Packit Service 1d8f1c
/* vim:set et sts=4: */
Packit Service 1d8f1c
/* bus - The Input Bus
Packit Service 1d8f1c
 * Copyright (C) 2008-2015 Peng Huang <shawn.p.huang@gmail.com>
Packit Service 1d8f1c
 * Copyright (C) 2008-2015 Red Hat, Inc.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * This library is free software; you can redistribute it and/or
Packit Service 1d8f1c
 * modify it under the terms of the GNU Lesser General Public
Packit Service 1d8f1c
 * License as published by the Free Software Foundation; either
Packit Service 1d8f1c
 * version 2.1 of the License, or (at your option) any later version.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * This library is distributed in the hope that it will be useful,
Packit Service 1d8f1c
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 1d8f1c
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 1d8f1c
 * Lesser General Public License for more details.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * You should have received a copy of the GNU Lesser General Public
Packit Service 1d8f1c
 * License along with this library; if not, write to the Free Software
Packit Service 1d8f1c
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
Packit Service 1d8f1c
 * USA
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
Packit Service 1d8f1c
#if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION)
Packit Service 1d8f1c
#error "Only <ibus.h> can be included directly"
Packit Service 1d8f1c
#endif
Packit Service 1d8f1c
Packit Service 1d8f1c
#ifndef __IBUS_COMPONENT_H_
Packit Service 1d8f1c
#define __IBUS_COMPONENT_H_
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * SECTION: ibuscomponent
Packit Service 1d8f1c
 * @short_description:  Component (executable) specification.
Packit Service 1d8f1c
 * @title: IBusComponent
Packit Service 1d8f1c
 * @stability: Stable
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * An IBusComponent is an executable program.
Packit Service 1d8f1c
 * It provides services such as user interface, configuration,
Packit Service 1d8f1c
 * and input method engine (IME).
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * It is recommended that IME developers provide
Packit Service 1d8f1c
 * a component XML file and
Packit Service 1d8f1c
 * load the XML file by ibus_component_new_from_file().
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * The format of a component XML file is described  at
Packit Service 1d8f1c
 * <ulink url="https://github.com/ibus/ibus/wiki/DevXML">https://github.com/ibus/ibus/wiki/DevXML</ulink>
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
Packit Service 1d8f1c
#include "ibusserializable.h"
Packit Service 1d8f1c
#include "ibusobservedpath.h"
Packit Service 1d8f1c
#include "ibusenginedesc.h"
Packit Service 1d8f1c
#include "ibusxml.h"
Packit Service 1d8f1c
Packit Service 1d8f1c
/*
Packit Service 1d8f1c
 * Type macros.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
Packit Service 1d8f1c
/* define GOBJECT macros */
Packit Service 1d8f1c
#define IBUS_TYPE_COMPONENT             \
Packit Service 1d8f1c
    (ibus_component_get_type ())
Packit Service 1d8f1c
#define IBUS_COMPONENT(obj)             \
Packit Service 1d8f1c
    (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_COMPONENT, IBusComponent))
Packit Service 1d8f1c
#define IBUS_COMPONENT_CLASS(klass)     \
Packit Service 1d8f1c
    (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_COMPONENT, IBusComponentClass))
Packit Service 1d8f1c
#define IBUS_IS_COMPONENT(obj)          \
Packit Service 1d8f1c
    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_COMPONENT))
Packit Service 1d8f1c
#define IBUS_IS_COMPONENT_CLASS(klass)  \
Packit Service 1d8f1c
    (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_COMPONENT))
Packit Service 1d8f1c
#define IBUS_COMPONENT_GET_CLASS(obj)   \
Packit Service 1d8f1c
    (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_COMPONENT, IBusComponentClass))
Packit Service 1d8f1c
Packit Service 1d8f1c
G_BEGIN_DECLS
Packit Service 1d8f1c
Packit Service 1d8f1c
typedef struct _IBusComponent IBusComponent;
Packit Service 1d8f1c
typedef struct _IBusComponentClass IBusComponentClass;
Packit Service 1d8f1c
typedef struct _IBusComponentPrivate IBusComponentPrivate;
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * IBusComponent:
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * An IBusComponent stores component information.
Packit Service 1d8f1c
 * You can get extended values with g_object_get_properties.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
struct _IBusComponent {
Packit Service 1d8f1c
    /*< private >*/
Packit Service 1d8f1c
    IBusSerializable parent;
Packit Service 1d8f1c
    IBusComponentPrivate *priv;
Packit Service 1d8f1c
    /* instance members */
Packit Service 1d8f1c
Packit Service 1d8f1c
    /*< public >*/
Packit Service 1d8f1c
Packit Service 1d8f1c
    /*< private >*/
Packit Service 1d8f1c
    /* padding */
Packit Service 1d8f1c
    gpointer pdummy[7];  // We can add 7 pointers without breaking the ABI.
Packit Service 1d8f1c
};
Packit Service 1d8f1c
Packit Service 1d8f1c
struct _IBusComponentClass {
Packit Service 1d8f1c
  IBusSerializableClass parent;
Packit Service 1d8f1c
Packit Service 1d8f1c
  /* class members */
Packit Service 1d8f1c
};
Packit Service 1d8f1c
Packit Service 1d8f1c
GType            ibus_component_get_type        (void);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_new:
Packit Service 1d8f1c
 * @name: Name of the component.
Packit Service 1d8f1c
 * @description: Detailed description of component.
Packit Service 1d8f1c
 * @version: Component version.
Packit Service 1d8f1c
 * @license: Distribution license of this component.
Packit Service 1d8f1c
 * @author: Author(s) of the component.
Packit Service 1d8f1c
 * @homepage: Homepage of the component.
Packit Service 1d8f1c
 * @command_line: path to component executable.
Packit Service 1d8f1c
 * @textdomain: Domain name for dgettext()
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Creates a new #IBusComponent.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: A newly allocated #IBusComponent.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusComponent   *ibus_component_new             (const gchar    *name,
Packit Service 1d8f1c
                                                 const gchar    *description,
Packit Service 1d8f1c
                                                 const gchar    *version,
Packit Service 1d8f1c
                                                 const gchar    *license,
Packit Service 1d8f1c
                                                 const gchar    *author,
Packit Service 1d8f1c
                                                 const gchar    *homepage,
Packit Service 1d8f1c
                                                 const gchar    *command_line,
Packit Service 1d8f1c
                                                 const gchar    *textdomain);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_new_varargs:
Packit Service 1d8f1c
 * @first_property_name: Name of the first property.
Packit Service 1d8f1c
 * @...: the NULL-terminated arguments of the properties and values.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Creates a new #IBusComponent.
Packit Service 1d8f1c
 * ibus_component_new_varargs() supports the va_list format.
Packit Service 1d8f1c
 * name property is required. e.g.
Packit Service 1d8f1c
 * IBusComponent *component = ibus_component_new_varargs ("name", "ibus-foo",
Packit Service 1d8f1c
 *                                                        "command_line", "/usr/libexec/ibus-engine-foo --ibus",
Packit Service 1d8f1c
 *                                                     NULL)
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: A newly allocated #IBusComponent.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusComponent   *ibus_component_new_varargs     (const gchar    *first_property_name,
Packit Service 1d8f1c
                                                 ...);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_new_from_xml_node:
Packit Service 1d8f1c
 * @node: Root node of component XML tree.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Creates a new #IBusComponent from an XML tree.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: A newly allocated #IBusComponent.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusComponent   *ibus_component_new_from_xml_node
Packit Service 1d8f1c
                                                (XMLNode        *node);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_new_from_file:
Packit Service 1d8f1c
 * @filename: An XML file that contains component information.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Creates a new #IBusComponent from an XML file.
Packit Service 1d8f1c
 * Note that a component file usually contains engine descriptions,
Packit Service 1d8f1c
 * if it does, ibus_engine_desc_new_from_xml_node() will be called
Packit Service 1d8f1c
 * to load the engine descriptions.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: A newly allocated #IBusComponent.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusComponent   *ibus_component_new_from_file   (const gchar    *filename);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_get_name:
Packit Service 1d8f1c
 * @component: An #IBusComponent
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Gets the name property in #IBusComponent. It should not be freed.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: name property in #IBusComponent
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
const gchar     *ibus_component_get_name        (IBusComponent  *component);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_get_description:
Packit Service 1d8f1c
 * @component: An #IBusComponent
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Gets the description property in #IBusComponent. It should not be freed.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: description property in #IBusComponent
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
const gchar     *ibus_component_get_description (IBusComponent  *component);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_get_version:
Packit Service 1d8f1c
 * @component: An #IBusComponent
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Gets the version property in #IBusComponent. It should not be freed.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: version property in #IBusComponent
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
const gchar     *ibus_component_get_version     (IBusComponent  *component);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_get_license:
Packit Service 1d8f1c
 * @component: An #IBusComponent
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Gets the license property in #IBusComponent. It should not be freed.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: license property in #IBusComponent
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
const gchar     *ibus_component_get_license     (IBusComponent  *component);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_get_author:
Packit Service 1d8f1c
 * @component: An #IBusComponent
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Gets the author property in #IBusComponent. It should not be freed.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: author property in #IBusComponent
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
const gchar     *ibus_component_get_author      (IBusComponent  *component);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_get_homepage:
Packit Service 1d8f1c
 * @component: An #IBusComponent
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Gets the homepage property in #IBusComponent. It should not be freed.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: homepage property in #IBusComponent
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
const gchar     *ibus_component_get_homepage    (IBusComponent  *component);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_get_exec:
Packit Service 1d8f1c
 * @component: An #IBusComponent
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Gets the exec property in #IBusComponent. It should not be freed.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: exec property in #IBusComponent
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
const gchar     *ibus_component_get_exec        (IBusComponent  *component);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_get_textdomain:
Packit Service 1d8f1c
 * @component: An #IBusComponent
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Gets the textdomain property in #IBusComponent. It should not be freed.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: textdomain property in #IBusComponent
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
const gchar     *ibus_component_get_textdomain  (IBusComponent  *component);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_add_observed_path:
Packit Service 1d8f1c
 * @component: An #IBusComponent
Packit Service 1d8f1c
 * @path: Observed path to be added.
Packit Service 1d8f1c
 * @access_fs: %TRUE for filling the file status; %FALSE otherwise.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Add an observed path to #IBusComponent.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void             ibus_component_add_observed_path
Packit Service 1d8f1c
                                                (IBusComponent  *component,
Packit Service 1d8f1c
                                                 const gchar    *path,
Packit Service 1d8f1c
                                                 gboolean        access_fs);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_add_engine:
Packit Service 1d8f1c
 * @component: An #IBusComponent
Packit Service 1d8f1c
 * @engine: A description of an engine.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Add an engine to #IBusComponent according to the description in @engine.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void             ibus_component_add_engine      (IBusComponent  *component,
Packit Service 1d8f1c
                                                 IBusEngineDesc *engine);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_get_engines:
Packit Service 1d8f1c
 * @component: An #IBusComponent.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Gets the engines of this component.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: (transfer container) (element-type IBusEngineDesc):
Packit Service 1d8f1c
 * A newly allocated GList that contains engines.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
GList           *ibus_component_get_engines     (IBusComponent  *component);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_output:
Packit Service 1d8f1c
 * @component: An #IBusComponent.
Packit Service 1d8f1c
 * @output: GString that holds the result.
Packit Service 1d8f1c
 * @indent: level of indent.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Output #IBusComponent as an XML-formatted string.
Packit Service 1d8f1c
 * The output string can be then shown on the screen or written to file.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void             ibus_component_output          (IBusComponent  *component,
Packit Service 1d8f1c
                                                 GString        *output,
Packit Service 1d8f1c
                                                 gint            indent);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_output_engines:
Packit Service 1d8f1c
 * @component: An #IBusComponent.
Packit Service 1d8f1c
 * @output: GString that holds the result.
Packit Service 1d8f1c
 * @indent: level of indent.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Output engine description  as an XML-formatted string.
Packit Service 1d8f1c
 * The output string can be then shown on the screen or written to file.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void             ibus_component_output_engines  (IBusComponent  *component,
Packit Service 1d8f1c
                                                 GString        *output,
Packit Service 1d8f1c
                                                 gint            indent);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_check_modification:
Packit Service 1d8f1c
 * @component: An #IBusComponent.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Check whether the observed paths of component is modified.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: %TRUE if at least one of the observed paths is modified;
Packit Service 1d8f1c
 * %FALSE otherwise.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
gboolean         ibus_component_check_modification
Packit Service 1d8f1c
                                                (IBusComponent  *component);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_component_get_observed_paths:
Packit Service 1d8f1c
 * @component: An #IBusComponent.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Gets the observed paths of this component.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: (transfer container) (element-type IBusObservedPath): A
Packit Service 1d8f1c
 * newly allocated GList that contains observed paths.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
GList           *ibus_component_get_observed_paths
Packit Service 1d8f1c
                                                (IBusComponent *component);
Packit Service 1d8f1c
Packit Service 1d8f1c
G_END_DECLS
Packit Service 1d8f1c
#endif
Packit Service 1d8f1c