Blame src/ibusproperty.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
/* IBus - The Input Bus
Packit Service 1d8f1c
 * Copyright (C) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
Packit Service 1d8f1c
 * Copyright (C) 2008-2010 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_PROPERTY_H_
Packit Service 1d8f1c
#define __IBUS_PROPERTY_H_
Packit Service 1d8f1c
Packit Service 1d8f1c
#include "ibusserializable.h"
Packit Service 1d8f1c
#include "ibustext.h"
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * SECTION: ibusproperty
Packit Service 1d8f1c
 * @short_description: UI component for input method engine property.
Packit Service 1d8f1c
 * @title: IBusProperty
Packit Service 1d8f1c
 * @stability: Stable
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * An IBusProperty is an UI component like a button or a menu item
Packit Service 1d8f1c
 * which shows the status of corresponding input method engine property.
Packit Service 1d8f1c
 * End user can operate and see the current status of IME through these components.
Packit Service 1d8f1c
 * For example, ibus-chewing users change the English/Chinese input mode by
Packit Service 1d8f1c
 * pressing ctrl-space or click on the Eng/Chi switch button.
Packit Service 1d8f1c
 * And the IBusProperty shows the change correspondingly.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * see_also: #IBusPropList, #IBusEngine
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
G_BEGIN_DECLS
Packit Service 1d8f1c
Packit Service 1d8f1c
/*
Packit Service 1d8f1c
 * Type macros.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
/* define IBusProperty macros */
Packit Service 1d8f1c
#define IBUS_TYPE_PROPERTY             \
Packit Service 1d8f1c
    (ibus_property_get_type ())
Packit Service 1d8f1c
#define IBUS_PROPERTY(obj)             \
Packit Service 1d8f1c
    (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_PROPERTY, IBusProperty))
Packit Service 1d8f1c
#define IBUS_PROPERTY_CLASS(klass)     \
Packit Service 1d8f1c
    (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_PROPERTY, IBusPropertyClass))
Packit Service 1d8f1c
#define IBUS_IS_PROPERTY(obj)          \
Packit Service 1d8f1c
    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_PROPERTY))
Packit Service 1d8f1c
#define IBUS_IS_PROPERTY_CLASS(klass)  \
Packit Service 1d8f1c
    (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_PROPERTY))
Packit Service 1d8f1c
#define IBUS_PROPERTY_GET_CLASS(obj)   \
Packit Service 1d8f1c
    (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROPERTY, IBusPropertyClass))
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * IBusPropType:
Packit Service 1d8f1c
 * @PROP_TYPE_NORMAL: Property is shown as normal text.
Packit Service 1d8f1c
 * @PROP_TYPE_TOGGLE: Property is shown as a toggle button.
Packit Service 1d8f1c
 * @PROP_TYPE_RADIO: Property is shown as a radio selection option.
Packit Service 1d8f1c
 * @PROP_TYPE_MENU: Property is shown as a menu, usually imply it has sub menu
Packit Service 1d8f1c
 * items.
Packit Service 1d8f1c
 * @PROP_TYPE_SEPARATOR: A separator for menu.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Type enumeration of IBusProperty.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
typedef enum {
Packit Service 1d8f1c
    PROP_TYPE_NORMAL = 0,
Packit Service 1d8f1c
    PROP_TYPE_TOGGLE = 1,
Packit Service 1d8f1c
    PROP_TYPE_RADIO = 2,
Packit Service 1d8f1c
    PROP_TYPE_MENU = 3,
Packit Service 1d8f1c
    PROP_TYPE_SEPARATOR = 4,
Packit Service 1d8f1c
} IBusPropType;
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * IBusPropState:
Packit Service 1d8f1c
 * @PROP_STATE_UNCHECKED: Property option is unchecked.
Packit Service 1d8f1c
 * @PROP_STATE_CHECKED: Property option is checked.
Packit Service 1d8f1c
 * @PROP_STATE_INCONSISTENT: The state is inconsistent with the associated IME
Packit Service 1d8f1c
 * property.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * State of #IBusProperty. The actual effect depends on #IBusPropType of the
Packit Service 1d8f1c
 * IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * <variablelist>
Packit Service 1d8f1c
 *     <varlistentry>
Packit Service 1d8f1c
 *         <term>PROP_TYPE_TOGGLE</term>
Packit Service 1d8f1c
 *         <listitem><para>Emphasized if PROP_STATE_CHECKED, normal otherwise.</para></listitem>
Packit Service 1d8f1c
 *     </varlistentry>
Packit Service 1d8f1c
 *     <varlistentry>
Packit Service 1d8f1c
 *         <term>PROP_TYPE_RADIO</term>
Packit Service 1d8f1c
 *         <listitem><para>Option checked if PROP_STATE_CHECKED, unchecked otherwise.</para></listitem>
Packit Service 1d8f1c
 *     </varlistentry>
Packit Service 1d8f1c
 * </variablelist>
Packit Service 1d8f1c
 * No effect on other types.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
typedef enum {
Packit Service 1d8f1c
    PROP_STATE_UNCHECKED = 0,
Packit Service 1d8f1c
    PROP_STATE_CHECKED = 1,
Packit Service 1d8f1c
    PROP_STATE_INCONSISTENT = 2,
Packit Service 1d8f1c
} IBusPropState;
Packit Service 1d8f1c
Packit Service 1d8f1c
Packit Service 1d8f1c
typedef struct _IBusProperty IBusProperty;
Packit Service 1d8f1c
typedef struct _IBusPropertyClass IBusPropertyClass;
Packit Service 1d8f1c
typedef struct _IBusPropertyPrivate IBusPropertyPrivate;
Packit Service 1d8f1c
Packit Service 1d8f1c
#ifndef __PROPLIST_DEFINED
Packit Service 1d8f1c
#define __PROPLIST_DEFINED
Packit Service 1d8f1c
typedef struct _IBusPropList IBusPropList;
Packit Service 1d8f1c
typedef struct _IBusPropListClass IBusPropListClass;
Packit Service 1d8f1c
#endif
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * IBusProperty:
Packit Service 1d8f1c
 * UI component for input method engine property.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
struct _IBusProperty {
Packit Service 1d8f1c
    /*< private >*/
Packit Service 1d8f1c
    IBusSerializable parent;
Packit Service 1d8f1c
    IBusPropertyPrivate *priv;
Packit Service 1d8f1c
Packit Service 1d8f1c
    gpointer pdummy[7];
Packit Service 1d8f1c
};
Packit Service 1d8f1c
Packit Service 1d8f1c
struct _IBusPropertyClass {
Packit Service 1d8f1c
    IBusSerializableClass parent;
Packit Service 1d8f1c
};
Packit Service 1d8f1c
Packit Service 1d8f1c
GType            ibus_property_get_type     ();
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_new:
Packit Service 1d8f1c
 * @key: Unique Identity for the #IBusProperty.
Packit Service 1d8f1c
 * @type: #IBusPropType of #IBusProperty.
Packit Service 1d8f1c
 * @label: Text shown in UI.
Packit Service 1d8f1c
 * @icon: (allow-none): Icon file for the #IBusProperty.
Packit Service 1d8f1c
 * @tooltip: Message shown if mouse hovered the  #IBusProperty.
Packit Service 1d8f1c
 * @sensitive: Whether the #IBusProperty is sensitive to keyboard and mouse event.
Packit Service 1d8f1c
 * @visible: Whether the #IBusProperty is visible.
Packit Service 1d8f1c
 * @state: IBusPropState of #IBusProperty.
Packit Service 1d8f1c
 * @prop_list: (allow-none): #IBusPropList that contains sub IBusProperties.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Creates a new #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: A newly allocated #IBusProperty.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusProperty    *ibus_property_new          (const gchar    *key,
Packit Service 1d8f1c
                                             IBusPropType    type,
Packit Service 1d8f1c
                                             IBusText       *label,
Packit Service 1d8f1c
                                             const gchar    *icon,
Packit Service 1d8f1c
                                             IBusText       *tooltip,
Packit Service 1d8f1c
                                             gboolean        sensitive,
Packit Service 1d8f1c
                                             gboolean        visible,
Packit Service 1d8f1c
                                             IBusPropState   state,
Packit Service 1d8f1c
                                             IBusPropList   *prop_list);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_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 #IBusProperty.
Packit Service 1d8f1c
 * ibus_property_new_varargs() supports the va_list format.
Packit Service 1d8f1c
 * name property is required. e.g.
Packit Service 1d8f1c
 * ibus_property_new_varargs("key", "TypingMode", "type", PROP_TYPE_MENU, NULL)
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: A newly allocated #IBusProperty.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusProperty    *ibus_property_new_varargs  (const gchar    *first_property_name,
Packit Service 1d8f1c
                                                             ...);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_get_key:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Get the key of #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: the key of #IBusProperty. Should not be freed.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
const gchar *    ibus_property_get_key      (IBusProperty   *prop);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_get_label:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Get the label of #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: (transfer none): the label of #IBusProperty. Should not be freed.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusText *       ibus_property_get_label    (IBusProperty   *prop);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_set_label:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 * @label: Text shown in UI.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Set the label of #IBusProperty.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void             ibus_property_set_label    (IBusProperty   *prop,
Packit Service 1d8f1c
                                             IBusText       *label);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_get_symbol:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Get the symbol of #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: (transfer none): the symbol of #IBusProperty. Should not be freed.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusText *       ibus_property_get_symbol   (IBusProperty   *prop);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_set_symbol:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 * @symbol: Text shown in UI.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Set the symbol of #IBusProperty.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void             ibus_property_set_symbol   (IBusProperty   *prop,
Packit Service 1d8f1c
                                             IBusText       *symbol);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_get_icon:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Get the icon of #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: the icon of #IBusProperty. Should not be freed.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
const gchar *    ibus_property_get_icon     (IBusProperty   *prop);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_set_icon:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 * @icon: Icon shown in UI. It could be a full path of an icon file or an icon name.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Set the icon of #IBusProperty.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void             ibus_property_set_icon     (IBusProperty   *prop,
Packit Service 1d8f1c
                                             const gchar    *icon);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_get_tooltip:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Get the tooltip of #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: (transfer none): the tooltip of #IBusProperty. Should not be freed.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusText *       ibus_property_get_tooltip  (IBusProperty   *prop);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_set_tooltip:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 * @tooltip: Text of the tooltip.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Set the tooltip of #IBusProperty.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void             ibus_property_set_tooltip  (IBusProperty   *prop,
Packit Service 1d8f1c
                                             IBusText       *tooltip);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_get_sensitive:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Get the sensitive of #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: the sensitive of #IBusProperty.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
gboolean         ibus_property_get_sensitive(IBusProperty   *prop);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_set_sensitive:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 * @sensitive: Whether the #IBusProperty is sensitive.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Set whether the #IBusProperty is sensitive.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void             ibus_property_set_sensitive(IBusProperty   *prop,
Packit Service 1d8f1c
                                             gboolean        sensitive);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_get_visible:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Get the visible of #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: the visible of #IBusProperty.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
gboolean         ibus_property_get_visible  (IBusProperty   *prop);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_set_visible:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 * @visible: Whether the #IBusProperty is visible.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Set whether the #IBusProperty is visible.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void             ibus_property_set_visible  (IBusProperty   *prop,
Packit Service 1d8f1c
                                             gboolean        visible);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_get_property_type:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Get the type of #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: the type of #IBusProperty.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusPropType     ibus_property_get_prop_type(IBusProperty   *prop);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_get_state:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Get the state of #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: the state of #IBusProperty.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusPropState    ibus_property_get_state    (IBusProperty   *prop);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_set_state:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 * @state: The state of the #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Set the state of the #IBusProperty.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void             ibus_property_set_state    (IBusProperty   *prop,
Packit Service 1d8f1c
                                             IBusPropState   state);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_get_sub_props:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Get the IBusPropList of #IBusProperty.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: (transfer none): the IBusPropList of #IBusProperty.
Packit Service 1d8f1c
 *     Should not be freed.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
IBusPropList *   ibus_property_get_sub_props(IBusProperty   *prop);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_set_sub_props:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 * @prop_list: #IBusPropList that contains sub IBusProperties.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Set the sub IBusProperties.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
void             ibus_property_set_sub_props(IBusProperty   *prop,
Packit Service 1d8f1c
                                             IBusPropList   *prop_list);
Packit Service 1d8f1c
Packit Service 1d8f1c
/**
Packit Service 1d8f1c
 * ibus_property_update:
Packit Service 1d8f1c
 * @prop: An #IBusProperty.
Packit Service 1d8f1c
 * @prop_update: #IBusPropList that contains sub IBusProperties.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Update the content of an #IBusProperty.
Packit Service 1d8f1c
 * #IBusProperty @prop_update can either be sub-property of @prop,
Packit Service 1d8f1c
 * or holds new values for @prop.
Packit Service 1d8f1c
 *
Packit Service 1d8f1c
 * Returns: TRUE for update suceeded; FALSE otherwise.
Packit Service 1d8f1c
 */
Packit Service 1d8f1c
Packit Service 1d8f1c
gboolean         ibus_property_update       (IBusProperty   *prop,
Packit Service 1d8f1c
                                             IBusProperty   *prop_update);
Packit Service 1d8f1c
Packit Service 1d8f1c
G_END_DECLS
Packit Service 1d8f1c
#endif